Пример #1
0
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)
Пример #2
0
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)
Пример #3
0
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)