Skip to content

Commit 45b7e04

Browse files
DAOS-18483 test: fix OSAOfflineReintegration (#17534)
Some rank exclusions were hardcoded to the wrong rank. Also fix incorrect client procs in the config. Signed-off-by: Dalton Bohning <[email protected]>
1 parent f980974 commit 45b7e04

2 files changed

Lines changed: 28 additions & 19 deletions

File tree

src/tests/ftest/osa/offline_reintegration.py

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"""
22
(C) Copyright 2020-2023 Intel Corporation.
3-
(C) Copyright 2025 Hewlett Packard Enterprise Development LP
3+
(C) Copyright 2025-2026 Hewlett Packard Enterprise Development LP
44
55
SPDX-License-Identifier: BSD-2-Clause-Patent
66
"""
@@ -48,6 +48,12 @@ def run_offline_reintegration_test(self, num_pool, ranks, data=False, server_boo
4848
operations.
4949
num_ranks (int): Number of ranks to drain. Defaults to 1.
5050
"""
51+
# Figure out an additional unique rank to stop during rebuild.
52+
# Used when self.test_during_rebuild is True
53+
all_ranks = list(map(str, self.server_managers[0].ranks.keys()))
54+
all_exclude_ranks = ','.join(ranks).split(',')
55+
rank_during_rebuild = self.random.choice(list(set(all_ranks) - set(all_exclude_ranks)))
56+
5157
# Create 'num_pool' number of pools
5258
pools = []
5359
if oclass is None:
@@ -82,7 +88,7 @@ def run_offline_reintegration_test(self, num_pool, ranks, data=False, server_boo
8288
if self.test_during_aggregation is True:
8389
self.run_ior_thread("Write", oclass, test_seq)
8490

85-
self.pool = self.random.choice(pools) # nosec
91+
self.pool = self.random.choice(pools)
8692
for loop in range(0, self.loop_test_cnt):
8793
self.log.info(
8894
"==> (Loop %s/%s) Excluding ranks %s from %s",
@@ -95,8 +101,8 @@ def run_offline_reintegration_test(self, num_pool, ranks, data=False, server_boo
95101
initial_free_space = self.pool.get_total_free_space(refresh=True)
96102
if server_boot is False:
97103
if (self.test_during_rebuild is True and index == 0):
98-
# Exclude rank 5
99-
output = self.pool.exclude("5")
104+
# Exclude an additional rank
105+
output = self.pool.exclude(rank_during_rebuild)
100106
self.print_and_assert_on_rebuild_failure(output)
101107
if self.test_during_aggregation is True:
102108
self.delete_extra_container(self.pool)
@@ -115,10 +121,9 @@ def run_offline_reintegration_test(self, num_pool, ranks, data=False, server_boo
115121
output = self.dmg_command.system_stop(ranks=rank, force=True)
116122
self.print_and_assert_on_rebuild_failure(output)
117123
output = self.dmg_command.system_start(ranks=rank)
118-
# Just try to reintegrate rank 5
124+
# Just try to reintegrate the additional rank
119125
if (self.test_during_rebuild is True and index == 2):
120-
# Reintegrate rank 5
121-
output = self.pool.reintegrate("5")
126+
output = self.pool.reintegrate(rank_during_rebuild)
122127
self.print_and_assert_on_rebuild_failure(output)
123128

124129
pver_exclude = self.pool.get_version(True)
@@ -127,10 +132,12 @@ def run_offline_reintegration_test(self, num_pool, ranks, data=False, server_boo
127132
# Check pool version incremented after pool exclude
128133
# pver_exclude should be greater than
129134
# pver_begin + 1 (1 target + exclude)
130-
self.assertTrue(pver_exclude > (pver_begin + 1),
131-
"Pool Version Error: After exclude")
132-
self.assertTrue(initial_free_space > free_space_after_exclude,
133-
"Expected free space after exclude is less than initial")
135+
if not pver_exclude > (pver_begin + 1):
136+
self.fail(f"Pool version after exclude: {pver_exclude} !> {pver_begin + 1}")
137+
if not initial_free_space > free_space_after_exclude:
138+
self.fail(
139+
"Expected free space after exclude: "
140+
f"{initial_free_space} !> {free_space_after_exclude}")
134141

135142
# Reintegrate the ranks which was excluded
136143
self.log.info(
@@ -154,12 +161,14 @@ def run_offline_reintegration_test(self, num_pool, ranks, data=False, server_boo
154161
free_space_after_reintegration = self.pool.get_total_free_space(refresh=True)
155162
pver_reint = self.pool.get_version(True)
156163
self.log.info("Pool Version after reintegrate %d", pver_reint)
157-
# Check pool version incremented after pool reintegrate
158-
self.assertTrue(pver_reint > pver_exclude, "Pool Version Error: After reintegrate")
159-
self.assertTrue(free_space_after_reintegration > free_space_after_exclude,
160-
"Expected free space after reintegration is less than exclude")
161-
162-
display_string = "{} space at the End".format(str(self.pool))
164+
if not pver_reint > pver_exclude:
165+
self.fail(f"Pool version after reintegrate: {pver_reint} !> {pver_exclude}")
166+
if not free_space_after_reintegration > free_space_after_exclude:
167+
self.fail(
168+
"Expected free space after reintegrate: "
169+
f"{free_space_after_reintegration} !> {free_space_after_exclude}")
170+
171+
display_string = f"{str(self.pool)} space at the End"
163172
self.pool.display_pool_daos_space(display_string)
164173

165174
# Finally check whether the written data can be accessed.

src/tests/ftest/osa/offline_reintegration.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ container:
5858
properties: cksum:crc64,cksum_size:16384,srv_cksum:on,rd_fac:2
5959

6060
ior:
61-
clientslots:
62-
slots: 48
61+
client_processes:
62+
np: 2
6363
test_file: /testFile
6464
repetitions: 2
6565
dfs_destroy: false

0 commit comments

Comments
 (0)