forked from TrueCloudLab/frostfs-testcases
f97bfed183
Signed-off-by: a.y.volkov <a.y.volkov@yadro.com>
56 lines
1.7 KiB
Python
56 lines
1.7 KiB
Python
#!/usr/bin/python3.9
|
|
import sys
|
|
|
|
import allure
|
|
from robot.api import logger
|
|
from robot.api.deco import keyword
|
|
|
|
import contract
|
|
import wrappers
|
|
from common import (IR_WALLET_PATH, IR_WALLET_PASS, MORPH_ENDPOINT, NEOFS_ADM_EXEC,
|
|
NEOFS_ADM_CONFIG_PATH)
|
|
|
|
ROBOT_AUTO_KEYWORDS = False
|
|
|
|
|
|
@keyword('Get Epoch')
|
|
def get_epoch():
|
|
epoch = int(contract.testinvoke_contract(
|
|
contract.get_netmap_contract_hash(MORPH_ENDPOINT),
|
|
"epoch",
|
|
MORPH_ENDPOINT)
|
|
)
|
|
logger.info(f"Got epoch {epoch}")
|
|
return epoch
|
|
|
|
|
|
@keyword('Tick Epoch')
|
|
def tick_epoch():
|
|
if NEOFS_ADM_EXEC and NEOFS_ADM_CONFIG_PATH:
|
|
# If neofs-adm is available, then we tick epoch with it (to be consistent with UAT tests)
|
|
cmd = f"{NEOFS_ADM_EXEC} morph force-new-epoch -c {NEOFS_ADM_CONFIG_PATH}"
|
|
logger.info(f"Executing shell command: {cmd}")
|
|
out = ''
|
|
err = ''
|
|
try:
|
|
out = wrappers.run_sh(cmd)
|
|
logger.info(f"Command completed with output: {out}")
|
|
except Exception as exc:
|
|
logger.error(exc)
|
|
err = str(exc)
|
|
raise RuntimeError("Failed to tick epoch") from exc
|
|
finally:
|
|
if 'allure' in sys.modules:
|
|
allure.attach((
|
|
f'COMMAND: {cmd}\n'
|
|
f'OUTPUT:\n {out}\n'
|
|
f'ERROR: {err}\n'
|
|
), 'Tick Epoch', allure.attachment_type.TEXT)
|
|
return
|
|
|
|
# Otherwise we tick epoch using transaction
|
|
cur_epoch = get_epoch()
|
|
return contract.invoke_contract_multisig(
|
|
contract.get_netmap_contract_hash(MORPH_ENDPOINT),
|
|
f"newEpoch int:{cur_epoch + 1}",
|
|
IR_WALLET_PATH, IR_WALLET_PASS, MORPH_ENDPOINT)
|