예제 #1
0
  def testNeedNewAnalysisWhenPreviousOneWasForAnotherBug(self):
    existing_request = FlakeAnalysisRequest.Create('flake', False, 123)
    existing_request.user_emails = ['*****@*****.**']
    existing_request.Save()

    request = FlakeAnalysisRequest.Create('flake', False, 456)
    step1 = BuildStep.Create('m', 'b1', 10, 's', datetime(2016, 10, 01))
    step1.swarmed = False
    step1.supported = False
    step2 = BuildStep.Create('m', 'b2', 10, 's', datetime(2016, 10, 01))
    step2.swarmed = True
    step2.supported = True
    request.build_steps = [step1, step2]
    request.user_emails = ['*****@*****.**']

    mocked_now = datetime(2017, 05, 01, 10, 10, 10)
    self.MockUTCNow(mocked_now)

    version, step = flake_analysis_service._CheckForNewAnalysis(request)

    self.assertEqual(2, version)
    new_request = FlakeAnalysisRequest.GetVersion(key='flake', version=version)
    self.assertEqual(['*****@*****.**', '*****@*****.**'],
                     new_request.user_emails)
    self.assertFalse(new_request.user_emails_obscured)
    self.assertEqual(mocked_now, new_request.user_emails_last_edit)

    self.assertIsNotNone(step)
    self.assertTrue(step.scheduled)
    self.assertTrue(step.swarmed)
    self.assertTrue(step.supported)
예제 #2
0
  def testNeedNewAnalysisWithTooOldPreviousAnalysis(self):
    existing_request = FlakeAnalysisRequest.Create('flake', False, None)
    step1 = BuildStep.Create('m', 'b1', 11, 's', datetime(2016, 10, 01))
    step1.swarmed = True
    step1.supported = True
    step1.scheduled = True
    step2 = BuildStep.Create('m', 'b2', 12, 's', datetime(2016, 10, 01))
    step2.swarmed = True
    step2.supported = True
    step2.scheduled = True
    existing_request.supported = True
    existing_request.swarmed = True
    existing_request.user_emails = ['*****@*****.**']
    existing_request.build_steps = [step1, step2]
    existing_request.Save()

    request = FlakeAnalysisRequest.Create('flake', False, 123)
    step3 = BuildStep.Create('m', 'b2', 80, 's', datetime(2016, 10, 20))
    step3.swarmed = True
    step3.supported = True
    request.build_steps = [step3]
    request.user_emails = ['*****@*****.**']

    version, step = flake_analysis_service._CheckForNewAnalysis(request)

    self.assertEqual(1, version)
    self.assertIsNotNone(step)
    self.assertEqual(80, step.build_number)

    request = FlakeAnalysisRequest.GetVersion(key='flake')
    self.assertEqual(['*****@*****.**', '*****@*****.**'],
                     request.user_emails)
예제 #3
0
  def testNeedNewAnalysisWithFreshEnoughPreviousAnalysisWithRerunFlag(self):
    existing_request = FlakeAnalysisRequest.Create('flake', False, 123)
    step1 = BuildStep.Create('m', 'b1', 11, 's', datetime(2016, 10, 01))
    step1.swarmed = True
    step1.supported = True
    step1.scheduled = True
    step2 = BuildStep.Create('m', 'b2', 12, 's', datetime(2016, 10, 01))
    step2.swarmed = True
    step2.supported = True
    step2.scheduled = True
    existing_request.supported = True
    existing_request.swarmed = True
    existing_request.build_steps = [step1, step2]
    existing_request.Save()

    request = FlakeAnalysisRequest.Create('flake', False, 123)
    step3 = BuildStep.Create('m', 'b2', 20, 's', datetime(2016, 10, 01))
    step3.swarmed = True
    step3.supported = True
    request.build_steps = [step3]
    request.user_emails = ['*****@*****.**']

    mocked_now = datetime(2016, 10, 01)
    self.MockUTCNow(mocked_now)

    version, step = flake_analysis_service._CheckForNewAnalysis(request, True)

    self.assertEqual(1, version)
    new_request = FlakeAnalysisRequest.GetVersion(key='flake', version=version)
    self.assertEqual(['*****@*****.**'], new_request.user_emails)
    self.assertFalse(new_request.user_emails_obscured)
    self.assertEqual(datetime(2016, 10, 01), new_request.user_emails_last_edit)

    self.assertIsNotNone(step)
    self.assertTrue(step.scheduled)
예제 #4
0
  def testNotNeedNewAnalysisWithFreshEnoughPreviousAnalysis(self):
    existing_request = FlakeAnalysisRequest.Create('flake', False, 123)
    step1 = BuildStep.Create('m', 'b1', 11, 's', datetime(2016, 10, 01))
    step1.swarmed = True
    step1.supported = True
    step1.scheduled = True
    step2 = BuildStep.Create('m', 'b2', 12, 's', datetime(2016, 10, 01))
    step2.swarmed = True
    step2.supported = True
    step2.scheduled = True
    existing_request.supported = True
    existing_request.swarmed = True
    existing_request.build_steps = [step1, step2]
    existing_request.Save()

    request = FlakeAnalysisRequest.Create('flake', False, 123)
    step3 = BuildStep.Create('m', 'b2', 20, 's', datetime(2016, 10, 03))
    step3.swarmed = True
    step3.supported = True
    request.build_steps = [step3]

    version, step = flake_analysis_service._CheckForNewAnalysis(request)

    self.assertEqual(0, version)
    self.assertIsNone(step)
예제 #5
0
  def testNeedNewAnalysisWithADifferentFormerReportedStep(self):
    existing_request = FlakeAnalysisRequest.Create('flake', False, 123)
    step1 = BuildStep.Create('m', 'b1', 11, 's', datetime(2016, 10, 01))
    step1.swarmed = True
    step1.supported = True
    step1.scheduled = True
    step2 = BuildStep.Create('m', 'b2', 12, 's', datetime(2016, 10, 01))
    step2.swarmed = True
    step2.supported = True
    step2.scheduled = False
    existing_request.supported = True
    existing_request.swarmed = True
    existing_request.build_steps = [step1, step2]
    existing_request.Save()

    request = FlakeAnalysisRequest.Create('flake', False, 123)
    step3 = BuildStep.Create('m', 'b3', 13, 's', datetime(2016, 10, 01))
    step3.swarmed = False
    step3.supported = False
    request.build_steps = [step3]

    version, step = flake_analysis_service._CheckForNewAnalysis(request)

    self.assertEqual(1, version)
    self.assertIsNotNone(step)
    self.assertTrue(step.scheduled)
    self.assertEqual('b2', step.builder_name)
예제 #6
0
  def testNotNeedNewAnalysisForStepLevelFlake(self):
    request = FlakeAnalysisRequest.Create('flake', True, 123)
    step1 = BuildStep.Create('m', 'b1', 10, 's', datetime(2016, 10, 01))
    step1.swarmed = True
    step1.supported = True
    request.build_steps = [step1]

    version, step = flake_analysis_service._CheckForNewAnalysis(request)

    self.assertEqual(0, version)
    self.assertIsNone(step)