def run(options): try: temp_directory = tempfile.mkdtemp() temp_index_dir = os.path.join(temp_directory, "idx", "bwa") temp_index_dir_sibbling = os.path.join(temp_directory, "idx", "seq") temp_shared_dir = os.path.join(temp_directory, "shared", "test1") temp_work_dir = os.path.join(temp_directory, "w") temp_tool_dir = os.path.join(temp_directory, "t") __makedirs([temp_tool_dir, temp_work_dir, temp_index_dir, temp_index_dir_sibbling, temp_shared_dir]) temp_input_path = os.path.join(temp_directory, "dataset_0.dat") temp_input_extra_path = os.path.join(temp_directory, "dataset_0_files", "input_subdir", "extra") temp_index_path = os.path.join(temp_index_dir, "human.fa") temp_config_path = os.path.join(temp_work_dir, "config.txt") temp_tool_path = os.path.join(temp_directory, "t", "script.py") temp_output_path = os.path.join(temp_directory, "dataset_1.dat") temp_output2_path = os.path.join(temp_directory, "dataset_2.dat") temp_output3_path = os.path.join(temp_directory, "dataset_3.dat") temp_output4_path = os.path.join(temp_directory, "dataset_4.dat") temp_version_output_path = os.path.join(temp_directory, "GALAXY_VERSION_1234") temp_output_workdir_destination = os.path.join(temp_directory, "dataset_77.dat") temp_output_workdir = os.path.join(temp_work_dir, "env_test") temp_output_workdir_destination2 = os.path.join(temp_directory, "dataset_78.dat") temp_output_workdir2 = os.path.join(temp_work_dir, "rewrite_action_test") __write_to_file(temp_input_path, b"Hello world input!!@!") __write_to_file(temp_input_extra_path, b"INPUT_EXTRA_CONTENTS") __write_to_file(temp_config_path, EXPECTED_OUTPUT) __write_to_file(temp_tool_path, TEST_SCRIPT) __write_to_file(temp_index_path, b"AGTC") # Implicit files that should also get transferred since depth > 0 __write_to_file("%s.fai" % temp_index_path, b"AGTC") __write_to_file(os.path.join(temp_index_dir_sibbling, "human_full_seqs"), b"AGTC") empty_input = u"/foo/bar/x" test_unicode = getattr(options, "test_unicode", False) # TODO Switch this in integration tests cmd_text = EXAMPLE_UNICODE_TEXT if test_unicode else "Hello World" command_line_params = ( temp_tool_path, temp_config_path, temp_input_path, temp_output_path, empty_input, temp_output2_path, cmd_text, temp_output3_path, temp_input_extra_path, temp_version_output_path, temp_index_path, temp_output4_path, temp_shared_dir, ) assert os.path.exists(temp_index_path) command_line = u'python %s "%s" "%s" "%s" "%s" "%s" "%s" "%s" "%s" "%s" "%s" "%s" "%s"' % command_line_params config_files = [temp_config_path] input_files = [temp_input_path, empty_input] output_files = [ temp_output_path, temp_output2_path, temp_output3_path, temp_output4_path, temp_output_workdir_destination, temp_output_workdir_destination2 ] client, client_manager = __client(temp_directory, options) waiter = Waiter(client, client_manager) client_outputs = ClientOutputs( working_directory=temp_work_dir, work_dir_outputs=[ (temp_output_workdir, temp_output_workdir_destination), (temp_output_workdir2, temp_output_workdir_destination2), ], output_files=output_files, version_file=temp_version_output_path, ) job_description = ClientJobDescription( command_line=command_line, tool=MockTool(temp_tool_dir), config_files=config_files, input_files=input_files, client_outputs=client_outputs, working_directory=temp_work_dir, **__extra_job_description_kwargs(options) ) submit_job(client, job_description) result_status = waiter.wait() __finish(options, client, client_outputs, result_status) __assert_contents(temp_output_path, EXPECTED_OUTPUT, result_status) __assert_contents(temp_output2_path, cmd_text, result_status) __assert_contents(os.path.join(temp_work_dir, "galaxy.json"), b"GALAXY_JSON", result_status) __assert_contents(os.path.join(temp_directory, "dataset_1_files", "extra"), b"EXTRA_OUTPUT_CONTENTS", result_status) if getattr(options, "test_rewrite_action", False): __assert_contents(temp_output_workdir_destination2, os.path.join(temp_directory, "shared2", "test1"), result_status) if job_description.env: __assert_contents(temp_output_workdir_destination, b"TEST_ENV_VALUE", result_status) __assert_contents(temp_version_output_path, b"1.0.1", result_status) if job_description.dependencies_description: __assert_contents(temp_output3_path, "moo_override", result_status) else: __assert_contents(temp_output3_path, "moo_default", result_status) if client.default_file_action != "none": rewritten_index_path = open(temp_output4_path, 'r', encoding='utf-8').read() # Path written to this file will differ between Windows and Linux. assert re.search(r"123456[/\\]unstructured[/\\]\w+[/\\]bwa[/\\]human.fa", rewritten_index_path) is not None __exercise_errors(options, client, temp_output_path, temp_directory) client_manager.shutdown() except BaseException: if not options.suppress_output: traceback.print_exc() raise finally: shutil.rmtree(temp_directory)
def run(options): try: temp_directory = tempfile.mkdtemp() temp_index_dir = os.path.join(temp_directory, "idx", "bwa") temp_index_dir_sibbling = os.path.join(temp_directory, "idx", "seq") temp_shared_dir = os.path.join(temp_directory, "shared", "test1") temp_work_dir = os.path.join(temp_directory, "w") temp_tool_dir = os.path.join(temp_directory, "t") __makedirs([ temp_tool_dir, temp_work_dir, temp_index_dir, temp_index_dir_sibbling, temp_shared_dir ]) temp_input_path = os.path.join(temp_directory, "dataset_0.dat") temp_input_extra_path = os.path.join(temp_directory, "dataset_0_files", "input_subdir", "extra") temp_index_path = os.path.join(temp_index_dir, "human.fa") temp_config_path = os.path.join(temp_work_dir, "config.txt") temp_tool_path = os.path.join(temp_directory, "t", "script.py") temp_output_path = os.path.join(temp_directory, "dataset_1.dat") temp_output2_path = os.path.join(temp_directory, "dataset_2.dat") temp_output3_path = os.path.join(temp_directory, "dataset_3.dat") temp_output4_path = os.path.join(temp_directory, "dataset_4.dat") temp_version_output_path = os.path.join(temp_directory, "GALAXY_VERSION_1234") temp_output_workdir_destination = os.path.join(temp_directory, "dataset_77.dat") temp_output_workdir = os.path.join(temp_work_dir, "env_test") temp_output_workdir_destination2 = os.path.join( temp_directory, "dataset_78.dat") temp_output_workdir2 = os.path.join(temp_work_dir, "rewrite_action_test") __write_to_file(temp_input_path, b"Hello world input!!@!") __write_to_file(temp_input_extra_path, b"INPUT_EXTRA_CONTENTS") __write_to_file(temp_config_path, EXPECTED_OUTPUT) __write_to_file(temp_tool_path, TEST_SCRIPT) __write_to_file(temp_index_path, b"AGTC") # Implicit files that should also get transferred since depth > 0 __write_to_file("%s.fai" % temp_index_path, b"AGTC") __write_to_file( os.path.join(temp_index_dir_sibbling, "human_full_seqs"), b"AGTC") empty_input = u"/foo/bar/x" test_unicode = getattr(options, "test_unicode", False) # TODO Switch this in integration tests cmd_text = EXAMPLE_UNICODE_TEXT if test_unicode else "Hello World" command_line_params = ( temp_tool_path, temp_config_path, temp_input_path, temp_output_path, empty_input, temp_output2_path, cmd_text, temp_output3_path, temp_input_extra_path, temp_version_output_path, temp_index_path, temp_output4_path, temp_shared_dir, ) assert os.path.exists(temp_index_path) command_line = u'python %s "%s" "%s" "%s" "%s" "%s" "%s" "%s" "%s" "%s" "%s" "%s" "%s"' % command_line_params config_files = [temp_config_path] input_files = [temp_input_path, empty_input] output_files = [ temp_output_path, temp_output2_path, temp_output3_path, temp_output4_path, temp_output_workdir_destination, temp_output_workdir_destination2 ] client, client_manager = __client(temp_directory, options) waiter = Waiter(client, client_manager) client_outputs = ClientOutputs( working_directory=temp_work_dir, work_dir_outputs=[ (temp_output_workdir, temp_output_workdir_destination), (temp_output_workdir2, temp_output_workdir_destination2), ], output_files=output_files, version_file=temp_version_output_path, ) job_description = ClientJobDescription( command_line=command_line, tool=MockTool(temp_tool_dir), config_files=config_files, input_files=input_files, client_outputs=client_outputs, working_directory=temp_work_dir, **__extra_job_description_kwargs(options)) submit_job(client, job_description) result_status = waiter.wait() __finish(options, client, client_outputs, result_status) __assert_contents(temp_output_path, EXPECTED_OUTPUT, result_status) __assert_contents(temp_output2_path, cmd_text, result_status) __assert_contents(os.path.join(temp_work_dir, "galaxy.json"), b"GALAXY_JSON", result_status) __assert_contents( os.path.join(temp_directory, "dataset_1_files", "extra"), b"EXTRA_OUTPUT_CONTENTS", result_status) if getattr(options, "test_rewrite_action", False): __assert_contents(temp_output_workdir_destination2, os.path.join(temp_directory, "shared2", "test1"), result_status) if job_description.env: __assert_contents(temp_output_workdir_destination, b"TEST_ENV_VALUE", result_status) __assert_contents(temp_version_output_path, b"1.0.1", result_status) if job_description.dependencies_description: __assert_contents(temp_output3_path, "moo_override", result_status) else: __assert_contents(temp_output3_path, "moo_default", result_status) if client.default_file_action != "none": rewritten_index_path = open(temp_output4_path, 'r', encoding='utf-8').read() # Path written to this file will differ between Windows and Linux. assert re.search( r"123456[/\\]unstructured[/\\]\w+[/\\]bwa[/\\]human.fa", rewritten_index_path) is not None __exercise_errors(options, client, temp_output_path, temp_directory) client_manager.shutdown() except BaseException: if not options.suppress_output: traceback.print_exc() raise finally: shutil.rmtree(temp_directory)
def _submit(self): return submit_job(self.client, self.client_job_description, self.job_config)