Beispiel #1
0
def setup_templates(non_dry_run):
  """Set up templates."""
  for name, template in six.iteritems(TEMPLATES):
    job = data_types.JobTemplate.query(
        data_types.JobTemplate.name == name).get()
    if job:
      print('Template with name', name, 'already exists.')
      continue

    if non_dry_run:
      print('Creating template', name)
      data_types.JobTemplate(name=name, environment_string=template).put()
    else:
      print('Skip creating template', name, '(dry-run mode)')
Beispiel #2
0
    def post(self):
        """Handle a post request."""
        name = self.request.get('name')
        if not name:
            raise helpers.EarlyExitException(
                'Please give this template a name!', 400)

        if not data_types.Job.VALID_NAME_REGEX.match(name):
            raise helpers.EarlyExitException(
                'Template name can only contain letters, numbers, dashes and '
                'underscores.', 400)

        environment_string = self.request.get('environment_string')
        if not environment_string:
            raise helpers.EarlyExitException(
                'No environment string provided for job template.', 400)

        template = data_types.JobTemplate.query(
            data_types.JobTemplate.name == name).get()
        if not template:
            template = data_types.JobTemplate()

        template.name = name
        template.environment_string = environment_string
        template.put()

        helpers.log('Template created %s' % name, helpers.MODIFY_OPERATION)

        template_values = {
            'title':
            'Success',
            'message': ('Template %s is successfully updated. '
                        'Redirecting back to jobs page...') % name,
            'redirect_url':
            '/jobs',
        }
        self.render('message.html', template_values)
Beispiel #3
0
    def setUp(self):
        test_helpers.patch_environ(self)
        # Set up a Fuzzer.
        data_types.Fuzzer(
            revision=1,
            additional_environment_string=
            'FUCHSIA_RESOURCES_URL = gs://fuchsia-on-clusterfuzz-v2/*',
            builtin=True,
            differential=False,
            file_size='builtin',
            jobs=['libfuzzer_asan_test_fuzzer'],
            name='libFuzzer',
            source='builtin',
            max_testcases=4).put()

        # Set up a FuzzerJob.
        data_types.FuzzerJob(fuzzer='libFuzzer',
                             job='libfuzzer_asan_test_fuzzer',
                             platform='FUCHSIA',
                             weight=1.0).put()

        # Set up a FuzzTarget
        data_types.FuzzTarget(binary='libfuzzer_asan_test_fuzzer',
                              engine='libFuzzer',
                              project='test-project').put()

        # Set up a FuzzTargetJob
        data_types.FuzzTargetJob(
            engine='libFuzzer',
            fuzz_target_name='libFuzzer_libfuzzer_asan_test_fuzzer',
            job='libfuzzer_asan_test_fuzzer',
            weight=1.0).put()

        # Set up a Job
        data_types.Job(environment_string=(
            'CUSTOM_BINARY = True\n'
            'FUCHSIA_RESOURCES_URL = gs://fuchsia-on-clusterfuzz-v2/*\n'
            'QUEUE_OVERRIDE=FUCHSIA\n'
            'OS_OVERRIDE=FUCHSIA'),
                       name='libfuzzer_asan_test_fuzzer',
                       platform='FUCHSIA',
                       templates=['libfuzzer', 'engine_asan']).put()

        # Set up a JobTemplate
        data_types.JobTemplate(
            name='libfuzzer',
            environment_string=('APP_NAME = launcher.py\n'
                                'MAX_FUZZ_THREADS = 1\n'
                                'MAX_TESTCASES = 4\n'
                                'FUZZ_TEST_TIMEOUT = 4800\n'
                                'TEST_TIMEOUT = 30\n'
                                'WARMUP_TIMEOUT = 30\n'
                                'BAD_BUILD_CHECK = False\n'
                                'THREAD_ALIVE_CHECK_INTERVAL = 1\n'
                                'REPORT_OOMS_AND_HANGS = True\n'
                                'CORPUS_FUZZER_NAME_OVERRIDE = libFuzzer\n'
                                'ENABLE_GESTURES = False\n'
                                'THREAD_DELAY = 30.0')).put()

        # Set up another JobTemplate
        data_types.JobTemplate(
            name='engine_asan',
            environment_string=
            ('LSAN = True\n'
             'ADDITIONAL_ASAN_OPTIONS = quarantine_size_mb=64:strict_memcmp=1'
             ':symbolize=0:fast_unwind_on_fatal=0'
             ':allocator_release_to_os_interval_ms=500\n')).put()

        environment.set_value('QUEUE_OVERRIDE', 'FUCHSIA')
        environment.set_value('OS_OVERRIDE', 'FUCHSIA')
        environment.set_value('FUCHSIA_RESOURCES_URL',
                              'gs://fuchsia-on-clusterfuzz-v2/*')
        # set_bot_environment gives us access to RESOURCES_DIR
        environment.set_bot_environment()
        # Cannot simply call super(TestLauncherFuchsia).setUp, because the
        # with_cloud_emulators decorator modifies what the parent class would be.
        # Just explicitly call BaseLauncherTest's setUp.
        BaseLauncherTest.setUp(self)
Beispiel #4
0
  def setUp(self):
    BaseIntegrationTest.setUp(self)

    # Set up a Fuzzer.
    data_types.Fuzzer(
        revision=1,
        additional_environment_string=
        'FUCHSIA_BUILD_URL = gs://fuchsia-clusterfuzz-test-august-12-2019/*\n',
        builtin=True,
        differential=False,
        file_size='builtin',
        jobs=['libfuzzer_asan_test_fuzzer'],
        name='libFuzzer',
        source='builtin',
        max_testcases=4).put()

    # Set up a FuzzerJob.
    data_types.FuzzerJob(
        fuzzer='libFuzzer',
        job='libfuzzer_asan_test_fuzzer',
        platform='FUCHSIA',
        weight=1.0).put()

    # Set up a FuzzTarget
    data_types.FuzzTarget(
        binary='libfuzzer_asan_test_fuzzer',
        engine='libFuzzer',
        project='test-project').put()

    # Set up a FuzzTargetJob
    data_types.FuzzTargetJob(
        engine='libFuzzer',
        fuzz_target_name='libFuzzer_libfuzzer_asan_test_fuzzer',
        job='libfuzzer_asan_test_fuzzer',
        weight=1.0).put()

    # Set up a Job
    data_types.Job(
        environment_string=(
            'CUSTOM_BINARY = True\n'
            'FUCHSIA_BUILD_URL = gs://fuchsia-clusterfuzz-test-august-12-2019/*'
            '\n'
            'QUEUE_OVERRIDE=FUCHSIA\n'
            'OS_OVERRIDE=FUCHSIA'),
        name='libfuzzer_asan_test_fuzzer',
        platform='FUCHSIA',
        templates=['libfuzzer', 'engine_asan']).put()

    # Set up a JobTemplate
    data_types.JobTemplate(
        name='libfuzzer',
        environment_string=('MAX_FUZZ_THREADS = 1\n'
                            'MAX_TESTCASES = 4\n'
                            'FUZZ_TEST_TIMEOUT = 4800\n'
                            'TEST_TIMEOUT = 30\n'
                            'WARMUP_TIMEOUT = 30\n'
                            'BAD_BUILD_CHECK = False\n'
                            'THREAD_ALIVE_CHECK_INTERVAL = 1\n'
                            'REPORT_OOMS_AND_HANGS = True\n'
                            'CORPUS_FUZZER_NAME_OVERRIDE = libFuzzer\n'
                            'ENABLE_GESTURES = False\n'
                            'THREAD_DELAY = 30.0')).put()

    # Set up another JobTemplate
    data_types.JobTemplate(
        name='engine_asan',
        environment_string=(
            'LSAN = True\n'
            'ADDITIONAL_ASAN_OPTIONS = quarantine_size_mb=64:strict_memcmp=1'
            ':symbolize=0:fast_unwind_on_fatal=0'
            ':allocator_release_to_os_interval_ms=500\n')).put()

    environment.set_value('QUEUE_OVERRIDE', 'FUCHSIA')
    environment.set_value('OS_OVERRIDE', 'FUCHSIA')
    environment.set_value('FUCHSIA_BUILD_URL',
                          'gs://fuchsia-clusterfuzz-test-august-12-2019/*')
    self.tmp_resources_dir = tempfile.mkdtemp()
    environment.set_value('RESOURCES_DIR', self.tmp_resources_dir)