Exemplo n.º 1
0
    def setUp(self):
        helpers.patch_environ(self)

        # Fake permissions.
        data_types.ExternalUserPermission(
            email='*****@*****.**',
            entity_name='fuzzer',
            entity_kind=data_types.PermissionEntityKind.FUZZER,
            auto_cc=data_types.AutoCCType.ALL).put()

        data_types.ExternalUserPermission(
            email='*****@*****.**',
            entity_name='fuzz',
            entity_kind=data_types.PermissionEntityKind.FUZZER,
            is_prefix=True,
            auto_cc=data_types.AutoCCType.SECURITY).put()

        data_types.ExternalUserPermission(
            email='*****@*****.**',
            entity_name='parent_',
            entity_kind=data_types.PermissionEntityKind.FUZZER,
            is_prefix=True,
            auto_cc=data_types.AutoCCType.NONE).put()

        data_types.ExternalUserPermission(
            email='*****@*****.**',
            entity_name='parent',
            entity_kind=data_types.PermissionEntityKind.FUZZER,
            auto_cc=data_types.AutoCCType.NONE).put()

        data_types.ExternalUserPermission(
            email='*****@*****.**',
            entity_name='parent_cg',
            entity_kind=data_types.PermissionEntityKind.FUZZER,
            is_prefix=True,
            auto_cc=data_types.AutoCCType.NONE).put()

        data_types.ExternalUserPermission(
            email='*****@*****.**',
            entity_name='parens',
            entity_kind=data_types.PermissionEntityKind.FUZZER,
            is_prefix=True,
            auto_cc=data_types.AutoCCType.NONE).put()

        data_types.ExternalUserPermission(
            email='*****@*****.**',
            entity_name='parent',
            entity_kind=data_types.PermissionEntityKind.FUZZER,
            is_prefix=True,
            auto_cc=data_types.AutoCCType.ALL).put()

        data_types.ExternalUserPermission(
            email='*****@*****.**',
            entity_name='job',
            entity_kind=data_types.PermissionEntityKind.JOB,
            is_prefix=False,
            auto_cc=data_types.AutoCCType.ALL).put()

        data_types.ExternalUserPermission(
            email='*****@*****.**',
            entity_name='job',
            entity_kind=data_types.PermissionEntityKind.JOB,
            is_prefix=True,
            auto_cc=data_types.AutoCCType.ALL).put()

        data_types.ExternalUserPermission(
            email='*****@*****.**',
            entity_name='job2',
            entity_kind=data_types.PermissionEntityKind.JOB,
            is_prefix=False,
            auto_cc=data_types.AutoCCType.ALL).put()

        data_types.ExternalUserPermission(
            email='*****@*****.**',
            entity_name='job',
            entity_kind=data_types.PermissionEntityKind.JOB,
            is_prefix=False,
            auto_cc=data_types.AutoCCType.NONE).put()

        data_types.ExternalUserPermission(
            email='*****@*****.**',
            entity_name='job2',
            entity_kind=data_types.PermissionEntityKind.JOB,
            is_prefix=False,
            auto_cc=data_types.AutoCCType.NONE).put()

        data_types.ExternalUserPermission(
            email='*****@*****.**',
            entity_name='job',
            entity_kind=data_types.PermissionEntityKind.JOB,
            is_prefix=False,
            auto_cc=data_types.AutoCCType.NONE).put()

        data_types.ExternalUserPermission(
            email='*****@*****.**',
            entity_name='job3',
            entity_kind=data_types.PermissionEntityKind.JOB,
            is_prefix=False,
            auto_cc=data_types.AutoCCType.NONE).put()

        # Fake fuzzers.
        data_types.Fuzzer(name='fuzzer').put()
        data_types.Fuzzer(name='parent', jobs=['job', 'job2', 'job3']).put()

        data_types.Job(name='job').put()
        data_types.Job(name='job2').put()
        data_types.Job(name='job3').put()

        data_types.FuzzTarget(engine='parent',
                              binary='child',
                              project='test-project').put()
        data_types.FuzzTargetJob(fuzz_target_name='parent_child',
                                 job='job',
                                 last_run=datetime.datetime.utcnow()).put()

        data_types.FuzzTarget(engine='parent',
                              binary='child2',
                              project='test-project').put()
        data_types.FuzzTargetJob(fuzz_target_name='parent_child2',
                                 job='job',
                                 last_run=datetime.datetime.utcnow()).put()

        data_types.FuzzTarget(engine='parent',
                              binary='child',
                              project='test-project').put()
        data_types.FuzzTargetJob(fuzz_target_name='parent_child',
                                 job='job3',
                                 last_run=datetime.datetime.utcnow()).put()
Exemplo n.º 2
0
 def setUp(self):
     """Set up method for strategy pool generator tests with patch."""
     test_helpers.patch_environ(self)
     test_helpers.patch(
         self, ['bot.fuzzers.engine_common.decide_with_probability'])
     self.mock.decide_with_probability.return_value = True
 def setUp(self):
     test_helpers.patch_environ(self)
     test_helpers.patch(self, [
         'base.utils.write_data_to_file',
     ])
     environment.set_value('FAIL_RETRIES', 1)
 def setUp(self):
   test_utils.set_up_pyfakefs(self)
   test_helpers.patch_environ(self)
   self.build_dir = '/test'
   self.fuzzer_name = 'fuzz_target'
   self.fs.create_dir(self.build_dir)
Exemplo n.º 5
0
 def setUp(self):
   helpers.patch_environ(self)
Exemplo n.º 6
0
 def setUp(self):
     test_utils.set_up_pyfakefs(self)
     helpers.patch_environ(self)
Exemplo n.º 7
0
    def setUp(self):
        helpers.patch_environ(self)
        project_config_get = local_config.ProjectConfig.get
        helpers.patch(self, [
            'base.utils.default_project_name',
            'config.db_config.get',
            ('project_config_get', 'config.local_config.ProjectConfig.get'),
        ])

        self.job = data_types.Job(
            name='linux_asan_chrome',
            environment_string=('SUMMARY_PREFIX = project\n'
                                'PROJECT_NAME = project\n'
                                'HELP_URL = help_url\n'))
        self.job2 = data_types.Job(
            name='windows_asan_chrome',
            environment_string=('SUMMARY_PREFIX = project\n'
                                'PROJECT_NAME = project\n'
                                'HELP_URL = help_url\n'))
        self.testcase = data_types.Testcase(
            job_type='linux_asan_chrome',
            fuzzer_name='libFuzzer',
            overridden_fuzzer_name='libfuzzer_binary_name',
            crash_type='Crash-type',
            crash_address='0x1337',
            crash_state='A\nB\nC\n',
            crash_revision=1337)
        self.testcase.set_metadata('fuzzer_binary_name',
                                   'binary_name',
                                   update_testcase=False)

        self.testcase_assert = data_types.Testcase(
            job_type='linux_asan_chrome',
            fuzzer_name='libFuzzer',
            overridden_fuzzer_name='libfuzzer_binary_name',
            crash_type='ASSERT',
            crash_address='0x1337',
            crash_state='foo != bar\nB\nC\n',
            crash_revision=1337)
        self.testcase_assert.set_metadata('fuzzer_binary_name',
                                          'binary_name',
                                          update_testcase=False)

        self.testcase_null = data_types.Testcase(job_type='linux_asan_chrome',
                                                 fuzzer_name='fuzzer1',
                                                 crash_type='UNKNOWN',
                                                 crash_address='0x1337',
                                                 crash_state='NULL',
                                                 crash_revision=1337)

        self.testcase_empty = data_types.Testcase(job_type='linux_asan_chrome',
                                                  fuzzer_name='fuzzer2',
                                                  crash_type='',
                                                  crash_address='',
                                                  crash_state='',
                                                  crash_revision=1337)

        self.testcase_bad_cast = data_types.Testcase(
            job_type='linux_asan_chrome',
            fuzzer_name='fuzzer3',
            crash_type='Bad-cast',
            crash_address='0x1337',
            crash_state=
            ('Bad-cast to blink::LayoutBlock from blink::LayoutTableSection\n'
             'blink::LayoutObject::ContainerForFixedPosition\n'
             'blink::LayoutObject::Container\n'),
            crash_revision=1337)

        self.testcase_bad_cast_without_crash_function = data_types.Testcase(
            job_type='linux_asan_chrome',
            fuzzer_name='fuzzer3',
            crash_type='Bad-cast',
            crash_address='0x1337',
            crash_state=
            ('Bad-cast to blink::LayoutBlock from blink::LayoutTableSection\n'
             ),
            crash_revision=1337)

        self.local_data_bundle = data_types.DataBundle(
            name='local_data_bundle')
        self.cloud_data_bundle = data_types.DataBundle(
            name='cloud_data_bundle')

        self.fuzzer1 = data_types.Fuzzer(name='fuzzer1',
                                         data_bundle_name=None,
                                         jobs=['linux_asan_chrome'])
        self.fuzzer2 = data_types.Fuzzer(name='fuzzer2',
                                         data_bundle_name='local_data_bundle',
                                         jobs=['linux_asan_chrome'])
        self.fuzzer3 = data_types.Fuzzer(name='fuzzer3',
                                         data_bundle_name='cloud_data_bundle',
                                         jobs=['linux_asan_chrome'])

        entities_to_put = [
            self.testcase, self.testcase_assert, self.testcase_null,
            self.testcase_empty, self.testcase_bad_cast,
            self.testcase_bad_cast_without_crash_function, self.job, self.job2,
            self.local_data_bundle, self.cloud_data_bundle, self.fuzzer1,
            self.fuzzer2, self.fuzzer3
        ]
        for entity in entities_to_put:
            entity.put()

        environment.set_value('FUZZ_DATA',
                              '/tmp/inputs/fuzzer-common-data-bundles')
        environment.set_value('FUZZERS_DIR', '/tmp/inputs/fuzzers')
        self.mock.default_project_name.return_value = 'project'
        self.mock.project_config_get.side_effect = project_config_get
Exemplo n.º 8
0
    def setUp(self):
        helpers.patch_environ(self)

        # Fake permissions.
        data_types.ExternalUserPermission(
            email="*****@*****.**",
            entity_name="fuzzer",
            entity_kind=data_types.PermissionEntityKind.FUZZER,
            auto_cc=data_types.AutoCCType.ALL,
        ).put()

        data_types.ExternalUserPermission(
            email="*****@*****.**",
            entity_name="fuzz",
            entity_kind=data_types.PermissionEntityKind.FUZZER,
            is_prefix=True,
            auto_cc=data_types.AutoCCType.SECURITY,
        ).put()

        data_types.ExternalUserPermission(
            email="*****@*****.**",
            entity_name="parent_",
            entity_kind=data_types.PermissionEntityKind.FUZZER,
            is_prefix=True,
            auto_cc=data_types.AutoCCType.NONE,
        ).put()

        data_types.ExternalUserPermission(
            email="*****@*****.**",
            entity_name="parent",
            entity_kind=data_types.PermissionEntityKind.FUZZER,
            auto_cc=data_types.AutoCCType.NONE,
        ).put()

        data_types.ExternalUserPermission(
            email="*****@*****.**",
            entity_name="parent_cg",
            entity_kind=data_types.PermissionEntityKind.FUZZER,
            is_prefix=True,
            auto_cc=data_types.AutoCCType.NONE,
        ).put()

        data_types.ExternalUserPermission(
            email="*****@*****.**",
            entity_name="parens",
            entity_kind=data_types.PermissionEntityKind.FUZZER,
            is_prefix=True,
            auto_cc=data_types.AutoCCType.NONE,
        ).put()

        data_types.ExternalUserPermission(
            email="*****@*****.**",
            entity_name="parent",
            entity_kind=data_types.PermissionEntityKind.FUZZER,
            is_prefix=True,
            auto_cc=data_types.AutoCCType.ALL,
        ).put()

        data_types.ExternalUserPermission(
            email="*****@*****.**",
            entity_name="job",
            entity_kind=data_types.PermissionEntityKind.JOB,
            is_prefix=False,
            auto_cc=data_types.AutoCCType.ALL,
        ).put()

        data_types.ExternalUserPermission(
            email="*****@*****.**",
            entity_name="job",
            entity_kind=data_types.PermissionEntityKind.JOB,
            is_prefix=True,
            auto_cc=data_types.AutoCCType.ALL,
        ).put()

        data_types.ExternalUserPermission(
            email="*****@*****.**",
            entity_name="job2",
            entity_kind=data_types.PermissionEntityKind.JOB,
            is_prefix=False,
            auto_cc=data_types.AutoCCType.ALL,
        ).put()

        data_types.ExternalUserPermission(
            email="*****@*****.**",
            entity_name="job",
            entity_kind=data_types.PermissionEntityKind.JOB,
            is_prefix=False,
            auto_cc=data_types.AutoCCType.NONE,
        ).put()

        data_types.ExternalUserPermission(
            email="*****@*****.**",
            entity_name="job2",
            entity_kind=data_types.PermissionEntityKind.JOB,
            is_prefix=False,
            auto_cc=data_types.AutoCCType.NONE,
        ).put()

        data_types.ExternalUserPermission(
            email="*****@*****.**",
            entity_name="job",
            entity_kind=data_types.PermissionEntityKind.JOB,
            is_prefix=False,
            auto_cc=data_types.AutoCCType.NONE,
        ).put()

        data_types.ExternalUserPermission(
            email="*****@*****.**",
            entity_name="job3",
            entity_kind=data_types.PermissionEntityKind.JOB,
            is_prefix=False,
            auto_cc=data_types.AutoCCType.NONE,
        ).put()

        data_types.ExternalUserPermission(
            email="*****@*****.**",
            entity_name=None,
            entity_kind=data_types.PermissionEntityKind.UPLOADER,
            is_prefix=False,
            auto_cc=data_types.AutoCCType.NONE,
        ).put()

        # Fake fuzzers.
        data_types.Fuzzer(name="fuzzer").put()
        data_types.Fuzzer(name="parent", jobs=["job", "job2", "job3"]).put()

        data_types.Job(name="job").put()
        data_types.Job(name="job2").put()
        data_types.Job(name="job3").put()

        data_types.FuzzTarget(engine="parent",
                              binary="child",
                              project="test-project").put()
        data_types.FuzzTargetJob(
            fuzz_target_name="parent_child",
            job="job",
            last_run=datetime.datetime.utcnow(),
        ).put()

        data_types.FuzzTarget(engine="parent",
                              binary="child2",
                              project="test-project").put()
        data_types.FuzzTargetJob(
            fuzz_target_name="parent_child2",
            job="job",
            last_run=datetime.datetime.utcnow(),
        ).put()

        data_types.FuzzTarget(engine="parent",
                              binary="child",
                              project="test-project").put()
        data_types.FuzzTargetJob(
            fuzz_target_name="parent_child",
            job="job3",
            last_run=datetime.datetime.utcnow(),
        ).put()
Exemplo n.º 9
0
 def setUp(self):
     test_helpers.patch_environ(self)
     test_helpers.patch(self, [
         'handlers.cron.fuzzer_weights._query_helper',
         'handlers.cron.fuzzer_weights.update_weight_for_target',
     ])
Exemplo n.º 10
0
  def setUp(self):
    test_helpers.patch_environ(self)
    flaskapp = flask.Flask('testflask')
    flaskapp.add_url_rule(
        '/schedule-ml-train-tasks',
        view_func=ml_train.Handler.as_view('/schedule-ml-train-tasks'))
    self.app = webtest.TestApp(flaskapp)

    test_helpers.patch(
        self, ['base.tasks.add_task', 'handlers.base_handler.Handler.is_cron'])

    # Create fake jobs.
    data_types.Job(
        name='libfuzzer_asan',
        environment_string='USE_CORPUS_FOR_ML = True\n' +
        'USE_RNN_GENERATOR = True\n').put()
    data_types.Job(
        name='libfuzzer_msan',
        environment_string='USE_CORPUS_FOR_ML = True\n').put()
    data_types.Job(
        name='afl_asan',
        environment_string='USE_CORPUS_FOR_ML = False\n').put()

    data_types.Job(
        name='libfuzzer_asan_gradientfuzz',
        environment_string='USE_CORPUS_FOR_ML = True\n' +
        'USE_GRADIENTFUZZ = True\n').put()

    data_types.Job(
        name='libfuzzer_asan_all',
        environment_string=(
            'USE_CORPUS_FOR_ML = True\n' + 'USE_GRADIENTFUZZ = True\n' +
            'USE_RNN_GENERATOR = True')).put()

    # Create fake fuzzers.
    data_types.Fuzzer(
        name='libFuzzer',
        jobs=['libfuzzer_asan', 'libfuzzer_asan_gradientfuzz']).put()
    data_types.Fuzzer(name='afl', jobs=['afl_asan']).put()

    # Create fake child fuzzers.
    data_types.FuzzTarget(
        engine='libFuzzer', binary='fake_fuzzer', project='test-project').put()
    data_types.FuzzTargetJob(
        fuzz_target_name='libFuzzer_fake_fuzzer', job='libfuzzer_asan').put()
    data_types.FuzzTarget(
        engine='afl', binary='fake_fuzzer', project='test-project').put()
    data_types.FuzzTargetJob(
        fuzz_target_name='afl_fake_fuzzer', job='afl_asan').put()

    data_types.FuzzTarget(
        engine='libFuzzer',
        binary='fake_gradientfuzzer',
        project='test-project').put()
    data_types.FuzzTargetJob(
        fuzz_target_name='libFuzzer_fake_gradientfuzzer',
        job='libfuzzer_asan_gradientfuzz').put()

    data_types.FuzzTarget(
        engine='libFuzzer', binary='fake_all_fuzzer',
        project='test-project').put()
    data_types.FuzzTargetJob(
        fuzz_target_name='libFuzzer_fake_all_fuzzer',
        job='libfuzzer_asan_all').put()
Exemplo n.º 11
0
 def setUp(self):
     super().setUp()
     test_helpers.patch_environ(self)
Exemplo n.º 12
0
  def setUp(self):
    test_helpers.patch_environ(self)
    test_helpers.patch(self, [
        'base.utils.is_oss_fuzz',
        'handlers.cron.helpers.bot_manager.BotManager',
        'system.environment.is_running_on_app_engine',
        'google_cloud_utils.compute_engine_projects.load_project',
    ])

    self.mock.is_oss_fuzz.return_value = True
    self.mock.is_running_on_app_engine.return_value = True
    self.mock.load_project.return_value = compute_engine_projects.Project(
        project_id='clusterfuzz-external',
        clusters=[
            compute_engine_projects.Cluster(
                name='oss-fuzz-linux-zone2-pre',
                gce_zone='us-east2-a',
                instance_count=997,
                instance_template='external-pre-zone2',
                distribute=True,
                worker=False,
                high_end=False),
            compute_engine_projects.Cluster(
                name='oss-fuzz-linux-zone3-host',
                gce_zone='us-central1-d',
                instance_count=2,
                instance_template='host-zone3',
                distribute=False,
                worker=False,
                high_end=False),
            compute_engine_projects.Cluster(
                name='oss-fuzz-linux-zone3-worker',
                gce_zone='us-central1-d',
                instance_count=16,
                instance_template='worker-zone3',
                distribute=True,
                worker=True,
                high_end=False),
            compute_engine_projects.Cluster(
                name='oss-fuzz-linux-zone3-host-high-end',
                gce_zone='us-central1-d',
                instance_count=1,
                instance_template='host-high-end-zone3',
                distribute=False,
                worker=False,
                high_end=True),
            compute_engine_projects.Cluster(
                name='oss-fuzz-linux-zone3-worker-high-end',
                gce_zone='us-central1-d',
                instance_count=2,
                instance_template='worker-zone3',
                distribute=True,
                worker=True,
                high_end=True),
        ],
        instance_templates=[
            {
                'name': 'external-pre-zone2',
                'description': '{"version": 1}',
                'properties': {
                    'metadata': {
                        'items': [],
                    },
                    'disks': [{
                        'initializeParams': {
                            'diskSizeGb': 30,
                        },
                    }],
                    'serviceAccounts': [{
                        'email':
                            'email',
                        'scopes': [
                            'https://www.googleapis.com/auth/'
                            'devstorage.full_control',
                            'https://www.googleapis.com/auth/logging.write',
                            'https://www.googleapis.com/auth/userinfo.email',
                            'https://www.googleapis.com/auth/appengine.apis',
                            'https://www.googleapis.com/auth/prodxmon',
                            'https://www.googleapis.com/auth/bigquery',
                        ]
                    }],
                }
            },
            {
                'name': 'host-zone3',
                'description': '{"version": 1}',
                'properties': {
                    'metadata': {
                        'items': [],
                    },
                    'disks': [{
                        'initializeParams': {
                            'diskSizeGb': 30,
                        },
                    }],
                    'serviceAccounts': [{
                        'email':
                            'email',
                        'scopes': [
                            'https://www.googleapis.com/auth/'
                            'devstorage.full_control',
                            'https://www.googleapis.com/auth/logging.write',
                            'https://www.googleapis.com/auth/userinfo.email',
                            'https://www.googleapis.com/auth/appengine.apis',
                            'https://www.googleapis.com/auth/prodxmon',
                            'https://www.googleapis.com/auth/bigquery',
                        ]
                    }],
                }
            },
            {
                'name': 'worker-zone3',
                'description': '{"version": 1}',
                'properties': {
                    'metadata': {
                        'items': [],
                    },
                    'disks': [{
                        'initializeParams': {
                            'diskSizeGb': 30,
                        },
                    }],
                    'serviceAccounts': [{
                        'email':
                            'email',
                        'scopes': [
                            'https://www.googleapis.com/auth/'
                            'devstorage.full_control',
                            'https://www.googleapis.com/auth/logging.write',
                            'https://www.googleapis.com/auth/userinfo.email',
                            'https://www.googleapis.com/auth/prodxmon',
                        ]
                    }],
                }
            },
            {
                'name': 'host-high-end-zone3',
                'description': '{"version": 1}',
                'properties': {
                    'metadata': {
                        'items': [],
                    },
                    'disks': [{
                        'initializeParams': {
                            'diskSizeGb': 100,
                        },
                    }],
                    'serviceAccounts': [{
                        'email':
                            'email',
                        'scopes': [
                            'https://www.googleapis.com/auth/'
                            'devstorage.full_control',
                            'https://www.googleapis.com/auth/logging.write',
                            'https://www.googleapis.com/auth/userinfo.email',
                            'https://www.googleapis.com/auth/prodxmon',
                        ]
                    }],
                }
            },
        ],
        host_worker_assignments=[
            compute_engine_projects.HostWorkerAssignment(
                host='oss-fuzz-linux-zone3-host',
                worker='oss-fuzz-linux-zone3-worker',
                workers_per_host=8),
            compute_engine_projects.HostWorkerAssignment(
                host='oss-fuzz-linux-zone3-host-high-end',
                worker='oss-fuzz-linux-zone3-worker-high-end',
                workers_per_host=2),
        ])

    data_types.OssFuzzProject(
        id='proj1',
        name='proj1',
        cpu_weight=1.0,
        service_account='*****@*****.**').put()

    data_types.OssFuzzProject(
        id='proj2',
        name='proj2',
        cpu_weight=2.0,
        service_account='*****@*****.**').put()

    data_types.OssFuzzProject(
        id='proj3',
        name='proj3',
        cpu_weight=5.0,
        service_account='*****@*****.**').put()

    data_types.OssFuzzProject(
        id='proj4',
        name='proj4',
        cpu_weight=1.0,
        service_account='*****@*****.**').put()

    data_types.OssFuzzProject(
        id='proj5',
        name='proj5',
        cpu_weight=1.0,
        service_account='*****@*****.**',
        disk_size_gb=10).put()

    data_types.OssFuzzProject(
        id='proj6',
        name='proj6',
        cpu_weight=1.0,
        service_account='*****@*****.**',
        high_end=True).put()

    for j in range(1, 7):
      project_name = 'proj%d' % j
      data_types.WorkerTlsCert(
          id=project_name,
          project_name=project_name,
          cert_contents=project_name.encode() + b'_cert',
          key_contents=project_name.encode() + b'_key').put()

    data_types.OssFuzzProjectInfo(id='old_proj', name='old_proj').put()

    data_types.OssFuzzProjectInfo(
        id='proj2',
        name='proj2',
        clusters=[
            data_types.OssFuzzProjectInfo.ClusterInfo(
                cluster='oss-fuzz-linux-zone2-pre',
                gce_zone='us-east2-a',
                cpu_count=1,
            ),
            data_types.OssFuzzProjectInfo.ClusterInfo(
                cluster='old-cluster',
                gce_zone='us-east2-a',
                cpu_count=1,
            ),
        ]).put()

    data_types.OssFuzzProjectInfo(
        id='proj3',
        name='proj3',
        clusters=[
            data_types.OssFuzzProjectInfo.ClusterInfo(
                cluster='oss-fuzz-linux-zone2-pre',
                gce_zone='us-east2-a',
                cpu_count=499,
            )
        ]).put()

    data_types.OssFuzzProjectInfo(
        id='proj4',
        name='proj4',
        clusters=[
            data_types.OssFuzzProjectInfo.ClusterInfo(
                cluster='oss-fuzz-linux-zone2-pre',
                gce_zone='us-east2-a',
                cpu_count=99,
            )
        ]).put()

    data_types.OssFuzzProjectInfo(
        id='proj5',
        name='proj5',
        clusters=[
            data_types.OssFuzzProjectInfo.ClusterInfo(
                cluster='oss-fuzz-linux-zone2-pre',
                gce_zone='us-east2-a',
                cpu_count=99,
            )
        ]).put()

    data_types.OssFuzzProjectInfo(
        id='old_proj',
        name='old_proj',
        clusters=[
            data_types.OssFuzzProjectInfo.ClusterInfo(
                cluster='oss-fuzz-linux-zone2-pre',
                gce_zone='us-east2-a',
                cpu_count=5,
            )
        ]).put()

    data_types.HostWorkerAssignment(
        id='old-host-0',
        host_name='old-host',
        worker_name='worker',
        instance_num=0).put()

    instance_groups = {}
    instance_templates = {}
    self.mock.BotManager.side_effect = functools.partial(
        MockBotManager,
        instance_groups=instance_groups,
        instance_templates=instance_templates)
Exemplo n.º 13
0
 def setUp(self):
     helpers.patch_environ(self)
     self.plugins_root_dir = '/plugins'
     os.environ['MUTATOR_PLUGINS_DIR'] = self.plugins_root_dir
Exemplo n.º 14
0
 def setUp(self):
     helpers.patch_environ(self)
     test_utils.set_up_pyfakefs(self)
     self.plugins_root_dir = '/plugins'
     os.environ['MUTATOR_PLUGINS_DIR'] = self.plugins_root_dir
Exemplo n.º 15
0
  def setUp(self):
    helpers.patch(self, [
        'bot.fuzzers.engine_common.unpack_seed_corpus_if_needed',
        'bot.tasks.task_creation.create_tasks',
        'bot.tasks.setup.update_fuzzer_and_data_bundles',
        'build_management.build_manager.setup_build',
        'fuzzing.corpus_manager.backup_corpus',
        'fuzzing.corpus_manager.GcsCorpus.rsync_to_disk',
        'fuzzing.corpus_manager.FuzzTargetCorpus.rsync_from_disk',
        'datastore.ndb.transaction',
        'google_cloud_utils.blobs.write_blob',
        'google_cloud_utils.storage.write_data',
    ])

    helpers.patch_environ(self)
    self.mock.setup_build.side_effect = self._mock_setup_build
    self.mock.rsync_to_disk.side_effect = self._mock_rsync_to_disk
    self.mock.rsync_from_disk.side_effect = self._mock_rsync_from_disk
    self.mock.update_fuzzer_and_data_bundles.return_value = True
    self.mock.write_blob.return_value = 'key'
    self.mock.backup_corpus.return_value = 'backup_link'

    def mocked_unpack_seed_corpus_if_needed(*args, **kwargs):
      """Mock's assert called methods are not powerful enough to ensure that
      unpack_seed_corpus_if_needed was called once with force_unpack=True.
      Instead, just assert that it was called once and during the call assert
      that it was called correctly.
      """
      self.assertTrue(kwargs.get('force_unpack', False))

    self.mock.unpack_seed_corpus_if_needed.side_effect = (
        mocked_unpack_seed_corpus_if_needed)

    data_types.FuzzTarget(
        engine='libFuzzer', binary='test_fuzzer', project='test-project').put()
    data_types.FuzzTargetJob(
        fuzz_target_name='libFuzzer_test_fuzzer',
        engine='libFuzzer',
        job='libfuzzer_asan_job').put()

    self.fuzz_inputs_disk = tempfile.mkdtemp()
    self.bot_tmpdir = tempfile.mkdtemp()
    self.corpus_bucket = tempfile.mkdtemp()
    self.corpus_dir = os.path.join(self.corpus_bucket, 'corpus')
    self.quarantine_dir = os.path.join(self.corpus_bucket, 'quarantine')
    self.shared_corpus_dir = os.path.join(self.corpus_bucket, 'shared')

    shutil.copytree(os.path.join(TEST_DIR, 'corpus'), self.corpus_dir)
    shutil.copytree(os.path.join(TEST_DIR, 'quarantine'), self.quarantine_dir)
    shutil.copytree(os.path.join(TEST_DIR, 'shared'), self.shared_corpus_dir)

    os.environ['BOT_TMPDIR'] = self.bot_tmpdir
    os.environ['FUZZ_INPUTS'] = self.fuzz_inputs_disk
    os.environ['FUZZ_INPUTS_DISK'] = self.fuzz_inputs_disk
    os.environ['CORPUS_BUCKET'] = 'bucket'
    os.environ['QUARANTINE_BUCKET'] = 'bucket-quarantine'
    os.environ['SHARED_CORPUS_BUCKET'] = 'bucket-shared'
    os.environ['JOB_NAME'] = 'libfuzzer_asan_job'
    os.environ['FAIL_RETRIES'] = '1'
    os.environ['APP_REVISION'] = '1337'

    # ndb.transaction seems to cause hangs with testbed when run after another
    # test that uses testbed.
    self.mock.transaction.side_effect = lambda f, **_: f()
Exemplo n.º 16
0
 def setUp(self):
     super(SetSanitizerOptionsTest, self).setUp()
     test_helpers.patch_environ(self)
Exemplo n.º 17
0
 def setUp(self):
     test_helpers.patch_environ(self)
     self.temp_dir = tempfile.mkdtemp()
Exemplo n.º 18
0
 def setUp(self):
     test_helpers.patch(self, ['libs.handler.get_email_and_access_token'])
     self.app = webtest.TestApp(
         webapp2.WSGIApplication([('/', OAuthHandler)]))
     test_helpers.patch_environ(self)
     os.environ['AUTH_DOMAIN'] = 'localhost'
Exemplo n.º 19
0
 def setUp(self):
     helpers.patch_environ(self)
     os.environ['BOT_NAME'] = 'bot'
Exemplo n.º 20
0
  def setUp(self):
    helpers.patch(self, ['metrics.logs.update_entry_with_exc'])
    helpers.patch_environ(self)

    self.maxDiff = None  # pylint: disable=invalid-name
Exemplo n.º 21
0
 def setUp(self):
   test_helpers.patch_environ(self)
   self.valid_hard_timeout = 500
   self.invalid_hard_timeout = engine_common.POSTPROCESSING_TIME - 1
   self.valid_merge_timeout = 15
Exemplo n.º 22
0
 def setUp(self):
     helpers.patch_environ(self)
     self.testcase = data_types.Testcase()
     self.testcase.one_time_crasher_flag = False
     self.testcase.crash_state = 'fake_crash'
Exemplo n.º 23
0
 def setUp(self):
   test_helpers.patch_environ(self)
Exemplo n.º 24
0
    def setUp(self):
        helpers.patch_environ(self)

        data_types.Job(name='job_linux', platform='LINUX').put()
        data_types.Job(name='job_project', platform='PROJECT_LINUX_LIB').put()
Exemplo n.º 25
0
    def setUp(self):
        self.maxDiff = None  # pylint: disable=invalid-name
        test_helpers.patch_environ(self)

        os.environ["BUILD_DIR"] = DATA_DIR
Exemplo n.º 26
0
    def setUp(self):
        clear_temp_dir()
        create_temp_dir()

        test_helpers.patch_environ(self)
        afl_launcher_integration_test.dont_use_strategies(self)
Exemplo n.º 27
0
 def setUp(self):
   test_helpers.patch_environ(self)
   test_utils.set_up_pyfakefs(self)
   environment.set_value('FAIL_RETRIES', 1)
Exemplo n.º 28
0
 def setUp(self):
   test_helpers.patch_environ(self)
   self.valid_hard_timeout = 500
   self.valid_merge_timeout = 15
 def setUp(self):
     """Initialize path for a local copy of the dictionary and other values."""
     test_helpers.patch_environ(self)
     self.local_dict_path = os.path.join(
         DATA_DIRECTORY, dictionary_manager.RECOMMENDED_DICTIONARY_FILENAME)
     environment.set_value('FAIL_RETRIES', 1)
Exemplo n.º 30
0
    def setUp(self):
        test_helpers.patch_environ(self)
        self.maxDiff = None  # pylint: disable=invalid-name

        data_types.Fuzzer(
            name='testFuzzer',
            stats_columns=('sum(t.blah) as blah, custom(j.new_crashes) '
                           'as new_crashes, _EDGE_COV as edge_coverage, '
                           '_FUNC_COV as func_coverage, '
                           '_CORPUS_SIZE as corpus_size, '
                           '_CORPUS_BACKUP as corpus_backup, '
                           '_QUARANTINE_SIZE as quarantine_size, '
                           '_COV_REPORT as coverage_report, '
                           '_FUZZER_RUN_LOGS as fuzzer_logs,'
                           '_PERFORMANCE_REPORT as performance_report'),
            stats_column_descriptions=(
                'blah: "blah description"\n'
                'func_coverage: "func coverage description"\n')).put()

        data_types.Fuzzer(
            name='testFuzzer2',
            stats_columns=('sum(t.blah) as blah, custom(j.new_crashes) '
                           'as new_crashes, _EDGE_COV as edge_coverage, '
                           '_FUNC_COV as func_coverage, '
                           '_CORPUS_SIZE as corpus_size, '
                           '_CORPUS_BACKUP as corpus_backup, '
                           '_QUARANTINE_SIZE as quarantine_size, '
                           '_COV_REPORT as coverage_report, '
                           '_FUZZER_RUN_LOGS as fuzzer_logs,'
                           '_PERFORMANCE_REPORT as performance_report'),
            stats_column_descriptions=(
                'blah: "blah description"\n'
                'func_coverage: "func coverage description"\n')).put()

        data_types.Job(name='job',
                       environment_string='FUZZ_LOGS_BUCKET = bucket').put()

        now = datetime.datetime.utcnow()

        data_types.FuzzTarget(engine='testFuzzer',
                              project='test-project',
                              binary='1_fuzzer').put()
        data_types.FuzzTargetJob(fuzz_target_name='testFuzzer_1_fuzzer',
                                 job='job',
                                 last_run=now).put()

        data_types.FuzzTarget(engine='testFuzzer',
                              project='test-project',
                              binary='2_fuzzer').put()
        data_types.FuzzTargetJob(fuzz_target_name='testFuzzer_2_fuzzer',
                                 job='job',
                                 last_run=now).put()

        data_types.FuzzTarget(engine='testFuzzer',
                              project='test-project',
                              binary='3_fuzzer').put()
        data_types.FuzzTargetJob(fuzz_target_name='testFuzzer_3_fuzzer',
                                 job='job',
                                 last_run=now).put()

        data_types.FuzzTarget(engine='testFuzzer2',
                              project='test-project',
                              binary='1_fuzzer').put()
        data_types.FuzzTargetJob(fuzz_target_name='testFuzzer2_1_fuzzer',
                                 job='job',
                                 last_run=now).put()

        cov_info = data_types.CoverageInformation(fuzzer='2_fuzzer',
                                                  date=datetime.date(
                                                      2016, 10, 19))
        cov_info.edges_covered = 11
        cov_info.edges_total = 30
        cov_info.functions_covered = 10
        cov_info.functions_total = 15
        cov_info.html_report_url = 'https://report_for_2_fuzzer/20161019'
        cov_info.corpus_size_units = 20
        cov_info.corpus_size_bytes = 200
        cov_info.quarantine_size_units = 0
        cov_info.quarantine_size_bytes = 0
        cov_info.corpus_location = 'gs://corpus'
        cov_info.corpus_backup_location = 'gs://corpus-backup/file.zip'
        cov_info.quarantine_location = 'gs://quarantine'
        cov_info.put()

        cov_info = data_types.CoverageInformation(fuzzer='2_fuzzer',
                                                  date=datetime.date(
                                                      2016, 10, 21))
        cov_info.edges_covered = 15
        cov_info.edges_total = 30
        cov_info.functions_covered = 11
        cov_info.functions_total = 15
        cov_info.html_report_url = 'https://report_for_2_fuzzer/20161021'
        cov_info.corpus_size_units = 40
        cov_info.corpus_size_bytes = 400
        cov_info.quarantine_size_units = 8
        cov_info.quarantine_size_bytes = 80
        cov_info.corpus_location = 'gs://corpus'
        cov_info.corpus_backup_location = 'gs://corpus-backup/file.zip'
        cov_info.quarantine_location = 'gs://quarantine'
        cov_info.put()

        cov_info = data_types.CoverageInformation(fuzzer='1_fuzzer',
                                                  date=datetime.date(
                                                      2016, 10, 20))
        cov_info.edges_covered = 17
        cov_info.edges_total = 38
        cov_info.functions_covered = 12
        cov_info.functions_total = 19
        cov_info.html_report_url = 'https://report_for_1_fuzzer/20161020'
        cov_info.corpus_size_units = 47
        cov_info.corpus_size_bytes = 480
        cov_info.quarantine_size_units = 3
        cov_info.quarantine_size_bytes = 8
        cov_info.corpus_location = 'gs://corpus'
        cov_info.corpus_backup_location = 'gs://corpus-backup/file.zip'
        cov_info.quarantine_location = 'gs://quarantine'
        cov_info.put()

        self.client = mock.Mock(spec_set=big_query.Client)
        test_helpers.patch(self, [
            'google_cloud_utils.big_query.Client',
        ])
        self.mock.Client.return_value = self.client