def _test_create_trial_instance(benchmark, expected_image, expected_target, expected_format_string, experiment_config, mocked_get_by_variant_name, mocked_create_instance): """Test that create_trial_instance invokes create_instance and creates a startup script for the instance, as we expect it to.""" instance_name = 'instance1' fuzzer_param = 'variant' trial = 9 mocked_create_instance.side_effect = lambda *args, **kwargs: None mocked_get_by_variant_name.return_value = { 'fuzzer': 'fuzzer-a', 'variant_name': 'variant', 'env': { 'C1': 'custom', 'C2': 'custom2' }, } scheduler.create_trial_instance(benchmark, fuzzer_param, trial, experiment_config) instance_name = 'r-test-experiment-9' expected_startup_script_path = '/tmp/%s-start-docker.sh' % instance_name mocked_create_instance.assert_called_with( instance_name, gcloud.InstanceType.RUNNER, experiment_config, startup_script=expected_startup_script_path) with open(expected_startup_script_path) as file_handle: assert file_handle.read() == expected_format_string.format( benchmark=benchmark, oss_fuzz_target=expected_target, docker_image_url=expected_image)
def _test_create_trial_instance( # pylint: disable=too-many-locals benchmark, expected_image, expected_target, expected_startup_script, experiment_config, preemptible, mocked_create_instance): """Test that create_trial_instance invokes create_instance and creates a startup script for the instance, as we expect it to.""" instance_name = 'instance1' fuzzer_param = 'fuzzer-a' trial = 9 mocked_create_instance.side_effect = lambda *args, **kwargs: None scheduler.create_trial_instance(fuzzer_param, benchmark, trial, experiment_config, preemptible) instance_name = 'r-test-experiment-9' expected_startup_script_path = '/tmp/%s-start-docker.sh' % instance_name mocked_create_instance.assert_called_with( instance_name, gcloud.InstanceType.RUNNER, experiment_config, startup_script=expected_startup_script_path, preemptible=preemptible) with open(expected_startup_script_path) as file_handle: content = file_handle.read() check_from = '# Start docker.' assert check_from in content script_for_docker = content[content.find(check_from):] assert script_for_docker == expected_startup_script.format( benchmark=benchmark, oss_fuzz_target=expected_target, docker_image_url=expected_image)
def test_create_trial_instance(mocked_get_by_variant_name, mocked_create_instance, benchmark, expected_image, expected_target, experiment_config): """Test that create_trial_instance invokes create_instance and creates a startup script for the instance, as we expect it to.""" instance_name = 'instance1' fuzzer_param = 'variant' trial = 9 mocked_create_instance.side_effect = lambda *args, **kwargs: None mocked_get_by_variant_name.return_value = { 'fuzzer': 'fuzzer-a', 'variant_name': 'variant', 'env': { 'C1': 'custom', 'C2': 'custom2' }, } scheduler.create_trial_instance(benchmark, fuzzer_param, trial, experiment_config) instance_name = 'r-test-experiment-9' expected_startup_script_path = '/tmp/%s-start-docker.sh' % instance_name mocked_create_instance.assert_called_with( instance_name, gcloud.InstanceType.RUNNER, experiment_config, startup_script=expected_startup_script_path, write_to_stdout=False) expected_format_string = '''#!/bin/bash echo 0 > /proc/sys/kernel/yama/ptrace_scope echo core >/proc/sys/kernel/core_pattern while ! docker pull {docker_image_url} do echo 'Error pulling image, retrying...' done docker run --privileged --cpuset-cpus=0 --rm \ -e INSTANCE_NAME=r-test-experiment-9 \ -e FUZZER=fuzzer-a -e BENCHMARK={benchmark} -e FUZZER_VARIANT_NAME=variant \ -e EXPERIMENT=test-experiment -e TRIAL_ID=9 -e MAX_TOTAL_TIME=86400 \ -e CLOUD_PROJECT=fuzzbench -e CLOUD_COMPUTE_ZONE=us-central1-a \ -e CLOUD_EXPERIMENT_BUCKET=gs://experiment-data \ -e FUZZ_TARGET={oss_fuzz_target} -e C1=custom -e C2=custom2 \ --cap-add SYS_NICE --cap-add SYS_PTRACE --name=runner-container \ {docker_image_url} 2>&1 | tee /tmp/runner-log.txt''' with open(expected_startup_script_path) as file_handle: assert file_handle.read() == expected_format_string.format( benchmark=benchmark, oss_fuzz_target=expected_target, docker_image_url=expected_image)