forked from TrueCloudLab/frostfs-testcases
Update check filters results with 100% node the object appearance
This commit is contained in:
parent
c5f6d6cf2b
commit
009f2876a2
1 changed files with 37 additions and 9 deletions
|
@ -434,6 +434,7 @@ class TestPolicy(ClusterTestBase):
|
||||||
with allure.step(f"Delete the container"):
|
with allure.step(f"Delete the container"):
|
||||||
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
||||||
|
|
||||||
|
@pytest.mark.skip(reason="price")
|
||||||
@allure.title("Policy with SELECT and FILTER results with 25% of available nodes")
|
@allure.title("Policy with SELECT and FILTER results with 25% of available nodes")
|
||||||
def test_policy_with_select_and_filter_results_with_25_of_available_nodes(
|
def test_policy_with_select_and_filter_results_with_25_of_available_nodes(
|
||||||
self,
|
self,
|
||||||
|
@ -476,6 +477,7 @@ class TestPolicy(ClusterTestBase):
|
||||||
with allure.step(f"Delete the container"):
|
with allure.step(f"Delete the container"):
|
||||||
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
||||||
|
|
||||||
|
@pytest.mark.skip(reason="price")
|
||||||
@allure.title("Policy with select and complex filter results with 25% of available nodes")
|
@allure.title("Policy with select and complex filter results with 25% of available nodes")
|
||||||
def test_policy_with_select_and_complex_filter_results_with_25_of_available_nodes(
|
def test_policy_with_select_and_complex_filter_results_with_25_of_available_nodes(
|
||||||
self,
|
self,
|
||||||
|
@ -518,6 +520,7 @@ class TestPolicy(ClusterTestBase):
|
||||||
with allure.step(f"Delete the container"):
|
with allure.step(f"Delete the container"):
|
||||||
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
||||||
|
|
||||||
|
@pytest.mark.skip(reason="price")
|
||||||
@allure.title("Policy with Multi SELECTs and FILTERs results with 25% of available nodes")
|
@allure.title("Policy with Multi SELECTs and FILTERs results with 25% of available nodes")
|
||||||
def test_policy_with_multi_selects_and_filters_results_with_25_of_available_nodes(
|
def test_policy_with_multi_selects_and_filters_results_with_25_of_available_nodes(
|
||||||
self,
|
self,
|
||||||
|
@ -635,6 +638,7 @@ class TestPolicy(ClusterTestBase):
|
||||||
with allure.step(f"Delete the container"):
|
with allure.step(f"Delete the container"):
|
||||||
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
||||||
|
|
||||||
|
@pytest.mark.skip(reason="price")
|
||||||
@allure.title("Policy with SELECT and FILTER results with 50% of available nodes")
|
@allure.title("Policy with SELECT and FILTER results with 50% of available nodes")
|
||||||
def test_policy_with_select_and_filter_results_with_50_of_available_nodes(
|
def test_policy_with_select_and_filter_results_with_50_of_available_nodes(
|
||||||
self,
|
self,
|
||||||
|
@ -677,6 +681,7 @@ class TestPolicy(ClusterTestBase):
|
||||||
with allure.step(f"Delete the container"):
|
with allure.step(f"Delete the container"):
|
||||||
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
||||||
|
|
||||||
|
@pytest.mark.skip(reason="price")
|
||||||
@allure.title("Policy with SELECT and Complex FILTER results with 50% of available nodes")
|
@allure.title("Policy with SELECT and Complex FILTER results with 50% of available nodes")
|
||||||
def test_policy_with_select_and_complex_filter_results_with_50_of_available_nodes(
|
def test_policy_with_select_and_complex_filter_results_with_50_of_available_nodes(
|
||||||
self,
|
self,
|
||||||
|
@ -719,6 +724,7 @@ class TestPolicy(ClusterTestBase):
|
||||||
with allure.step(f"Delete the container"):
|
with allure.step(f"Delete the container"):
|
||||||
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
||||||
|
|
||||||
|
@pytest.mark.skip(reason="price")
|
||||||
@allure.title("Policy with Multi SELECTs and FILTERs results with 50% of available nodes")
|
@allure.title("Policy with Multi SELECTs and FILTERs results with 50% of available nodes")
|
||||||
def test_policy_with_multi_selects_and_filters_results_with_50_of_available_nodes(
|
def test_policy_with_multi_selects_and_filters_results_with_50_of_available_nodes(
|
||||||
self,
|
self,
|
||||||
|
@ -835,6 +841,7 @@ class TestPolicy(ClusterTestBase):
|
||||||
with allure.step(f"Delete the container"):
|
with allure.step(f"Delete the container"):
|
||||||
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
||||||
|
|
||||||
|
@pytest.mark.skip(reason="price")
|
||||||
@allure.title("Policy with SELECT and FILTER results with 75% of available nodes")
|
@allure.title("Policy with SELECT and FILTER results with 75% of available nodes")
|
||||||
def test_policy_with_select_and_filter_results_with_75_of_available_nodes(
|
def test_policy_with_select_and_filter_results_with_75_of_available_nodes(
|
||||||
self,
|
self,
|
||||||
|
@ -877,6 +884,7 @@ class TestPolicy(ClusterTestBase):
|
||||||
with allure.step(f"Delete the container"):
|
with allure.step(f"Delete the container"):
|
||||||
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
||||||
|
|
||||||
|
@pytest.mark.skip(reason="price")
|
||||||
@allure.title("Policy with SELECT and Complex FILTER results with 75% of available nodes")
|
@allure.title("Policy with SELECT and Complex FILTER results with 75% of available nodes")
|
||||||
def test_policy_with_select_and_complex_filter_results_with_75_of_available_nodes(
|
def test_policy_with_select_and_complex_filter_results_with_75_of_available_nodes(
|
||||||
self,
|
self,
|
||||||
|
@ -919,6 +927,7 @@ class TestPolicy(ClusterTestBase):
|
||||||
with allure.step(f"Delete the container"):
|
with allure.step(f"Delete the container"):
|
||||||
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
||||||
|
|
||||||
|
@pytest.mark.skip(reason="price")
|
||||||
@allure.title("Policy with Multi SELECTs and FILTERs results with 75% of available nodes")
|
@allure.title("Policy with Multi SELECTs and FILTERs results with 75% of available nodes")
|
||||||
def test_policy_with_multi_selects_and_filters_results_with_75_of_available_nodes(
|
def test_policy_with_multi_selects_and_filters_results_with_75_of_available_nodes(
|
||||||
self,
|
self,
|
||||||
|
@ -1035,6 +1044,7 @@ class TestPolicy(ClusterTestBase):
|
||||||
with allure.step(f"Delete the container"):
|
with allure.step(f"Delete the container"):
|
||||||
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
delete_container(wallet=default_wallet, cid=cid, shell=self.shell, endpoint=endpoint)
|
||||||
|
|
||||||
|
@pytest.mark.skip(reason="price")
|
||||||
@allure.title("Policy with SELECT and FILTER results with 100% of available nodes")
|
@allure.title("Policy with SELECT and FILTER results with 100% of available nodes")
|
||||||
def test_policy_with_select_and_filter_results_with_100_of_available_nodes(
|
def test_policy_with_select_and_filter_results_with_100_of_available_nodes(
|
||||||
self,
|
self,
|
||||||
|
@ -1045,6 +1055,7 @@ class TestPolicy(ClusterTestBase):
|
||||||
This test checks object's copies based on container's placement policy with SELECT and FILTER results with 100% of available nodes.
|
This test checks object's copies based on container's placement policy with SELECT and FILTER results with 100% of available nodes.
|
||||||
"""
|
"""
|
||||||
placement_rule = "REP 1 IN All SELECT 4 FROM AllNodes AS All FILTER Price GE 0 AS AllNodes"
|
placement_rule = "REP 1 IN All SELECT 4 FROM AllNodes AS All FILTER Price GE 0 AS AllNodes"
|
||||||
|
expected_params = {"price": "0"}
|
||||||
file_path = generate_file(simple_object_size.value)
|
file_path = generate_file(simple_object_size.value)
|
||||||
expected_copies = 1
|
expected_copies = 1
|
||||||
endpoint = self.cluster.default_rpc_endpoint
|
endpoint = self.cluster.default_rpc_endpoint
|
||||||
|
@ -1067,9 +1078,13 @@ class TestPolicy(ClusterTestBase):
|
||||||
), f"Expected {expected_copies} copies, got {len(resulting_copies)}"
|
), f"Expected {expected_copies} copies, got {len(resulting_copies)}"
|
||||||
|
|
||||||
with allure.step(f"Check the object appearance"):
|
with allure.step(f"Check the object appearance"):
|
||||||
nodes_without_object = get_nodes_without_object(
|
self.check_for_the_uniqueness_of_the_nodes(resulting_copies)
|
||||||
wallet=default_wallet, cid=cid, oid=oid, shell=self.shell, nodes=self.cluster.storage_nodes
|
netmap = parse_netmap_output(get_netmap_snapshot(node=resulting_copies[0], shell=self.shell))
|
||||||
)
|
netmap = self.get_netmap_param(netmap)
|
||||||
|
node_address = resulting_copies[0].get_rpc_endpoint().split(":")[0]
|
||||||
|
assert (
|
||||||
|
expected_params["price"] == netmap[node_address]["price"]
|
||||||
|
), f"The node is selected from the wrong price. Expected {expected_params} and got {netmap[node_address]}"
|
||||||
|
|
||||||
with allure.step(f"Delete the object from the container"):
|
with allure.step(f"Delete the object from the container"):
|
||||||
delete_object(wallet=default_wallet, cid=cid, oid=oid, shell=self.shell, endpoint=endpoint)
|
delete_object(wallet=default_wallet, cid=cid, oid=oid, shell=self.shell, endpoint=endpoint)
|
||||||
|
@ -1087,6 +1102,7 @@ class TestPolicy(ClusterTestBase):
|
||||||
This test checks object's copies based on container's placement policy with SELECT and Complex FILTER results with 100% of available nodes.
|
This test checks object's copies based on container's placement policy with SELECT and Complex FILTER results with 100% of available nodes.
|
||||||
"""
|
"""
|
||||||
placement_rule = "REP 2 IN All SELECT 4 FROM AllNodes AS All FILTER Country EQ Russia OR Country EQ Sweden OR Country EQ Finland AS AllCountries FILTER @AllCountries AND Continent EQ Europe AS AllNodes"
|
placement_rule = "REP 2 IN All SELECT 4 FROM AllNodes AS All FILTER Country EQ Russia OR Country EQ Sweden OR Country EQ Finland AS AllCountries FILTER @AllCountries AND Continent EQ Europe AS AllNodes"
|
||||||
|
expected_params = {"country": ["Russia", "Sweden", "Finland"], "continent": "Europe"}
|
||||||
file_path = generate_file(simple_object_size.value)
|
file_path = generate_file(simple_object_size.value)
|
||||||
expected_copies = 2
|
expected_copies = 2
|
||||||
endpoint = self.cluster.default_rpc_endpoint
|
endpoint = self.cluster.default_rpc_endpoint
|
||||||
|
@ -1109,9 +1125,15 @@ class TestPolicy(ClusterTestBase):
|
||||||
), f"Expected {expected_copies} copies, got {len(resulting_copies)}"
|
), f"Expected {expected_copies} copies, got {len(resulting_copies)}"
|
||||||
|
|
||||||
with allure.step(f"Check the object appearance"):
|
with allure.step(f"Check the object appearance"):
|
||||||
nodes_without_object = get_nodes_without_object(
|
netmap = parse_netmap_output(get_netmap_snapshot(node=resulting_copies[0], shell=self.shell))
|
||||||
wallet=default_wallet, cid=cid, oid=oid, shell=self.shell, nodes=self.cluster.storage_nodes
|
netmap = self.get_netmap_param(netmap)
|
||||||
)
|
for node in resulting_copies:
|
||||||
|
node_address = node.get_rpc_endpoint().split(":")[0]
|
||||||
|
assert (
|
||||||
|
(netmap[node_address]["country"] in expected_params["country"])
|
||||||
|
or (netmap[node_address]["country"] in expected_params["country"])
|
||||||
|
and (netmap[node_address]["continent"] in expected_params["continent"])
|
||||||
|
), f"The node is selected from the wrong country or continent. Expected {expected_params} and got {netmap[node_address]}"
|
||||||
|
|
||||||
with allure.step(f"Delete the object from the container"):
|
with allure.step(f"Delete the object from the container"):
|
||||||
delete_object(wallet=default_wallet, cid=cid, oid=oid, shell=self.shell, endpoint=endpoint)
|
delete_object(wallet=default_wallet, cid=cid, oid=oid, shell=self.shell, endpoint=endpoint)
|
||||||
|
@ -1129,6 +1151,7 @@ class TestPolicy(ClusterTestBase):
|
||||||
This test checks object's copies based on container's placement policy with Multi SELECTs and FILTERs results with 100% of available nodes.
|
This test checks object's copies based on container's placement policy with Multi SELECTs and FILTERs results with 100% of available nodes.
|
||||||
"""
|
"""
|
||||||
placement_rule = "REP 4 IN AllOne REP 4 IN AllTwo CBF 4 SELECT 2 FROM GEZero AS AllOne SELECT 2 FROM AllCountries AS AllTwo FILTER Country EQ Russia OR Country EQ Sweden OR Country EQ Finland AS AllCountries FILTER Price GE 0 AS GEZero"
|
placement_rule = "REP 4 IN AllOne REP 4 IN AllTwo CBF 4 SELECT 2 FROM GEZero AS AllOne SELECT 2 FROM AllCountries AS AllTwo FILTER Country EQ Russia OR Country EQ Sweden OR Country EQ Finland AS AllCountries FILTER Price GE 0 AS GEZero"
|
||||||
|
expected_params = {"country": ["Russia", "Sweden", "Finland"], "price": "0"}
|
||||||
file_path = generate_file(simple_object_size.value)
|
file_path = generate_file(simple_object_size.value)
|
||||||
expected_copies = 4
|
expected_copies = 4
|
||||||
endpoint = self.cluster.default_rpc_endpoint
|
endpoint = self.cluster.default_rpc_endpoint
|
||||||
|
@ -1151,9 +1174,13 @@ class TestPolicy(ClusterTestBase):
|
||||||
), f"Expected {expected_copies} copies, got {len(resulting_copies)}"
|
), f"Expected {expected_copies} copies, got {len(resulting_copies)}"
|
||||||
|
|
||||||
with allure.step(f"Check the object appearance"):
|
with allure.step(f"Check the object appearance"):
|
||||||
nodes_without_object = get_nodes_without_object(
|
netmap = parse_netmap_output(get_netmap_snapshot(node=resulting_copies[0], shell=self.shell))
|
||||||
wallet=default_wallet, cid=cid, oid=oid, shell=self.shell, nodes=self.cluster.storage_nodes
|
netmap = self.get_netmap_param(netmap)
|
||||||
)
|
for node in resulting_copies:
|
||||||
|
node_address = node.get_rpc_endpoint().split(":")[0]
|
||||||
|
assert (netmap[node_address]["country"] in expected_params["country"]) or (
|
||||||
|
netmap[node_address]["price"] in expected_params["price"]
|
||||||
|
), f"The node is selected from the wrong country or price. Expected {expected_params} and got {netmap[node_address]}"
|
||||||
|
|
||||||
with allure.step(f"Delete the object from the container"):
|
with allure.step(f"Delete the object from the container"):
|
||||||
delete_object(wallet=default_wallet, cid=cid, oid=oid, shell=self.shell, endpoint=endpoint)
|
delete_object(wallet=default_wallet, cid=cid, oid=oid, shell=self.shell, endpoint=endpoint)
|
||||||
|
@ -1409,5 +1436,6 @@ class TestPolicy(ClusterTestBase):
|
||||||
"country": node.country,
|
"country": node.country,
|
||||||
"country_code": node.country_code,
|
"country_code": node.country_code,
|
||||||
"price": node.price,
|
"price": node.price,
|
||||||
|
"continent": node.continent,
|
||||||
}
|
}
|
||||||
return dict_external
|
return dict_external
|
||||||
|
|
Loading…
Reference in a new issue