From 48f2e2744c57672cf00cb2e554137bd0fb7f4b3d Mon Sep 17 00:00:00 2001 From: Yogesh Mahajan Date: Tue, 14 Mar 2023 17:51:14 +0530 Subject: [PATCH] Fixed feature tests failures occurred due to psycopg3 changes. --- .../pg_datatype_validation_test.py | 2 +- .../feature_tests/query_tool_journey_test.py | 2 + .../feature_tests/query_tool_tests.py | 44 +++++-------------- .../feature_tests/view_data_dml_queries.py | 9 ---- .../xss_checks_pgadmin_debugger_test.py | 7 --- .../xss_checks_roles_control_test.py | 5 --- web/regression/runtests.py | 4 +- 7 files changed, 17 insertions(+), 56 deletions(-) diff --git a/web/regression/feature_tests/pg_datatype_validation_test.py b/web/regression/feature_tests/pg_datatype_validation_test.py index a2e199c64..af5c0feed 100644 --- a/web/regression/feature_tests/pg_datatype_validation_test.py +++ b/web/regression/feature_tests/pg_datatype_validation_test.py @@ -70,7 +70,7 @@ class PGDataypeFeatureTest(BaseFeatureTest): else: self.timezone_hh_mm = '+{}'.format(self.timezone_hh_mm) - self.database_version = connection.server_version + self.database_version = self.server_information['server_version'] # For this test case we need to set "Insert bracket pairs?" # SQL Editor preference to 'false' to avoid codemirror diff --git a/web/regression/feature_tests/query_tool_journey_test.py b/web/regression/feature_tests/query_tool_journey_test.py index 1f5a9d9c3..5365f4adb 100644 --- a/web/regression/feature_tests/query_tool_journey_test.py +++ b/web/regression/feature_tests/query_tool_journey_test.py @@ -489,6 +489,8 @@ class QueryToolJourneyTest(BaseFeatureTest): print('Double click not succeeded in try- ' + str( retry), file=sys.stderr) retry -= 1 + if retry == 0: + return False except Exception as e: print('Exception while reading cell value in try ' + str(retry), file=sys.stderr) diff --git a/web/regression/feature_tests/query_tool_tests.py b/web/regression/feature_tests/query_tool_tests.py index a6b12d598..628c46c9c 100644 --- a/web/regression/feature_tests/query_tool_tests.py +++ b/web/regression/feature_tests/query_tool_tests.py @@ -55,22 +55,16 @@ class QueryToolFeatureTest(BaseFeatureTest): # explain query with verbose and cost print("Explain query with verbose and cost... ", file=sys.stderr, end="") - if self._supported_server_version(): - self._query_tool_explain_with_verbose_and_cost() - print("OK.", file=sys.stderr) - self.page.clear_query_tool() - else: - print(skip_warning, file=sys.stderr) + self._query_tool_explain_with_verbose_and_cost() + print("OK.", file=sys.stderr) + self.page.clear_query_tool() # explain analyze query with buffers and timing print("Explain analyze query with buffers and timing... ", file=sys.stderr, end="") - if self._supported_server_version(): - self._query_tool_explain_analyze_with_buffers_and_timing() - print("OK.", file=sys.stderr) - self.page.clear_query_tool() - else: - print(skip_warning, file=sys.stderr) + self._query_tool_explain_analyze_with_buffers_and_timing() + print("OK.", file=sys.stderr) + self.page.clear_query_tool() # auto commit disabled. print("Auto commit disabled... ", file=sys.stderr, end="") @@ -596,17 +590,6 @@ SELECT 1, pg_sleep(300)""" .format('Execution Cancelled!')) ) - def _supported_server_version(self): - connection = test_utils.get_db_connection( - self.server['db'], - self.server['username'], - self.server['db_password'], - self.server['host'], - self.server['port'], - self.server['sslmode'] - ) - return connection.server_version > 90100 - def _query_tool_notify_statements(self): print("\n\tListen on an event... ", file=sys.stderr, end="") self.page.execute_query("LISTEN foo;") @@ -627,15 +610,12 @@ SELECT 1, pg_sleep(300)""" print("OK.", file=sys.stderr) print("\tNotify event with data... ", file=sys.stderr, end="") - if self._supported_server_version(): - self.page.clear_query_tool() - self.page.execute_query("SELECT pg_notify('foo', 'Hello')") - self.page.click_tab('id-notifications', rc_dock=True) - self.wait.until(WaitForAnyElementWithText( - (By.CSS_SELECTOR, "td[data-label='payload']"), "Hello")) - print("OK.", file=sys.stderr) - else: - print("Skipped.", file=sys.stderr) + self.page.clear_query_tool() + self.page.execute_query("SELECT pg_notify('foo', 'Hello')") + self.page.click_tab('id-notifications', rc_dock=True) + self.wait.until(WaitForAnyElementWithText( + (By.CSS_SELECTOR, "td[data-label='payload']"), "Hello")) + print("OK.", file=sys.stderr) class WaitForAnyElementWithText(): diff --git a/web/regression/feature_tests/view_data_dml_queries.py b/web/regression/feature_tests/view_data_dml_queries.py index 07a648ac1..54826c11e 100644 --- a/web/regression/feature_tests/view_data_dml_queries.py +++ b/web/regression/feature_tests/view_data_dml_queries.py @@ -95,12 +95,6 @@ CREATE TABLE public.nonintpkey """ def before(self): - with test_utils.Database(self.server) as (connection, _): - if connection.server_version < 90100: - self.skipTest( - "COLLATE is not present in PG versions below v9.1" - ) - # Create pre-requisite table for k, v in {1: 'id', 2: '"ID"'}.items(): test_utils.create_table_with_query( @@ -117,9 +111,6 @@ CREATE TABLE public.nonintpkey # Initialize an instance of WebDriverWait with timeout of 3 seconds self.wait = WebDriverWait(self.driver, 3) - # close the db connection - connection.close() - def runTest(self): try: self.page.wait_for_spinner_to_disappear() diff --git a/web/regression/feature_tests/xss_checks_pgadmin_debugger_test.py b/web/regression/feature_tests/xss_checks_pgadmin_debugger_test.py index 21b4791ad..e8a185326 100644 --- a/web/regression/feature_tests/xss_checks_pgadmin_debugger_test.py +++ b/web/regression/feature_tests/xss_checks_pgadmin_debugger_test.py @@ -30,13 +30,6 @@ class CheckDebuggerForXssFeatureTest(BaseFeatureTest): function_name = "" def before(self): - with test_utils.Database(self.server) as (connection, _): - if connection.server_version < 90100: - self.skipTest( - "Functions tree node is not present in pgAdmin below " - "PG v9.1" - ) - # Some test function is needed for debugger self.function_name = "a_test_function" + \ str(secrets.choice(range(10000, 65535))) diff --git a/web/regression/feature_tests/xss_checks_roles_control_test.py b/web/regression/feature_tests/xss_checks_roles_control_test.py index c06443e7c..f67da1821 100644 --- a/web/regression/feature_tests/xss_checks_roles_control_test.py +++ b/web/regression/feature_tests/xss_checks_roles_control_test.py @@ -30,11 +30,6 @@ class CheckRoleMembershipControlFeatureTest(BaseFeatureTest): xss_test_role = "

test

" def before(self): - with test_utils.Database(self.server) as (connection, _): - if connection.server_version < 90100: - self.skipTest( - "Membership is not present in Postgres below PG v9.1") - # create role self.role = "test_role" + str(secrets.choice(range(10000, 65535))) diff --git a/web/regression/runtests.py b/web/regression/runtests.py index adb831c4e..f022190ef 100644 --- a/web/regression/runtests.py +++ b/web/regression/runtests.py @@ -535,7 +535,7 @@ def execute_test(test_module_list_passed, server_passed, driver_passed, # This is required when some tests are running parallel # & some sequential in case of parallel ui tests - if threading.current_thread().getName() == "sequential_tests": + if threading.current_thread().name == "sequential_tests": try: if test_result[server_passed['name']][0] is not None: ran_tests = test_result[server_passed['name']][0] + \ @@ -576,7 +576,7 @@ def execute_test(test_module_list_passed, server_passed, driver_passed, finally: # Delete web-driver instance thread_name = "parallel_tests" + server_passed['name'] - if threading.current_thread().getName() == thread_name: + if threading.current_thread().name == thread_name: test_utils.quit_webdriver(driver_passed) time.sleep(20)