From fbb8a0a80be437779d82865d0a9273fb46216916 Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Wed, 13 Sep 2017 14:44:52 -0400 Subject: [PATCH 1/4] Suppress instance creation tests by default on CI. Too many orphans, too little quota. --- spanner/tests/system/test_system.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/spanner/tests/system/test_system.py b/spanner/tests/system/test_system.py index f20ce592070a..64177765cb2d 100644 --- a/spanner/tests/system/test_system.py +++ b/spanner/tests/system/test_system.py @@ -46,8 +46,7 @@ from tests._fixtures import DDL_STATEMENTS -IS_CIRCLE = os.getenv('CIRCLECI') == 'true' -CREATE_INSTANCE = IS_CIRCLE or os.getenv( +CREATE_INSTANCE = os.getenv( 'GOOGLE_CLOUD_TESTS_CREATE_SPANNER_INSTANCE') is not None if CREATE_INSTANCE: From 4cb1d1df5827d78f7349c7df256a503bcd3478e1 Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Wed, 13 Sep 2017 14:43:31 -0400 Subject: [PATCH 2/4] Fix 'populate_streaming' script after PR #3787. --- spanner/tests/system/utils/populate_streaming.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/spanner/tests/system/utils/populate_streaming.py b/spanner/tests/system/utils/populate_streaming.py index 6feaa68eb01c..59d08ca1abfd 100644 --- a/spanner/tests/system/utils/populate_streaming.py +++ b/spanner/tests/system/utils/populate_streaming.py @@ -84,8 +84,9 @@ def ensure_database(client): def populate_table(database, table_desc): all_ = KeySet(all_=True) columns = ('pkey', 'chunk_me') - rows = list(database.execute_sql( - 'SELECT COUNT(*) FROM {}'.format(table_desc.table))) + with database.snapshot() as snapshot: + rows = list(snapshot.execute_sql( + 'SELECT COUNT(*) FROM {}'.format(table_desc.table))) assert len(rows) == 1 count = rows[0][0] if count != table_desc.row_count: @@ -102,8 +103,9 @@ def populate_table(database, table_desc): def populate_table_2_columns(database, table_desc): all_ = KeySet(all_=True) columns = ('pkey', 'chunk_me', 'chunk_me_2') - rows = list(database.execute_sql( - 'SELECT COUNT(*) FROM {}'.format(table_desc.table))) + with database.snapshot() as snapshot: + rows = list(snapshot.execute_sql( + 'SELECT COUNT(*) FROM {}'.format(table_desc.table))) assert len(rows) == 1 count = rows[0][0] if count != table_desc.row_count: From c60f9260d6a883cd0187c936983d019c23c4398f Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Wed, 13 Sep 2017 14:44:11 -0400 Subject: [PATCH 3/4] Add utility for scrubbing orphaned instances. --- spanner/tests/system/utils/scrub_instances.py | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 spanner/tests/system/utils/scrub_instances.py diff --git a/spanner/tests/system/utils/scrub_instances.py b/spanner/tests/system/utils/scrub_instances.py new file mode 100644 index 000000000000..530c06fcefb3 --- /dev/null +++ b/spanner/tests/system/utils/scrub_instances.py @@ -0,0 +1,24 @@ +from google.cloud.spanner import Client +from .streaming_utils import INSTANCE_NAME as STREAMING_INSTANCE + +STANDARD_INSTANCE = 'google-cloud-python-systest' + + +def scrub_instances(client): + + for instance in client.list_instances(): + if instance.name == STREAMING_INSTANCE: + print('Not deleting streaming instance: {}'.format( + STREAMING_INSTANCE)) + continue + elif instance.name == STANDARD_INSTANCE: + print('Not deleting standard instance: {}'.format( + STANDARD_INSTANCE)) + else: + print("deleting instance: {}".format(instance.name)) + instance.delete() + + +if __name__ == '__main__': + client = Client() + scrub_instances(client) From 8582a769390c76da21ac13cc0ac6af4afc7c55d6 Mon Sep 17 00:00:00 2001 From: Tres Seaver Date: Wed, 13 Sep 2017 15:24:47 -0400 Subject: [PATCH 4/4] License header, formatting. Addresses: https://github.com/GoogleCloudPlatform/google-cloud-python/pull/3951#discussion_r138713685 https://github.com/GoogleCloudPlatform/google-cloud-python/pull/3951#discussion_r138713846. --- spanner/tests/system/utils/scrub_instances.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/spanner/tests/system/utils/scrub_instances.py b/spanner/tests/system/utils/scrub_instances.py index 530c06fcefb3..a970cdca0512 100644 --- a/spanner/tests/system/utils/scrub_instances.py +++ b/spanner/tests/system/utils/scrub_instances.py @@ -1,3 +1,17 @@ +# Copyright 2017 Google Inc. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + from google.cloud.spanner import Client from .streaming_utils import INSTANCE_NAME as STREAMING_INSTANCE @@ -5,7 +19,6 @@ def scrub_instances(client): - for instance in client.list_instances(): if instance.name == STREAMING_INSTANCE: print('Not deleting streaming instance: {}'.format(