Skip to content

Commit 7b15a0f

Browse files
authored
tests: add ec tests (#1175)
2 parents dae474d + b7d165a commit 7b15a0f

File tree

5 files changed

+731
-7
lines changed

5 files changed

+731
-7
lines changed

neofs-testlib/neofs_testlib/cli/neofs_cli/object.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,3 +415,27 @@ def searchv2(
415415
"object searchv2",
416416
**{param: value for param, value in locals().items() if param not in ["self"]},
417417
)
418+
419+
def nodes(
420+
self,
421+
rpc_endpoint: str,
422+
cid: str,
423+
oid: Optional[str] = None,
424+
shell_timeout: Optional[str] = None,
425+
) -> CommandResult:
426+
"""
427+
Search object.
428+
429+
Args:
430+
rpc_endpoint: Remote node address (as 'multiaddr' or '<host>:<port>').
431+
cid: Container ID.
432+
oid: Object ID.
433+
shell_timeout: Shell timeout for the command.
434+
435+
Returns:
436+
Command's result.
437+
"""
438+
return self._execute(
439+
"object nodes",
440+
**{param: value for param, value in locals().items() if param not in ["self"]},
441+
)

neofs-testlib/neofs_testlib/env/env.py

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import allure
2929
import jinja2
3030
import psutil
31+
import pytest
3132
import requests
3233
import yaml
3334
from helpers.common import (
@@ -43,6 +44,7 @@
4344
get_assets_dir_path,
4445
)
4546
from helpers.neofs_verbs import get_netmap_netinfo
47+
from helpers.utility import parse_version
4648
from tenacity import retry, stop_after_attempt, wait_fixed
4749

4850
from neofs_testlib.cli import NeofsAdm, NeofsCli, NeofsLens, NeoGo
@@ -171,13 +173,16 @@ def generate_neo_go_config(self, wallet: NodeWallet):
171173
return neo_go_config_path
172174

173175
@allure.step("Deploy inner ring nodes")
174-
def deploy_inner_ring_nodes(self, count=1, with_main_chain=False, chain_meta_data=False, sn_validator_url=None):
176+
def deploy_inner_ring_nodes(
177+
self, count=1, with_main_chain=False, chain_meta_data=False, sn_validator_url=None, allow_ec=False
178+
):
175179
for _ in range(count):
176180
new_inner_ring_node = InnerRing(
177181
self,
178182
len(self.inner_ring_nodes) + 1,
179183
chain_meta_data=chain_meta_data,
180184
sn_validator_url=sn_validator_url,
185+
allow_ec=allow_ec,
181186
)
182187
new_inner_ring_node.generate_network_config()
183188
self.inner_ring_nodes.append(new_inner_ring_node)
@@ -664,6 +669,7 @@ def deploy(
664669
request=None,
665670
chain_meta_data=False,
666671
sn_validator_url=None,
672+
allow_ec=False,
667673
fschain_endpoints: Optional[list[str]] = None,
668674
shards_count=2,
669675
gc_remover_batch_size=200,
@@ -675,11 +681,17 @@ def deploy(
675681
neofs_env = NeoFSEnv(neofs_env_config=neofs_env_config)
676682
neofs_env.download_binaries()
677683
try:
684+
if allow_ec and parse_version(neofs_env.get_binary_version(neofs_env.neofs_node_path)) <= parse_version(
685+
"0.49.1"
686+
):
687+
pytest.skip("EC is not supported in versions <= 0.49.1")
688+
678689
neofs_env.deploy_inner_ring_nodes(
679690
count=inner_ring_nodes_count,
680691
with_main_chain=with_main_chain,
681692
chain_meta_data=chain_meta_data,
682693
sn_validator_url=sn_validator_url,
694+
allow_ec=allow_ec,
683695
)
684696

685697
if storage_nodes_count:
@@ -1052,11 +1064,7 @@ def _wait_until_ready(self):
10521064

10531065
class InnerRing(ResurrectableProcess):
10541066
def __init__(
1055-
self,
1056-
neofs_env: NeoFSEnv,
1057-
ir_number: int,
1058-
chain_meta_data=False,
1059-
sn_validator_url=None,
1067+
self, neofs_env: NeoFSEnv, ir_number: int, chain_meta_data=False, sn_validator_url=None, allow_ec=False
10601068
):
10611069
self.neofs_env = neofs_env
10621070
self.ir_number = ir_number
@@ -1083,6 +1091,7 @@ def __init__(
10831091
self.ir_state_file = self.neofs_env._generate_temp_file(self.inner_ring_dir, prefix="ir_state_file")
10841092
self.chain_meta_data = chain_meta_data
10851093
self.sn_validator_url = sn_validator_url
1094+
self.allow_ec = allow_ec
10861095
self.stdout = "Not initialized"
10871096
self.stderr = "Not initialized"
10881097
self.process = None
@@ -1178,6 +1187,7 @@ def start(
11781187
prometheus_address=self.prometheus_address,
11791188
chain_meta_data=self.chain_meta_data,
11801189
sn_validator_url=self.sn_validator_url,
1190+
allow_ec=self.allow_ec,
11811191
)
11821192
logger.info(f"Launching Inner Ring Node:{self}")
11831193
self._launch_process()
@@ -1449,6 +1459,7 @@ def _wait_until_not_ready(self):
14491459
result = neofs_cli.control.healthcheck(endpoint=self.control_endpoint)
14501460
except Exception as e:
14511461
with allure.step(f"Exception caught: {e}, node is not ready"):
1462+
time.sleep(2)
14521463
return
14531464
assert "Health status: READY" not in result.stdout, "Health is ready"
14541465
assert "Network status: ONLINE" not in result.stdout, "Network is online"

neofs-testlib/neofs_testlib/env/templates/ir.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,9 @@ prometheus:
125125

126126
experimental:
127127
chain_meta_data: {{ chain_meta_data }}
128+
{% if allow_ec %}
129+
allow_ec: {{ allow_ec }}
130+
{% endif %}
128131

129132
{% if sn_validator_url %}
130133
sn_validator:

pytest_tests/tests/conftest.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ def get_or_create_neofs_env(
3838
with_rest_gw=True,
3939
chain_meta_data=False,
4040
sn_validator_url=None,
41+
allow_ec=False,
4142
shards_count=2,
4243
gc_remover_batch_size=200,
4344
gc_sleep_interval=STORAGE_GC_TIME,
@@ -56,6 +57,7 @@ def get_or_create_neofs_env(
5657
request=request,
5758
chain_meta_data=chain_meta_data,
5859
sn_validator_url=sn_validator_url,
60+
allow_ec=allow_ec,
5961
shards_count=shards_count,
6062
gc_remover_batch_size=gc_remover_batch_size,
6163
gc_sleep_interval=gc_sleep_interval,
@@ -70,7 +72,11 @@ def neofs_env(temp_directory, artifacts_directory, request):
7072
else:
7173
params = {}
7274
neofs_env = get_or_create_neofs_env(
73-
request, with_s3_gw=True, with_rest_gw=True, chain_meta_data=params.get("chain_meta_data", False)
75+
request,
76+
with_s3_gw=True,
77+
with_rest_gw=True,
78+
chain_meta_data=params.get("chain_meta_data", False),
79+
allow_ec=params.get("allow_ec", False),
7480
)
7581
yield neofs_env
7682
neofs_env.finalize(request)

0 commit comments

Comments
 (0)