forked from TrueCloudLab/frostfs-testcases
fixed [#233]; keywords from neofs-keywords
moved to neofs-testcases
Signed-off-by: anastasia prasolova <anastasia@nspcc.ru>
This commit is contained in:
parent
b1b86351df
commit
34d282cf5a
19 changed files with 147 additions and 72 deletions
31
robot/resources/lib/python_keywords/epoch.py
Normal file
31
robot/resources/lib/python_keywords/epoch.py
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
#!/usr/bin/python3.9
|
||||||
|
|
||||||
|
|
||||||
|
import contract
|
||||||
|
from robot.api import logger
|
||||||
|
from robot.api.deco import keyword
|
||||||
|
from robot.libraries.BuiltIn import BuiltIn
|
||||||
|
|
||||||
|
IR_WALLET_PATH = BuiltIn().get_variable_value("${IR_WALLET_PATH}")
|
||||||
|
IR_WALLET_PASS = BuiltIn().get_variable_value("${IR_WALLET_PASS}")
|
||||||
|
SIDECHAIN_EP = BuiltIn().get_variable_value("${MORPH_ENDPOINT}")
|
||||||
|
|
||||||
|
|
||||||
|
@keyword('Get Epoch')
|
||||||
|
def get_epoch():
|
||||||
|
epoch = int(contract.testinvoke_contract(
|
||||||
|
contract.get_netmap_contract_hash(SIDECHAIN_EP),
|
||||||
|
'epoch',
|
||||||
|
SIDECHAIN_EP)
|
||||||
|
)
|
||||||
|
logger.info(f"Got epoch {epoch}")
|
||||||
|
return epoch
|
||||||
|
|
||||||
|
|
||||||
|
@keyword('Tick Epoch')
|
||||||
|
def tick_epoch():
|
||||||
|
cur_epoch = get_epoch()
|
||||||
|
return contract.invoke_contract_multisig(
|
||||||
|
contract.get_netmap_contract_hash(SIDECHAIN_EP),
|
||||||
|
f"newEpoch int:{cur_epoch+1}",
|
||||||
|
IR_WALLET_PATH, IR_WALLET_PASS, SIDECHAIN_EP)
|
|
@ -3,29 +3,26 @@
|
||||||
import re
|
import re
|
||||||
import time
|
import time
|
||||||
|
|
||||||
from common import (MAINNET_WALLET_PATH, MORPH_ENDPOINT,
|
|
||||||
NEO_MAINNET_ENDPOINT, NEOFS_CONTRACT, MAINNET_SINGLE_ADDR)
|
|
||||||
import rpc_client
|
|
||||||
import contract
|
import contract
|
||||||
import converters
|
import converters
|
||||||
from wallet import nep17_transfer
|
import rpc_client
|
||||||
from wrappers import run_sh_with_passwd_contract
|
from common import (GAS_HASH, MAINNET_SINGLE_ADDR, MAINNET_WALLET_PATH,
|
||||||
|
MORPH_ENDPOINT, NEO_MAINNET_ENDPOINT, NEOFS_CONTRACT,
|
||||||
|
NEOGO_CLI_EXEC)
|
||||||
from converters import load_wallet
|
from converters import load_wallet
|
||||||
from neo3 import wallet
|
from neo3 import wallet
|
||||||
|
|
||||||
from robot.api.deco import keyword
|
|
||||||
from robot.api import logger
|
from robot.api import logger
|
||||||
from robot.libraries.BuiltIn import BuiltIn
|
from robot.api.deco import keyword
|
||||||
|
from wallet import nep17_transfer
|
||||||
|
from wrappers import run_sh_with_passwd_contract
|
||||||
|
|
||||||
ROBOT_AUTO_KEYWORDS = False
|
ROBOT_AUTO_KEYWORDS = False
|
||||||
|
|
||||||
MORPH_TOKEN_POWER = 12
|
|
||||||
EMPTY_PASSWORD = ''
|
EMPTY_PASSWORD = ''
|
||||||
MAINNET_WALLET_PASS = 'one'
|
MAINNET_WALLET_PASS = 'one'
|
||||||
TX_PERSIST_TIMEOUT = 15 #seconds
|
TX_PERSIST_TIMEOUT = 15 # seconds
|
||||||
|
ASSET_POWER_MAINCHAIN = 10 ** 8
|
||||||
NEOGO_CLI_EXEC = BuiltIn().get_variable_value("${NEOGO_CLI_EXEC}")
|
ASSET_POWER_SIDECHAIN = 10 ** 12
|
||||||
|
|
||||||
morph_rpc_cli = rpc_client.RPCClient(MORPH_ENDPOINT)
|
morph_rpc_cli = rpc_client.RPCClient(MORPH_ENDPOINT)
|
||||||
mainnet_rpc_cli = rpc_client.RPCClient(NEO_MAINNET_ENDPOINT)
|
mainnet_rpc_cli = rpc_client.RPCClient(NEO_MAINNET_ENDPOINT)
|
||||||
|
@ -43,7 +40,8 @@ def withdraw_mainnet_gas(wlt: str, amount: int):
|
||||||
)
|
)
|
||||||
|
|
||||||
logger.info(f"Executing command: {cmd}")
|
logger.info(f"Executing command: {cmd}")
|
||||||
out = (run_sh_with_passwd_contract('', cmd, expect_confirmation=True)).decode('utf-8')
|
raw_out = run_sh_with_passwd_contract('', cmd, expect_confirmation=True)
|
||||||
|
out = raw_out.decode('utf-8')
|
||||||
logger.info(f"Command completed with output: {out}")
|
logger.info(f"Command completed with output: {out}")
|
||||||
m = re.match(r'^Sent invocation transaction (\w{64})$', out)
|
m = re.match(r'^Sent invocation transaction (\w{64})$', out)
|
||||||
if m is None:
|
if m is None:
|
||||||
|
@ -90,20 +88,21 @@ def get_balance(wallet_path: str):
|
||||||
]
|
]
|
||||||
try:
|
try:
|
||||||
resp = morph_rpc_cli.invoke_function(
|
resp = morph_rpc_cli.invoke_function(
|
||||||
contract.get_balance_contract_hash(MORPH_ENDPOINT),
|
contract.get_balance_contract_hash(MORPH_ENDPOINT),
|
||||||
'balanceOf',
|
'balanceOf',
|
||||||
payload
|
payload
|
||||||
)
|
)
|
||||||
logger.info(f"Got response \n{resp}")
|
logger.info(f"Got response \n{resp}")
|
||||||
value = int(resp['stack'][0]['value'])
|
value = int(resp['stack'][0]['value'])
|
||||||
return value / (10 ** MORPH_TOKEN_POWER)
|
return value / ASSET_POWER_SIDECHAIN
|
||||||
except Exception as out:
|
except Exception as out:
|
||||||
logger.error(f"failed to get wallet balance: {out}")
|
logger.error(f"failed to get wallet balance: {out}")
|
||||||
raise out
|
raise out
|
||||||
|
|
||||||
|
|
||||||
@keyword('Transfer Mainnet Gas')
|
@keyword('Transfer Mainnet Gas')
|
||||||
def transfer_mainnet_gas(wallet_to: str, amount: int, wallet_password: str = EMPTY_PASSWORD):
|
def transfer_mainnet_gas(wallet_to: str, amount: int,
|
||||||
|
wallet_password: str = EMPTY_PASSWORD):
|
||||||
'''
|
'''
|
||||||
This function transfer GAS in main chain from mainnet wallet to
|
This function transfer GAS in main chain from mainnet wallet to
|
||||||
the provided wallet. If the wallet contains more than one address,
|
the provided wallet. If the wallet contains more than one address,
|
||||||
|
@ -118,14 +117,17 @@ def transfer_mainnet_gas(wallet_to: str, amount: int, wallet_password: str = EMP
|
||||||
'''
|
'''
|
||||||
address_to = _address_from_wallet(wallet_to, wallet_password)
|
address_to = _address_from_wallet(wallet_to, wallet_password)
|
||||||
|
|
||||||
txid = nep17_transfer(MAINNET_WALLET_PATH, address_to, amount, NEO_MAINNET_ENDPOINT,
|
txid = nep17_transfer(MAINNET_WALLET_PATH, address_to, amount,
|
||||||
wallet_pass=MAINNET_WALLET_PASS, addr_from=MAINNET_SINGLE_ADDR)
|
NEO_MAINNET_ENDPOINT,
|
||||||
|
wallet_pass=MAINNET_WALLET_PASS,
|
||||||
|
addr_from=MAINNET_SINGLE_ADDR)
|
||||||
if not transaction_accepted(txid):
|
if not transaction_accepted(txid):
|
||||||
raise AssertionError(f"TX {txid} hasn't been processed")
|
raise AssertionError(f"TX {txid} hasn't been processed")
|
||||||
|
|
||||||
|
|
||||||
@keyword('NeoFS Deposit')
|
@keyword('NeoFS Deposit')
|
||||||
def neofs_deposit(wallet_to: str, amount: int, wallet_password: str = EMPTY_PASSWORD):
|
def neofs_deposit(wallet_to: str, amount: int,
|
||||||
|
wallet_password: str = EMPTY_PASSWORD):
|
||||||
"""
|
"""
|
||||||
Transferring GAS from given wallet to NeoFS contract address.
|
Transferring GAS from given wallet to NeoFS contract address.
|
||||||
"""
|
"""
|
||||||
|
@ -135,11 +137,13 @@ def neofs_deposit(wallet_to: str, amount: int, wallet_password: str = EMPTY_PASS
|
||||||
|
|
||||||
address_to = _address_from_wallet(wallet_to, wallet_password)
|
address_to = _address_from_wallet(wallet_to, wallet_password)
|
||||||
|
|
||||||
txid = nep17_transfer(wallet_to, deposit_addr, amount, NEO_MAINNET_ENDPOINT,
|
txid = nep17_transfer(wallet_to, deposit_addr, amount,
|
||||||
wallet_pass=wallet_password, addr_from=address_to)
|
NEO_MAINNET_ENDPOINT, wallet_pass=wallet_password,
|
||||||
|
addr_from=address_to)
|
||||||
if not transaction_accepted(txid):
|
if not transaction_accepted(txid):
|
||||||
raise AssertionError(f"TX {txid} hasn't been processed")
|
raise AssertionError(f"TX {txid} hasn't been processed")
|
||||||
|
|
||||||
|
|
||||||
def _address_from_wallet(wlt: str, wallet_password: str):
|
def _address_from_wallet(wlt: str, wallet_password: str):
|
||||||
"""
|
"""
|
||||||
Extracting the address from the given wallet.
|
Extracting the address from the given wallet.
|
||||||
|
@ -153,3 +157,23 @@ def _address_from_wallet(wlt: str, wallet_password: str):
|
||||||
address = wallet_loaded.accounts[-1].address
|
address = wallet_loaded.accounts[-1].address
|
||||||
logger.info(f"got address: {address}")
|
logger.info(f"got address: {address}")
|
||||||
return address
|
return address
|
||||||
|
|
||||||
|
|
||||||
|
@keyword('Get Mainnet Balance')
|
||||||
|
def get_mainnet_balance(address: str):
|
||||||
|
resp = mainnet_rpc_cli.get_nep17_balances(address=address)
|
||||||
|
logger.info(f"Got getnep17balances response: {resp}")
|
||||||
|
for balance in resp['balance']:
|
||||||
|
if balance['assethash'] == GAS_HASH:
|
||||||
|
return float(balance['amount'])/ASSET_POWER_MAINCHAIN
|
||||||
|
return float(0)
|
||||||
|
|
||||||
|
|
||||||
|
@keyword('Get Sidechain Balance')
|
||||||
|
def get_sidechain_balance(address: str):
|
||||||
|
resp = morph_rpc_cli.get_nep17_balances(address=address)
|
||||||
|
logger.info(f"Got getnep17balances response: {resp}")
|
||||||
|
for balance in resp['balance']:
|
||||||
|
if balance['assethash'] == GAS_HASH:
|
||||||
|
return float(balance['amount'])/ASSET_POWER_SIDECHAIN
|
||||||
|
return float(0)
|
||||||
|
|
|
@ -6,12 +6,13 @@ import tarfile
|
||||||
import uuid
|
import uuid
|
||||||
|
|
||||||
import docker
|
import docker
|
||||||
|
import wallet
|
||||||
|
from common import ASSETS_DIR, SIMPLE_OBJ_SIZE
|
||||||
from robot.api import logger
|
from robot.api import logger
|
||||||
from robot.api.deco import keyword
|
from robot.api.deco import keyword
|
||||||
from robot.libraries.BuiltIn import BuiltIn
|
from robot.libraries.BuiltIn import BuiltIn
|
||||||
|
|
||||||
from cli_helpers import _cmd_run
|
from cli_helpers import _cmd_run
|
||||||
from common import SIMPLE_OBJ_SIZE, ASSETS_DIR
|
|
||||||
|
|
||||||
ROBOT_AUTO_KEYWORDS = False
|
ROBOT_AUTO_KEYWORDS = False
|
||||||
|
|
||||||
|
@ -19,7 +20,8 @@ ROBOT_AUTO_KEYWORDS = False
|
||||||
@keyword('Generate file')
|
@keyword('Generate file')
|
||||||
def generate_file_and_file_hash(size: int) -> str:
|
def generate_file_and_file_hash(size: int) -> str:
|
||||||
"""
|
"""
|
||||||
Function generates a big binary file with the specified size in bytes and its hash.
|
Function generates a big binary file with the specified size in bytes
|
||||||
|
and its hash.
|
||||||
Args:
|
Args:
|
||||||
size (int): the size in bytes, can be declared as 6e+6 for example
|
size (int): the size in bytes, can be declared as 6e+6 for example
|
||||||
Returns:
|
Returns:
|
||||||
|
@ -51,6 +53,18 @@ def get_file_hash(filename: str):
|
||||||
return file_hash.hexdigest()
|
return file_hash.hexdigest()
|
||||||
|
|
||||||
|
|
||||||
|
@keyword('Generate Wallet')
|
||||||
|
def generate_wallet():
|
||||||
|
return wallet.init_wallet_w_addr(ASSETS_DIR)
|
||||||
|
|
||||||
|
|
||||||
|
# TODO: should be deleted in the scope
|
||||||
|
# of https://github.com/nspcc-dev/neofs-testcases/issues/191
|
||||||
|
@keyword('Init Wallet from WIF')
|
||||||
|
def init_wallet_from_wif(dir_path: str, wif: str):
|
||||||
|
return wallet.init_wallet_from_wif(dir_path, wif)
|
||||||
|
|
||||||
|
|
||||||
@keyword('Get Docker Logs')
|
@keyword('Get Docker Logs')
|
||||||
def get_container_logs(testcase_name: str) -> None:
|
def get_container_logs(testcase_name: str) -> None:
|
||||||
client = docker.APIClient(base_url='unix://var/run/docker.sock')
|
client = docker.APIClient(base_url='unix://var/run/docker.sock')
|
||||||
|
@ -59,7 +73,8 @@ def get_container_logs(testcase_name: str) -> None:
|
||||||
tar = tarfile.open(tar_name, "w:gz")
|
tar = tarfile.open(tar_name, "w:gz")
|
||||||
for container in client.containers():
|
for container in client.containers():
|
||||||
container_name = container['Names'][0][1:]
|
container_name = container['Names'][0][1:]
|
||||||
if client.inspect_container(container_name)['Config']['Domainname'] == "neofs.devenv":
|
if (client.inspect_container(container_name)['Config']['Domainname']
|
||||||
|
== "neofs.devenv"):
|
||||||
file_name = f"{logs_dir}/docker_log_{container_name}"
|
file_name = f"{logs_dir}/docker_log_{container_name}"
|
||||||
with open(file_name, 'wb') as out:
|
with open(file_name, 'wb') as out:
|
||||||
out.write(client.logs(container_name))
|
out.write(client.logs(container_name))
|
||||||
|
@ -84,7 +99,10 @@ def make_up(services: list = [], config_dict: dict = {}):
|
||||||
cmd = f'make up/{service}'
|
cmd = f'make up/{service}'
|
||||||
_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;'
|
||||||
|
f'make update.max_object_size val={SIMPLE_OBJ_SIZE}'
|
||||||
|
)
|
||||||
_cmd_run(cmd, timeout=120)
|
_cmd_run(cmd, timeout=120)
|
||||||
|
|
||||||
os.chdir(test_path)
|
os.chdir(test_path)
|
||||||
|
|
|
@ -1,8 +1,7 @@
|
||||||
*** Settings ***
|
*** Settings ***
|
||||||
Variables common.py
|
Variables common.py
|
||||||
|
|
||||||
Library wallet_keywords.py
|
Library utility_keywords.py
|
||||||
Library rpc_call_keywords.py
|
|
||||||
Library payment_neogo.py
|
Library payment_neogo.py
|
||||||
|
|
||||||
|
|
||||||
|
@ -13,7 +12,7 @@ Prepare Wallet And Deposit
|
||||||
|
|
||||||
${WALLET}
|
${WALLET}
|
||||||
... ${ADDR}
|
... ${ADDR}
|
||||||
... ${WIF} = Init Wallet with Address ${ASSETS_DIR}
|
... ${WIF} = Generate Wallet
|
||||||
Transfer Mainnet Gas ${WALLET} ${DEPOSIT+1}
|
Transfer Mainnet Gas ${WALLET} ${DEPOSIT+1}
|
||||||
NeoFS Deposit ${WALLET} ${DEPOSIT}
|
NeoFS Deposit ${WALLET} ${DEPOSIT}
|
||||||
# Now we have TX in main chain, but deposit might not propagate into the side chain yet.
|
# Now we have TX in main chain, but deposit might not propagate into the side chain yet.
|
||||||
|
@ -22,6 +21,7 @@ Prepare Wallet And Deposit
|
||||||
|
|
||||||
[Return] ${WALLET} ${ADDR} ${WIF}
|
[Return] ${WALLET} ${ADDR} ${WIF}
|
||||||
|
|
||||||
|
# TODO: should be deleted in the scope of https://github.com/nspcc-dev/neofs-testcases/issues/191
|
||||||
Prepare Wallet with WIF And Deposit
|
Prepare Wallet with WIF And Deposit
|
||||||
[Arguments] ${WIF} ${DEPOSIT}=${30}
|
[Arguments] ${WIF} ${DEPOSIT}=${30}
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
*** Settings ***
|
*** Settings ***
|
||||||
Variables common.py
|
Variables common.py
|
||||||
|
|
||||||
Library contract_keywords.py
|
Library epoch.py
|
||||||
Library neofs.py
|
Library neofs.py
|
||||||
Library neofs_verbs.py
|
Library neofs_verbs.py
|
||||||
Library utility_keywords.py
|
Library utility_keywords.py
|
||||||
|
|
|
@ -50,6 +50,7 @@ Check eACL Deny All Other and Allow All Pubkey
|
||||||
${D_OID_USER} = Put object ${USER_WALLET} ${FILE_S} ${CID} user_headers=${USER_HEADER_DEL}
|
${D_OID_USER} = Put object ${USER_WALLET} ${FILE_S} ${CID} user_headers=${USER_HEADER_DEL}
|
||||||
@{S_OBJ_H} = Create List ${S_OID_USER}
|
@{S_OBJ_H} = Create List ${S_OID_USER}
|
||||||
|
|
||||||
|
# TODO: should be deleted in the scope of https://github.com/nspcc-dev/neofs-testcases/issues/191
|
||||||
${WALLET_EACL} ${_} = Prepare Wallet with WIF And Deposit ${EACL_KEY}
|
${WALLET_EACL} ${_} = Prepare Wallet with WIF And Deposit ${EACL_KEY}
|
||||||
|
|
||||||
Put object ${WALLET_EACL} ${FILE_S} ${CID} user_headers=${ANOTHER_HEADER}
|
Put object ${WALLET_EACL} ${FILE_S} ${CID} user_headers=${ANOTHER_HEADER}
|
||||||
|
|
|
@ -3,7 +3,7 @@ Variables common.py
|
||||||
|
|
||||||
Library acl.py
|
Library acl.py
|
||||||
Library container.py
|
Library container.py
|
||||||
Library contract_keywords.py
|
Library epoch.py
|
||||||
Library neofs.py
|
Library neofs.py
|
||||||
Library neofs_verbs.py
|
Library neofs_verbs.py
|
||||||
Library storage_policy.py
|
Library storage_policy.py
|
||||||
|
|
|
@ -3,7 +3,6 @@ Variables common.py
|
||||||
|
|
||||||
Library acl.py
|
Library acl.py
|
||||||
Library container.py
|
Library container.py
|
||||||
Library contract_keywords.py
|
|
||||||
Library neofs.py
|
Library neofs.py
|
||||||
Library neofs_verbs.py
|
Library neofs_verbs.py
|
||||||
Library Collections
|
Library Collections
|
||||||
|
@ -24,7 +23,7 @@ ${CUSTOM_FILTER} = $Object:key1
|
||||||
Extended ACL Operations
|
Extended ACL Operations
|
||||||
[Documentation] Testcase to validate NeoFS operations with extended ACL.
|
[Documentation] Testcase to validate NeoFS operations with extended ACL.
|
||||||
[Tags] ACL eACL
|
[Tags] ACL eACL
|
||||||
[Timeout] 20 min
|
[Timeout] 2 min
|
||||||
|
|
||||||
[Setup] Setup
|
[Setup] Setup
|
||||||
|
|
||||||
|
|
|
@ -4,8 +4,6 @@ Variables common.py
|
||||||
Library Collections
|
Library Collections
|
||||||
Library Process
|
Library Process
|
||||||
Library String
|
Library String
|
||||||
Library contract_keywords.py
|
|
||||||
Library cli_keywords.py
|
|
||||||
Library utility_keywords.py
|
Library utility_keywords.py
|
||||||
|
|
||||||
Resource setup_teardown.robot
|
Resource setup_teardown.robot
|
||||||
|
@ -17,7 +15,6 @@ ${DEPOSIT_AMOUNT} = ${10}
|
||||||
*** Test cases ***
|
*** Test cases ***
|
||||||
CLI Accounting Balance Test
|
CLI Accounting Balance Test
|
||||||
[Documentation] neofs-cli accounting balance test
|
[Documentation] neofs-cli accounting balance test
|
||||||
[Tags] NeoFSCLI Accounting
|
|
||||||
[Timeout] 10 min
|
[Timeout] 10 min
|
||||||
|
|
||||||
[Setup] Setup
|
[Setup] Setup
|
||||||
|
@ -35,10 +32,10 @@ CLI Accounting Balance Test
|
||||||
Should Be Equal As Numbers ${OUTPUT.stdout} ${DEPOSIT_AMOUNT}
|
Should Be Equal As Numbers ${OUTPUT.stdout} ${DEPOSIT_AMOUNT}
|
||||||
|
|
||||||
# Getting balance with wallet and wrong address
|
# Getting balance with wallet and wrong address
|
||||||
${_} ${ANOTHER_ADDR} ${_} = Init Wallet With Address ${ASSETS_DIR}
|
${_} ${ANOTHER_ADDR} ${_} = Generate Wallet
|
||||||
${OUTPUT} = Run Process ${NEOFS_CLI_EXEC} accounting balance -r ${NEOFS_ENDPOINT} --address ${ANOTHER_ADDR} --wallet ${WALLET} --config ${WALLET_CONFIG}
|
${OUTPUT} = Run Process ${NEOFS_CLI_EXEC} accounting balance -r ${NEOFS_ENDPOINT} --address ${ANOTHER_ADDR} --wallet ${WALLET} --config ${WALLET_CONFIG}
|
||||||
... shell=True
|
... shell=True
|
||||||
Should Be Equal As Strings ${OUTPUT.stderr} --address option must be specified and valid
|
Should Contain ${OUTPUT.stderr} --address option must be specified and valid
|
||||||
Should Be Equal As Numbers ${OUTPUT.rc} 1
|
Should Be Equal As Numbers ${OUTPUT.rc} 1
|
||||||
|
|
||||||
# Getting balance with control API
|
# Getting balance with control API
|
||||||
|
|
|
@ -4,7 +4,7 @@ Variables common.py
|
||||||
Library Collections
|
Library Collections
|
||||||
Library Process
|
Library Process
|
||||||
Library String
|
Library String
|
||||||
Library contract_keywords.py
|
Library epoch.py
|
||||||
|
|
||||||
Resource payment_operations.robot
|
Resource payment_operations.robot
|
||||||
Resource setup_teardown.robot
|
Resource setup_teardown.robot
|
||||||
|
|
|
@ -2,40 +2,49 @@
|
||||||
Variables common.py
|
Variables common.py
|
||||||
|
|
||||||
Library container.py
|
Library container.py
|
||||||
Library wallet_keywords.py
|
|
||||||
Library contract_keywords.py
|
|
||||||
Library Collections
|
Library Collections
|
||||||
|
|
||||||
Resource setup_teardown.robot
|
Resource setup_teardown.robot
|
||||||
Resource payment_operations.robot
|
Resource payment_operations.robot
|
||||||
|
|
||||||
|
*** Variables ***
|
||||||
|
# The timeout during which the container should be deleted. The deletion after
|
||||||
|
# this time isn't guaranteed, but is expected as we run the test in an
|
||||||
|
# isolated environment.
|
||||||
|
${DELETE_TIMEOUT} = 30s
|
||||||
|
|
||||||
|
|
||||||
*** Test Cases ***
|
*** Test Cases ***
|
||||||
Delete Containers
|
Delete Containers
|
||||||
[Documentation] Testcase to check if containers can be deleted by its owner only.
|
[Documentation] Testcase to check if containers can be deleted by its owner only.
|
||||||
[Tags] Container
|
[Tags] Container
|
||||||
[Timeout] 2 min
|
[Timeout] 3 min
|
||||||
|
|
||||||
[Setup] Setup
|
[Setup] Setup
|
||||||
|
|
||||||
${_} ${_} ${USER_KEY} = Prepare Wallet And Deposit
|
${WALLET}
|
||||||
${_} ${_} ${OTHER_KEY} = Prepare Wallet And Deposit
|
... ${_}
|
||||||
|
... ${_} = Prepare Wallet And Deposit
|
||||||
|
${ANOTHER_WALLET}
|
||||||
|
... ${_}
|
||||||
|
... ${_} = Prepare Wallet And Deposit
|
||||||
|
|
||||||
${CID} = Create container ${USER_KEY}
|
${CID} = Create container ${WALLET}
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
# No explicit error is expected upon container deletion attempt
|
# No explicit error is expected upon container deletion attempt
|
||||||
################################################################
|
################################################################
|
||||||
Delete Container ${OTHER_KEY} ${CID}
|
Delete Container ${ANOTHER_WALLET} ${CID}
|
||||||
Tick Epoch
|
Sleep ${DELETE_TIMEOUT}
|
||||||
@{CONTAINERS} = List Containers ${USER_KEY}
|
@{CONTAINERS} = List Containers ${WALLET}
|
||||||
List Should Contain Value
|
List Should Contain Value
|
||||||
... ${CONTAINERS}
|
... ${CONTAINERS}
|
||||||
... ${CID}
|
... ${CID}
|
||||||
... msg="A key which doesn't owe the container is able to delete ${CID}"
|
... msg="A key which doesn't owe the container is able to delete ${CID}"
|
||||||
|
|
||||||
Delete Container ${USER_KEY} ${CID}
|
Delete Container ${WALLET} ${CID}
|
||||||
Tick Epoch
|
Sleep ${DELETE_TIMEOUT}
|
||||||
@{CONTAINERS} = List Containers ${USER_KEY}
|
@{CONTAINERS} = List Containers ${WALLET}
|
||||||
List Should Not Contain Value
|
List Should Not Contain Value
|
||||||
... ${CONTAINERS}
|
... ${CONTAINERS}
|
||||||
... ${CID}
|
... ${CID}
|
||||||
|
@ -44,6 +53,6 @@ Delete Containers
|
||||||
###################################################################################
|
###################################################################################
|
||||||
# If one tries to delete an already deleted container, they should expect success.
|
# If one tries to delete an already deleted container, they should expect success.
|
||||||
###################################################################################
|
###################################################################################
|
||||||
Delete Container ${USER_KEY} ${CID}
|
Delete Container ${WALLET} ${CID}
|
||||||
|
|
||||||
[Teardown] Teardown container_delete
|
[Teardown] Teardown container_delete
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
Variables common.py
|
Variables common.py
|
||||||
|
|
||||||
Library Process
|
Library Process
|
||||||
Library contract_keywords.py
|
Library epoch.py
|
||||||
Library neofs.py
|
Library neofs.py
|
||||||
Library String
|
Library String
|
||||||
Library acl.py
|
Library acl.py
|
||||||
|
@ -26,7 +26,7 @@ Control Operations with storage nodes
|
||||||
Should Be Equal As Integers ${HEALTHCHECK.rc} 0
|
Should Be Equal As Integers ${HEALTHCHECK.rc} 0
|
||||||
|
|
||||||
Run Process ${NEOFS_CLI_EXEC} control set-status --endpoint ${NODE} --wallet ${STORAGE_WALLET} --config ${WALLET_CONFIG} --status 'offline' shell=True
|
Run Process ${NEOFS_CLI_EXEC} control set-status --endpoint ${NODE} --wallet ${STORAGE_WALLET} --config ${WALLET_CONFIG} --status 'offline' shell=True
|
||||||
|
|
||||||
Sleep ${MAINNET_BLOCK_TIME}
|
Sleep ${MAINNET_BLOCK_TIME}
|
||||||
Tick Epoch
|
Tick Epoch
|
||||||
|
|
||||||
|
@ -36,19 +36,19 @@ Control Operations with storage nodes
|
||||||
|
|
||||||
${HEALTHCHECK_OFFLINE} = Run Process ${NEOFS_CLI_EXEC} control healthcheck --endpoint ${NODE} --wallet ${STORAGE_WALLET} --config ${WALLET_CONFIG} shell=True
|
${HEALTHCHECK_OFFLINE} = Run Process ${NEOFS_CLI_EXEC} control healthcheck --endpoint ${NODE} --wallet ${STORAGE_WALLET} --config ${WALLET_CONFIG} shell=True
|
||||||
Should Be Equal As Integers ${HEALTHCHECK_OFFLINE.rc} 0
|
Should Be Equal As Integers ${HEALTHCHECK_OFFLINE.rc} 0
|
||||||
Should Not Be Equal ${HEALTHCHECK.stdout} ${HEALTHCHECK_OFFLINE.stdout}
|
Should Not Be Equal ${HEALTHCHECK.stdout} ${HEALTHCHECK_OFFLINE.stdout}
|
||||||
|
|
||||||
Run Process ${NEOFS_CLI_EXEC} control set-status --endpoint ${NODE} --wallet ${STORAGE_WALLET} --config ${WALLET_CONFIG} --status 'online' shell=True
|
Run Process ${NEOFS_CLI_EXEC} control set-status --endpoint ${NODE} --wallet ${STORAGE_WALLET} --config ${WALLET_CONFIG} --status 'online' shell=True
|
||||||
|
|
||||||
Sleep ${MAINNET_BLOCK_TIME}
|
Sleep ${MAINNET_BLOCK_TIME}
|
||||||
Tick Epoch
|
Tick Epoch
|
||||||
|
|
||||||
${SNAPSHOT_ONLINE} = Run Process ${NEOFS_CLI_EXEC} control netmap-snapshot --endpoint ${NODE} --wallet ${STORAGE_WALLET} --config ${WALLET_CONFIG} shell=True
|
${SNAPSHOT_ONLINE} = Run Process ${NEOFS_CLI_EXEC} control netmap-snapshot --endpoint ${NODE} --wallet ${STORAGE_WALLET} --config ${WALLET_CONFIG} shell=True
|
||||||
${NODE_NUM_ONLINE} = Get Regexp Matches ${SNAPSHOT_ONLINE.stdout} ${NODE_NUM}
|
${NODE_NUM_ONLINE} = Get Regexp Matches ${SNAPSHOT_ONLINE.stdout} ${NODE_NUM}
|
||||||
Should Be Equal ${NODE_NUM_ONLINE}[0] ${NODE_NUM}
|
Should Be Equal ${NODE_NUM_ONLINE}[0] ${NODE_NUM}
|
||||||
|
|
||||||
${HEALTHCHECK_ONLINE} = Run Process ${NEOFS_CLI_EXEC} control healthcheck --endpoint ${NODE} --wallet ${STORAGE_WALLET} --config ${WALLET_CONFIG} shell=True
|
${HEALTHCHECK_ONLINE} = Run Process ${NEOFS_CLI_EXEC} control healthcheck --endpoint ${NODE} --wallet ${STORAGE_WALLET} --config ${WALLET_CONFIG} shell=True
|
||||||
Should Be Equal As Integers ${HEALTHCHECK_ONLINE.rc} 0
|
Should Be Equal As Integers ${HEALTHCHECK_ONLINE.rc} 0
|
||||||
Should Be Equal ${HEALTHCHECK.stdout} ${HEALTHCHECK_ONLINE.stdout}
|
Should Be Equal ${HEALTHCHECK.stdout} ${HEALTHCHECK_ONLINE.stdout}
|
||||||
|
|
||||||
[Teardown] Teardown netmap_control
|
[Teardown] Teardown netmap_control
|
||||||
|
|
|
@ -3,7 +3,7 @@ Variables common.py
|
||||||
Variables wellknown_acl.py
|
Variables wellknown_acl.py
|
||||||
|
|
||||||
Library container.py
|
Library container.py
|
||||||
Library contract_keywords.py
|
Library epoch.py
|
||||||
Library neofs_verbs.py
|
Library neofs_verbs.py
|
||||||
Library nodes_management.py
|
Library nodes_management.py
|
||||||
Library storage_policy.py
|
Library storage_policy.py
|
||||||
|
|
|
@ -4,7 +4,6 @@ Variables common.py
|
||||||
|
|
||||||
Library container.py
|
Library container.py
|
||||||
Library complex_object_actions.py
|
Library complex_object_actions.py
|
||||||
Library contract_keywords.py
|
|
||||||
Library neofs_verbs.py
|
Library neofs_verbs.py
|
||||||
Library neofs.py
|
Library neofs.py
|
||||||
Library storage_policy.py
|
Library storage_policy.py
|
||||||
|
|
|
@ -3,7 +3,7 @@ Variables common.py
|
||||||
|
|
||||||
Library neofs_verbs.py
|
Library neofs_verbs.py
|
||||||
Library container.py
|
Library container.py
|
||||||
Library contract_keywords.py
|
Library epoch.py
|
||||||
Library utility_keywords.py
|
Library utility_keywords.py
|
||||||
|
|
||||||
Resource setup_teardown.robot
|
Resource setup_teardown.robot
|
||||||
|
|
|
@ -2,8 +2,7 @@
|
||||||
Variables common.py
|
Variables common.py
|
||||||
|
|
||||||
Library payment_neogo.py
|
Library payment_neogo.py
|
||||||
Library wallet_keywords.py
|
Library utility_keywords.py
|
||||||
Library rpc_call_keywords.py
|
|
||||||
Library Process
|
Library Process
|
||||||
|
|
||||||
Resource setup_teardown.robot
|
Resource setup_teardown.robot
|
||||||
|
@ -23,7 +22,7 @@ IR GAS emission threshold value
|
||||||
|
|
||||||
[Setup] Setup
|
[Setup] Setup
|
||||||
|
|
||||||
${WALLET} ${ADDR} ${_} = Init Wallet with Address ${ASSETS_DIR}
|
${WALLET} ${ADDR} ${_} = Generate Wallet
|
||||||
|
|
||||||
${SC_BALANCE} = Get Sidechain Balance ${ADDR}
|
${SC_BALANCE} = Get Sidechain Balance ${ADDR}
|
||||||
Transfer Mainnet Gas ${WALLET} ${DEPOSIT}
|
Transfer Mainnet Gas ${WALLET} ${DEPOSIT}
|
||||||
|
|
|
@ -3,8 +3,7 @@ Variables common.py
|
||||||
|
|
||||||
Library neofs.py
|
Library neofs.py
|
||||||
Library payment_neogo.py
|
Library payment_neogo.py
|
||||||
Library wallet_keywords.py
|
Library utility_keywords.py
|
||||||
Library rpc_call_keywords.py
|
|
||||||
|
|
||||||
Resource setup_teardown.robot
|
Resource setup_teardown.robot
|
||||||
|
|
||||||
|
@ -20,7 +19,7 @@ NeoFS Deposit and Withdraw
|
||||||
|
|
||||||
[Setup] Setup
|
[Setup] Setup
|
||||||
|
|
||||||
${WALLET} ${ADDR} ${_} = Init Wallet with Address ${ASSETS_DIR}
|
${WALLET} ${ADDR} ${_} = Generate Wallet
|
||||||
|
|
||||||
##########################################################
|
##########################################################
|
||||||
# Transferring GAS from initial wallet to our test wallet
|
# Transferring GAS from initial wallet to our test wallet
|
||||||
|
|
|
@ -7,7 +7,7 @@ Library OperatingSystem
|
||||||
Library neofs.py
|
Library neofs.py
|
||||||
Library container.py
|
Library container.py
|
||||||
Library s3_gate.py
|
Library s3_gate.py
|
||||||
Library contract_keywords.py
|
Library epoch.py
|
||||||
Library utility_keywords.py
|
Library utility_keywords.py
|
||||||
|
|
||||||
Resource setup_teardown.robot
|
Resource setup_teardown.robot
|
||||||
|
|
|
@ -7,7 +7,6 @@ Library OperatingSystem
|
||||||
Library container.py
|
Library container.py
|
||||||
Library neofs.py
|
Library neofs.py
|
||||||
Library s3_gate.py
|
Library s3_gate.py
|
||||||
Library contract_keywords.py
|
|
||||||
Library utility_keywords.py
|
Library utility_keywords.py
|
||||||
|
|
||||||
Resource payment_operations.robot
|
Resource payment_operations.robot
|
||||||
|
|
Loading…
Reference in a new issue