From 720b6f5a9ca75040c20883bedbd91436860d25db Mon Sep 17 00:00:00 2001 From: Kenneth Cain Date: Thu, 9 Jul 2026 16:02:51 -0400 Subject: [PATCH] DAOS-16759 test: DO NOT LAND Try EXTEND14 dfs_extend_write_kill() (extend_simple subtest 13) with test change to wait for rebuild start before clearing fault injection. Test-repeat: 25 Test-tag: test_daos_extend_simple_13 Skip-unit-tests: true Skip-fault-injection-test: true Skip-test-rpms: true Signed-off-by: Kenneth Cain --- src/tests/ftest/daos_test/suite.py | 16 ++++++++++++++++ src/tests/ftest/daos_test/suite.yaml | 5 +++++ src/tests/ftest/launch.py | 2 +- src/tests/suite/daos_extend_common.c | 11 ++++++++--- src/tests/suite/daos_extend_simple.c | 25 +++++++++++++++++++++---- 5 files changed, 51 insertions(+), 8 deletions(-) diff --git a/src/tests/ftest/daos_test/suite.py b/src/tests/ftest/daos_test/suite.py index 77ac83217b5..0bc21ad3691 100644 --- a/src/tests/ftest/daos_test/suite.py +++ b/src/tests/ftest/daos_test/suite.py @@ -334,6 +334,22 @@ def test_daos_extend_simple(self): """ self.run_subtest() + def test_daos_extend_simple_13(self): + """Jira ID: DAOS-1568 + + Test Description: + Run daos_test -B --subtests="13" + + Use cases: + Core tests for daos_test + + :avocado: tags=all,pr,daily_regression + :avocado: tags=hw,medium,provider + :avocado: tags=daos_test,daos_core_test,rebuild + :avocado: tags=DaosCoreTest,test_daos_extend_simple_13 + """ + self.run_subtest() + def test_daos_rebuild_interactive(self): """Jira ID: DAOS-17358 diff --git a/src/tests/ftest/daos_test/suite.yaml b/src/tests/ftest/daos_test/suite.yaml index 622190b1789..717f4c10fe5 100644 --- a/src/tests/ftest/daos_test/suite.yaml +++ b/src/tests/ftest/daos_test/suite.yaml @@ -26,6 +26,7 @@ timeouts: test_daos_rebuild_simple: 2400 test_daos_drain_simple: 3720 test_daos_extend_simple: 3600 + test_daos_extend_simple_13: 600 test_daos_rebuild_interactive: 1185 test_daos_oid_allocator: 640 test_daos_checksum: 500 @@ -105,6 +106,7 @@ daos_tests: test_daos_rebuild_simple: 1 test_daos_drain_simple: 1 test_daos_extend_simple: 1 + test_daos_extend_simple_13: 1 test_daos_rebuild_interactive: 1 test_daos_oid_allocator: 1 test_daos_checksum: 1 @@ -141,6 +143,7 @@ daos_tests: test_daos_degraded_ec: DAOS_Degraded_EC test_daos_dedup: DAOS_Dedup test_daos_extend_simple: DAOS_Extend_Simple + test_daos_extend_simple_13: DAOS_Extend_Simple_13 test_daos_rebuild_interactive: DAOS_Rebuild_Interactive test_daos_upgrade: DAOS_Upgrade test_daos_pipeline: DAOS_Pipeline @@ -165,6 +168,7 @@ daos_tests: test_daos_rebuild_simple: v test_daos_drain_simple: b test_daos_extend_simple: B + test_daos_extend_simple_13: B test_daos_rebuild_interactive: j test_daos_oid_allocator: O test_daos_checksum: z @@ -182,6 +186,7 @@ daos_tests: test_daos_rebuild_simple: -s3 test_daos_drain_simple: -s3 test_daos_extend_simple: -s3 + test_daos_extend_simple_13: -s3 -u subtests="13" test_daos_rebuild_interactive: -s3 test_daos_oid_allocator: -s5 stopped_ranks: diff --git a/src/tests/ftest/launch.py b/src/tests/ftest/launch.py index 6b35828212b..21fa11e3a9e 100755 --- a/src/tests/ftest/launch.py +++ b/src/tests/ftest/launch.py @@ -33,7 +33,7 @@ from util.yaml_utils import YamlException DEFAULT_LOGS_THRESHOLD = "2150M" # 2.1G -MAX_CI_REPETITIONS = 10 +MAX_CI_REPETITIONS = 50 class LaunchError(Exception): diff --git a/src/tests/suite/daos_extend_common.c b/src/tests/suite/daos_extend_common.c index 86a8a2e2009..2232361f4c1 100644 --- a/src/tests/suite/daos_extend_common.c +++ b/src/tests/suite/daos_extend_common.c @@ -1,5 +1,5 @@ /** - * (C) Copyright 2025 Hewlett Packard Enterprise Development LP + * (C) Copyright 2025-2026 Hewlett Packard Enterprise Development LP * * SPDX-License-Identifier: BSD-2-Clause-Patent */ @@ -180,8 +180,13 @@ dfs_extend_internal(void **state, int opc, test_rebuild_cb_t extend_cb, bool kil daos_debug_set_params(arg->group, -1, DMG_KEY_FAIL_LOC, DAOS_REBUILD_TGT_SCAN_HANG | DAOS_FAIL_ALWAYS, 0, NULL); - arg->no_rebuild = - 1; /* This has no effect for RB_OP_TYPE_ADD - so can this be removed here? */ + /* + * For RB_OP_TYPE_ADD, rebuild_targets() still performs the extend and invokes + * rebuild_cb, but no_rebuild=1 disables its internal waits + * (test_rebuild_wait_to_start_next/test_rebuild_wait). Therefore, + * extend_single_pool_rank() returns without waiting for rebuild completion. + */ + arg->no_rebuild = 1; extend_single_pool_rank(arg, extend_rank); arg->no_rebuild = 0; diff --git a/src/tests/suite/daos_extend_simple.c b/src/tests/suite/daos_extend_simple.c index f2f5af8bbca..4a055284345 100644 --- a/src/tests/suite/daos_extend_simple.c +++ b/src/tests/suite/daos_extend_simple.c @@ -1,6 +1,6 @@ /** * (C) Copyright 2016-2023 Intel Corporation. - * (C) Copyright 2025 Hewlett Packard Enterprise Development LP + * (C) Copyright 2025-2026 Hewlett Packard Enterprise Development LP * * SPDX-License-Identifier: BSD-2-Clause-Patent */ @@ -247,8 +247,17 @@ extend_cb_internal(void *arg) int rc; int i; - print_message("Extending, sleep 10, %s another rank %u, and start op %d (%s)\n", pre_op, - cb_arg->rank, opc, extend_opstrs[opc]); + /* Wait for first extend to start (immediate return expected since it's running). + * We want a post-effect: test_arg->pool.pool_info.pi_rebuild_st has the first rs_version. + * Then later we can wait for the second rebuild to start with another similar call. + */ + print_message("before waiting for rebuild to start, pmap_ver=%u, rs_version=%u\n", + test_arg->pool.pool_info.pi_map_ver, + test_arg->pool.pool_info.pi_rebuild_st.rs_version); + test_rebuild_wait_to_start_next(&test_arg, 1); + print_message("Extending (rs_version=%u), sleep 10, %s rank %u, and start op %d (%s)\n", + test_arg->pool.pool_info.pi_rebuild_st.rs_version, pre_op, cb_arg->rank, opc, + extend_opstrs[opc]); sleep(10); @@ -314,7 +323,15 @@ extend_cb_internal(void *arg) break; } - daos_debug_set_params(test_arg->group, -1, DMG_KEY_FAIL_LOC, 0, 0, NULL); + if (cb_arg->kill) { + print_message( + "extend_cb_internal: waiting for next rebuild start before clearing FI\n"); + test_rebuild_wait_to_start_next(&test_arg, 1); + } + + print_message("extend_cb_internal: clear FI via daos_debug_set_params()\n"); + rc = daos_debug_set_params(test_arg->group, -1, DMG_KEY_FAIL_LOC, 0, 0, NULL); + assert_success(rc); return 0; }