Remove many unused "import" statements or parts of import statement. All of them were detected by Copilot, but I verified each one manually and prepared this patch. Signed-off-by: Nadav Har'El <nyh@scylladb.com> Closes scylladb/scylladb#27676
54 lines
2.4 KiB
Python
54 lines
2.4 KiB
Python
# Copyright 2023-present ScyllaDB
|
|
#
|
|
# SPDX-License-Identifier: LicenseRef-ScyllaDB-Source-Available-1.0
|
|
|
|
import pytest
|
|
from test.alternator.test_metrics import metrics, get_metrics, check_increases_metric
|
|
from contextlib import contextmanager
|
|
import time
|
|
|
|
from .util import random_string, unique_table_name
|
|
from .test_cql_rbac import new_role, new_dynamodb
|
|
|
|
# new_service_level() is a context manager for temporarily creating a new
|
|
# service level with a unique name and attaching it to the given role.
|
|
# The fixture returns the new service level's name.
|
|
@contextmanager
|
|
def new_service_level(cql, role):
|
|
# The service level name is not a table's name but it doesn't matter.
|
|
# Because our unique_table_name() uses (deliberately) a non-lower-case
|
|
# character, the role name has to be quoted in double quotes when used
|
|
# in CQL below.
|
|
sl = unique_table_name()
|
|
cql.execute(f'CREATE SERVICE LEVEL "{sl}"')
|
|
cql.execute(f'ATTACH SERVICE LEVEL "{sl}" TO "{role}"')
|
|
try:
|
|
yield sl
|
|
finally:
|
|
cql.execute(f'DROP SERVICE LEVEL "{sl}"')
|
|
|
|
def test_service_level_metrics(test_table, request, dynamodb, cql, metrics):
|
|
print("Please make sure authorization is enforced in your Scylla installation: alternator_enforce_authorization: true")
|
|
p = random_string()
|
|
c = random_string()
|
|
_ = get_metrics(metrics)
|
|
with new_role(cql, superuser=True) as (role, key):
|
|
with new_service_level(cql, role) as sl:
|
|
with new_dynamodb(dynamodb, role, key) as ses:
|
|
# service_level_controler acts asynchronously in a loop so we can fail metric check
|
|
# if it hasn't processed service level update yet. It can take as long as 10 seconds.
|
|
started = time.time()
|
|
timeout = 30
|
|
while True:
|
|
try:
|
|
with check_increases_metric(metrics,
|
|
['scylla_storage_proxy_coordinator_write_latency_count'],
|
|
{'scheduling_group_name': f'sl:{sl}'}):
|
|
ses.meta.client.put_item(TableName=test_table.name, Item={'p': p, 'c': c})
|
|
break # no exception, test passed
|
|
except:
|
|
if time.time() - started > timeout:
|
|
raise
|
|
else:
|
|
time.sleep(0.5) # retry
|