def fixture_dtest_setup(request, dtest_config, fixture_dtest_setup_overrides, fixture_logging_setup, fixture_dtest_cluster_name, fixture_dtest_create_cluster_func): if running_in_docker(): cleanup_docker_environment_before_test_execution() # do all of our setup operations to get the enviornment ready for the actual test # to run (e.g. bring up a cluster with the necessary config, populate variables, etc) initial_environment = copy.deepcopy(os.environ) dtest_setup = DTestSetup(dtest_config=dtest_config, setup_overrides=fixture_dtest_setup_overrides, cluster_name=fixture_dtest_cluster_name) dtest_setup.initialize_cluster(fixture_dtest_create_cluster_func) if not dtest_config.disable_active_log_watching: dtest_setup.begin_active_log_watch() # at this point we're done with our setup operations in this fixture # yield to allow the actual test to run yield dtest_setup # phew! we're back after executing the test, now we need to do # all of our teardown and cleanup operations reset_environment_vars(initial_environment) dtest_setup.jvm_args = [] for con in dtest_setup.connections: con.cluster.shutdown() dtest_setup.connections = [] failed = False try: if not dtest_setup.allow_log_errors: errors = check_logs_for_errors(dtest_setup) if len(errors) > 0: failed = True pytest.fail(msg='Unexpected error found in node logs (see stdout for full details). Errors: [{errors}]' .format(errors=str.join(", ", errors)), pytrace=False) finally: try: # save the logs for inspection if failed or not dtest_config.delete_logs: copy_logs(request, dtest_setup.cluster) except Exception as e: logger.error("Error saving log:", str(e)) finally: dtest_setup.cleanup_cluster()