From 76de4e4bbba887b3f8fa96a950d51a26cadb4d45 Mon Sep 17 00:00:00 2001 From: Petr Kalis Date: Wed, 19 Oct 2022 13:39:57 +0200 Subject: [PATCH] OP-3426 - added support for automatic tests into GlobalJobPreLoad Jobs sent to DL must propagate flag IS_TEST to note that job is an automatic tests, it should use different DBs from regular jobs. --- igniter/tools.py | 3 ++- .../publish/submit_aftereffects_deadline.py | 3 ++- .../plugins/publish/submit_harmony_deadline.py | 3 ++- .../plugins/publish/submit_maya_deadline.py | 3 ++- .../plugins/publish/submit_publish_job.py | 5 ++++- .../custom/plugins/GlobalJobPreLoad.py | 3 +++ start.py | 16 ++++++++++++++-- .../hosts/maya/test_deadline_publish_in_maya.py | 2 +- 8 files changed, 30 insertions(+), 8 deletions(-) diff --git a/igniter/tools.py b/igniter/tools.py index a9d592acf0..bd812edb92 100644 --- a/igniter/tools.py +++ b/igniter/tools.py @@ -153,7 +153,8 @@ def get_openpype_global_settings(url: str) -> dict: # Create mongo connection client = MongoClient(url, **kwargs) # Access settings collection - col = client["openpype"]["settings"] + openpype_db = os.environ.get("OPENPYPE_DATABASE_NAME") or "openpype" + col = client[openpype_db]["settings"] # Query global settings global_settings = col.find_one({"type": "global_settings"}) or {} # Close Mongo connection diff --git a/openpype/modules/deadline/plugins/publish/submit_aftereffects_deadline.py b/openpype/modules/deadline/plugins/publish/submit_aftereffects_deadline.py index 0c1ffa6bd7..bdf492bdcb 100644 --- a/openpype/modules/deadline/plugins/publish/submit_aftereffects_deadline.py +++ b/openpype/modules/deadline/plugins/publish/submit_aftereffects_deadline.py @@ -83,7 +83,8 @@ class AfterEffectsSubmitDeadline( "AVALON_APP_NAME", "OPENPYPE_DEV", "OPENPYPE_LOG_NO_COLORS", - "OPENPYPE_VERSION" + "OPENPYPE_VERSION", + "IS_TEST" ] # Add mongo url if it's enabled if self._instance.context.data.get("deadlinePassMongoUrl"): diff --git a/openpype/modules/deadline/plugins/publish/submit_harmony_deadline.py b/openpype/modules/deadline/plugins/publish/submit_harmony_deadline.py index 6327143623..b90c41d67b 100644 --- a/openpype/modules/deadline/plugins/publish/submit_harmony_deadline.py +++ b/openpype/modules/deadline/plugins/publish/submit_harmony_deadline.py @@ -275,7 +275,8 @@ class HarmonySubmitDeadline( "AVALON_APP_NAME", "OPENPYPE_DEV", "OPENPYPE_LOG_NO_COLORS", - "OPENPYPE_VERSION" + "OPENPYPE_VERSION", + "IS_TEST" ] # Add mongo url if it's enabled if self._instance.context.data.get("deadlinePassMongoUrl"): diff --git a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py index c669f9a814..315c9461c2 100644 --- a/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py +++ b/openpype/modules/deadline/plugins/publish/submit_maya_deadline.py @@ -158,7 +158,8 @@ class MayaSubmitDeadline(abstract_submit_deadline.AbstractSubmitDeadline): "AVALON_TASK", "AVALON_APP_NAME", "OPENPYPE_DEV", - "OPENPYPE_VERSION" + "OPENPYPE_VERSION", + "IS_TEST" ] # Add mongo url if it's enabled if self._instance.context.data.get("deadlinePassMongoUrl"): diff --git a/openpype/modules/deadline/plugins/publish/submit_publish_job.py b/openpype/modules/deadline/plugins/publish/submit_publish_job.py index 0e418ccf77..e67b1cd00e 100644 --- a/openpype/modules/deadline/plugins/publish/submit_publish_job.py +++ b/openpype/modules/deadline/plugins/publish/submit_publish_job.py @@ -142,7 +142,9 @@ class ProcessSubmittedJobOnFarm(pyblish.api.InstancePlugin): "OPENPYPE_RENDER_JOB", "OPENPYPE_PUBLISH_JOB", "OPENPYPE_MONGO", - "OPENPYPE_VERSION" + "OPENPYPE_VERSION", + + "IS_TEST" ] # custom deadline attributes @@ -247,6 +249,7 @@ class ProcessSubmittedJobOnFarm(pyblish.api.InstancePlugin): environment["OPENPYPE_USERNAME"] = instance.context.data["user"] environment["OPENPYPE_PUBLISH_JOB"] = "1" environment["OPENPYPE_RENDER_JOB"] = "0" + environment["IS_TEST"] = os.environ.get("IS_TEST") # Add mongo url if it's enabled if instance.context.data.get("deadlinePassMongoUrl"): mongo_url = os.environ.get("OPENPYPE_MONGO") diff --git a/openpype/modules/deadline/repository/custom/plugins/GlobalJobPreLoad.py b/openpype/modules/deadline/repository/custom/plugins/GlobalJobPreLoad.py index 61b95cf06d..745a91ba81 100644 --- a/openpype/modules/deadline/repository/custom/plugins/GlobalJobPreLoad.py +++ b/openpype/modules/deadline/repository/custom/plugins/GlobalJobPreLoad.py @@ -176,6 +176,9 @@ def inject_openpype_environment(deadlinePlugin): add_args['app'] = job.GetJobEnvironmentKeyValue('AVALON_APP_NAME') add_args["envgroup"] = "farm" + if job.GetJobEnvironmentKeyValue('IS_TEST'): + add_args["automatic_tests"] = "true" + if all(add_args.values()): for key, value in add_args.items(): args.append("--{}".format(key)) diff --git a/start.py b/start.py index d1198a85e4..1d14a7def8 100644 --- a/start.py +++ b/start.py @@ -486,6 +486,7 @@ def _process_arguments() -> tuple: use_version = None use_staging = False commands = [] + automatic_tests = False # OpenPype version specification through arguments use_version_arg = "--use-version" @@ -570,7 +571,11 @@ def _process_arguments() -> tuple: sys.argv.pop(idx) sys.argv.insert(idx, "tray") - return use_version, use_staging, commands + if "--automatic_tests" in sys.argv: + sys.argv.remove("--automatic_tests") + automatic_tests = True + + return use_version, use_staging, commands, automatic_tests def _determine_mongodb() -> str: @@ -997,7 +1002,7 @@ def boot(): # Process arguments # ------------------------------------------------------------------------ - use_version, use_staging, commands = _process_arguments() + use_version, use_staging, commands, automatic_tests = _process_arguments() if os.getenv("OPENPYPE_VERSION"): if use_version: @@ -1024,6 +1029,13 @@ def boot(): os.environ["OPENPYPE_DATABASE_NAME"] = \ os.environ.get("OPENPYPE_DATABASE_NAME") or "openpype" + if automatic_tests: + # change source DBs to predefined ones set for automatic testing + os.environ["IS_TEST"] = "1" + os.environ["OPENPYPE_DATABASE_NAME"] += "_tests" + avalon_db = os.environ.get("AVALON_DB") or "avalon" + os.environ["AVALON_DB"] = avalon_db + "_tests" + global_settings = get_openpype_global_settings(openpype_mongo) _print(">>> run disk mapping command ...") diff --git a/tests/integration/hosts/maya/test_deadline_publish_in_maya.py b/tests/integration/hosts/maya/test_deadline_publish_in_maya.py index 7364945581..16ff48d7fd 100644 --- a/tests/integration/hosts/maya/test_deadline_publish_in_maya.py +++ b/tests/integration/hosts/maya/test_deadline_publish_in_maya.py @@ -21,7 +21,7 @@ class TestDeadlinePublishInMaya(MayaDeadlinePublishTestClass): {OPENPYPE_ROOT}/.venv/Scripts/python.exe {OPENPYPE_ROOT}/start.py runtests ../tests/integration/hosts/maya # noqa: E501 """ - PERSIST = False + PERSIST = True TEST_FILES = [ ("1dDY7CbdFXfRksGVoiuwjhnPoTRCCf5ea",