forked from TrueCloudLab/frostfs-testcases
Added case for not ignoring unhealthy tree endpoints
This commit is contained in:
parent
6f77a6ab08
commit
c2cd9ba887
1 changed files with 50 additions and 0 deletions
|
@ -65,6 +65,13 @@ def after_run_return_all_stopped_services(cluster_state_controller: ClusterState
|
||||||
cluster_state_controller.start_stopped_storage_services()
|
cluster_state_controller.start_stopped_storage_services()
|
||||||
|
|
||||||
|
|
||||||
|
@allure.step("Return all stopped S3 GateWay services after test")
|
||||||
|
@pytest.fixture(scope="function")
|
||||||
|
def after_run_return_all_stopped_s3(cluster_state_controller: ClusterStateController):
|
||||||
|
yield
|
||||||
|
cluster_state_controller.start_stopped_s3_gate()
|
||||||
|
|
||||||
|
|
||||||
def panic_reboot_host(host: Host) -> None:
|
def panic_reboot_host(host: Host) -> None:
|
||||||
shell = host.get_shell()
|
shell = host.get_shell()
|
||||||
shell.exec('sudo sh -c "echo 1 > /proc/sys/kernel/sysrq"')
|
shell.exec('sudo sh -c "echo 1 > /proc/sys/kernel/sysrq"')
|
||||||
|
@ -212,6 +219,49 @@ class TestFailoverStorage(ClusterTestBase):
|
||||||
)
|
)
|
||||||
assert get_file_hash(source_file_path) == get_file_hash(got_file_path)
|
assert get_file_hash(source_file_path) == get_file_hash(got_file_path)
|
||||||
|
|
||||||
|
@allure.title("Do not ignore unhealthy tree endpoints")
|
||||||
|
def test_unhealthy_tree(
|
||||||
|
self,
|
||||||
|
s3_client: S3ClientWrapper,
|
||||||
|
simple_object_size: int,
|
||||||
|
cluster_state_controller: ClusterStateController,
|
||||||
|
after_run_return_all_stopped_s3,
|
||||||
|
after_run_return_all_stopped_services,
|
||||||
|
):
|
||||||
|
default_node = self.cluster.cluster_nodes[0]
|
||||||
|
default_s3gate = self.cluster.s3_gates[0]
|
||||||
|
|
||||||
|
with allure.step("Turn S3 GW off on default node"):
|
||||||
|
default_s3gate.stop_service()
|
||||||
|
|
||||||
|
with allure.step("Turn off storage on default node"):
|
||||||
|
cluster_state_controller.stop_storage_service(default_node)
|
||||||
|
|
||||||
|
with allure.step("Turn on S3 GW on default node"):
|
||||||
|
default_s3gate.start_service()
|
||||||
|
|
||||||
|
with allure.step("Turn on storage on default node"):
|
||||||
|
cluster_state_controller.start_stopped_storage_services()
|
||||||
|
|
||||||
|
with allure.step("Create bucket with REP 1 SELECT 1 policy"):
|
||||||
|
bucket = s3_client.create_bucket(
|
||||||
|
location_constraint="load-1-1",
|
||||||
|
)
|
||||||
|
|
||||||
|
file_path = generate_file(simple_object_size)
|
||||||
|
file_name = s3_helper.object_key_from_file_path(file_path)
|
||||||
|
with allure.step("Put object into bucket"):
|
||||||
|
put_object = s3_client.put_object(bucket, file_path)
|
||||||
|
s3_helper.check_objects_in_bucket(s3_client, bucket, expected_objects=[file_name])
|
||||||
|
|
||||||
|
with allure.step("Turn off all storage nodes except default"):
|
||||||
|
for node in self.cluster.cluster_nodes[1:]:
|
||||||
|
with allure.step(f"Stop storage service on node: {node}"):
|
||||||
|
cluster_state_controller.stop_storage_service(node)
|
||||||
|
|
||||||
|
with allure.step("Check that object is available"):
|
||||||
|
s3_helper.check_objects_in_bucket(s3_client, bucket, expected_objects=[file_name])
|
||||||
|
|
||||||
|
|
||||||
def pytest_generate_tests(metafunc: pytest.Metafunc):
|
def pytest_generate_tests(metafunc: pytest.Metafunc):
|
||||||
if "s3_client" in metafunc.fixturenames:
|
if "s3_client" in metafunc.fixturenames:
|
||||||
|
|
Loading…
Reference in a new issue