Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Testing: dump_databases flag #5955

Merged
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions openpype/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -296,12 +296,16 @@ def run(script):
@click.option("--mongo_url",
help="MongoDB for testing.",
default=None)
@click.option("--dump_databases",
help="Dump all databases to data folder.",
is_flag=True,
default=False)
def runtests(folder, mark, pyargs, test_data_folder, persist, app_variant,
timeout, setup_only, mongo_url, app_group):
timeout, setup_only, mongo_url, app_group, dump_databases):
"""Run all automatic tests after proper initialization via start.py"""
PypeCommands().run_tests(folder, mark, pyargs, test_data_folder,
persist, app_variant, timeout, setup_only,
mongo_url, app_group)
mongo_url, app_group, dump_databases)


@main.command(help="DEPRECATED - run sync server")
Expand Down
5 changes: 4 additions & 1 deletion openpype/pype_commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ def validate_jsons(self):

def run_tests(self, folder, mark, pyargs,
test_data_folder, persist, app_variant, timeout, setup_only,
mongo_url, app_group):
mongo_url, app_group, dump_databases):
"""
Runs tests from 'folder'

Expand Down Expand Up @@ -275,6 +275,9 @@ def run_tests(self, folder, mark, pyargs,
if mongo_url:
args.extend(["--mongo_url", mongo_url])

if dump_databases:
args.extend(["--dump_databases"])

print("run_tests args: {}".format(args))
import pytest
pytest.main(args)
Expand Down
10 changes: 10 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ def pytest_addoption(parser):
help="Provide url of the Mongo database."
)

parser.addoption(
"--dump_databases", action="store_true", default=None,
help="Dump databases to data folder."
)


@pytest.fixture(scope="module")
def test_data_folder(request):
Expand Down Expand Up @@ -75,6 +80,11 @@ def mongo_url(request):
return request.config.getoption("--mongo_url")


@pytest.fixture(scope="module")
def dump_databases(request):
return request.config.getoption("--dump_databases")


@pytest.hookimpl(tryfirst=True, hookwrapper=True)
def pytest_runtest_makereport(item, call):
# execute all other hooks to obtain the report object
Expand Down
29 changes: 20 additions & 9 deletions tests/lib/testing_classes.py
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,9 @@ def project_settings(self):
)

@pytest.fixture(scope="module")
def download_test_data(self, test_data_folder, persist, request):
def download_test_data(
self, test_data_folder, persist, request, dump_databases
):
test_data_folder = test_data_folder or self.TEST_DATA_FOLDER
if test_data_folder:
print("Using existing folder {}".format(test_data_folder))
Expand Down Expand Up @@ -100,13 +102,13 @@ def download_test_data(self, test_data_folder, persist, request):
if ext and ext.lstrip('.') in handler_class.IMPLEMENTED_ZIP_FORMATS: # noqa: E501
handler_class.unzip(os.path.join(tmpdir, file_name))

yield tmpdir
yield tmpdir

persist = (persist or self.PERSIST or
self.is_test_failed(request))
if not persist:
print("Removing {}".format(tmpdir))
shutil.rmtree(tmpdir)
persist = (persist or self.PERSIST or
self.is_test_failed(request) or dump_databases)
if not persist:
print("Removing {}".format(tmpdir))
shutil.rmtree(tmpdir)
kalisp marked this conversation as resolved.
Show resolved Hide resolved

@pytest.fixture(scope="module")
def output_folder_url(self, download_test_data):
Expand Down Expand Up @@ -163,7 +165,7 @@ def env_var(self, monkeypatch_session, download_test_data, mongo_url):

@pytest.fixture(scope="module")
def db_setup(self, download_test_data, env_var, monkeypatch_session,
request, mongo_url):
request, mongo_url, dump_databases, persist):
"""Restore prepared MongoDB dumps into selected DB."""
backup_dir = os.path.join(download_test_data, "input", "dumps")
uri = os.environ.get("OPENPYPE_MONGO")
Expand All @@ -178,7 +180,13 @@ def db_setup(self, download_test_data, env_var, monkeypatch_session,

yield db_handler

persist = self.PERSIST or self.is_test_failed(request)
if dump_databases:
print("Dumping databases to {}".format(download_test_data))
output_dir = os.path.join(download_test_data, "output", "dumps")
db_handler.backup_to_dump(self.TEST_DB_NAME, output_dir)
db_handler.backup_to_dump(self.TEST_OPENPYPE_NAME, output_dir)

persist = persist or self.PERSIST or self.is_test_failed(request)
if not persist:
db_handler.teardown(self.TEST_DB_NAME)
db_handler.teardown(self.TEST_OPENPYPE_NAME)
Expand Down Expand Up @@ -335,6 +343,9 @@ def launched_app(self, dbcon, download_test_data, last_workfile_path,
app_process = application_manager.launch(app_name, **data)
yield app_process

stdout.close()
stderr.close()

@pytest.fixture(scope="module")
def publish_finished(self, dbcon, launched_app, download_test_data,
timeout, setup_only):
Expand Down
Loading