diff options
author | abcdef <akotov@ydb.tech> | 2023-05-02 12:01:51 +0300 |
---|---|---|
committer | abcdef <akotov@ydb.tech> | 2023-05-02 12:01:51 +0300 |
commit | 7669d64dfe695cd82cc8cc9384855f5380ba9adb (patch) | |
tree | 6071f00ff51850d6ecceb82ef601b842bb4997c6 | |
parent | 625fcf76cf864730295fbf638b88ebef2dddd3e4 (diff) | |
download | ydb-7669d64dfe695cd82cc8cc9384855f5380ba9adb.tar.gz |
the program crashes if you delete an account that has queues
Не запрашивалось значение нужное актору `TDeleteUserActor`
8 files changed, 39 insertions, 25 deletions
diff --git a/ydb/core/ymq/queues/fifo/queries.cpp b/ydb/core/ymq/queues/fifo/queries.cpp index 1e1e948352..3f0c084fa7 100644 --- a/ydb/core/ymq/queues/fifo/queries.cpp +++ b/ydb/core/ymq/queues/fifo/queries.cpp @@ -557,7 +557,7 @@ const char* const ListQueuesQuery = R"__( (let queuesRange '( '('Account userName userName) '('QueueName (Utf8String '"") (Void)))) - (let queueSelect '('QueueName 'QueueId 'QueueState 'FifoQueue 'CreatedTimestamp 'CustomQueueName 'FolderId 'MasterTabletId 'Version 'Shards)) + (let queueSelect '('QueueName 'QueueId 'QueueState 'FifoQueue 'CreatedTimestamp 'CustomQueueName 'FolderId 'MasterTabletId 'Version 'Shards 'TablesFormat)) (let queues (Member (SelectRange queuesTable queuesRange queueSelect '()) 'List)) (let filtered (Filter queues (lambda '(item) (block '( diff --git a/ydb/core/ymq/queues/std/queries.cpp b/ydb/core/ymq/queues/std/queries.cpp index 9ef609c963..7a7db7f60b 100644 --- a/ydb/core/ymq/queues/std/queries.cpp +++ b/ydb/core/ymq/queues/std/queries.cpp @@ -576,7 +576,7 @@ const char* const ListQueuesQuery = R"__( (let queuesRange '( '('Account userName userName) '('QueueName (Utf8String '"") (Void)))) - (let queueSelect '('QueueName 'QueueId 'QueueState 'FifoQueue 'CreatedTimestamp 'CustomQueueName 'FolderId 'MasterTabletId 'Version 'Shards)) + (let queueSelect '('QueueName 'QueueId 'QueueState 'FifoQueue 'CreatedTimestamp 'CustomQueueName 'FolderId 'MasterTabletId 'Version 'Shards 'TablesFormat)) (let queues (Member (SelectRange queuesTable queuesRange queueSelect '()) 'List)) (let filtered (Filter queues (lambda '(item) (block '( diff --git a/ydb/tests/functional/sqs/common/test_account_actions.py b/ydb/tests/functional/sqs/common/test_account_actions.py index 539192febb..81aa591f9a 100644 --- a/ydb/tests/functional/sqs/common/test_account_actions.py +++ b/ydb/tests/functional/sqs/common/test_account_actions.py @@ -5,14 +5,18 @@ import pytest from hamcrest import assert_that, not_none, has_item, is_not from ydb.tests.library.sqs.test_base import KikimrSqsTestBase, get_test_with_sqs_installation_by_path, get_test_with_sqs_tenant_installation -from ydb.tests.library.sqs.test_base import TABLES_FORMAT_PARAMS +from ydb.tests.library.sqs.test_base import TABLES_FORMAT_PARAMS, HAS_QUEUES_PARAMS class AccountActionsTest(KikimrSqsTestBase): @pytest.mark.parametrize(**TABLES_FORMAT_PARAMS) - def test_manage_account(self, tables_format): + @pytest.mark.parametrize(**HAS_QUEUES_PARAMS) + def test_manage_account(self, tables_format, has_queues): self._init_with_params(tables_format=tables_format) + user_name = 'pupkin' + self._sqs_api = self._create_api_for_user(user_name) + create_user_result = self._sqs_api.create_user(user_name) assert_that( create_user_result, @@ -23,6 +27,10 @@ class AccountActionsTest(KikimrSqsTestBase): user_list, has_item(user_name) ) + if has_queues: + self._sqs_api.create_queue('queue.fifo', is_fifo=True) + self._sqs_api.create_queue('queue', is_fifo=False) + delete_user_result = self._sqs_api.delete_user(user_name) assert_that( delete_user_result, diff --git a/ydb/tests/functional/sqs/common/test_acl.py b/ydb/tests/functional/sqs/common/test_acl.py index 76ea8abffa..3c1212159a 100644 --- a/ydb/tests/functional/sqs/common/test_acl.py +++ b/ydb/tests/functional/sqs/common/test_acl.py @@ -140,7 +140,7 @@ class SqsACLTest(KikimrSqsTestBase): result = self._sqs_api.send_message(_queue_url, data) assert_that(result, result_predicate) return result - except: + except Exception: if retries == 0: raise time.sleep(0.1) @@ -164,9 +164,9 @@ class SqsACLTest(KikimrSqsTestBase): __send_message_with_retries(queue_url, 'superdata', is_(none())) # no access again. that's a pity result = self._sqs_api.list_permissions(self._username) - assert('Account' in str(result)) - assert(berkanavt_sid in str(result)) - assert('Permissions' in str(result)) + assert 'Account' in str(result) + assert berkanavt_sid in str(result) + assert 'Permissions' in str(result) class SqsWithForceAuthorizationTest(KikimrSqsTestBase): diff --git a/ydb/tests/functional/sqs/common/test_format_without_version.py b/ydb/tests/functional/sqs/common/test_format_without_version.py index 9b93f9fced..9795783ecb 100644 --- a/ydb/tests/functional/sqs/common/test_format_without_version.py +++ b/ydb/tests/functional/sqs/common/test_format_without_version.py @@ -23,7 +23,7 @@ class QueueWithoutVersionTest(KikimrSqsTestBase): if info.TabletId not in self.used_tablets: self.used_tablets.append(info.TabletId) return info.TabletId - assert(False) + assert False def get_table_path(self, table=None): table_path = f'{self.sqs_root}/{self._username}/{self.queue_name}' diff --git a/ydb/tests/functional/sqs/common/test_multiplexing_tables_format.py b/ydb/tests/functional/sqs/common/test_multiplexing_tables_format.py index 05479f69a7..0a8c5cf036 100644 --- a/ydb/tests/functional/sqs/common/test_multiplexing_tables_format.py +++ b/ydb/tests/functional/sqs/common/test_multiplexing_tables_format.py @@ -20,7 +20,7 @@ class MultiplexingTablesFormatTest(KikimrSqsTestBase): self.create_queue(is_fifo) except yatest.common.process.ExecutionError: return - assert(False) + assert False def create_queue_with_wrong_tables_format(self, tables_format): self._set_tables_format(tables_format='qwerty') diff --git a/ydb/tests/functional/sqs/common/test_queue_attributes_validation.py b/ydb/tests/functional/sqs/common/test_queue_attributes_validation.py index e09dbbfd38..c4f7b3430d 100644 --- a/ydb/tests/functional/sqs/common/test_queue_attributes_validation.py +++ b/ydb/tests/functional/sqs/common/test_queue_attributes_validation.py @@ -30,7 +30,7 @@ class TestQueueAttributesInCompatibilityMode(KikimrSqsTestBase): assert_that(self._sqs_api.get_queue_attributes(queue_url)['MaximumMessageSize'], equal_to('1024')) try: queue_url = self._create_queue_and_assert(self.queue_name, is_fifo=is_fifo, use_http=True, attributes={'MaximumMessageSize': 'troll'}, retries=1) - except: + except Exception: pass else: raise Exception('only parseable attributes are valid') @@ -56,13 +56,13 @@ class TestQueueAttributesValidation(KikimrSqsTestBase): val = int(attributes[attr]) # change attributes slightly attributes_to_set_and_check[attr] = str(val - 1 if val > 0 else val + 1) - assert(attributes_to_set_and_check[attr] != attributes[attr]) + assert attributes_to_set_and_check[attr] != attributes[attr] content_based_dedup_key = 'ContentBasedDeduplication' if is_fifo: val = attributes[content_based_dedup_key] attributes_to_set_and_check[content_based_dedup_key] = 'true' if val == 'false' else 'false' - assert(attributes_to_set_and_check[content_based_dedup_key] != attributes[content_based_dedup_key]) + assert attributes_to_set_and_check[content_based_dedup_key] != attributes[content_based_dedup_key] self._sqs_api.set_queue_attributes(queue_url, attributes_to_set_and_check) # match set attributes @@ -75,23 +75,23 @@ class TestQueueAttributesValidation(KikimrSqsTestBase): try: self._sqs_api.set_queue_attributes(queue_url, {attr: '2.5'}) except Exception as e: - assert('InvalidAttributeValue' in str(e)) - assert(attr in str(e)) + assert 'InvalidAttributeValue' in str(e) + assert attr in str(e) else: assert_that(False) # expected InvalidAttributeValue exception try: self._sqs_api.set_queue_attributes(queue_url, {attr: '2147483647'}) except Exception as e: - assert('InvalidAttributeValue' in str(e)) - assert(attr in str(e)) + assert 'InvalidAttributeValue' in str(e) + assert attr in str(e) else: assert_that(False) # expected InvalidAttributeValue exception try: self._sqs_api.set_queue_attributes(queue_url, {'trololo': 'ololo'}) except Exception as e: - assert('InvalidAttributeName' in str(e)) + assert 'InvalidAttributeName' in str(e) else: assert_that(False) # expected InvalidAttributeName exception @@ -101,8 +101,8 @@ class TestQueueAttributesValidation(KikimrSqsTestBase): try: self._sqs_api.set_queue_attributes(queue_url, {'FifoQueue': 'omg'}) except Exception as e: - assert('InvalidAttributeValue' in str(e)) - assert('FifoQueue' in str(e)) + assert 'InvalidAttributeValue' in str(e) + assert 'FifoQueue' in str(e) else: assert_that(False) # expected InvalidAttributeValue exception @@ -110,15 +110,15 @@ class TestQueueAttributesValidation(KikimrSqsTestBase): try: self._sqs_api.set_queue_attributes(queue_url, {'FifoQueue': 'false'}) except Exception as e: - assert('InvalidAttributeValue' in str(e)) - assert('Modifying queue type is not supported' in str(e)) + assert 'InvalidAttributeValue' in str(e) + assert 'Modifying queue type is not supported' in str(e) else: assert_that(False) # expected InvalidAttributeValue exception else: try: self._sqs_api.set_queue_attributes(queue_url, {'FifoQueue': 'false'}) except Exception as e: - assert('InvalidAttributeName' in str(e)) + assert 'InvalidAttributeName' in str(e) else: assert_that(False) # expected InvalidAttributeName exception @@ -176,13 +176,13 @@ class TestQueueAttributesValidation(KikimrSqsTestBase): try: queue_url = self._sqs_api.create_queue('new_' + self.queue_name, is_fifo=is_fifo, attributes={attr: '2147483647'}) except Exception as e: - assert(attr in str(e)) + assert attr in str(e) else: assert_that(False) # expected some exception try: queue_url = self._sqs_api.create_queue('new2_' + self.queue_name, is_fifo=is_fifo, attributes={attr: '2.5'}) except Exception as e: - assert(attr in str(e)) + assert attr in str(e) else: assert_that(False) # expected some exception diff --git a/ydb/tests/library/sqs/test_base.py b/ydb/tests/library/sqs/test_base.py index b390fb43cc..ee76346d30 100644 --- a/ydb/tests/library/sqs/test_base.py +++ b/ydb/tests/library/sqs/test_base.py @@ -61,6 +61,12 @@ VISIBILITY_CHANGE_METHOD_PARAMS = { 'ids': ['with_delete_message', 'with_change_visibility'], } +HAS_QUEUES_PARAMS = { + 'argnames': 'has_queues', + 'argvalues': [True, False], + 'ids': ['with_queues', 'without_queues'] +} + def get_sqs_client_path(): return yatest_common.binary_path("ydb/core/ymq/client/bin/sqs") |