From 4373a7d608ea7939abe1fa23b599441f31aa6a0a Mon Sep 17 00:00:00 2001 From: Khushboo Vashi Date: Fri, 4 Aug 2023 15:49:23 +0530 Subject: [PATCH 1/2] Fixed the query tool issue where raise Notice from func/proc or code blocks are no longer displayed live. #6420 --- web/pgadmin/tools/sqleditor/__init__.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/web/pgadmin/tools/sqleditor/__init__.py b/web/pgadmin/tools/sqleditor/__init__.py index 8425eee0c87..1c2314ade3d 100644 --- a/web/pgadmin/tools/sqleditor/__init__.py +++ b/web/pgadmin/tools/sqleditor/__init__.py @@ -927,6 +927,9 @@ def poll(trans_id): if is_thread_alive: status = 'Busy' + messages = conn.messages() + if messages and len(messages) > 0: + result = ''.join(messages) elif status and conn is not None and session_obj is not None: status, result = conn.poll( formatted_exception_msg=True, no_result=True) From 73150ff66b2824a5f057dd070690b7d158341399 Mon Sep 17 00:00:00 2001 From: Khushboo Vashi Date: Mon, 7 Aug 2023 11:48:30 +0530 Subject: [PATCH 2/2] Fix query tool API test case. --- .../sqleditor/tests/test_poll_query_tool.py | 43 +++++++++++-------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/web/pgadmin/tools/sqleditor/tests/test_poll_query_tool.py b/web/pgadmin/tools/sqleditor/tests/test_poll_query_tool.py index 7b3e163e404..054d50f31b9 100644 --- a/web/pgadmin/tools/sqleditor/tests/test_poll_query_tool.py +++ b/web/pgadmin/tools/sqleditor/tests/test_poll_query_tool.py @@ -15,8 +15,6 @@ from regression import parent_node_dict from regression.python_test_utils import test_utils as utils import secrets -from pgadmin.tools.sqleditor.tests.execute_query_test_utils \ - import async_poll class TestPollQueryTool(BaseTestGenerator): @@ -82,7 +80,6 @@ def runTest(self): url = '/sqleditor/initialize/sqleditor/{0}/{1}/{2}/{3}'.format( self.trans_id, utils.SERVER_GROUP, self.server_id, self.db_id) response = self.tester.post(url) - import time self.assertEqual(response.status_code, 200) cnt = 0 @@ -94,20 +91,32 @@ def runTest(self): content_type='html/json') self.assertEqual(response.status_code, 200) - - response = async_poll(tester=self.tester, - poll_url='/sqleditor/poll/{0}'.format( - self.trans_id)) - self.assertEqual(response.status_code, 200) - response_data = json.loads(response.data.decode('utf-8')) - - if self.expected_message[cnt] is not None: - self.assertIn(self.expected_message[cnt], - response_data['data']['additional_messages']) - - # Check the output - self.assertEqual(self.expected_result[cnt], - response_data['data']['result'][0][0]) + url = '/sqleditor/poll/{0}'.format(self.trans_id) + + _status = True + # Lets poll till the status is busy and check the messages + while _status: + response = self.tester.get(url) + if response.data: + response_data = json.loads(response.data.decode('utf-8')) + + if response_data['success'] == 1 and 'data' in\ + response_data: + if response_data['data']['status'] == 'NotInitialised': + pass + elif response_data['data']['status'] == 'Busy': + if self.expected_message[cnt] is not None: + if response_data['data']['result']: + + self.assertIn( + response_data['data']['result'], + self.expected_message[cnt] + ) + else: + self.assertEqual(self.expected_result[cnt], + response_data['data']['result'][ + 0][0]) + _status = False cnt += 1