forked from TrueCloudLab/frostfs-testcases
"create container" -> "prepare container" misprint fixed
Signed-off-by: anastasia prasolova <anastasia@nspcc.ru>
This commit is contained in:
parent
9c1d4b9b07
commit
d841f3f9ef
10 changed files with 66 additions and 54 deletions
|
@ -23,7 +23,6 @@ from common import *
|
|||
|
||||
ROBOT_AUTO_KEYWORDS = False
|
||||
|
||||
CLI_PREFIX = ""
|
||||
# path to neofs-cli executable
|
||||
NEOFS_CLI_EXEC = os.getenv('NEOFS_CLI_EXEC', 'neofs-cli')
|
||||
|
||||
|
@ -318,10 +317,11 @@ def get_range(private_key: str, cid: str, oid: str, range_file: str, bearer: str
|
|||
raise Exception("command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))
|
||||
|
||||
@keyword('Create container')
|
||||
def create_container(private_key: str, basic_acl:str="",
|
||||
rule:str="REP 2 IN X CBF 1 SELECT 2 FROM * AS X"):
|
||||
def create_container(private_key: str, basic_acl:str, rule:str):
|
||||
if rule == "":
|
||||
logger.error("Cannot create container with empty placement rule")
|
||||
if basic_acl != "":
|
||||
basic_acl = "--basic-acl " + basic_acl
|
||||
basic_acl = f"--basic-acl {basic_acl}"
|
||||
|
||||
createContainerCmd = (
|
||||
f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --key {private_key} '
|
||||
|
@ -334,7 +334,6 @@ def create_container(private_key: str, basic_acl:str="",
|
|||
logger.info("Output: %s" % output)
|
||||
cid = _parse_cid(output)
|
||||
logger.info("Created container %s with rule '%s'" % (cid, rule))
|
||||
|
||||
return cid
|
||||
|
||||
|
||||
|
@ -407,7 +406,6 @@ def search_object(private_key: str, cid: str, keys: str, bearer: str, filters: s
|
|||
|
||||
@keyword('Get Split objects')
|
||||
def get_component_objects(private_key: str, cid: str, oid: str):
|
||||
|
||||
logger.info("Collect Split objects list from Linked object.")
|
||||
split_id = ""
|
||||
nodes = _get_storage_nodes()
|
||||
|
@ -444,7 +442,6 @@ def _collect_split_objects_from_header(private_key, cid, parsed_header):
|
|||
return header_link_parsed['Split ChildID']
|
||||
|
||||
|
||||
|
||||
@keyword('Verify Split Chain')
|
||||
def verify_split_chain(private_key: str, cid: str, oid: str):
|
||||
|
||||
|
@ -739,7 +736,6 @@ def parse_object_system_header(header: str):
|
|||
else:
|
||||
raise Exception("no Type was parsed from object header: \t%s" % header)
|
||||
|
||||
|
||||
# Header - Optional attributes
|
||||
m = re.search(r'Split ID:\s+([\w-]+)', header)
|
||||
if m is not None:
|
||||
|
@ -757,8 +753,6 @@ def parse_object_system_header(header: str):
|
|||
found_objects = re.findall(r'Split ChildID:\s+(\w+)', header)
|
||||
if found_objects:
|
||||
result_header['Split ChildID'] = found_objects
|
||||
|
||||
|
||||
logger.info("Result: %s" % result_header)
|
||||
return result_header
|
||||
|
||||
|
@ -801,6 +795,7 @@ def verify_file_hash(filename, expected_hash):
|
|||
else:
|
||||
raise Exception("File hash '{}' is not equal to {}".format(file_hash, expected_hash))
|
||||
|
||||
|
||||
@keyword('Put object')
|
||||
def put_object(private_key: str, path: str, cid: str, bearer: str, user_headers: str,
|
||||
endpoint: str="", options: str="" ):
|
||||
|
@ -1075,30 +1070,49 @@ def _find_cid(output: str, cid: str):
|
|||
raise Exception("no CID %s was parsed from command output: \t%s" % (cid, output))
|
||||
return cid
|
||||
|
||||
def _parse_oid(output: str):
|
||||
def _parse_oid(input_str: str):
|
||||
"""
|
||||
This function parses OID from given CLI output.
|
||||
Parameters:
|
||||
- output: a string with command run output
|
||||
"""
|
||||
m = re.search(r'ID: ([a-zA-Z0-9-]+)', output)
|
||||
if m.start() != m.end(): # e.g., if match found something
|
||||
oid = m.group(1)
|
||||
else:
|
||||
raise Exception("no OID was parsed from command output: \t%s" % output)
|
||||
return oid
|
||||
This function parses OID from given CLI output. The input string we
|
||||
expect:
|
||||
Object successfully stored
|
||||
ID: 4MhrLA7RXTBXCsaNnbahYVAPuoQdiUPuyNEWnywvoSEs
|
||||
CID: HeZu2DXBuPve6HXbuHZx64knS7KcGtfSj2L59Li72kkg
|
||||
We want to take 'ID' value from the string.
|
||||
|
||||
def _parse_cid(output: str):
|
||||
"""
|
||||
This function parses CID from given CLI output.
|
||||
Parameters:
|
||||
- output: a string with command run output
|
||||
- input_str: a string with command run output
|
||||
"""
|
||||
m = re.search(r'container ID: (\w+)', output)
|
||||
if not m.start() != m.end(): # e.g., if match found something
|
||||
raise Exception("no CID was parsed from command output: \t%s" % (output))
|
||||
cid = m.group(1)
|
||||
return cid
|
||||
try:
|
||||
# taking second string from command output
|
||||
snd_str = input_str.split('\n')[1]
|
||||
except:
|
||||
logger.error(f"Got empty input: {input_str}")
|
||||
splitted = snd_str.split(": ")
|
||||
if len(splitted) != 2:
|
||||
raise Exception(f"no OID was parsed from command output: \t{snd_str}")
|
||||
return splitted[1]
|
||||
|
||||
def _parse_cid(input_str: str):
|
||||
"""
|
||||
This function parses CID from given CLI output. The input string we
|
||||
expect:
|
||||
container ID: 2tz86kVTDpJxWHrhw3h6PbKMwkLtBEwoqhHQCKTre1FN
|
||||
awaiting...
|
||||
container has been persisted on sidechain
|
||||
We want to take 'container ID' value from the string.
|
||||
|
||||
Parameters:
|
||||
- input_str: a string with command run output
|
||||
"""
|
||||
try:
|
||||
# taking first string from command output
|
||||
fst_str = input_str.split('\n')[0]
|
||||
except:
|
||||
logger.error(f"Got empty output: {input_str}")
|
||||
splitted = fst_str.split(": ")
|
||||
if len(splitted) != 2:
|
||||
raise Exception(f"no CID was parsed from command output: \t{fst_str}")
|
||||
return splitted[1]
|
||||
|
||||
def _get_storage_nodes():
|
||||
# TODO: fix to get netmap from neofs-cli
|
||||
|
|
|
@ -58,7 +58,7 @@ Check Public Container
|
|||
Get Range Hash ${SYSTEM_KEY_SN} ${PUBLIC_CID} ${S_OID_USER} ${EMPTY} 0:256
|
||||
|
||||
# Search
|
||||
@{S_OBJ_PRIV} = Create List ${S_OID_USER} ${S_OID_OTHER} ${S_OID_SYS_SN} ${S_OID_SYS_IR}
|
||||
@{S_OBJ_PRIV} = Create List ${S_OID_USER} ${S_OID_OTHER} ${S_OID_SYS_SN} ${S_OID_SYS_IR}
|
||||
Search object ${USER_KEY} ${PUBLIC_CID} --root ${EMPTY} ${EMPTY} ${S_OBJ_PRIV}
|
||||
Search object ${OTHER_KEY} ${PUBLIC_CID} --root ${EMPTY} ${EMPTY} ${S_OBJ_PRIV}
|
||||
Search object ${SYSTEM_KEY_IR} ${PUBLIC_CID} --root ${EMPTY} ${EMPTY} ${S_OBJ_PRIV}
|
||||
|
|
|
@ -44,10 +44,7 @@ Payment Operations
|
|||
... Transaction accepted in block ${TX_DEPOSIT}
|
||||
Get Transaction ${TX_DEPOSIT}
|
||||
|
||||
|
||||
Create Containers
|
||||
# Create containers:
|
||||
|
||||
Log Create Private Container
|
||||
${PRIV_CID_GEN} = Create container ${USER_KEY} 0x18888888 ${RULE_FOR_ALL}
|
||||
Container Existing ${USER_KEY} ${PRIV_CID_GEN}
|
||||
|
@ -64,7 +61,6 @@ Create Containers
|
|||
Set Global Variable ${PUBLIC_CID} ${PUBLIC_CID_GEN}
|
||||
Set Global Variable ${READONLY_CID} ${READONLY_CID_GEN}
|
||||
|
||||
|
||||
Generate file
|
||||
[Arguments] ${SIZE}
|
||||
${FILE_S_GEN} = Generate file of bytes ${SIZE}
|
||||
|
|
|
@ -14,8 +14,8 @@ ${RULE_FOR_ALL} = REP 2 IN X CBF 1 SELECT 4 FROM * AS X
|
|||
|
||||
Generate Keys
|
||||
# Generate new wallets
|
||||
${WALLET} ${ADDR} ${USER_KEY_GEN} = Init Wallet with Address ${TEMP_DIR}
|
||||
${WALLET_OTH} ${ADDR_OTH} ${OTHER_KEY_GEN} = Init Wallet with Address ${TEMP_DIR}
|
||||
${WALLET} ${ADDR} ${USER_KEY_GEN} = Init Wallet with Address ${TEMP_DIR}
|
||||
${WALLET_OTH} ${ADDR_OTH} ${OTHER_KEY_GEN} = Init Wallet with Address ${TEMP_DIR}
|
||||
|
||||
# Get pre-defined keys
|
||||
${EACL_KEY_GEN} = Form WIF from String 782676b81a35c5f07325ec523e8521ee4946b6e5d4c6cd652dd0c3ba51ce03de
|
||||
|
@ -52,13 +52,13 @@ Payment Operations
|
|||
|
||||
Create Container Public
|
||||
Log Create Public Container
|
||||
${PUBLIC_CID_GEN} = Create container ${USER_KEY} 0x0FFFFFFF
|
||||
${PUBLIC_CID_GEN} = Create container ${USER_KEY} 0x0FFFFFFF ${COMMON_PLACEMENT_RULE}
|
||||
[Return] ${PUBLIC_CID_GEN}
|
||||
|
||||
|
||||
Create Container Inaccessible
|
||||
Log Create Inaccessible Container
|
||||
${PUBLIC_CID_GEN} = Create container ${USER_KEY} 0x40000000
|
||||
${PUBLIC_CID_GEN} = Create container ${USER_KEY} 0x40000000 ${COMMON_PLACEMENT_RULE}
|
||||
[Return] ${PUBLIC_CID_GEN}
|
||||
|
||||
|
||||
|
|
|
@ -6,6 +6,9 @@ Library ../${RESOURCES}/payment_neogo.py
|
|||
Library ${KEYWORDS}/wallet.py
|
||||
Library ../${RESOURCES}/utility_keywords.py
|
||||
|
||||
*** Variables ***
|
||||
${PLACEMENT_RULE} = "REP 2 IN X CBF 1 SELECT 4 FROM * AS X"
|
||||
|
||||
*** Test cases ***
|
||||
NeoFS Object Replication
|
||||
[Documentation] Testcase to validate NeoFS object replication.
|
||||
|
@ -28,7 +31,7 @@ NeoFS Object Replication
|
|||
... Transaction accepted in block ${TX_DEPOSIT}
|
||||
Get Transaction ${TX_DEPOSIT}
|
||||
|
||||
${CID} = Create container ${PRIV_KEY} ${EMPTY} REP 2 IN X CBF 1 SELECT 4 FROM * AS X
|
||||
${CID} = Create container ${PRIV_KEY} ${EMPTY} ${PLACEMENT_RULE}
|
||||
Container Existing ${PRIV_KEY} ${CID}
|
||||
|
||||
|
||||
|
|
|
@ -6,9 +6,10 @@ Library ${KEYWORDS}/wallet.py
|
|||
*** Variables ***
|
||||
${FILE_USR_HEADER} = key1=1,key2=abc
|
||||
${FILE_USR_HEADER_OTH} = key1=2
|
||||
${UNEXIST_OID} = B2DKvkHnLnPvapbDgfpU1oVUPuXQo5LTfKVxmNDZXQff
|
||||
${UNEXIST_OID} = B2DKvkHnLnPvapbDgfpU1oVUPuXQo5LTfKVxmNDZXQff
|
||||
${TRANSFER_AMOUNT} = 15
|
||||
${DEPOSIT_AMOUNT} = 10
|
||||
${DEPOSIT_AMOUNT} = 10
|
||||
${EMPTY_ACL} = ""
|
||||
|
||||
*** Keywords ***
|
||||
|
||||
|
@ -34,13 +35,11 @@ Payment operations
|
|||
Set Global Variable ${PRIV_KEY} ${PRIV_KEY}
|
||||
Set Global Variable ${ADDR} ${ADDR}
|
||||
|
||||
|
||||
Prepare container
|
||||
${CID} = Create container ${PRIV_KEY}
|
||||
Container Existing ${PRIV_KEY} ${CID}
|
||||
${CID} = Create container ${PRIV_KEY} ${EMPTY_ACL} ${COMMON_PLACEMENT_RULE}
|
||||
Container Existing ${PRIV_KEY} ${CID}
|
||||
|
||||
Wait Until Keyword Succeeds ${NEOFS_EPOCH_TIMEOUT} ${MORPH_BLOCK_TIME}
|
||||
... Expected Balance ${PRIV_KEY} ${DEPOSIT_AMOUNT} ${NEOFS_CREATE_CONTAINER_GAS_FEE}
|
||||
|
||||
Set Global Variable ${CID} ${CID}
|
||||
|
||||
|
|
|
@ -6,7 +6,6 @@ Library ../${RESOURCES}/payment_neogo.py
|
|||
Library ../${RESOURCES}/utility_keywords.py
|
||||
Resource common_steps_object.robot
|
||||
|
||||
|
||||
*** Test cases ***
|
||||
NeoFS Complex Storagegroup
|
||||
[Documentation] Testcase to validate NeoFS operations with Storagegroup.
|
||||
|
@ -16,17 +15,16 @@ NeoFS Complex Storagegroup
|
|||
[Setup] Create Temporary Directory
|
||||
|
||||
Payment operations
|
||||
Create container
|
||||
Prepare container
|
||||
|
||||
${FILE_S} = Generate file of bytes ${COMPLEX_OBJ_SIZE}
|
||||
${FILE_HASH_S} = Get file hash ${FILE_S}
|
||||
|
||||
|
||||
# Put two Simple Object
|
||||
${S_OID_1} = Put object ${PRIV_KEY} ${FILE_S} ${CID} ${EMPTY} ${EMPTY}
|
||||
${S_OID_2} = Put object ${PRIV_KEY} ${FILE_S} ${CID} ${EMPTY} ${FILE_USR_HEADER}
|
||||
|
||||
@{S_OBJ_ALL} = Create List ${S_OID_1} ${S_OID_2}
|
||||
@{S_OBJ_ALL} = Create List ${S_OID_1} ${S_OID_2}
|
||||
|
||||
Log Storage group with 1 object
|
||||
${SG_OID_1} = Put Storagegroup ${PRIV_KEY} ${CID} ${EMPTY} ${S_OID_1}
|
||||
|
@ -39,7 +37,6 @@ NeoFS Complex Storagegroup
|
|||
... Get Storagegroup ${PRIV_KEY} ${CID} ${SG_OID_1} ${EMPTY} ${COMPLEX_OBJ_SIZE} @{SPLIT_OBJ_1}
|
||||
List Storagegroup ${PRIV_KEY} ${CID} ${EMPTY} @{EMPTY}
|
||||
|
||||
|
||||
Log Storage group with 2 objects
|
||||
${SG_OID_2} = Put Storagegroup ${PRIV_KEY} ${CID} ${EMPTY} @{S_OBJ_ALL}
|
||||
List Storagegroup ${PRIV_KEY} ${CID} ${EMPTY} ${SG_OID_2}
|
||||
|
|
|
@ -16,7 +16,7 @@ NeoFS Simple Storagegroup
|
|||
[Setup] Create Temporary Directory
|
||||
|
||||
Payment operations
|
||||
Create container
|
||||
Prepare container
|
||||
|
||||
${FILE_S} = Generate file of bytes ${SIMPLE_OBJ_SIZE}
|
||||
${FILE_HASH_S} = Get file hash ${FILE_S}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
*** Settings ***
|
||||
Variables ../../../variables/common.py
|
||||
<<<<<<< HEAD
|
||||
|
||||
Library ../${RESOURCES}/neofs.py
|
||||
Library ../${RESOURCES}/payment_neogo.py
|
||||
|
@ -8,6 +7,8 @@ Library ../${RESOURCES}/gates.py
|
|||
Library ${KEYWORDS}/wallet.py
|
||||
Library ../${RESOURCES}/utility_keywords.py
|
||||
|
||||
*** Variables ***
|
||||
${PLACEMENT_RULE} = "REP 1 IN X CBF 1 SELECT 1 FROM * AS X"
|
||||
|
||||
*** Test cases ***
|
||||
|
||||
|
@ -31,7 +32,7 @@ NeoFS HTTP Gateway
|
|||
... Transaction accepted in block ${TX_DEPOSIT}
|
||||
Get Transaction ${TX_DEPOSIT}
|
||||
|
||||
${CID} = Create container ${PRIV_KEY} public REP 1 IN X CBF 1 SELECT 1 FROM * AS X
|
||||
${CID} = Create container ${PRIV_KEY} public ${PLACEMENT_RULE}
|
||||
Wait Until Keyword Succeeds 2 min 30 sec
|
||||
... Container Existing ${PRIV_KEY} ${CID}
|
||||
|
||||
|
|
|
@ -53,4 +53,6 @@ GAS_HASH = os.getenv("GAS_HASH", '0xd2a4cff31913016155e38e474a2c06d08be276cf')
|
|||
NEOFS_CONTRACT = (os.getenv("NEOFS_CONTRACT") if os.getenv("NEOFS_CONTRACT")
|
||||
else os.getenv("NEOFS_IR_CONTRACTS_NEOFS", 'cfe89912c457754b7eb1f89781dc74bb3e0070bf'))
|
||||
|
||||
COMMON_PLACEMENT_RULE = "REP 2 IN X CBF 1 SELECT 2 FROM * AS X"
|
||||
|
||||
TEMP_DIR = os.getenv("TEMP_DIR", "TemporaryDir/")
|
||||
|
|
Loading…
Reference in a new issue