From e0ed2e4245174612ce65408a2e2834b0a34c364e Mon Sep 17 00:00:00 2001 From: larkee Date: Tue, 15 Dec 2020 12:15:58 +1100 Subject: [PATCH 1/3] test: add labels to test instance for cleanup --- tests/system/test_system.py | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/tests/system/test_system.py b/tests/system/test_system.py index 1ba9b59163..038f6a82ef 100644 --- a/tests/system/test_system.py +++ b/tests/system/test_system.py @@ -113,6 +113,19 @@ def setUpModule(): instances = retry(_list_instances)() EXISTING_INSTANCES[:] = instances + # Delete test instances that are older than an hour. + cutoff = int(time.time()) - 1 * 60 * 60 + for instance in Config.CLIENT.list_instances("labels.python-spanner-systests:true"): + if 'created' not in instance.labels: + continue + create_time = int(instance.labels['created']) + if create_time > cutoff: + continue + # Instance cannot be deleted while backups exist. + for backup in instance.list_backups(): + backup.delete() + instance.delete() + if CREATE_INSTANCE: if not USE_EMULATOR: # Defend against back-end returning configs for regions we aren't @@ -124,8 +137,10 @@ def setUpModule(): Config.INSTANCE_CONFIG = configs[0] config_name = configs[0].name + create_time = str(int(time.time())) + labels = {"python-spanner-systests": "true", "created": create_time} - Config.INSTANCE = Config.CLIENT.instance(INSTANCE_ID, config_name) + Config.INSTANCE = Config.CLIENT.instance(INSTANCE_ID, config_name, labels=labels) created_op = Config.INSTANCE.create() created_op.result(30) # block until completion @@ -466,8 +481,10 @@ def setUpClass(cls): current_config = Config.INSTANCE.configuration_name same_config_instance_id = "same-config" + unique_resource_id("-") + create_time = str(int(time.time())) + labels = {"python-spanner-systests": "true", "created": create_time} cls._same_config_instance = Config.CLIENT.instance( - same_config_instance_id, current_config + same_config_instance_id, current_config, labels=labels ) op = cls._same_config_instance.create() op.result(30) @@ -483,8 +500,10 @@ def setUpClass(cls): cls._diff_config_instance = None if len(diff_configs) > 0: diff_config_instance_id = "diff-config" + unique_resource_id("-") + create_time = str(int(time.time())) + labels = {"python-spanner-systests": "true", "created": create_time} cls._diff_config_instance = Config.CLIENT.instance( - diff_config_instance_id, diff_configs[0] + diff_config_instance_id, diff_configs[0], labels=labels ) op = cls._diff_config_instance.create() op.result(30) From 8345fa3e1c151be6251f969046d0ba63d1ea91bd Mon Sep 17 00:00:00 2001 From: larkee Date: Tue, 15 Dec 2020 13:51:10 +1100 Subject: [PATCH 2/3] test: add labels to dbapi test instance for cleanup --- tests/system/test_system_dbapi.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/tests/system/test_system_dbapi.py b/tests/system/test_system_dbapi.py index 5e331cad8f..1f15a959e6 100644 --- a/tests/system/test_system_dbapi.py +++ b/tests/system/test_system_dbapi.py @@ -15,6 +15,7 @@ import hashlib import os import pickle +import time import unittest from google.api_core import exceptions @@ -53,6 +54,19 @@ def setUpModule(): instances = retry(_list_instances)() EXISTING_INSTANCES[:] = instances + # Delete test instances that are older than an hour. + cutoff = int(time.time()) - 1 * 60 * 60 + for instance in Config.CLIENT.list_instances("labels.python-spanner-dbapi-systests:true"): + if 'created' not in instance.labels: + continue + create_time = int(instance.labels['created']) + if create_time > cutoff: + continue + # Instance cannot be deleted while backups exist. + for backup in instance.list_backups(): + backup.delete() + instance.delete() + if CREATE_INSTANCE: if not USE_EMULATOR: # Defend against back-end returning configs for regions we aren't @@ -64,8 +78,10 @@ def setUpModule(): Config.INSTANCE_CONFIG = configs[0] config_name = configs[0].name + create_time = str(int(time.time())) + labels = {"python-spanner-dbapi-systests": "true", "created": create_time} - Config.INSTANCE = Config.CLIENT.instance(INSTANCE_ID, config_name) + Config.INSTANCE = Config.CLIENT.instance(INSTANCE_ID, config_name, labels=labels) created_op = Config.INSTANCE.create() created_op.result(30) # block until completion From 73794e266490518652321e957c9d69f4044b49e8 Mon Sep 17 00:00:00 2001 From: larkee Date: Tue, 15 Dec 2020 18:23:55 +1100 Subject: [PATCH 3/3] style: fix lint errors --- tests/system/test_system.py | 8 +++++--- tests/system/test_system_dbapi.py | 12 ++++++++---- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/tests/system/test_system.py b/tests/system/test_system.py index 038f6a82ef..5bd42c5a9c 100644 --- a/tests/system/test_system.py +++ b/tests/system/test_system.py @@ -116,9 +116,9 @@ def setUpModule(): # Delete test instances that are older than an hour. cutoff = int(time.time()) - 1 * 60 * 60 for instance in Config.CLIENT.list_instances("labels.python-spanner-systests:true"): - if 'created' not in instance.labels: + if "created" not in instance.labels: continue - create_time = int(instance.labels['created']) + create_time = int(instance.labels["created"]) if create_time > cutoff: continue # Instance cannot be deleted while backups exist. @@ -140,7 +140,9 @@ def setUpModule(): create_time = str(int(time.time())) labels = {"python-spanner-systests": "true", "created": create_time} - Config.INSTANCE = Config.CLIENT.instance(INSTANCE_ID, config_name, labels=labels) + Config.INSTANCE = Config.CLIENT.instance( + INSTANCE_ID, config_name, labels=labels + ) created_op = Config.INSTANCE.create() created_op.result(30) # block until completion diff --git a/tests/system/test_system_dbapi.py b/tests/system/test_system_dbapi.py index 1f15a959e6..e25fa78018 100644 --- a/tests/system/test_system_dbapi.py +++ b/tests/system/test_system_dbapi.py @@ -56,10 +56,12 @@ def setUpModule(): # Delete test instances that are older than an hour. cutoff = int(time.time()) - 1 * 60 * 60 - for instance in Config.CLIENT.list_instances("labels.python-spanner-dbapi-systests:true"): - if 'created' not in instance.labels: + for instance in Config.CLIENT.list_instances( + "labels.python-spanner-dbapi-systests:true" + ): + if "created" not in instance.labels: continue - create_time = int(instance.labels['created']) + create_time = int(instance.labels["created"]) if create_time > cutoff: continue # Instance cannot be deleted while backups exist. @@ -81,7 +83,9 @@ def setUpModule(): create_time = str(int(time.time())) labels = {"python-spanner-dbapi-systests": "true", "created": create_time} - Config.INSTANCE = Config.CLIENT.instance(INSTANCE_ID, config_name, labels=labels) + Config.INSTANCE = Config.CLIENT.instance( + INSTANCE_ID, config_name, labels=labels + ) created_op = Config.INSTANCE.create() created_op.result(30) # block until completion