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' }]))
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'))
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)
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, [])
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'))
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()
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, [])
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')
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='[]')
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('', {})