def test_bigquery_matcher_query_error_retry(self, mock_bigquery): mock_query = mock_bigquery.return_value.query mock_query.side_effect = NotFound('table not found') matcher = bq_verifier.BigqueryMatcher('mock_project', 'mock_query', 'mock_checksum') with self.assertRaises(NotFound): hc_assert_that(self._mock_result, matcher) self.assertEqual(bq_verifier.MAX_RETRIES + 1, mock_query.call_count)
def test_bigquery_matcher_success(self, mock_bigquery): mock_query = Mock() mock_client = mock_bigquery.return_value mock_client.run_sync_query.return_value = mock_query mock_query.fetch_data.return_value = ([], None, None) matcher = bq_verifier.BigqueryMatcher( 'mock_project', 'mock_query', '59f9d6bdee30d67ea73b8aded121c3a0280f9cd8') hc_assert_that(self._mock_result, matcher)
def test_bigquery_matcher_success(self, mock_bigquery): mock_query = Mock() mock_client = mock_bigquery.return_value mock_client.run_sync_query.return_value = mock_query mock_query.fetch_data.return_value = ([], None, None) matcher = bq_verifier.BigqueryMatcher( 'mock_project', 'mock_query', 'da39a3ee5e6b4b0d3255bfef95601890afd80709') hc_assert_that(self._mock_result, matcher)
def test_bigquery_matcher_success(self, mock_bigquery): mock_query_result = [mock.Mock(), mock.Mock(), mock.Mock()] mock_query_result[0].values.return_value = [] mock_query_result[1].values.return_value = None mock_query_result[2].values.return_value = None mock_bigquery.return_value.query.return_value = mock_query_result matcher = bq_verifier.BigqueryMatcher( 'mock_project', 'mock_query', '59f9d6bdee30d67ea73b8aded121c3a0280f9cd8') hc_assert_that(self._mock_result, matcher)
def test_bigquery_matcher_query_responds_error_code(self, mock_bigquery): mock_query = Mock() mock_client = mock_bigquery.return_value mock_client.run_sync_query.return_value = mock_query mock_query.run.side_effect = NotFound('table is not found') matcher = bq_verifier.BigqueryMatcher('mock_project', 'mock_query', 'mock_checksum') with self.assertRaises(NotFound): hc_assert_that(self._mock_result, matcher) self.assertTrue(mock_query.run.called) self.assertEqual(bq_verifier.MAX_RETRIES + 1, mock_query.run.call_count)
def test_bigquery_matcher_query_run_error(self, mock_bigquery): mock_query = Mock() mock_client = mock_bigquery.return_value mock_client.run_sync_query.return_value = mock_query mock_query.run.side_effect = ValueError('job is already running') matcher = bq_verifier.BigqueryMatcher('mock_project', 'mock_query', 'mock_checksum') with self.assertRaises(ValueError): hc_assert_that(self._mock_result, matcher) self.assertTrue(mock_query.run.called) self.assertEqual(bq_verifier.MAX_RETRIES + 1, mock_query.run.call_count)
def test_bigquery_matcher_query_error_checksum(self, mock_bigquery): empty_query_result = [] mock_query = mock_bigquery.return_value.query mock_query.return_value.result.return_value = empty_query_result matcher = bq_verifier.BigqueryMatcher( 'mock_project', 'mock_query', '59f9d6bdee30d67ea73b8aded121c3a0280f9cd8', ) with self.assertRaisesRegex(AssertionError, r'Expected checksum'): hc_assert_that(self._mock_result, matcher) self.assertEqual(1, mock_query.call_count)
def test_bigquery_matcher_success_streaming_retry(self, mock_bigquery): # Simulate case where a streaming insert takes time to process, such that # the first query result is incomplete (empty). empty_query_result = [] mock_query_result = [mock.Mock(), mock.Mock(), mock.Mock()] mock_query_result[0].values.return_value = [] mock_query_result[1].values.return_value = None mock_query_result[2].values.return_value = None mock_query = mock_bigquery.return_value.query mock_query.return_value.result.side_effect = [ empty_query_result, mock_query_result ] matcher = bq_verifier.BigqueryMatcher( 'mock_project', 'mock_query', '59f9d6bdee30d67ea73b8aded121c3a0280f9cd8', timeout_secs=5, ) hc_assert_that(self._mock_result, matcher) self.assertEqual(2, mock_query.call_count)