def testGetId(self): luci_project = 'chromium' normalized_step_name = 'normalized_step' normalized_test_name = 'normalized_test' self.assertEqual( 'chromium@normalized_step@normalized_test', Flake.GetId(luci_project=luci_project, normalized_step_name=normalized_step_name, normalized_test_name=normalized_test_name))
def _CreateFlakeOccurrenceFromRow(row, flake_type_enum): """Creates a FlakeOccurrence from a row fetched from BigQuery.""" luci_project = row['luci_project'] luci_builder = row['luci_builder'] step_ui_name = row['step_ui_name'] test_name = row['test_name'] legacy_master_name = row['legacy_master_name'] legacy_build_number = row['legacy_build_number'] normalized_step_name = Flake.NormalizeStepName( step_name=step_ui_name, master_name=legacy_master_name, builder_name=luci_builder, build_number=legacy_build_number) normalized_test_name = Flake.NormalizeTestName(test_name, step_ui_name) flake_id = Flake.GetId(luci_project=luci_project, normalized_step_name=normalized_step_name, normalized_test_name=normalized_test_name) flake_key = ndb.Key(Flake, flake_id) gerrit_project = row['gerrit_project'] build_id = row['build_id'] luci_bucket = row['luci_bucket'] time_happened = row['test_start_msec'] gerrit_cl_id = row['gerrit_cl_id'] # Not add the original test name as a tag here, because all the tags will be # merged into Flake model, and there might be 100s of parameterized tests # which might lead to too large data for a single Flake entity. tags = [ 'gerrit_project::%s' % gerrit_project, 'luci_project::%s' % luci_project, 'bucket::%s' % luci_bucket, 'master::%s' % legacy_master_name, 'builder::%s' % luci_builder, 'binary::%s' % normalized_step_name, # e.g. "tests" 'test_type::%s' % step_ui_name.split(' ', 1)[0], # e.g. "flavored_tests" 'step::%s' % step_ui_name, # e.g. "flavored_tests on Mac 10.13" 'flake::%s' % normalized_test_name, ] suite = _GetTestSuiteForOccurrence(row, normalized_test_name, normalized_step_name) if suite: tags.append('suite::%s' % suite) tags.sort() flake_occurrence = FlakeOccurrence.Create( flake_type=flake_type_enum, build_id=build_id, step_ui_name=step_ui_name, test_name=test_name, luci_project=luci_project, luci_bucket=luci_bucket, luci_builder=luci_builder, legacy_master_name=legacy_master_name, legacy_build_number=legacy_build_number, time_happened=time_happened, gerrit_cl_id=gerrit_cl_id, parent_flake_key=flake_key, tags=tags) return flake_occurrence