From 1003a7b84c6a0c50dcfe242a7e267bda1a90d228 Mon Sep 17 00:00:00 2001 From: arithmetic1728 Date: Thu, 28 Jan 2021 16:24:25 -0800 Subject: [PATCH 1/5] test: make system test timeout configurable --- tests/system/test_system.py | 25 +++++++++++++------------ tests/system/test_system_dbapi.py | 7 +++++-- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/tests/system/test_system.py b/tests/system/test_system.py index 495824044b..bf247d7fb4 100644 --- a/tests/system/test_system.py +++ b/tests/system/test_system.py @@ -55,6 +55,7 @@ CREATE_INSTANCE = os.getenv("GOOGLE_CLOUD_TESTS_CREATE_SPANNER_INSTANCE") is not None USE_EMULATOR = os.getenv("SPANNER_EMULATOR_HOST") is not None SKIP_BACKUP_TESTS = os.getenv("SKIP_BACKUP_TESTS") is not None +SPANNER_RPC_TIMEOUT_IN_SECONDS = int(os.getenv("SPANNER_RPC_TIMEOUT_IN_SECONDS", 30)) if CREATE_INSTANCE: INSTANCE_ID = "google-cloud" + unique_resource_id("-") @@ -149,7 +150,7 @@ def setUpModule(): INSTANCE_ID, config_name, labels=labels ) created_op = Config.INSTANCE.create() - created_op.result(30) # block until completion + created_op.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # block until completion else: Config.INSTANCE = Config.CLIENT.instance(INSTANCE_ID) @@ -208,7 +209,7 @@ def test_create_instance(self): self.instances_to_delete.append(instance) # We want to make sure the operation completes. - operation.result(30) # raises on failure / timeout. + operation.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. # Create a new instance instance and make sure it is the same. instance_alt = Config.CLIENT.instance( @@ -227,7 +228,7 @@ def test_update_instance(self): operation = Config.INSTANCE.update() # We want to make sure the operation completes. - operation.result(30) # raises on failure / timeout. + operation.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. # Create a new instance instance and reload it. instance_alt = Config.CLIENT.instance(INSTANCE_ID, None) @@ -308,7 +309,7 @@ def setUpClass(cls): cls.DATABASE_NAME, ddl_statements=ddl_statements, pool=pool ) operation = cls._db.create() - operation.result(30) # raises on failure / timeout. + operation.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. @classmethod def tearDownClass(cls): @@ -337,7 +338,7 @@ def test_create_database(self): self.to_delete.append(temp_db) # We want to make sure the operation completes. - operation.result(30) # raises on failure / timeout. + operation.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. database_ids = [database.name for database in Config.INSTANCE.list_databases()] self.assertIn(temp_db.name, database_ids) @@ -483,8 +484,8 @@ def setUpClass(cls): cls._dbs = [db1, db2] op1 = db1.create() op2 = db2.create() - op1.result(30) # raises on failure / timeout. - op2.result(30) # raises on failure / timeout. + op1.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. + op2.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. current_config = Config.INSTANCE.configuration_name same_config_instance_id = "same-config" + unique_resource_id("-") @@ -494,7 +495,7 @@ def setUpClass(cls): same_config_instance_id, current_config, labels=labels ) op = cls._same_config_instance.create() - op.result(30) + op.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) cls._instances = [cls._same_config_instance] retry = RetryErrors(exceptions.ServiceUnavailable) @@ -513,7 +514,7 @@ def setUpClass(cls): diff_config_instance_id, diff_configs[0], labels=labels ) op = cls._diff_config_instance.create() - op.result(30) + op.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) cls._instances.append(cls._diff_config_instance) @classmethod @@ -675,7 +676,7 @@ def test_multi_create_cancel_update_error_restore_errors(self): return new_db = self._diff_config_instance.database("diff_config") op = new_db.create() - op.result(30) + op.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) self.to_drop.append(new_db) with self.assertRaises(exceptions.InvalidArgument): new_db.restore(source=backup1) @@ -866,7 +867,7 @@ def setUpClass(cls): cls.DATABASE_NAME, ddl_statements=ddl_statements, pool=pool ) operation = cls._db.create() - operation.result(30) # raises on failure / timeout. + operation.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. @classmethod def tearDownClass(cls): @@ -1788,7 +1789,7 @@ def test_read_w_index(self): self.to_delete.append(_DatabaseDropper(temp_db)) # We want to make sure the operation completes. - operation.result(30) # raises on failure / timeout. + operation.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. committed = self._set_up_table(row_count, database=temp_db) with temp_db.snapshot(read_timestamp=committed) as snapshot: diff --git a/tests/system/test_system_dbapi.py b/tests/system/test_system_dbapi.py index baeadd2c44..8649e2a98f 100644 --- a/tests/system/test_system_dbapi.py +++ b/tests/system/test_system_dbapi.py @@ -39,6 +39,9 @@ ) +SPANNER_RPC_TIMEOUT_IN_SECONDS = int(os.getenv("SPANNER_RPC_TIMEOUT_IN_SECONDS", 30)) + + def setUpModule(): if USE_EMULATOR: from google.auth.credentials import AnonymousCredentials @@ -91,7 +94,7 @@ def setUpModule(): INSTANCE_ID, config_name, labels=labels ) created_op = Config.INSTANCE.create() - created_op.result(30) # block until completion + created_op.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # block until completion else: Config.INSTANCE = Config.CLIENT.instance(INSTANCE_ID) @@ -126,7 +129,7 @@ def setUpClass(cls): ddl_statements=cls.DDL_STATEMENTS, pool=BurstyPool(labels={"testcase": "database_api"}), ) - cls._db.create().result(30) # raises on failure / timeout. + cls._db.create().result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. @classmethod def tearDownClass(cls): From 5f7f409dbd6de2fcc6fbd58ca75d8c515369fbc4 Mon Sep 17 00:00:00 2001 From: arithmetic1728 Date: Thu, 28 Jan 2021 18:31:45 -0800 Subject: [PATCH 2/5] chore: lint --- tests/system/test_system_dbapi.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/system/test_system_dbapi.py b/tests/system/test_system_dbapi.py index 8649e2a98f..2c6297853f 100644 --- a/tests/system/test_system_dbapi.py +++ b/tests/system/test_system_dbapi.py @@ -129,7 +129,9 @@ def setUpClass(cls): ddl_statements=cls.DDL_STATEMENTS, pool=BurstyPool(labels={"testcase": "database_api"}), ) - cls._db.create().result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. + cls._db.create().result( + SPANNER_RPC_TIMEOUT_IN_SECONDS + ) # raises on failure / timeout. @classmethod def tearDownClass(cls): From 8a2e6f5bd861d4c87f15e5628bfcb5583d6c8adc Mon Sep 17 00:00:00 2001 From: arithmetic1728 Date: Mon, 1 Feb 2021 22:14:11 -0800 Subject: [PATCH 3/5] update --- tests/system/test_system.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/tests/system/test_system.py b/tests/system/test_system.py index bf247d7fb4..5098d27299 100644 --- a/tests/system/test_system.py +++ b/tests/system/test_system.py @@ -55,7 +55,7 @@ CREATE_INSTANCE = os.getenv("GOOGLE_CLOUD_TESTS_CREATE_SPANNER_INSTANCE") is not None USE_EMULATOR = os.getenv("SPANNER_EMULATOR_HOST") is not None SKIP_BACKUP_TESTS = os.getenv("SKIP_BACKUP_TESTS") is not None -SPANNER_RPC_TIMEOUT_IN_SECONDS = int(os.getenv("SPANNER_RPC_TIMEOUT_IN_SECONDS", 30)) +SPANNER_OPERATION_TIMEOUT_IN_SECONDS = int(os.getenv("SPANNER_OPERATION_TIMEOUT_IN_SECONDS", 60)) if CREATE_INSTANCE: INSTANCE_ID = "google-cloud" + unique_resource_id("-") @@ -150,7 +150,7 @@ def setUpModule(): INSTANCE_ID, config_name, labels=labels ) created_op = Config.INSTANCE.create() - created_op.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # block until completion + created_op.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # block until completion else: Config.INSTANCE = Config.CLIENT.instance(INSTANCE_ID) @@ -209,7 +209,7 @@ def test_create_instance(self): self.instances_to_delete.append(instance) # We want to make sure the operation completes. - operation.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. + operation.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # raises on failure / timeout. # Create a new instance instance and make sure it is the same. instance_alt = Config.CLIENT.instance( @@ -228,7 +228,7 @@ def test_update_instance(self): operation = Config.INSTANCE.update() # We want to make sure the operation completes. - operation.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. + operation.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # raises on failure / timeout. # Create a new instance instance and reload it. instance_alt = Config.CLIENT.instance(INSTANCE_ID, None) @@ -309,7 +309,7 @@ def setUpClass(cls): cls.DATABASE_NAME, ddl_statements=ddl_statements, pool=pool ) operation = cls._db.create() - operation.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. + operation.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # raises on failure / timeout. @classmethod def tearDownClass(cls): @@ -338,7 +338,7 @@ def test_create_database(self): self.to_delete.append(temp_db) # We want to make sure the operation completes. - operation.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. + operation.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # raises on failure / timeout. database_ids = [database.name for database in Config.INSTANCE.list_databases()] self.assertIn(temp_db.name, database_ids) @@ -484,8 +484,8 @@ def setUpClass(cls): cls._dbs = [db1, db2] op1 = db1.create() op2 = db2.create() - op1.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. - op2.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. + op1.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # raises on failure / timeout. + op2.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # raises on failure / timeout. current_config = Config.INSTANCE.configuration_name same_config_instance_id = "same-config" + unique_resource_id("-") @@ -495,7 +495,7 @@ def setUpClass(cls): same_config_instance_id, current_config, labels=labels ) op = cls._same_config_instance.create() - op.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) + op.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) cls._instances = [cls._same_config_instance] retry = RetryErrors(exceptions.ServiceUnavailable) @@ -514,7 +514,7 @@ def setUpClass(cls): diff_config_instance_id, diff_configs[0], labels=labels ) op = cls._diff_config_instance.create() - op.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) + op.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) cls._instances.append(cls._diff_config_instance) @classmethod @@ -676,7 +676,7 @@ def test_multi_create_cancel_update_error_restore_errors(self): return new_db = self._diff_config_instance.database("diff_config") op = new_db.create() - op.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) + op.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) self.to_drop.append(new_db) with self.assertRaises(exceptions.InvalidArgument): new_db.restore(source=backup1) @@ -867,7 +867,7 @@ def setUpClass(cls): cls.DATABASE_NAME, ddl_statements=ddl_statements, pool=pool ) operation = cls._db.create() - operation.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. + operation.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # raises on failure / timeout. @classmethod def tearDownClass(cls): @@ -1789,7 +1789,7 @@ def test_read_w_index(self): self.to_delete.append(_DatabaseDropper(temp_db)) # We want to make sure the operation completes. - operation.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # raises on failure / timeout. + operation.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # raises on failure / timeout. committed = self._set_up_table(row_count, database=temp_db) with temp_db.snapshot(read_timestamp=committed) as snapshot: From 2844512109226db63a5141337039808acdbeeec1 Mon Sep 17 00:00:00 2001 From: arithmetic1728 Date: Mon, 1 Feb 2021 22:28:16 -0800 Subject: [PATCH 4/5] update --- tests/system/test_system_dbapi.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/system/test_system_dbapi.py b/tests/system/test_system_dbapi.py index 2c6297853f..795fa1b8e8 100644 --- a/tests/system/test_system_dbapi.py +++ b/tests/system/test_system_dbapi.py @@ -39,7 +39,7 @@ ) -SPANNER_RPC_TIMEOUT_IN_SECONDS = int(os.getenv("SPANNER_RPC_TIMEOUT_IN_SECONDS", 30)) +SPANNER_OPERATION_TIMEOUT_IN_SECONDS = int(os.getenv("SPANNER_OPERATION_TIMEOUT_IN_SECONDS", 60)) def setUpModule(): @@ -94,7 +94,7 @@ def setUpModule(): INSTANCE_ID, config_name, labels=labels ) created_op = Config.INSTANCE.create() - created_op.result(SPANNER_RPC_TIMEOUT_IN_SECONDS) # block until completion + created_op.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # block until completion else: Config.INSTANCE = Config.CLIENT.instance(INSTANCE_ID) @@ -130,7 +130,7 @@ def setUpClass(cls): pool=BurstyPool(labels={"testcase": "database_api"}), ) cls._db.create().result( - SPANNER_RPC_TIMEOUT_IN_SECONDS + SPANNER_OPERATION_TIMEOUT_IN_SECONDS ) # raises on failure / timeout. @classmethod From bc962759772a3ec18adc61a8b3587694646314b8 Mon Sep 17 00:00:00 2001 From: arithmetic1728 Date: Mon, 1 Feb 2021 23:17:44 -0800 Subject: [PATCH 5/5] lint --- tests/system/test_system.py | 32 +++++++++++++++++++++++-------- tests/system/test_system_dbapi.py | 8 ++++++-- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/tests/system/test_system.py b/tests/system/test_system.py index 5098d27299..90031a3e3a 100644 --- a/tests/system/test_system.py +++ b/tests/system/test_system.py @@ -55,7 +55,9 @@ CREATE_INSTANCE = os.getenv("GOOGLE_CLOUD_TESTS_CREATE_SPANNER_INSTANCE") is not None USE_EMULATOR = os.getenv("SPANNER_EMULATOR_HOST") is not None SKIP_BACKUP_TESTS = os.getenv("SKIP_BACKUP_TESTS") is not None -SPANNER_OPERATION_TIMEOUT_IN_SECONDS = int(os.getenv("SPANNER_OPERATION_TIMEOUT_IN_SECONDS", 60)) +SPANNER_OPERATION_TIMEOUT_IN_SECONDS = int( + os.getenv("SPANNER_OPERATION_TIMEOUT_IN_SECONDS", 60) +) if CREATE_INSTANCE: INSTANCE_ID = "google-cloud" + unique_resource_id("-") @@ -150,7 +152,9 @@ def setUpModule(): INSTANCE_ID, config_name, labels=labels ) created_op = Config.INSTANCE.create() - created_op.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # block until completion + created_op.result( + SPANNER_OPERATION_TIMEOUT_IN_SECONDS + ) # block until completion else: Config.INSTANCE = Config.CLIENT.instance(INSTANCE_ID) @@ -209,7 +213,9 @@ def test_create_instance(self): self.instances_to_delete.append(instance) # We want to make sure the operation completes. - operation.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # raises on failure / timeout. + operation.result( + SPANNER_OPERATION_TIMEOUT_IN_SECONDS + ) # raises on failure / timeout. # Create a new instance instance and make sure it is the same. instance_alt = Config.CLIENT.instance( @@ -228,7 +234,9 @@ def test_update_instance(self): operation = Config.INSTANCE.update() # We want to make sure the operation completes. - operation.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # raises on failure / timeout. + operation.result( + SPANNER_OPERATION_TIMEOUT_IN_SECONDS + ) # raises on failure / timeout. # Create a new instance instance and reload it. instance_alt = Config.CLIENT.instance(INSTANCE_ID, None) @@ -309,7 +317,9 @@ def setUpClass(cls): cls.DATABASE_NAME, ddl_statements=ddl_statements, pool=pool ) operation = cls._db.create() - operation.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # raises on failure / timeout. + operation.result( + SPANNER_OPERATION_TIMEOUT_IN_SECONDS + ) # raises on failure / timeout. @classmethod def tearDownClass(cls): @@ -338,7 +348,9 @@ def test_create_database(self): self.to_delete.append(temp_db) # We want to make sure the operation completes. - operation.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # raises on failure / timeout. + operation.result( + SPANNER_OPERATION_TIMEOUT_IN_SECONDS + ) # raises on failure / timeout. database_ids = [database.name for database in Config.INSTANCE.list_databases()] self.assertIn(temp_db.name, database_ids) @@ -867,7 +879,9 @@ def setUpClass(cls): cls.DATABASE_NAME, ddl_statements=ddl_statements, pool=pool ) operation = cls._db.create() - operation.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # raises on failure / timeout. + operation.result( + SPANNER_OPERATION_TIMEOUT_IN_SECONDS + ) # raises on failure / timeout. @classmethod def tearDownClass(cls): @@ -1789,7 +1803,9 @@ def test_read_w_index(self): self.to_delete.append(_DatabaseDropper(temp_db)) # We want to make sure the operation completes. - operation.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # raises on failure / timeout. + operation.result( + SPANNER_OPERATION_TIMEOUT_IN_SECONDS + ) # raises on failure / timeout. committed = self._set_up_table(row_count, database=temp_db) with temp_db.snapshot(read_timestamp=committed) as snapshot: diff --git a/tests/system/test_system_dbapi.py b/tests/system/test_system_dbapi.py index 795fa1b8e8..1659fe239b 100644 --- a/tests/system/test_system_dbapi.py +++ b/tests/system/test_system_dbapi.py @@ -39,7 +39,9 @@ ) -SPANNER_OPERATION_TIMEOUT_IN_SECONDS = int(os.getenv("SPANNER_OPERATION_TIMEOUT_IN_SECONDS", 60)) +SPANNER_OPERATION_TIMEOUT_IN_SECONDS = int( + os.getenv("SPANNER_OPERATION_TIMEOUT_IN_SECONDS", 60) +) def setUpModule(): @@ -94,7 +96,9 @@ def setUpModule(): INSTANCE_ID, config_name, labels=labels ) created_op = Config.INSTANCE.create() - created_op.result(SPANNER_OPERATION_TIMEOUT_IN_SECONDS) # block until completion + created_op.result( + SPANNER_OPERATION_TIMEOUT_IN_SECONDS + ) # block until completion else: Config.INSTANCE = Config.CLIENT.instance(INSTANCE_ID)