[#41] Emission Threshold test

Signed-off-by: Elizaveta Chichindaeva <elizaveta@nspcc.ru>
This commit is contained in:
Elizaveta Chichindaeva 2021-12-28 10:08:16 +03:00
parent 95a5a3fda6
commit b3b0e20628
5 changed files with 81 additions and 25 deletions

View file

@ -41,7 +41,6 @@ def get_eacl(wif: str, cid: str):
f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {wif} ' f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {wif} '
f'container get-eacl --cid {cid}' f'container get-eacl --cid {cid}'
) )
logger.info(f"cmd: {cmd}")
try: try:
output = _cmd_run(cmd) output = _cmd_run(cmd)
if re.search(r'extended ACL table is not set for this container', output): if re.search(r'extended ACL table is not set for this container', output):
@ -59,7 +58,6 @@ def set_eacl(wif: str, cid: str, eacl_table_path: str):
f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {wif} ' f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {wif} '
f'container set-eacl --cid {cid} --table {eacl_table_path} --await' f'container set-eacl --cid {cid} --table {eacl_table_path} --await'
) )
logger.info(f"cmd: {cmd}")
_cmd_run(cmd) _cmd_run(cmd)
@ -78,7 +76,6 @@ def create_eacl(cid: str, rules_list: list):
f"{NEOFS_CLI_EXEC} acl extended create --cid {cid} " f"{NEOFS_CLI_EXEC} acl extended create --cid {cid} "
f"{rules}--out {table}" f"{rules}--out {table}"
) )
logger.info(f"cmd: {cmd}")
_cmd_run(cmd) _cmd_run(cmd)
return table return table
@ -167,5 +164,4 @@ def sign_bearer_token(wif: str, eacl_rules_file: str):
f'{NEOFS_CLI_EXEC} util sign bearer-token --from {eacl_rules_file} ' f'{NEOFS_CLI_EXEC} util sign bearer-token --from {eacl_rules_file} '
f'--to {eacl_rules_file} --wallet {wif} --json' f'--to {eacl_rules_file} --wallet {wif} --json'
) )
logger.info(f"cmd: {cmd}")
_cmd_run(cmd) _cmd_run(cmd)

View file

@ -140,7 +140,6 @@ def create_container(private_key: str, basic_acl:str, rule:str, user_headers: st
f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} ' f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} '
f'container create --policy "{rule}" {basic_acl} {user_headers} {session} --await' f'container create --policy "{rule}" {basic_acl} {user_headers} {session} --await'
) )
logger.info(f"Cmd: {createContainerCmd}")
output = _cmd_run(createContainerCmd) output = _cmd_run(createContainerCmd)
cid = _parse_cid(output) cid = _parse_cid(output)
logger.info(f"Created container {cid} with rule {rule}") logger.info(f"Created container {cid} with rule {rule}")
@ -153,7 +152,6 @@ def container_list(private_key: str):
f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} ' f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} '
f'container list' f'container list'
) )
logger.info(f"Cmd: {Cmd}")
output = _cmd_run(Cmd) output = _cmd_run(Cmd)
container_list = re.findall(r'(\w{43,44})', output) container_list = re.findall(r'(\w{43,44})', output)
@ -167,7 +165,6 @@ def container_existing(private_key: str, cid: str):
f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} ' f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} '
f'container list' f'container list'
) )
logger.info(f"Cmd: {Cmd}")
output = _cmd_run(Cmd) output = _cmd_run(Cmd)
_find_cid(output, cid) _find_cid(output, cid)
@ -181,7 +178,6 @@ def verify_head_tombstone(private_key: str, cid: str, oid_ts: str, oid: str, add
f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} ' f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} '
f'object head --cid {cid} --oid {oid_ts} --json' f'object head --cid {cid} --oid {oid_ts} --json'
) )
logger.info(f"Cmd: {object_cmd}")
output = _cmd_run(object_cmd) output = _cmd_run(object_cmd)
full_headers = json.loads(output) full_headers = json.loads(output)
logger.info(f"Output: {full_headers}") logger.info(f"Output: {full_headers}")
@ -234,7 +230,6 @@ def get_container_attributes(private_key: str, cid: str, endpoint: str="", json_
f'{NEOFS_CLI_EXEC} --rpc-endpoint {endpoint} --wallet {private_key} ' f'{NEOFS_CLI_EXEC} --rpc-endpoint {endpoint} --wallet {private_key} '
f'--cid {cid} container get {"--json" if json_output else ""}' f'--cid {cid} container get {"--json" if json_output else ""}'
) )
logger.info(f"Cmd: {container_cmd}")
output = _cmd_run(container_cmd) output = _cmd_run(container_cmd)
return output return output
@ -267,7 +262,6 @@ def delete_container(cid: str, private_key: str):
f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} ' f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} '
f'container delete --cid {cid}' f'container delete --cid {cid}'
) )
logger.info(f"Cmd: {deleteContainerCmd}")
_cmd_run(deleteContainerCmd) _cmd_run(deleteContainerCmd)
@ -375,7 +369,6 @@ def put_storagegroup(private_key: str, cid: str, bearer_token: str="", *oid_list
f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} storagegroup ' f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} storagegroup '
f'put --cid {cid} --members {cmd_oid_line} {bearer_token}' f'put --cid {cid} --members {cmd_oid_line} {bearer_token}'
) )
logger.info(f"Cmd: {object_cmd}")
output = _cmd_run(object_cmd) output = _cmd_run(object_cmd)
oid = _parse_oid(output) oid = _parse_oid(output)
@ -392,8 +385,6 @@ def list_storagegroup(private_key: str, cid: str, bearer_token: str="", *expecte
f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} ' f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} '
f'storagegroup list --cid {cid} {bearer_token}' f'storagegroup list --cid {cid} {bearer_token}'
) )
logger.info(f"Cmd: {object_cmd}")
output = _cmd_run(object_cmd) output = _cmd_run(object_cmd)
found_objects = re.findall(r'(\w{43,44})', output) found_objects = re.findall(r'(\w{43,44})', output)
@ -413,7 +404,6 @@ def get_storagegroup(private_key: str, cid: str, oid: str, bearer_token: str, ex
bearer_token = f"--bearer {bearer_token}" bearer_token = f"--bearer {bearer_token}"
object_cmd = f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} storagegroup get --cid {cid} --id {oid} {bearer_token}' object_cmd = f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} storagegroup get --cid {cid} --id {oid} {bearer_token}'
logger.info(f"Cmd: {object_cmd}")
output = _cmd_run(object_cmd) output = _cmd_run(object_cmd)
if expected_size: if expected_size:
@ -441,7 +431,6 @@ def delete_storagegroup(private_key: str, cid: str, oid: str, bearer_token: str=
f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} storagegroup ' f'{NEOFS_CLI_EXEC} --rpc-endpoint {NEOFS_ENDPOINT} --wallet {private_key} storagegroup '
f'delete --cid {cid} --id {oid} {bearer_token}' f'delete --cid {cid} --id {oid} {bearer_token}'
) )
logger.info(f"Cmd: {object_cmd}")
output = _cmd_run(object_cmd) output = _cmd_run(object_cmd)
m = re.search(r'Tombstone: ([a-zA-Z0-9-]+)', output) m = re.search(r'Tombstone: ([a-zA-Z0-9-]+)', output)
@ -572,6 +561,5 @@ def _search_object(node:str, private_key: str, cid:str, oid: str):
f'{NEOFS_CLI_EXEC} --rpc-endpoint {node} --wallet {private_key} --ttl 1 ' f'{NEOFS_CLI_EXEC} --rpc-endpoint {node} --wallet {private_key} --ttl 1 '
f'object search --root --cid {cid} --oid {oid}' f'object search --root --cid {cid} --oid {oid}'
) )
output = _cmd_run(Cmd) output = _cmd_run(Cmd)
return output return output

View file

@ -7,10 +7,10 @@ import docker
from neo3 import wallet from neo3 import wallet
from common import SIMPLE_OBJ_SIZE, ASSETS_DIR from common import SIMPLE_OBJ_SIZE, ASSETS_DIR
from cli_helpers import _cmd_run
from robot.api.deco import keyword from robot.api.deco import keyword
from robot.api import logger from robot.api import logger
from robot.libraries.BuiltIn import BuiltIn from robot.libraries.BuiltIn import BuiltIn
from cli_helpers import _cmd_run
ROBOT_AUTO_KEYWORDS = False ROBOT_AUTO_KEYWORDS = False
@ -54,30 +54,39 @@ def wif_to_binary(wif: str) -> str:
return path return path
@keyword('Make Up') @keyword('Make Up')
def make_up(services: list=[]): def make_up(services: list=[], config_dict: dict={}):
test_path = os.getcwd() test_path = os.getcwd()
dev_path = os.getenv('DEVENV_PATH', '../neofs-dev-env') dev_path = os.getenv('DEVENV_PATH', '../neofs-dev-env')
os.chdir(dev_path) os.chdir(dev_path)
if len(services) > 0: if len(services) > 0:
for service in services: for service in services:
if config_dict != {}:
with open(f"{dev_path}/.int_test.env", "a") as out:
for key, value in config_dict.items():
out.write(f'{key}={value}')
cmd = f'make up/{service}' cmd = f'make up/{service}'
logger.info(f"Cmd: {cmd}")
_cmd_run(cmd) _cmd_run(cmd)
else: else:
cmd = f'make up/basic; make update.max_object_size val={SIMPLE_OBJ_SIZE}' cmd = f'make up/basic; make update.max_object_size val={SIMPLE_OBJ_SIZE}'
logger.info(f"Cmd: {cmd}")
_cmd_run(cmd, timeout=120) _cmd_run(cmd, timeout=120)
os.chdir(test_path) os.chdir(test_path)
@keyword('Make Down') @keyword('Make Down')
def make_down(): def make_down(services: list=[]):
test_path = os.getcwd() test_path = os.getcwd()
dev_path = os.getenv('DEVENV_PATH', '../neofs-dev-env') dev_path = os.getenv('DEVENV_PATH', '../neofs-dev-env')
os.chdir(dev_path) os.chdir(dev_path)
cmd = 'make down; make clean' if len(services) > 0:
logger.info(f"Cmd: {cmd}") for service in services:
_cmd_run(cmd, timeout=60) cmd = f'make down/{service}'
_cmd_run(cmd)
with open(f"{dev_path}/.int_test.env", "w"):
pass
else:
cmd = 'make down; make clean'
_cmd_run(cmd, timeout=60)
os.chdir(test_path) os.chdir(test_path)

View file

@ -0,0 +1,63 @@
*** Settings ***
Variables common.py
Library payment_neogo.py
Library wallet_keywords.py
Library rpc_call_keywords.py
Library Process
Resource setup_teardown.robot
*** Variables ***
${DEPOSIT_AMOUNT} = ${25}
${DEPOSIT} = ${60}
@{INCLUDE_SVC} = ir
&{CONFIG_CHANGE} = NEOFS_IR_EMIT_GAS_BALANCE_THRESHOLD=${10**16}
*** Test cases ***
IR GAS emission threshold value
[Documentation] Testcase to check sidechain balance when emission threshold is exceeded.
[Tags] GAS Sidechain
[Timeout] 5 min
[Setup] Setup
${WALLET} ${ADDR} ${WIF} = Init Wallet with Address ${ASSETS_DIR}
${SC_BALANCE} = Get Sidechain Balance ${ADDR}
${TX} = Transfer Mainnet Gas ${MAINNET_WALLET_WIF} ${ADDR} ${DEPOSIT}
Wait Until Keyword Succeeds ${MAINNET_TIMEOUT} ${MAINNET_BLOCK_TIME}
... Transaction accepted in block ${TX}
##########################################################################################
# Threshold is set to default 0 and sidechain balance has changed after deposit operation
##########################################################################################
${TX_DEPOSIT} = NeoFS Deposit ${WIF} ${DEPOSIT_AMOUNT}
Wait Until Keyword Succeeds ${MAINNET_TIMEOUT} ${MAINNET_BLOCK_TIME}
... Transaction accepted in block ${TX_DEPOSIT}
Sleep ${MAINNET_BLOCK_TIME}
${BALANCE_CHANGED} = Get Sidechain Balance ${ADDR}
Should Not Be Equal ${SC_BALANCE} ${BALANCE_CHANGED}
Make Down ${INCLUDE_SVC}
Make Up ${INCLUDE_SVC} ${CONFIG_CHANGE}
######################################################################################
# Threshold is exceeded and sidechain balance has not changed after deposit operation
######################################################################################
${TX_DEPOSIT} = NeoFS Deposit ${WIF} ${DEPOSIT_AMOUNT}
Wait Until Keyword Succeeds ${MAINNET_TIMEOUT} ${MAINNET_BLOCK_TIME}
... Transaction accepted in block ${TX_DEPOSIT}
Sleep ${MAINNET_BLOCK_TIME}
${BALANCE_UNCHANGED} = Get Sidechain Balance ${ADDR}
Should Be Equal ${BALANCE_UNCHANGED} ${BALANCE_CHANGED}
[Teardown] Teardown emission_threshold

View file

@ -5,4 +5,4 @@ boto3==1.16.33
docker==4.4.0 docker==4.4.0
botocore==1.19.33 botocore==1.19.33
urllib3==1.26.3 urllib3==1.26.3
base58==1.0.3 base58==2.1.0