Repository: beam Updated Branches: refs/heads/master 3a83a661b -> fcd11feb9
[BEAM-2861] Fix tests which fail with google credential Project: http://git-wip-us.apache.org/repos/asf/beam/repo Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/a95dc855 Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/a95dc855 Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/a95dc855 Branch: refs/heads/master Commit: a95dc855c68ac428daeab0bec3c06bfad5df3cfb Parents: 3a83a66 Author: Mark Liu <[email protected]> Authored: Fri Sep 8 12:56:10 2017 -0700 Committer: [email protected] <[email protected]> Committed: Mon Sep 11 21:27:00 2017 -0700 ---------------------------------------------------------------------- sdks/python/apache_beam/io/gcp/tests/utils.py | 8 +-- .../apache_beam/io/gcp/tests/utils_test.py | 66 +++++++++++++++----- 2 files changed, 56 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/beam/blob/a95dc855/sdks/python/apache_beam/io/gcp/tests/utils.py ---------------------------------------------------------------------- diff --git a/sdks/python/apache_beam/io/gcp/tests/utils.py b/sdks/python/apache_beam/io/gcp/tests/utils.py index 40eb975..b4b4ba8 100644 --- a/sdks/python/apache_beam/io/gcp/tests/utils.py +++ b/sdks/python/apache_beam/io/gcp/tests/utils.py @@ -50,13 +50,13 @@ def delete_bq_table(project, dataset, table): 'table: %s.', project, dataset, table) bq_dataset = bigquery.Client(project=project).dataset(dataset) if not bq_dataset.exists(): - raise GcpTestIOError('Failed to cleanup. Bigquery dataset %s doesn\'t' - 'exist in project %s.' % dataset, project) + raise GcpTestIOError('Failed to cleanup. Bigquery dataset %s doesn\'t ' + 'exist in project %s.' % (dataset, project)) bq_table = bq_dataset.table(table) if not bq_table.exists(): - raise GcpTestIOError('Failed to cleanup. Biqeury table %s doesn\'t ' + raise GcpTestIOError('Failed to cleanup. Bigquery table %s doesn\'t ' 'exist in project %s, dataset %s.' % - table, project, dataset) + (table, project, dataset)) bq_table.delete() if bq_table.exists(): raise RuntimeError('Failed to cleanup. Bigquery table %s still exists ' http://git-wip-us.apache.org/repos/asf/beam/blob/a95dc855/sdks/python/apache_beam/io/gcp/tests/utils_test.py ---------------------------------------------------------------------- diff --git a/sdks/python/apache_beam/io/gcp/tests/utils_test.py b/sdks/python/apache_beam/io/gcp/tests/utils_test.py index 340aa6d..ac09e44 100644 --- a/sdks/python/apache_beam/io/gcp/tests/utils_test.py +++ b/sdks/python/apache_beam/io/gcp/tests/utils_test.py @@ -40,31 +40,69 @@ class UtilsTest(unittest.TestCase): self._mock_result = Mock() patch_retry(self, utils) - @patch('google.cloud.bigquery.Table.delete') - @patch('google.cloud.bigquery.Table.exists', side_effect=[True, False]) - @patch('google.cloud.bigquery.Dataset.exists', return_value=True) - def test_delete_bq_table_succeeds(self, *_): + @patch.object(bigquery, 'Client') + def test_delete_table_succeeds(self, mock_client): + mock_dataset = Mock() + mock_client.return_value.dataset = mock_dataset + mock_dataset.return_value.exists.return_value = True + + mock_table = Mock() + mock_dataset.return_value.table = mock_table + mock_table.return_value.exists.side_effect = [True, False] + utils.delete_bq_table('unused_project', 'unused_dataset', 'unused_table') - @patch('google.cloud.bigquery.Table.delete', side_effect=Exception) - @patch('google.cloud.bigquery.Table.exists', return_value=True) - @patch('google.cloud.bigquery.Dataset.exists', return_vaue=True) - def test_delete_bq_table_fails_with_server_error(self, *_): - with self.assertRaises(Exception): + @patch.object(bigquery, 'Client') + def test_delete_table_fails_dataset_not_exist(self, mock_client): + mock_dataset = Mock() + mock_client.return_value.dataset = mock_dataset + mock_dataset.return_value.exists.return_value = False + + with self.assertRaises(Exception) as e: utils.delete_bq_table('unused_project', 'unused_dataset', 'unused_table') + self.assertTrue( + e.exception.message.startswith('Failed to cleanup. Bigquery dataset ' + 'unused_dataset doesn\'t exist')) + + @patch.object(bigquery, 'Client') + def test_delete_table_fails_table_not_exist(self, mock_client): + mock_dataset = Mock() + mock_client.return_value.dataset = mock_dataset + mock_dataset.return_value.exists.return_value = True + + mock_table = Mock() + mock_dataset.return_value.table = mock_table + mock_table.return_value.exists.return_value = False + + with self.assertRaises(Exception) as e: + utils.delete_bq_table('unused_project', + 'unused_dataset', + 'unused_table') + self.assertTrue( + e.exception.message.startswith('Failed to cleanup. Bigquery table ' + 'unused_table doesn\'t exist')) + + @patch.object(bigquery, 'Client') + def test_delete_table_fails_service_error(self, mock_client): + mock_dataset = Mock() + mock_client.return_value.dataset = mock_dataset + mock_dataset.return_value.exists.return_value = True + + mock_table = Mock() + mock_dataset.return_value.table = mock_table + mock_table.return_value.exists.return_value = True - @patch('google.cloud.bigquery.Table.delete') - @patch('google.cloud.bigquery.Table.exists', return_value=[True, True]) - @patch('google.cloud.bigquery.Dataset.exists', return_vaue=True) - def test_delete_bq_table_fails_with_delete_error(self, *_): - with self.assertRaises(RuntimeError): + with self.assertRaises(Exception) as e: utils.delete_bq_table('unused_project', 'unused_dataset', 'unused_table') + self.assertTrue( + e.exception.message.startswith('Failed to cleanup. Bigquery table ' + 'unused_table still exists')) if __name__ == '__main__':
