Skip to content
Snippets Groups Projects
Commit 6b9540d0 authored by Valentin Rigal's avatar Valentin Rigal Committed by Bastien Abadie
Browse files

Add a developer mode via --dev argument

parent b983d505
No related branches found
No related tags found
1 merge request!110Add a developer mode via --dev argument
Pipeline #78609 passed
......@@ -86,6 +86,8 @@ class ElementsWorker(
@property
def store_activity(self):
if self.args.dev:
return False
assert (
self.process_information
), "Worker must be configured to access its process activity state"
......
......@@ -61,6 +61,7 @@ class BaseWorker(object):
logger.info(f"Worker will use {self.work_dir} as working directory")
self.process_information = None
self.support_cache = support_cache
# use_cache will be updated in configure() if the cache is supported and if there
# is at least one available sqlite database either given or in the parent tasks
......@@ -68,8 +69,8 @@ class BaseWorker(object):
@property
def is_read_only(self):
"""Worker cannot publish anything without a worker version ID"""
return self.worker_version_id is None
"""Worker cannot publish anything in dev mode or without a worker version ID"""
return self.args.dev or self.worker_version_id is None
def configure(self):
"""
......@@ -95,6 +96,15 @@ class BaseWorker(object):
action="store_true",
default=False,
)
self.parser.add_argument(
"--dev",
help=(
"Run worker in developer mode. "
"Worker will be in read-only state even if a worker_version is supplied. "
"ARKINDEX_PROCESS_ID environment variable is not required with this flag."
),
action="store_true",
)
# Call potential extra arguments
self.add_arguments()
......@@ -116,13 +126,14 @@ class BaseWorker(object):
logger.debug(f"Connected as {user['display_name']} - {user['email']}")
self.features = user["features"]
# Load process information
assert os.environ.get(
"ARKINDEX_PROCESS_ID"
), "ARKINDEX_PROCESS_ID environment variable is not defined"
self.process_information = self.request(
"RetrieveDataImport", id=os.environ["ARKINDEX_PROCESS_ID"]
)
# Load process information except in developer mode
if not self.args.dev:
assert os.environ.get(
"ARKINDEX_PROCESS_ID"
), "ARKINDEX_PROCESS_ID environment variable is not defined"
self.process_information = self.request(
"RetrieveDataImport", id=os.environ["ARKINDEX_PROCESS_ID"]
)
if self.worker_version_id:
# Retrieve initial configuration from API
......
......@@ -119,6 +119,20 @@ def test_cli_arg_verbose_given(mocker, mock_config_api):
logger.setLevel(logging.NOTSET)
def test_configure_dev_mode(mocker, mock_user_api, mock_worker_version_api):
"""
Configuring a worker in developer mode avoid retrieving process information
"""
worker = BaseWorker()
mocker.patch.object(sys, "argv", ["worker", "--dev"])
worker.configure()
assert worker.args.dev is True
assert worker.process_information is None
assert worker.worker_version_id == "12341234-1234-1234-1234-123412341234"
assert worker.is_read_only is True
def test_load_missing_secret():
worker = BaseWorker()
worker.api_client = MockApiClient()
......
......@@ -91,6 +91,7 @@ def test_list_elements_element_arg(mocker, mock_elements_worker):
verbose=False,
elements_list=None,
database=None,
dev=False,
),
)
......@@ -121,6 +122,7 @@ def test_list_elements_both_args_error(mocker, mock_elements_worker):
verbose=False,
elements_list=open(path),
database=None,
dev=False,
),
)
......@@ -144,6 +146,7 @@ def test_database_arg(mocker, mock_elements_worker, tmp_path):
verbose=False,
elements_list=None,
database=str(database_path),
dev=False,
),
)
......
......@@ -100,6 +100,20 @@ def test_activities_disabled(
] == BASE_API_CALLS
def test_activities_dev_mode(mocker, mock_user_api, mock_worker_version_api):
"""
Worker activities are not stored in dev mode
"""
worker = ElementsWorker()
mocker.patch.object(sys, "argv", ["worker", "--dev"])
worker.configure()
assert worker.args.dev is True
assert worker.process_information is None
assert worker.is_read_only is True
assert worker.store_activity is False
def test_update_call(responses, mock_elements_worker, mock_process_api):
"""Test an update call with feature enabled triggers an API call"""
responses.add(
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment