forked from TrueCloudLab/frostfs-testcases
[#349] Update session_token tests
Signed-off-by: a.berezin <a.berezin@yadro.com>
This commit is contained in:
parent
9ca70c80e3
commit
f10d899173
4 changed files with 29 additions and 19 deletions
|
@ -493,7 +493,7 @@ def wallet(user: User, credentials_provider: CredentialsProvider, cluster: Clust
|
||||||
# TODO: Migrate tests to fixture wallet above
|
# TODO: Migrate tests to fixture wallet above
|
||||||
@reporter.step("Get wallet for default user")
|
@reporter.step("Get wallet for default user")
|
||||||
@pytest.fixture(scope="session")
|
@pytest.fixture(scope="session")
|
||||||
def default_wallet(wallet) -> WalletInfo:
|
def default_wallet(wallet: WalletInfo) -> WalletInfo:
|
||||||
return wallet
|
return wallet
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -7,8 +7,8 @@ from frostfs_testlib.utils import string_utils
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="module")
|
@pytest.fixture(scope="module")
|
||||||
def owner_wallet(default_wallet: WalletInfo) -> WalletInfo:
|
def owner_wallet(wallet: WalletInfo) -> WalletInfo:
|
||||||
return default_wallet
|
return wallet
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="module")
|
@pytest.fixture(scope="module")
|
||||||
|
|
|
@ -3,14 +3,16 @@ import random
|
||||||
import allure
|
import allure
|
||||||
import pytest
|
import pytest
|
||||||
from frostfs_testlib import reporter
|
from frostfs_testlib import reporter
|
||||||
|
from frostfs_testlib.cli.frostfs_cli.cli import FrostfsCli
|
||||||
from frostfs_testlib.resources.error_patterns import SESSION_NOT_FOUND
|
from frostfs_testlib.resources.error_patterns import SESSION_NOT_FOUND
|
||||||
from frostfs_testlib.steps.cli.container import create_container
|
|
||||||
from frostfs_testlib.steps.cli.object import delete_object, put_object, put_object_to_random_node
|
from frostfs_testlib.steps.cli.object import delete_object, put_object, put_object_to_random_node
|
||||||
from frostfs_testlib.steps.session_token import create_session_token
|
from frostfs_testlib.steps.session_token import create_session_token
|
||||||
from frostfs_testlib.storage.dataclasses.object_size import ObjectSize
|
from frostfs_testlib.storage.dataclasses.object_size import ObjectSize
|
||||||
from frostfs_testlib.storage.dataclasses.wallet import WalletInfo
|
from frostfs_testlib.storage.dataclasses.wallet import WalletInfo
|
||||||
from frostfs_testlib.testing.cluster_test_base import ClusterTestBase
|
from frostfs_testlib.testing.cluster_test_base import ClusterTestBase
|
||||||
from frostfs_testlib.utils.file_utils import generate_file
|
from frostfs_testlib.utils.file_utils import generate_file
|
||||||
|
from workspace.frostfs_testcases.pytest_tests.helpers.container_creation import create_container_with_ape
|
||||||
|
from workspace.frostfs_testcases.pytest_tests.helpers.container_request import APE_OWNER_ALLOW_ALL, ContainerRequest
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.nightly
|
@pytest.mark.nightly
|
||||||
|
@ -18,7 +20,8 @@ from frostfs_testlib.utils.file_utils import generate_file
|
||||||
@pytest.mark.session_token
|
@pytest.mark.session_token
|
||||||
class TestDynamicObjectSession(ClusterTestBase):
|
class TestDynamicObjectSession(ClusterTestBase):
|
||||||
@allure.title("Object Operations with Session Token (obj_size={object_size})")
|
@allure.title("Object Operations with Session Token (obj_size={object_size})")
|
||||||
def test_object_session_token(self, default_wallet: WalletInfo, object_size: ObjectSize):
|
@pytest.mark.parametrize("user_tag", ["TestDynamicObjectSession"], indirect=True) # provide dedicated user with no APE side-policies
|
||||||
|
def test_object_session_token(self, wallet: WalletInfo, frostfs_cli: FrostfsCli, object_size: ObjectSize):
|
||||||
"""
|
"""
|
||||||
Test how operations over objects are executed with a session token
|
Test how operations over objects are executed with a session token
|
||||||
|
|
||||||
|
@ -32,17 +35,14 @@ class TestDynamicObjectSession(ClusterTestBase):
|
||||||
with a session token
|
with a session token
|
||||||
"""
|
"""
|
||||||
|
|
||||||
with reporter.step("Init wallet"):
|
|
||||||
wallet = default_wallet
|
|
||||||
|
|
||||||
with reporter.step("Nodes Settlements"):
|
with reporter.step("Nodes Settlements"):
|
||||||
session_token_node, container_node, non_container_node = random.sample(self.cluster.storage_nodes, 3)
|
session_token_node, container_node, non_container_node = random.sample(self.cluster.storage_nodes, 3)
|
||||||
|
|
||||||
with reporter.step("Create Session Token"):
|
with reporter.step("Create Session Token"):
|
||||||
session_token = create_session_token(
|
session_token = create_session_token(
|
||||||
shell=self.shell,
|
shell=self.shell,
|
||||||
owner=default_wallet.get_address(),
|
owner=wallet.get_address(),
|
||||||
wallet=default_wallet,
|
wallet=wallet,
|
||||||
rpc_endpoint=session_token_node.get_rpc_endpoint(),
|
rpc_endpoint=session_token_node.get_rpc_endpoint(),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -54,11 +54,13 @@ class TestDynamicObjectSession(ClusterTestBase):
|
||||||
f'AS LOC_{locode}_PLACE FILTER "UN-LOCODE" '
|
f'AS LOC_{locode}_PLACE FILTER "UN-LOCODE" '
|
||||||
f'EQ "{un_locode}" AS LOC_{locode}'
|
f'EQ "{un_locode}" AS LOC_{locode}'
|
||||||
)
|
)
|
||||||
cid = create_container(
|
cid = create_container_with_ape(
|
||||||
|
ContainerRequest(placement_policy, APE_OWNER_ALLOW_ALL),
|
||||||
|
frostfs_cli,
|
||||||
wallet,
|
wallet,
|
||||||
shell=self.shell,
|
self.shell,
|
||||||
endpoint=self.cluster.default_rpc_endpoint,
|
self.cluster,
|
||||||
rule=placement_policy,
|
self.cluster.default_rpc_endpoint,
|
||||||
)
|
)
|
||||||
|
|
||||||
with reporter.step("Put Objects"):
|
with reporter.step("Put Objects"):
|
||||||
|
|
|
@ -3,9 +3,9 @@ import logging
|
||||||
import allure
|
import allure
|
||||||
import pytest
|
import pytest
|
||||||
from frostfs_testlib import reporter
|
from frostfs_testlib import reporter
|
||||||
|
from frostfs_testlib.cli.frostfs_cli.cli import FrostfsCli
|
||||||
from frostfs_testlib.resources.error_patterns import EXPIRED_SESSION_TOKEN, MALFORMED_REQUEST, OBJECT_ACCESS_DENIED, OBJECT_NOT_FOUND
|
from frostfs_testlib.resources.error_patterns import EXPIRED_SESSION_TOKEN, MALFORMED_REQUEST, OBJECT_ACCESS_DENIED, OBJECT_NOT_FOUND
|
||||||
from frostfs_testlib.shell import Shell
|
from frostfs_testlib.shell import Shell
|
||||||
from frostfs_testlib.steps.cli.container import create_container
|
|
||||||
from frostfs_testlib.steps.cli.object import (
|
from frostfs_testlib.steps.cli.object import (
|
||||||
delete_object,
|
delete_object,
|
||||||
get_object,
|
get_object,
|
||||||
|
@ -37,6 +37,8 @@ from frostfs_testlib.storage.dataclasses.wallet import WalletInfo
|
||||||
from frostfs_testlib.testing.cluster_test_base import ClusterTestBase
|
from frostfs_testlib.testing.cluster_test_base import ClusterTestBase
|
||||||
from frostfs_testlib.testing.test_control import expect_not_raises
|
from frostfs_testlib.testing.test_control import expect_not_raises
|
||||||
from frostfs_testlib.utils.file_utils import generate_file
|
from frostfs_testlib.utils.file_utils import generate_file
|
||||||
|
from workspace.frostfs_testcases.pytest_tests.helpers.container_creation import create_containers_with_ape
|
||||||
|
from workspace.frostfs_testcases.pytest_tests.helpers.container_request import OWNER_ALLOW_ALL, MultipleContainersRequest
|
||||||
|
|
||||||
logger = logging.getLogger("NeoLogger")
|
logger = logging.getLogger("NeoLogger")
|
||||||
|
|
||||||
|
@ -44,10 +46,15 @@ RANGE_OFFSET_FOR_COMPLEX_OBJECT = 200
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(scope="module")
|
@pytest.fixture(scope="module")
|
||||||
def storage_containers(owner_wallet: WalletInfo, client_shell: Shell, cluster: Cluster) -> list[str]:
|
def storage_containers(owner_wallet: WalletInfo, frostfs_cli: FrostfsCli, client_shell: Shell, cluster: Cluster) -> list[str]:
|
||||||
cid = create_container(owner_wallet, shell=client_shell, endpoint=cluster.default_rpc_endpoint)
|
return create_containers_with_ape(
|
||||||
other_cid = create_container(owner_wallet, shell=client_shell, endpoint=cluster.default_rpc_endpoint)
|
frostfs_cli,
|
||||||
yield [cid, other_cid]
|
owner_wallet,
|
||||||
|
client_shell,
|
||||||
|
cluster,
|
||||||
|
cluster.default_rpc_endpoint,
|
||||||
|
MultipleContainersRequest([OWNER_ALLOW_ALL, OWNER_ALLOW_ALL]),
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(
|
@pytest.fixture(
|
||||||
|
@ -135,6 +142,7 @@ def static_sessions(
|
||||||
|
|
||||||
@pytest.mark.nightly
|
@pytest.mark.nightly
|
||||||
@pytest.mark.static_session
|
@pytest.mark.static_session
|
||||||
|
@pytest.mark.parametrize("user_tag", ["TestObjectStaticSession"], indirect=True) # provide dedicated user with no APE side-policies
|
||||||
class TestObjectStaticSession(ClusterTestBase):
|
class TestObjectStaticSession(ClusterTestBase):
|
||||||
@allure.title("Read operations with static session (method={method_under_test.__name__}, obj_size={object_size})")
|
@allure.title("Read operations with static session (method={method_under_test.__name__}, obj_size={object_size})")
|
||||||
@pytest.mark.parametrize(
|
@pytest.mark.parametrize(
|
||||||
|
|
Loading…
Reference in a new issue