Esempio n. 1
0
 def SideEffect(*_, **__):
     SideEffect.call_count += 1
     if SideEffect.call_count == 1:
         return unittest_utils.FakeProcess(
             stdout=json.dumps([{
                 'foo': 'bar'
             }]))
     else:
         return unittest_utils.FakeProcess(
             stdout=json.dumps([{
                 'bar': 'baz'
             }]))
Esempio n. 2
0
 def testValidResults(self):
   """Tests functionality when valid results are returned."""
   query_results = [
       {
           'id':
           'build-1234',
           'test_id': ('ninja://chrome/test:telemetry_gpu_integration_test/'
                       'gpu_tests.pixel_integration_test.'
                       'PixelIntegrationTest.test_name'),
           'status':
           'FAIL',
           'typ_expectations': [
               'RetryOnFailure',
           ],
           'typ_tags': [
               'win',
               'intel',
           ],
           'step_name':
           'step_name',
       },
   ]
   self._popen_mock.return_value = unittest_utils.FakeProcess(
       stdout=json.dumps(query_results))
   results = self._querier.QueryBuilder('builder', 'ci')
   self.assertEqual(len(results), 1)
   self.assertEqual(
       results[0],
       data_types.Result('test_name', ['win', 'intel'], 'Failure', 'step_name',
                         '1234'))
Esempio n. 3
0
 def testRateLimitRetryFailure(self):
   """Tests that rate limit errors stop retrying after enough iterations."""
   self._popen_mock.return_value = unittest_utils.FakeProcess(
       returncode=1, stdout='Exceeded rate limits for foo.')
   with self.assertRaises(RuntimeError):
     self._querier._RunBigQueryCommandForJsonOutput('', {})
   self.assertEqual(self._popen_mock.call_count, queries.MAX_QUERY_TRIES)
Esempio n. 4
0
 def testNoResults(self):
   """Tests functionality if the query returns no results."""
   self._popen_mock.return_value = unittest_utils.FakeProcess(stdout='[]')
   builder, results = queries.QueryBuilder('builder', 'ci', 'pixel', 'project',
                                           5, False)
   self.assertEqual(builder, 'builder')
   self.assertEqual(results, [])
Esempio n. 5
0
    def testWebGlVersion(self):
        """Tests that only results for the correct WebGL version are returned."""
        query_results = [
            {
                'id':
                'build-1234',
                'test_id':
                ('ninja://chrome/test:telemetry_gpu_integration_test/'
                 'gpu_tests.webgl_conformance_integration_test.'
                 'WebGLConformanceIntegrationTest.test_name'),
                'status':
                'FAIL',
                'typ_expectations': [
                    'RetryOnFailure',
                ],
                'typ_tags': [
                    'webgl-version-1',
                ],
                'step_name':
                'step_name',
            },
            {
                'id':
                'build-2345',
                'test_id':
                ('ninja://chrome/test:telemetry_gpu_integration_test/'
                 'gpu_tests.webgl_conformance_integration_test.'
                 'WebGLConformanceIntegrationTest.test_name'),
                'status':
                'FAIL',
                'typ_expectations': [
                    'RetryOnFailure',
                ],
                'typ_tags': [
                    'webgl-version-2',
                ],
                'step_name':
                'step_name',
            },
        ]
        querier = unittest_utils.CreateGenericQuerier(
            suite='webgl_conformance1')
        self._popen_mock.return_value = unittest_utils.FakeProcess(
            stdout=json.dumps(query_results))
        results = querier.QueryBuilder('builder', 'ci')
        self.assertEqual(len(results), 1)
        self.assertEqual(
            results[0],
            data_types.Result('test_name', ['webgl-version-1'], 'Failure',
                              'step_name', '1234'))

        querier = unittest_utils.CreateGenericQuerier(
            suite='webgl_conformance2')
        results = querier.QueryBuilder('builder', 'ci')
        self.assertEqual(len(results), 1)
        self.assertEqual(
            results[0],
            data_types.Result('test_name', ['webgl-version-2'], 'Failure',
                              'step_name', '2345'))
Esempio n. 6
0
 def testJsonReturned(self):
   """Tests that valid JSON parsed from stdout is returned."""
   query_output = {'foo': 'bar'}
   self._popen_mock.return_value = unittest_utils.FakeProcess(
       stdout=json.dumps(query_output))
   result = self._querier._RunBigQueryCommandForJsonOutput('', {})
   self.assertEqual(result, query_output)
   self._popen_mock.assert_called_once()
Esempio n. 7
0
 def testNoResults(self):
   """Tests functionality if the query returns no results."""
   self._popen_mock.return_value = unittest_utils.FakeProcess(stdout='[]')
   results = self._querier.QueryBuilder('builder', 'ci')
   self.assertEqual(results, [])
Esempio n. 8
0
 def testQueryFailureRaised(self):
   """Tests that a query failure is properly surfaced."""
   self._popen_mock.return_value = unittest_utils.FakeProcess(returncode=1)
   with self.assertRaises(RuntimeError):
     self._querier.QueryBuilder('builder', 'ci')
Esempio n. 9
0
 def SideEffect(*_, **__):
   SideEffect.call_count += 1
   if SideEffect.call_count == 1:
     return unittest_utils.FakeProcess(
         returncode=1, stdout='Exceeded rate limits for foo.')
   return unittest_utils.FakeProcess(stdout='[]')
Esempio n. 10
0
 def testExceptionRaisedOnFailure(self):
   """Tests that an exception is raised if the query fails."""
   self._popen_mock.return_value = unittest_utils.FakeProcess(returncode=1)
   with self.assertRaises(RuntimeError):
     self._querier._RunBigQueryCommandForJsonOutput('', {})