aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorabcdef <akotov@ydb.tech>2023-05-02 12:01:51 +0300
committerabcdef <akotov@ydb.tech>2023-05-02 12:01:51 +0300
commit7669d64dfe695cd82cc8cc9384855f5380ba9adb (patch)
tree6071f00ff51850d6ecceb82ef601b842bb4997c6
parent625fcf76cf864730295fbf638b88ebef2dddd3e4 (diff)
downloadydb-7669d64dfe695cd82cc8cc9384855f5380ba9adb.tar.gz
the program crashes if you delete an account that has queues
Не запрашивалось значение нужное актору `TDeleteUserActor`
-rw-r--r--ydb/core/ymq/queues/fifo/queries.cpp2
-rw-r--r--ydb/core/ymq/queues/std/queries.cpp2
-rw-r--r--ydb/tests/functional/sqs/common/test_account_actions.py12
-rw-r--r--ydb/tests/functional/sqs/common/test_acl.py8
-rw-r--r--ydb/tests/functional/sqs/common/test_format_without_version.py2
-rw-r--r--ydb/tests/functional/sqs/common/test_multiplexing_tables_format.py2
-rw-r--r--ydb/tests/functional/sqs/common/test_queue_attributes_validation.py30
-rw-r--r--ydb/tests/library/sqs/test_base.py6
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")