コード例 #1
0
 def CreateMockCommandAttemptEvent(self,
                                   timedelta,
                                   state=None,
                                   serials=None):
     """Create a placeholder TFC command attempt change event."""
     return api_messages.CommandAttemptEventMessage(
         type=common.ObjectEventType.COMMAND_ATTEMPT_STATE_CHANGED,
         attempt=api_messages.CommandAttemptMessage(
             attempt_id='attempt_id',
             request_id=self.mock_test_run.request_id,
             device_serials=serials or [],
             state=state or common.CommandState.UNKNOWN),
         event_time=self.mock_test_run.update_time + timedelta)
コード例 #2
0
    def testTrackTestRun(self, mock_time, mock_get_request, mock_log):
        # mock current time
        now = datetime.datetime.now()
        mock_time.return_value = now

        # configure mock TFC request with 1 attempt and 2 devices
        request_id = self.mock_test_run.request_id
        mock_request = api_messages.RequestMessage(id=request_id)
        mock_request.command_attempts.append(
            api_messages.CommandAttemptMessage(
                device_serials=['1', '2'],
                start_time=now,
                end_time=now,
                state=common.CommandState.COMPLETED))
        mock_get_request.return_value = mock_request

        # update mock test run
        self.mock_test_run.test_package_info = ndb_models.TestPackageInfo(
            name='name', version='version')
        self.mock_test_run.state = ndb_models.TestRunState.COMPLETED
        self.mock_test_run.create_time = now - datetime.timedelta(seconds=123)
        self.mock_test_run.failed_test_run_count = 1
        self.mock_test_run.total_test_count = 2
        self.mock_test_run.failed_test_count = 3
        self.mock_test_run.put()

        # check that right data was logged
        tfc_event_handler._TrackTestRun(self.mock_test_run.key.id())
        mock_log.assert_called_with(analytics.TEST_RUN_CATEGORY,
                                    analytics.END_ACTION,
                                    test_name='name',
                                    test_version='version',
                                    state='COMPLETED',
                                    is_rerun=False,
                                    duration_seconds=123,
                                    device_count=2,
                                    attempt_count=1,
                                    failed_module_count=1,
                                    test_count=2,
                                    failed_test_count=3)
コード例 #3
0
    def testStoreTestResults(self, mock_results_ctor, mock_insert, mock_get,
                             mock_get_attempts):
        test_results = mock.MagicMock(summary=xts_result.Summary(
            passed=12, failed=34, modules_done=56, modules_total=78))
        mock_results_ctor.return_value = test_results
        mock_get_attempts.return_value = [
            api_messages.CommandAttemptMessage(attempt_id='attempt_id')
        ]
        mock_get.return_value = [
            sql_models.TestModuleResult(
                id='%d' % i,
                test_run_id='test_run_id',
                attempt_id='attempt_id',
                name='module %d' % i,
                complete=True,
                duration_ms=0,
                passed_tests=1,
                failed_tests=2,
                total_tests=3,
                error_message=None if i < 50 else 'error_message')
            for i in range(100)
        ]

        test_result_handler.StoreTestResults('test_run_id', 'attempt_id',
                                             'test_results_url')

        # Results inserted into DB
        mock_insert.assert_called_with('test_run_id', 'attempt_id',
                                       test_results)
        mock_get_attempts.assert_called_with('request_id')
        mock_get.assert_called_with(['attempt_id'])
        # Test run summary updated
        self.test_run = self.test_run.key.get()
        self.assertEqual(300, self.test_run.total_test_count)
        self.assertEqual(200, self.test_run.failed_test_count)
        self.assertEqual(50, self.test_run.failed_test_run_count)
コード例 #4
0
 def _createAttempt(self, state=None):
   """Creates a fake command attempt."""
   return api_messages.CommandAttemptMessage(
       request_id='id', command_id='id', attempt_id='id', task_id='id',
       state=state or CommandState.UNKNOWN)
コード例 #5
0
    def testTrackTestInvocation_manualRetry(self, mock_time, mock_log):
        # mock current time
        now = datetime.datetime.now()
        mock_time.return_value = now

        # configure mock TFC request with 1 attempt
        request_id = self.mock_test_run.request_id
        mock_request = api_messages.RequestMessage(id=request_id,
                                                   command_line='command')
        mock_request.command_attempts.append(
            api_messages.CommandAttemptMessage(
                state=common.CommandState.COMPLETED,
                device_serials=['2'],
                start_time=now - datetime.timedelta(seconds=200),
                end_time=now - datetime.timedelta(seconds=100),
                total_test_count=3,
                failed_test_run_count=2,
                failed_test_count=1))

        # create previous test runs
        first_test_run = ndb_models.TestRun(
            test_run_config=ndb_models.TestRunConfig(
                test_key=self.mock_test.key, run_target='run_target'),
            test=self.mock_test,
            request_id='request_id1',
            state=ndb_models.TestRunState.UNKNOWN,
            create_time=now - datetime.timedelta(seconds=5000),
            total_test_count=100,
            failed_test_run_count=90,
            failed_test_count=80,
            prev_test_context=ndb_models.TestContextObj())
        first_test_run.put()
        second_test_run = ndb_models.TestRun(
            test_run_config=ndb_models.TestRunConfig(
                test_key=self.mock_test.key, run_target='run_target'),
            test=self.mock_test,
            request_id='request_id2',
            state=ndb_models.TestRunState.UNKNOWN,
            create_time=now - datetime.timedelta(seconds=2000),
            total_test_count=10,
            failed_test_run_count=9,
            failed_test_count=8,
            prev_test_run_key=first_test_run.key)
        second_test_run.put()

        # update mock test run
        self.mock_test_run.test_package_info = ndb_models.TestPackageInfo(
            name='name', version='version')
        self.mock_test_run.state = ndb_models.TestRunState.COMPLETED
        self.mock_test_run.create_time = now - datetime.timedelta(seconds=1000)
        self.mock_test_run.failed_test_count = 1
        self.mock_test_run.prev_test_run_key = second_test_run.key

        # check that right data was logged
        tfc_event_handler._TrackTestInvocations(mock_request,
                                                self.mock_test_run)
        mock_log.assert_called_with(
            analytics.INVOCATION_CATEGORY,
            analytics.END_ACTION,
            command='command',
            test_run_command='mock test run command',
            test_run_retry_command='mock test run retry command',
            test_id=tfc_event_handler.LOCAL_ID_TAG,
            test_name='name',
            test_version='version',
            state='COMPLETED',
            failed_test_count_threshold=None,
            duration_seconds=100,
            elapsed_time_seconds=4900,
            device_count=1,
            test_count=3,
            failed_module_count=2,
            failed_test_count=1,
            prev_total_test_count=10,
            prev_failed_module_count=9,
            prev_failed_test_count=8,
            missing_previous_run=True,
            is_sequence_run=False)
コード例 #6
0
    def testTrackTestInvocation(self, mock_time, mock_log):
        # mock current time
        now = datetime.datetime.now()
        mock_time.return_value = now

        # configure mock TFC request with 2 attempts
        request_id = self.mock_test_run.request_id
        mock_request = api_messages.RequestMessage(id=request_id,
                                                   command_line='command')
        mock_request.command_attempts.append(
            api_messages.CommandAttemptMessage(
                state=common.CommandState.COMPLETED,
                device_serials=['1', '2'],
                start_time=now - datetime.timedelta(seconds=400),
                end_time=now - datetime.timedelta(seconds=300),
                total_test_count=60,
                failed_test_run_count=50,
                failed_test_count=40))
        mock_request.command_attempts.append(
            api_messages.CommandAttemptMessage(
                state=common.CommandState.COMPLETED,
                device_serials=['2'],
                start_time=now - datetime.timedelta(seconds=200),
                end_time=now - datetime.timedelta(seconds=100),
                total_test_count=3,
                failed_test_run_count=2,
                failed_test_count=1))

        # set test id
        self.mock_test.key = ndb.Key(ndb_models.Test, 'some.test.id')
        self.mock_test.put()
        self.mock_test_run.test_run_config.test_key = self.mock_test.key

        # update mock test run
        self.mock_test_run.test_package_info = ndb_models.TestPackageInfo(
            name='name', version='version')
        self.mock_test_run.state = ndb_models.TestRunState.COMPLETED
        self.mock_test_run.create_time = now - datetime.timedelta(seconds=1000)
        self.mock_test_run.failed_test_count = 1
        self.mock_test_run.sequence_id = 'abc-def-ghi'

        # check that right data was logged
        tfc_event_handler._TrackTestInvocations(mock_request,
                                                self.mock_test_run)
        mock_log.assert_called_with(
            analytics.INVOCATION_CATEGORY,
            analytics.END_ACTION,
            command='command',
            test_run_command='mock test run command',
            test_run_retry_command='mock test run retry command',
            test_id='some.test.id',
            test_name='name',
            test_version='version',
            state='COMPLETED',
            failed_test_count_threshold='10',
            duration_seconds=100,
            elapsed_time_seconds=900,
            device_count=1,
            test_count=3,
            failed_module_count=2,
            failed_test_count=1,
            prev_total_test_count=60,
            prev_failed_module_count=50,
            prev_failed_test_count=40,
            missing_previous_run=False,
            is_sequence_run=True)