forked from TrueCloudLab/frostfs-testcases
(#37) Test networkinfo_rpc_method.robot
Signed-off-by: EliChin <elizaveta@nspcc.ru>
This commit is contained in:
parent
0736cae28c
commit
1c2fd5cead
5 changed files with 99 additions and 5 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -2,6 +2,7 @@
|
||||||
**/log.html
|
**/log.html
|
||||||
**/output.xml
|
**/output.xml
|
||||||
**/report.html
|
**/report.html
|
||||||
|
**/dockerlogs*.tar.gz
|
||||||
|
|
||||||
# ignore pycache under any path
|
# ignore pycache under any path
|
||||||
**/__pycache__
|
**/__pycache__
|
||||||
|
|
|
@ -18,7 +18,6 @@ import shutil
|
||||||
|
|
||||||
import time
|
import time
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
|
|
||||||
from common import *
|
from common import *
|
||||||
|
|
||||||
ROBOT_AUTO_KEYWORDS = False
|
ROBOT_AUTO_KEYWORDS = False
|
||||||
|
|
|
@ -7,12 +7,11 @@ import uuid
|
||||||
|
|
||||||
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 common import *
|
from common import *
|
||||||
|
|
||||||
ROBOT_AUTO_KEYWORDS = False
|
ROBOT_AUTO_KEYWORDS = False
|
||||||
# TODO: get this variable from env
|
|
||||||
LOGS_DIR = 'artifacts/'
|
|
||||||
|
|
||||||
@keyword('Generate file of bytes')
|
@keyword('Generate file of bytes')
|
||||||
def generate_file_of_bytes(size: str) -> str:
|
def generate_file_of_bytes(size: str) -> str:
|
||||||
|
@ -30,12 +29,13 @@ def generate_file_of_bytes(size: str) -> str:
|
||||||
@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')
|
||||||
tar_name = f"{LOGS_DIR}/dockerlogs({testcase_name}).tar.gz"
|
logs_dir = BuiltIn().get_variable_value("${OUTPUT_DIR}")
|
||||||
|
tar_name = f"{logs_dir}/dockerlogs({testcase_name}).tar.gz"
|
||||||
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))
|
||||||
logger.info(f"Collected logs from container {container_name}")
|
logger.info(f"Collected logs from container {container_name}")
|
||||||
|
|
|
@ -0,0 +1,92 @@
|
||||||
|
*** Settings ***
|
||||||
|
Variables ../../../variables/common.py
|
||||||
|
|
||||||
|
Library Collections
|
||||||
|
Library Process
|
||||||
|
Library String
|
||||||
|
Library ${KEYWORDS}/contract_keywords.py
|
||||||
|
|
||||||
|
Resource ../${RESOURCES}/setup_teardown.robot
|
||||||
|
|
||||||
|
*** Variables ***
|
||||||
|
${SN_01_ADDR} = s01.neofs.devenv:8080
|
||||||
|
${SN_02_ADDR} = s02.neofs.devenv:8080
|
||||||
|
|
||||||
|
*** Test cases ***
|
||||||
|
NetworkInfo RPC Method
|
||||||
|
[Documentation] Testcase to check NetworkInfo RPC method.
|
||||||
|
[Tags] RPC NeoFS NeoCLI NetworkInfo
|
||||||
|
[Timeout] 10 min
|
||||||
|
|
||||||
|
[Setup] Setup
|
||||||
|
|
||||||
|
######################################################################
|
||||||
|
# Checking if the command returns equal results for two storage nodes
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
${RESULT1_S01} Run Process neofs-cli netmap netinfo -r ${SN_01_ADDR} -k ${MAINNET_WALLET_WIF} shell=True
|
||||||
|
Should Be Equal As Integers ${RESULT1_S01.rc} 0
|
||||||
|
${RESULT1_S02} Run Process neofs-cli netmap netinfo -r ${SN_02_ADDR} -k ${MAINNET_WALLET_WIF} shell=True
|
||||||
|
Should Be Equal As Integers ${RESULT1_S02.rc} 0
|
||||||
|
|
||||||
|
#############################################
|
||||||
|
# Checking if morph magic number is relevant
|
||||||
|
#############################################
|
||||||
|
|
||||||
|
${NETWORK_MAGIC_S01} = Parse Magic ${RESULT1_S01.stdout}
|
||||||
|
Should Be Equal ${NETWORK_MAGIC_S01} ${MORPH_MAGIC}
|
||||||
|
|
||||||
|
${NETWORK_MAGIC_S02} = Parse Magic ${RESULT1_S02.stdout}
|
||||||
|
Should Be Equal ${NETWORK_MAGIC_S02} ${MORPH_MAGIC}
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# Checking if epoch numbers requested from two storage nodes are equal
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
${EPOCH1_S01} = Parse Epoch ${RESULT1_S01.stdout}
|
||||||
|
${EPOCH1_S02} = Parse Epoch ${RESULT1_S02.stdout}
|
||||||
|
Should Be Equal As Integers ${EPOCH1_S01} ${EPOCH1_S02}
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# Ticking epoch and getting new netinfo
|
||||||
|
########################################
|
||||||
|
|
||||||
|
Tick Epoch
|
||||||
|
|
||||||
|
${RESULT2_S01} Run Process neofs-cli netmap netinfo -r ${SN_01_ADDR} -k ${MAINNET_WALLET_WIF} shell=True
|
||||||
|
Should Be Equal As Integers ${RESULT2_S01.rc} 0
|
||||||
|
${RESULT2_S02} Run Process neofs-cli netmap netinfo -r ${SN_02_ADDR} -k ${MAINNET_WALLET_WIF} shell=True
|
||||||
|
Should Be Equal As Integers ${RESULT2_S02.rc} 0
|
||||||
|
|
||||||
|
Should Be Equal As Strings ${RESULT2_S01.stdout} ${RESULT2_S02.stdout}
|
||||||
|
|
||||||
|
${EPOCH2_S01} = Parse Epoch ${RESULT2_S01.stdout}
|
||||||
|
|
||||||
|
#################################################################
|
||||||
|
# Checking if the second epoch value is more than the first by 1
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
${NEW_EPOCH} = Evaluate ${EPOCH1_S01}+${1}
|
||||||
|
Should Be Equal ${EPOCH2_S01} ${NEW_EPOCH}
|
||||||
|
|
||||||
|
|
||||||
|
[Teardown] Teardown network_rpc_method
|
||||||
|
|
||||||
|
*** Keywords ***
|
||||||
|
|
||||||
|
Parse Magic
|
||||||
|
[Arguments] ${RESULT_STDOUT}
|
||||||
|
@{MAGIC} = Split String ${RESULT_STDOUT} ${\n}
|
||||||
|
${NETWORK_MAGIC} = Get From List ${MAGIC} ${1}
|
||||||
|
@{MAGIC_INFO} = Split String ${NETWORK_MAGIC} ${SPACE}
|
||||||
|
${MAGIC_VALUE} = Get From List ${MAGIC_INFO} ${4}
|
||||||
|
[Return] ${MAGIC_VALUE}
|
||||||
|
|
||||||
|
Parse Epoch
|
||||||
|
[Arguments] ${RESULT_STDOUT}
|
||||||
|
@{EPOCH} = Split String ${RESULT_STDOUT} ${\n}
|
||||||
|
${NETWORK_EPOCH} = Get From List ${EPOCH} ${0}
|
||||||
|
@{EPOCH_INFO} = Split String ${NETWORK_EPOCH} ${SPACE}
|
||||||
|
${EPOCH_VALUE} = Get From List ${EPOCH_INFO} ${1}
|
||||||
|
${EPOCH_VALUE_INT} = Convert To Integer ${EPOCH_VALUE}
|
||||||
|
[Return] ${EPOCH_VALUE_INT}
|
|
@ -44,3 +44,5 @@ NEOFS_CONTRACT = (os.getenv("NEOFS_CONTRACT") if os.getenv("NEOFS_CONTRACT")
|
||||||
COMMON_PLACEMENT_RULE = "REP 2 IN X CBF 1 SELECT 2 FROM * AS X"
|
COMMON_PLACEMENT_RULE = "REP 2 IN X CBF 1 SELECT 2 FROM * AS X"
|
||||||
|
|
||||||
ASSETS_DIR = os.getenv("ASSETS_DIR", "TemporaryDir/")
|
ASSETS_DIR = os.getenv("ASSETS_DIR", "TemporaryDir/")
|
||||||
|
|
||||||
|
MORPH_MAGIC = os.environ["MORPH_MAGIC"]
|
||||||
|
|
Loading…
Reference in a new issue