From 768d8ec2e5bfbac8b890a80a93e2b630be3e7656 Mon Sep 17 00:00:00 2001 From: Ryon Jensen Date: Thu, 4 Jun 2026 15:29:11 -0600 Subject: [PATCH 1/7] SRE-3775 build: Introduce Cluster Box Stages - Combined Unit Test and Test stages - New Cluster Box stages - Changed gen_commit_pragmas.py to only include tests automatically if actual code changed ... not just comments. - Increased timeouts - Added pragma to set build description Signed-off-by: Ryon Jensen Build-description: Targetting ci_vm_hdr-232vm01-05 Cancel-prev-build: false Skip-unit-test: true Skip-unit-test-memcheck: true Skip-nlt: true Skip-fault-injection-test: true Skip-test-el-9-rpms: true Skip-test-leap-15-rpms: true Skip-func-test-el8: true Skip-func-test-el9: true Skip-func-test-leap15: true Skip-func-test-hw-medium: true Skip-func-test-hw-medium-md-on-ssd: true Skip-func-test-hw-medium-vmd: true Skip-func-test-hw-medium-verbs-provider: true Skip-func-test-hw-medium-verbs-provider-md-on-ssd: true Skip-func-test-hw-large: true Skip-func-test-hw-large-md-on-ssd: true Skip-python-bandit-check: true Skip-func-test-cb-md-on-ssd-daos-test: false Skip-func-test-cb-md-on-ssd-ftest: false Test-label-cb-md-on-ssd-daos-test: ci_vm_hdr-232vm01-05 Test-label-cb-md-on-ssd-ftest: ci_vm_hdr-232vm01-05 Signed-off-by: Ryon Jensen --- Jenkinsfile | 119 +++-- ci/gen_commit_pragmas.py | 83 ++- src/tests/ftest/aggregation/basic.py | 2 +- src/tests/ftest/aggregation/basic.yaml | 1 + src/tests/ftest/aggregation/checksum.py | 14 +- src/tests/ftest/aggregation/punching.py | 2 +- .../ftest/container/snapshot_aggregation.py | 6 +- src/tests/ftest/control/daos_server_helper.py | 8 +- .../ftest/control/dmg_telemetry_io_basic.py | 12 +- src/tests/ftest/control/dmg_telemetry_nvme.py | 20 +- src/tests/ftest/daos_racer/simple.py | 6 +- src/tests/ftest/daos_test/rebuild.py | 156 +++--- src/tests/ftest/daos_test/rebuild.yaml | 2 + src/tests/ftest/daos_test/suite.py | 482 +++++++++++++----- .../ftest/daos_test/suite.single_host.yaml | 38 +- src/tests/ftest/daos_test/suite.yaml | 12 +- src/tests/ftest/daos_vol/h5_suite.py | 2 +- src/tests/ftest/dfuse/daos_build.py | 2 +- src/tests/ftest/io/io_consistency.py | 16 +- src/tests/ftest/ior/small.py | 14 +- src/tests/ftest/mdtest/small.py | 14 +- src/tests/ftest/mpiio/romio.py | 14 +- src/tests/ftest/mpiio/romio.yaml | 1 + src/tests/ftest/osa/offline_drain.py | 14 +- src/tests/ftest/osa/offline_reintegration.py | 28 +- .../ftest/osa/offline_reintegration.yaml | 1 + src/tests/ftest/osa/online_drain.py | 24 +- src/tests/ftest/osa/online_drain.yaml | 1 + src/tests/ftest/osa/online_extend.py | 70 ++- src/tests/ftest/osa/online_extend.yaml | 1 + src/tests/ftest/osa/online_parallel_test.py | 8 +- src/tests/ftest/pool/create.py | 4 +- src/tests/ftest/pool/create_query.py | 8 +- src/tests/ftest/rebuild/pool_destroy_race.py | 14 +- src/tests/ftest/scrubber/basic.py | 28 +- src/tests/ftest/scrubber/basic.yaml | 1 + src/tests/ftest/scrubber/csum_fault.py | 14 +- src/tests/ftest/scrubber/csum_fault.yaml | 1 + .../ftest/scrubber/target_auto_eviction.py | 14 +- .../ftest/scrubber/target_auto_eviction.yaml | 1 + src/tests/ftest/server/replay.py | 20 +- src/tests/ftest/server/storage_tiers.py | 8 +- src/tests/ftest/util/collection_utils.py | 60 ++- 43 files changed, 914 insertions(+), 432 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index bd4bf753c3c..2ea36a461af 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -18,7 +18,7 @@ // To use a test branch (i.e. PR) until it lands to master // I.e. for testing library changes -//@Library(value='pipeline-lib@your_branch') _ +@Library(value='pipeline-lib@ryon-jensen/speed_of_ci') _ /* groovylint-disable-next-line CompileStatic */ job_status_internal = [:] @@ -346,6 +346,13 @@ pipeline { booleanParam(name: 'CI_large_md_on_ssd_TEST', defaultValue: true, description: 'Run the Functional Hardware Large MD on SSD test stage') + booleanParam(name: 'CI_md_on_ssd_daos_test_TEST', + defaultValue: true, + description: 'Run the Functional Cluster Box daos_test Other test stage') + booleanParam(name: 'CI_md_on_ssd_ftest_TEST', + defaultValue: true, + description: 'Run the Functional Cluster Box FTest test stage') + string(name: 'CI_UNIT_VM1_LABEL', defaultValue: 'ci_vm1', description: 'Label to use for 1 VM node unit and RPM tests') @@ -376,6 +383,9 @@ pipeline { string(name: 'FUNCTIONAL_HARDWARE_LARGE_LABEL', defaultValue: 'ci_nvme9', description: 'Label to use for 9 node Functional Hardware Large (MD on SSD) stages') + string(name: 'FUNCTIONAL_CLUSTER_BOX_LABEL', + defaultValue: 'cluster_box', + description: 'Label to use for the Functional Cluster Box stages') string(name: 'CI_STORAGE_PREP_LABEL', defaultValue: '', description: 'Label for cluster to do a DAOS Storage Preparation') @@ -391,8 +401,10 @@ pipeline { stage('Set Description') { steps { script { - if (params.CI_BUILD_DESCRIPTION) { - buildDescription params.CI_BUILD_DESCRIPTION + String description = params.CI_BUILD_DESCRIPTION ?: + cachedCommitPragma('Build-description', '') + if (description) { + buildDescription description } } } @@ -612,7 +624,7 @@ pipeline { deps_build: false) + ' --build-arg DAOS_PACKAGES_BUILD=no ' + ' --build-arg DAOS_KEEP_SRC=yes ' + - " -t ${sanitized_JOB_NAME()}-leap15-gcc" + + " -t ${sanitized_JOB_NAME()}-leap15-gcc" + " -t ${sanitized_JOB_NAME()}-leap15" + ' --build-arg POINT_RELEASE=.6' + " --build-arg PYTHON_VERSION=${env.PYTHON_VERSION}" @@ -652,7 +664,7 @@ pipeline { } } } - stage('Unit Tests') { + stage('Tests') { when { beforeAgent true expression { !skipStage() } @@ -811,16 +823,6 @@ pipeline { } } } // stage('Unit Test bdev with memcheck') - } - } - stage('Test') { - when { - beforeAgent true - //expression { !paramsValue('CI_FUNCTIONAL_TEST_SKIP', false) && !skipStage() } - // Above not working, always skipping functional VM tests. - expression { !paramsValue('CI_FUNCTIONAL_TEST_SKIP', false) } - } - parallel { stage('Functional on EL 8.8 with Valgrind') { when { beforeAgent true @@ -1106,9 +1108,10 @@ pipeline { expression { !paramsValue('CI_FUNCTIONAL_HARDWARE_TEST_SKIP', false) && !skipStage() } } steps { - script { - parallel( - 'Functional Hardware Medium': getFunctionalTestStage( + script { + Map hwStages = [:] + + hwStages['Functional Hardware Medium'] = getFunctionalTestStage( name: 'Functional Hardware Medium', pragma_suffix: '-hw-medium', label: params.FUNCTIONAL_HARDWARE_MEDIUM_LABEL, @@ -1119,9 +1122,10 @@ pipeline { run_if_pr: false, run_if_landing: false, job_status: job_status_internal, - image_version: 'el9.7' - ), - 'Functional Hardware Medium MD on SSD': getFunctionalTestStage( + image_version: 'el9.7', + node_count: 5 + ) + hwStages['Functional Hardware Medium MD on SSD'] = getFunctionalTestStage( name: 'Functional Hardware Medium MD on SSD', pragma_suffix: '-hw-medium-md-on-ssd', label: params.FUNCTIONAL_HARDWARE_MEDIUM_LABEL, @@ -1132,9 +1136,10 @@ pipeline { run_if_pr: true, run_if_landing: false, job_status: job_status_internal, - image_version: 'el9.7' - ), - 'Functional Hardware Medium VMD': getFunctionalTestStage( + image_version: 'el9.7', + node_count: 5 + ) + hwStages['Functional Hardware Medium VMD'] = getFunctionalTestStage( name: 'Functional Hardware Medium VMD', pragma_suffix: '-hw-medium-vmd', label: params.FUNCTIONAL_HARDWARE_MEDIUM_VMD_LABEL, @@ -1146,9 +1151,10 @@ pipeline { run_if_pr: false, run_if_landing: false, job_status: job_status_internal, - image_version: 'el9.7' - ), - 'Functional Hardware Medium Verbs Provider': getFunctionalTestStage( + image_version: 'el9.7', + node_count: 5 + ) + hwStages['Functional Hardware Medium Verbs Provider'] = getFunctionalTestStage( name: 'Functional Hardware Medium Verbs Provider', pragma_suffix: '-hw-medium-verbs-provider', label: params.FUNCTIONAL_HARDWARE_MEDIUM_VERBS_PROVIDER_LABEL, @@ -1161,8 +1167,8 @@ pipeline { run_if_landing: false, job_status: job_status_internal, image_version: 'el9.7' - ), - 'Functional Hardware Medium Verbs Provider MD on SSD': getFunctionalTestStage( + ) + hwStages['Functional Hardware Medium Verbs Provider MD on SSD'] = getFunctionalTestStage( name: 'Functional Hardware Medium Verbs Provider MD on SSD', pragma_suffix: '-hw-medium-verbs-provider-md-on-ssd', label: params.FUNCTIONAL_HARDWARE_MEDIUM_VERBS_PROVIDER_LABEL, @@ -1174,23 +1180,10 @@ pipeline { run_if_pr: true, run_if_landing: false, job_status: job_status_internal, - image_version: 'el9.7' - ), - 'Functional Hardware Medium UCX Provider': getFunctionalTestStage( - name: 'Functional Hardware Medium UCX Provider', - pragma_suffix: '-hw-medium-ucx-provider', - label: params.FUNCTIONAL_HARDWARE_MEDIUM_UCX_PROVIDER_LABEL, - next_version: next_version(), - stage_tags: 'hw,medium,provider', - default_tags: startedByTimer() ? 'pr daily_regression' : 'pr', - default_nvme: 'auto', - provider: cachedCommitPragma('Test-provider-ucx', 'ucx+ud_x'), - run_if_pr: false, - run_if_landing: false, - job_status: job_status_internal, - image_version: 'el9.7' - ), - 'Functional Hardware Large': getFunctionalTestStage( + image_version: 'el9.7', + node_count: 5 + ) + hwStages['Functional Hardware Large'] = getFunctionalTestStage( name: 'Functional Hardware Large', pragma_suffix: '-hw-large', label: params.FUNCTIONAL_HARDWARE_LARGE_LABEL, @@ -1202,8 +1195,8 @@ pipeline { run_if_landing: false, job_status: job_status_internal, image_version: 'el9.7' - ), - 'Functional Hardware Large MD on SSD': getFunctionalTestStage( + ) + hwStages['Functional Hardware Large MD on SSD'] = getFunctionalTestStage( name: 'Functional Hardware Large MD on SSD', pragma_suffix: '-hw-large-md-on-ssd', label: params.FUNCTIONAL_HARDWARE_LARGE_LABEL, @@ -1215,8 +1208,34 @@ pipeline { run_if_landing: false, job_status: job_status_internal, image_version: 'el9.7' - ), - ) + ) + + List clusterBoxStages = [ +// [name: 'daos_test EC', tag: 'stage_daos_test_ec', pragma_suffix: '-cb-md-on-ssd-ec'], +// [name: 'daos_test Rebuild', tag: 'stage_daos_test_rebuild', pragma_suffix: '-cb-md-on-ssd-rebuild'], + [name: 'daos_test Other', tag: 'stage_daos_test', pragma_suffix: '-cb-md-on-ssd-daos-test'], + [name: 'FTest', tag: 'stage_ftest', pragma_suffix: '-cb-md-on-ssd-ftest'], + ] + + clusterBoxStages.each { cfg -> + String stageKey = "Functional Cluster Box ${cfg.name}" + hwStages[stageKey] = getFunctionalTestStage( + name: stageKey, + pragma_suffix: cfg.pragma_suffix, + label: params.FUNCTIONAL_CLUSTER_BOX_LABEL, + next_version: next_version(), + stage_tags: "cb,medium,${cfg.tag}", + default_tags: startedByTimer() ? 'pr daily_regression' : 'pr', + nvme: 'auto_md_on_ssd', + image_version: 'el9.7', + node_count: 5, + run_if_pr: true, + run_if_landing: false, + job_status: job_status_internal + ) + } + + parallel(hwStages) } } } // stage('Test Hardware') diff --git a/ci/gen_commit_pragmas.py b/ci/gen_commit_pragmas.py index 1dbdba0cb6b..ecddd33d30c 100755 --- a/ci/gen_commit_pragmas.py +++ b/ci/gen_commit_pragmas.py @@ -8,6 +8,7 @@ Generate default commit pragmas. """ +import ast import importlib.util import os import re @@ -145,12 +146,75 @@ def read_commit_pragma_mapping(): return config -def __get_test_tag(commit_pragma_mapping, paths, default='pr'): +def _strip_docstrings(tree): + """Remove docstring nodes from an AST tree. + + This modifies the tree in place, replacing docstring nodes with ``ast.Pass()``. + + Args: + tree (ast.AST): the AST tree to modify + + Returns: + ast.AST: the modified tree + """ + for node in ast.walk(tree): + if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef, ast.Module)): + if (node.body + and isinstance(node.body[0], ast.Expr) + and isinstance(node.body[0].value, ast.Constant) + and isinstance(node.body[0].value.value, str)): + node.body[0] = ast.Pass() + return tree + + +def _has_code_changes(path, target): + """Check if a Python file has changes beyond comments and docstrings. + + Uses AST comparison to determine if actual executable code was modified. + Comments are inherently ignored by the AST parser, and docstrings are + explicitly stripped before comparison. + + Args: + path (str): absolute path to the file + target (str): git commit to compare against + + Returns: + bool: True if code changes exist, False if only comments/docstrings changed + """ + git_root = git_root_dir() + rel_path = os.path.relpath(path, git_root) + + # Get old content from git + result = subprocess.run( + ['git', 'show', f'{target}:{rel_path}'], + stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=git_root) + if result.returncode != 0: + return True # New file or not in git + + old_content = result.stdout.decode() + + # Get new content from disk + try: + with open(path) as f: + new_content = f.read() + except FileNotFoundError: + return True # Deleted file + + try: + old_tree = _strip_docstrings(ast.parse(old_content)) + new_tree = _strip_docstrings(ast.parse(new_content)) + return ast.dump(old_tree) != ast.dump(new_tree) + except SyntaxError: + return True # Can't parse, assume code changed + + +def __get_test_tag(commit_pragma_mapping, paths, target=None, default='pr'): """Get the Test-tag pragma. Args: commit_pragma_mapping (dict): full commit pragma mapping config paths (list): paths to get tags for + target (str): git commit to compare against for detecting code vs comment changes default (str): default tag to use if a path does not have a test-tag config Returns: @@ -172,12 +236,17 @@ def __get_test_tag(commit_pragma_mapping, paths, default='pr'): } _handler = test_tag_config['handler'] if _handler == 'FtestTagMap': - # Special ftest handling - try: - all_tags.update(ftest_tag_map.minimal_tags(path)) - except KeyError: - # Use default from config + # Special ftest handling - only use class-level tags if + # actual code was changed, not just comments or docstrings + # (e.g. avocado tag changes) + if target and not _has_code_changes(path, target): all_tags.update(test_tag_config['tags'].split(' ')) + else: + try: + all_tags.update(ftest_tag_map.minimal_tags(path)) + except KeyError: + # Use default from config + all_tags.update(test_tag_config['tags'].split(' ')) elif _handler == 'direct': # Use direct tags from config all_tags.update(test_tag_config['tags'].split(' ')) @@ -251,7 +320,7 @@ def gen_commit_pragmas(target): commit_pragma_mapping = read_commit_pragma_mapping() - test_tag = __get_test_tag(commit_pragma_mapping, modified_files) + test_tag = __get_test_tag(commit_pragma_mapping, modified_files, target=target) if test_tag: pragmas['Test-tag'] = test_tag diff --git a/src/tests/ftest/aggregation/basic.py b/src/tests/ftest/aggregation/basic.py index 61b389faaad..587472e6e96 100644 --- a/src/tests/ftest/aggregation/basic.py +++ b/src/tests/ftest/aggregation/basic.py @@ -55,7 +55,7 @@ def test_basic_aggregation(self): :avocado: tags=all,pr,daily_regression :avocado: tags=hw,medium :avocado: tags=aggregation,daosio,ior - :avocado: tags=DaosAggregationBasic,test_basic_aggregation + :avocado: tags=DaosAggregationBasic,test_basic_aggregation,stage_ftest """ # Create pool and container self.update_ior_cmd_with_pool() diff --git a/src/tests/ftest/aggregation/basic.yaml b/src/tests/ftest/aggregation/basic.yaml index 385eadea7e0..0a27a8bb5fd 100644 --- a/src/tests/ftest/aggregation/basic.yaml +++ b/src/tests/ftest/aggregation/basic.yaml @@ -3,6 +3,7 @@ hosts: test_clients: 2 timeout: 540 server_config: + system_ram_reserved: 16 name: daos_server engines_per_host: 1 engines: diff --git a/src/tests/ftest/aggregation/checksum.py b/src/tests/ftest/aggregation/checksum.py index b6320e19ebe..2f82b2d1bbe 100644 --- a/src/tests/ftest/aggregation/checksum.py +++ b/src/tests/ftest/aggregation/checksum.py @@ -23,7 +23,9 @@ def get_nvme_free_space(self): return free_space def test_aggregationchecksum(self): - """Jira ID: DAOS-4332. + """ + +Jira ID: DAOS-4332. Test Description: Verify Aggregated extends have valid checksum. Use Cases: @@ -35,10 +37,12 @@ def test_aggregationchecksum(self): Allow the aggregation to finish. Run IOR again this time to read back the data with read verify option enabled. - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=daosio,checksum,ior - :avocado: tags=AggregationChecksum,test_aggregationchecksum +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium +:avocado: tags=daosio,checksum,ior +:avocado: tags=AggregationChecksum,test_aggregationchecksum,stage_ftest + + """ # test params diff --git a/src/tests/ftest/aggregation/punching.py b/src/tests/ftest/aggregation/punching.py index 8e12b466aef..b6ec51eae4d 100644 --- a/src/tests/ftest/aggregation/punching.py +++ b/src/tests/ftest/aggregation/punching.py @@ -31,7 +31,7 @@ def test_aggregation_punching(self): :avocado: tags=all,pr,daily_regression :avocado: tags=hw,medium :avocado: tags=aggregation,mdtest - :avocado: tags=AggregationPunching,test_aggregation_punching + :avocado: tags=AggregationPunching,test_aggregation_punching,stage_ftest """ if self.pool is None: self.add_pool(connect=False) diff --git a/src/tests/ftest/container/snapshot_aggregation.py b/src/tests/ftest/container/snapshot_aggregation.py index faac813e4ad..a7cd8456f62 100644 --- a/src/tests/ftest/container/snapshot_aggregation.py +++ b/src/tests/ftest/container/snapshot_aggregation.py @@ -35,7 +35,8 @@ def update_free_space(self): }) def test_snapshot_aggregation(self): - """JIRA ID: DAOS-3751. + """ +JIRA ID: DAOS-3751. Test Description: Verify snapshot aggregation with 2 servers and 6 clients (CI limit). @@ -46,7 +47,8 @@ def test_snapshot_aggregation(self): :avocado: tags=all,pr,daily_regression :avocado: tags=hw,medium :avocado: tags=container,snap - :avocado: tags=SnapshotAggregation,test_snapshot_aggregation + :avocado: tags=SnapshotAggregation,test_snapshot_aggregation,stage_ftest + """ # Create a pool and a container that spans the 2 servers. self.update_ior_cmd_with_pool() diff --git a/src/tests/ftest/control/daos_server_helper.py b/src/tests/ftest/control/daos_server_helper.py index bfdac007d95..79cd93e471e 100644 --- a/src/tests/ftest/control/daos_server_helper.py +++ b/src/tests/ftest/control/daos_server_helper.py @@ -25,16 +25,18 @@ class DaosPrivHelperTest(TestWithServers): """ def test_daos_server_helper_format(self): - """JIRA ID: DAOS-2895. + """ +JIRA ID: DAOS-2895. Test Description: Test daos_server_helper functionality to perform format privileged operations while daos_server is run as normal user. :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=control,basic,daos_server_helper - :avocado: tags=DaosPrivHelperTest,test_daos_server_helper_format + :avocado: tags=DaosPrivHelperTest,test_daos_server_helper_format,stage_ftest + """ # Verify that daos_server_helper has the correct permissions # Get the result remotely with os.stat so the format is compatible with local code diff --git a/src/tests/ftest/control/dmg_telemetry_io_basic.py b/src/tests/ftest/control/dmg_telemetry_io_basic.py index c9e079c6208..a4a5375d547 100644 --- a/src/tests/ftest/control/dmg_telemetry_io_basic.py +++ b/src/tests/ftest/control/dmg_telemetry_io_basic.py @@ -76,15 +76,17 @@ def display_io_test_metrics(self, metrics_data): metrics_data[key]) def test_io_telemetry_metrics_basic(self): - """JIRA ID: DAOS-5241 + """ +JIRA ID: DAOS-5241 Create files of 500M and 1M with transfer size 1M to verify the DAOS engine IO telemetry basic metrics infrastructure. - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=control,telemetry,basic - :avocado: tags=TestWithTelemetryIOBasic,test_io_telemetry_metrics_basic + :avocado: tags=all,pr,daily_regression + :avocado: tags=hw,medium + :avocado: tags=control,telemetry,basic + :avocado: tags=TestWithTelemetryIOBasic,test_io_telemetry_metrics_basic,stage_ftest + """ block_sizes = self.params.get("block_sizes", "/run/*") transfer_sizes = self.params.get("transfer_sizes", "/run/*") diff --git a/src/tests/ftest/control/dmg_telemetry_nvme.py b/src/tests/ftest/control/dmg_telemetry_nvme.py index 0e211d8d617..898534a0f31 100644 --- a/src/tests/ftest/control/dmg_telemetry_nvme.py +++ b/src/tests/ftest/control/dmg_telemetry_nvme.py @@ -27,14 +27,16 @@ def display_nvme_test_metrics(self, metrics_data): "Initial " if key == 0 else "Test Loop {}".format(key), metrics_data[key]) def test_nvme_telemetry_metrics(self): - """JIRA ID: DAOS-7833. + """ +JIRA ID: DAOS-7833. Verify the telemetry engine NVMe metrics. - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=control,telemetry,nvme - :avocado: tags=TestWithTelemetryNvme,test_nvme_telemetry_metrics + :avocado: tags=all,pr,daily_regression + :avocado: tags=cb,medium + :avocado: tags=control,telemetry,nvme + :avocado: tags=TestWithTelemetryNvme,test_nvme_telemetry_metrics,stage_ftest + """ metrics_data = self.telemetry.get_nvme_metrics() self.display_nvme_test_metrics(metrics_data) @@ -62,14 +64,16 @@ def test_nvme_telemetry_metrics(self): self.log.info("------Test passed------") def test_telemetry_list_nvme(self): - """JIRA ID: DAOS-7667 / SRS-324. + """ +JIRA ID: DAOS-7667 / SRS-324. Test Description: Verify the dmg telemetry list command. :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=control,telemetry,nvme - :avocado: tags=TestWithTelemetryNvme,test_telemetry_list_nvme + :avocado: tags=TestWithTelemetryNvme,test_telemetry_list_nvme,stage_ftest + """ self.verify_telemetry_list() diff --git a/src/tests/ftest/daos_racer/simple.py b/src/tests/ftest/daos_racer/simple.py index 6227506c37d..88f00c1b350 100644 --- a/src/tests/ftest/daos_racer/simple.py +++ b/src/tests/ftest/daos_racer/simple.py @@ -15,7 +15,8 @@ class DaosRacerSimpleTest(TestWithServers): """ def test_daos_racer_simple(self): - """JIRA-3855: daos_racer/consistency checker test. + """ +JIRA-3855: daos_racer/consistency checker test. Test Description: The daos_racer test tool generates a bunch of simultaneous, @@ -31,7 +32,8 @@ def test_daos_racer_simple(self): :avocado: tags=all,pr,daily_regression :avocado: tags=hw,medium :avocado: tags=io,daos_racer - :avocado: tags=DaosRacerSimpleTest,test_daos_racer_simple + :avocado: tags=DaosRacerSimpleTest,test_daos_racer_simple,stage_ftest + """ dmg = self.get_dmg_command() self.assertGreater( diff --git a/src/tests/ftest/daos_test/rebuild.py b/src/tests/ftest/daos_test/rebuild.py index e1d8de4052b..6704721f987 100644 --- a/src/tests/ftest/daos_test/rebuild.py +++ b/src/tests/ftest/daos_test/rebuild.py @@ -16,7 +16,8 @@ class DaosCoreTestRebuild(DaosCoreBase): """ def test_rebuild_0to10(self): - """Jira ID: DAOS-2770 + """ +Jira ID: DAOS-2770 Test Description: Run daos_test -r -s3 -u subtests=0-10 @@ -25,14 +26,16 @@ def test_rebuild_0to10(self): Core tests for daos_test rebuild :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild - :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_0to10 + :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_0to10,stage_daos_test_rebuild + """ self.run_subtest() def test_rebuild_12to15(self): - """Jira ID: DAOS-2770 + """ +Jira ID: DAOS-2770 Test Description: Run daos_test -r -s3 -u subtests=12-15 @@ -41,14 +44,16 @@ def test_rebuild_12to15(self): Core tests for daos_test rebuild :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,2,medium + :avocado: tags=cb,2,medium :avocado: tags=unittest,rebuild - :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_12to15 + :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_12to15,stage_daos_test_rebuild + """ self.run_subtest() def test_rebuild_16(self): - """Jira ID: DAOS-2770 + """ +Jira ID: DAOS-2770 Test Description: Run daos_test -r -s3 -u subtests=16 @@ -57,14 +62,16 @@ def test_rebuild_16(self): Core tests for daos_test rebuild :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild - :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_16 + :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_16,stage_daos_test_rebuild + """ self.run_subtest() def test_rebuild_17(self): - """Jira ID: DAOS-2770 + """ +Jira ID: DAOS-2770 Test Description: Run daos_test -r -s3 -u subtests=17 @@ -73,14 +80,17 @@ def test_rebuild_17(self): Core tests for daos_test rebuild :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild - :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_17 + :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_17,stage_daos_test_rebuild + """ self.run_subtest() def test_rebuild_18(self): - """Jira ID: DAOS-2770 + """ + +Jira ID: DAOS-2770 Test Description: Run daos_test -r -s3 -u subtests=18 @@ -88,15 +98,18 @@ def test_rebuild_18(self): Use cases: Core tests for daos_test rebuild - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=unittest,rebuild - :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_18 +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium +:avocado: tags=unittest,rebuild +:avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_18,stage_daos_test_rebuild + + """ self.run_subtest() def test_rebuild_19(self): - """Jira ID: DAOS-2770 + """ +Jira ID: DAOS-2770 Test Description: Run daos_test -r -s3 -u subtests=19 @@ -105,14 +118,16 @@ def test_rebuild_19(self): Core tests for daos_test rebuild :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild - :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_19 + :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_19,stage_daos_test_rebuild + """ self.run_subtest() def test_rebuild_20(self): - """Jira ID: DAOS-2770 + """ +Jira ID: DAOS-2770 Test Description: Run daos_test -r -s3 -u subtests=20 @@ -121,14 +136,16 @@ def test_rebuild_20(self): Core tests for daos_test rebuild :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild - :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_20 + :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_20,stage_daos_test_rebuild + """ self.run_subtest() def test_rebuild_21(self): - """Jira ID: DAOS-2770 + """ +Jira ID: DAOS-2770 Test Description: Run daos_test -r -s3 -u subtests=21 @@ -137,14 +154,16 @@ def test_rebuild_21(self): Core tests for daos_test rebuild :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild - :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_21 + :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_21,stage_daos_test_rebuild + """ self.run_subtest() def test_rebuild_22(self): - """Jira ID: DAOS-2770 + """ +Jira ID: DAOS-2770 Test Description: Run daos_test -r -s3 -u subtests=22 @@ -153,14 +172,16 @@ def test_rebuild_22(self): Core tests for daos_test rebuild :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild - :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_22 + :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_22,stage_daos_test_rebuild + """ self.run_subtest() def test_rebuild_23(self): - """Jira ID: DAOS-2770 + """ +Jira ID: DAOS-2770 Test Description: Run daos_test -r -s3 -u subtests=23 @@ -169,14 +190,16 @@ def test_rebuild_23(self): Core tests for daos_test rebuild :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild - :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_23 + :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_23,stage_daos_test_rebuild + """ self.run_subtest() def test_rebuild_24(self): - """Jira ID: DAOS-2770 + """ +Jira ID: DAOS-2770 Test Description: Run daos_test -r -s3 -u subtests=24 @@ -185,14 +208,16 @@ def test_rebuild_24(self): Core tests for daos_test rebuild :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild - :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_24 + :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_24,stage_daos_test_rebuild + """ self.run_subtest() def test_rebuild_25(self): - """Jira ID: DAOS-2770 + """ +Jira ID: DAOS-2770 Test Description: Run daos_test -r -s3 -u subtests=25 @@ -201,14 +226,16 @@ def test_rebuild_25(self): Core tests for daos_test rebuild :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild - :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_25 + :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_25,stage_daos_test_rebuild + """ self.run_subtest() def test_rebuild_26(self): - """Jira ID: DAOS-2770 + """ +Jira ID: DAOS-2770 Test Description: Run daos_test -r -s3 -u subtests=26 @@ -217,14 +244,16 @@ def test_rebuild_26(self): Core tests for daos_test rebuild :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild - :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_26 + :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_26,stage_daos_test_rebuild + """ self.run_subtest() def test_rebuild_27(self): - """Jira ID: DAOS-2770 + """ +Jira ID: DAOS-2770 Test Description: Run daos_test -r -s3 -u subtests=27 @@ -233,14 +262,16 @@ def test_rebuild_27(self): Core tests for daos_test rebuild :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild - :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_27 + :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_27,stage_daos_test_rebuild + """ self.run_subtest() def test_rebuild_28(self): - """Jira ID: DAOS-2770 + """ +Jira ID: DAOS-2770 Test Description: Run daos_test -r -s3 -u subtests=28 @@ -249,14 +280,16 @@ def test_rebuild_28(self): Core tests for daos_test rebuild :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild - :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_28 + :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_28,stage_daos_test_rebuild + """ self.run_subtest() def test_rebuild_29(self): - """Jira ID: DAOS-2770 + """ +Jira ID: DAOS-2770 Test Description: Run daos_test -r -s5 -u subtests=29 @@ -265,14 +298,16 @@ def test_rebuild_29(self): Core tests for daos_test rebuild :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild - :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_29 + :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_29,stage_daos_test_rebuild + """ self.run_subtest() def test_rebuild_30(self): - """Jira ID: DAOS-2770 + """ +Jira ID: DAOS-2770 Test Description: Run daos_test -r -s5 -u subtests=30 @@ -281,9 +316,10 @@ def test_rebuild_30(self): Core tests for daos_test rebuild :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild - :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_30 + :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_30,stage_daos_test_rebuild + """ self.run_subtest() @@ -297,7 +333,7 @@ def test_rebuild_31(self): Core tests for daos_test rebuild :avocado: tags=all,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_31 """ @@ -313,7 +349,7 @@ def test_rebuild_32(self): Core tests for daos_test rebuild :avocado: tags=all,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_32 """ @@ -329,7 +365,7 @@ def test_rebuild_33(self): Core tests for daos_test rebuild :avocado: tags=all,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_33 """ @@ -345,7 +381,7 @@ def test_rebuild_34(self): Core tests for daos_test rebuild :avocado: tags=all,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_34 """ @@ -361,7 +397,7 @@ def test_rebuild_35(self): Core tests for daos_test rebuild :avocado: tags=all,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_35 """ @@ -377,7 +413,7 @@ def test_rebuild_36(self): Core tests for daos_test rebuild :avocado: tags=all,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_36 """ @@ -393,7 +429,7 @@ def test_rebuild_37(self): Core tests for daos_test rebuild :avocado: tags=all,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=unittest,rebuild :avocado: tags=DaosCoreTestRebuild,daos_test,daos_core_test_rebuild,test_rebuild_37 """ diff --git a/src/tests/ftest/daos_test/rebuild.yaml b/src/tests/ftest/daos_test/rebuild.yaml index 6f80a3e7dcc..a52b3925022 100644 --- a/src/tests/ftest/daos_test/rebuild.yaml +++ b/src/tests/ftest/daos_test/rebuild.yaml @@ -7,7 +7,9 @@ timeout: 800 timeouts: test_rebuild_0to10: 2000 test_rebuild_12to15: 1500 + test_rebuild_25: 1200 test_rebuild_27: 1500 + test_rebuild_28: 1200 test_rebuild_31: 400 test_rebuild_32: 400 test_rebuild_33: 200 diff --git a/src/tests/ftest/daos_test/suite.py b/src/tests/ftest/daos_test/suite.py index 3be9b5afe7b..f87529ef8cd 100644 --- a/src/tests/ftest/daos_test/suite.py +++ b/src/tests/ftest/daos_test/suite.py @@ -15,7 +15,9 @@ class DaosCoreTest(DaosCoreBase): """ def test_daos_degraded_mode(self): - """Jira ID: DAOS-1568 + """ + +Jira ID: DAOS-1568 Test Description: Run daos_test -d @@ -23,15 +25,18 @@ def test_daos_degraded_mode(self): 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 - :avocado: tags=DaosCoreTest,test_daos_degraded_mode +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_degraded_mode,stage_daos_test + + """ self.run_subtest() def test_daos_management(self): - """Jira ID: DAOS-1568 + """ +Jira ID: DAOS-1568 Test Description: Run daos_test -m @@ -43,11 +48,15 @@ def test_daos_management(self): :avocado: tags=hw,medium,provider :avocado: tags=daos_test,daos_core_test :avocado: tags=DaosCoreTest,test_daos_management + """ self.run_subtest() def test_daos_pool(self): - """Jira ID: DAOS-1568 + """ + + +Jira ID: DAOS-1568 Test Description: Run daos_test -p @@ -55,15 +64,21 @@ def test_daos_pool(self): 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 - :avocado: tags=DaosCoreTest,test_daos_pool +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_pool,stage_daos_test + + + """ self.run_subtest() def test_daos_container(self): - """Jira ID: DAOS-1568 + """ + + +Jira ID: DAOS-1568 Test Description: Run daos_test -c @@ -71,15 +86,22 @@ def test_daos_container(self): 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 - :avocado: tags=DaosCoreTest,test_daos_container +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_container,stage_daos_test + + + """ self.run_subtest() def test_daos_epoch(self): - """Jira ID: DAOS-1568 + """ + + + +Jira ID: DAOS-1568 Test Description: Run daos_test -e @@ -87,15 +109,23 @@ def test_daos_epoch(self): 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 - :avocado: tags=DaosCoreTest,test_daos_epoch +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_epoch,stage_daos_test + + + + """ self.run_subtest() def test_daos_single_rdg_tx(self): - """Jira ID: DAOS-1568 + """ + + + +Jira ID: DAOS-1568 Test Description: Run daos_test -t @@ -103,15 +133,23 @@ def test_daos_single_rdg_tx(self): 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 - :avocado: tags=DaosCoreTest,test_daos_single_rdg_tx +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_single_rdg_tx,stage_daos_test + + + + """ self.run_subtest() def test_daos_distributed_tx(self): - """Jira ID: DAOS-1568 + """ + + + +Jira ID: DAOS-1568 Test Description: Run daos_test -T @@ -119,15 +157,22 @@ def test_daos_distributed_tx(self): 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 - :avocado: tags=DaosCoreTest,test_daos_distributed_tx +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_distributed_tx,stage_daos_test + + + + """ self.run_subtest() def test_daos_verify_consistency(self): - """Jira ID: DAOS-1568 + """ + + +Jira ID: DAOS-1568 Test Description: Run daos_test -V @@ -135,15 +180,21 @@ def test_daos_verify_consistency(self): 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 - :avocado: tags=DaosCoreTest,test_daos_verify_consistency +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_verify_consistency,stage_daos_test + + + """ self.run_subtest() def test_daos_io(self): - """Jira ID: DAOS-1568 + """ + + +Jira ID: DAOS-1568 Test Description: Run daos_test -i @@ -151,15 +202,21 @@ def test_daos_io(self): 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 - :avocado: tags=DaosCoreTest,test_daos_io +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_io,stage_daos_test + + + """ self.run_subtest() def test_daos_ec_io(self): - """Jira ID: DAOS-1568 + """ + + +Jira ID: DAOS-1568 Test Description: Run daos_test -i -l"EC_4P2G1" @@ -167,15 +224,21 @@ def test_daos_ec_io(self): 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 - :avocado: tags=DaosCoreTest,test_daos_ec_io +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_ec_io,stage_daos_test + + + """ self.run_subtest() def test_daos_ec_obj(self): - """Jira ID: DAOS-1568 + """ + + +Jira ID: DAOS-1568 Test Description: Run daos_test -I @@ -183,15 +246,22 @@ def test_daos_ec_obj(self): 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 - :avocado: tags=DaosCoreTest,test_daos_ec_obj +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_ec_obj,stage_daos_test + + + """ self.run_subtest() def test_daos_object_array(self): - """Jira ID: DAOS-1568 + """ + + + +Jira ID: DAOS-1568 Test Description: Run daos_test -A @@ -199,15 +269,23 @@ def test_daos_object_array(self): 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 - :avocado: tags=DaosCoreTest,test_daos_object_array +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_object_array,stage_daos_test + + + + """ self.run_subtest() def test_daos_array(self): - """Jira ID: DAOS-1568 + """ + + + +Jira ID: DAOS-1568 Test Description: Run daos_test -D @@ -215,15 +293,23 @@ def test_daos_array(self): 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 - :avocado: tags=DaosCoreTest,test_daos_array +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_array,stage_daos_test + + + + """ self.run_subtest() def test_daos_kv(self): - """Jira ID: DAOS-1568 + """ + + + +Jira ID: DAOS-1568 Test Description: Run daos_test -K @@ -231,15 +317,23 @@ def test_daos_kv(self): 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 - :avocado: tags=DaosCoreTest,test_daos_kv +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_kv,stage_daos_test + + + + """ self.run_subtest() def test_daos_capability(self): - """Jira ID: DAOS-1568 + """ + + + +Jira ID: DAOS-1568 Test Description: Run daos_test -C @@ -247,15 +341,23 @@ def test_daos_capability(self): 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 - :avocado: tags=DaosCoreTest,test_daos_capability +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_capability,stage_daos_test + + + + """ self.run_subtest() def test_daos_epoch_recovery(self): - """Jira ID: DAOS-1568 + """ + + + +Jira ID: DAOS-1568 Test Description: Run daos_test -o @@ -263,15 +365,23 @@ def test_daos_epoch_recovery(self): 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 - :avocado: tags=DaosCoreTest,test_daos_epoch_recovery +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_epoch_recovery,stage_daos_test + + + + """ self.run_subtest() def test_daos_md_replication(self): - """Jira ID: DAOS-1568 + """ + + + +Jira ID: DAOS-1568 Test Description: Run daos_test -R @@ -279,15 +389,22 @@ def test_daos_md_replication(self): 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 - :avocado: tags=DaosCoreTest,test_daos_md_replication +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_md_replication,stage_daos_test + + + + """ self.run_subtest() def test_daos_rebuild_simple(self): - """Jira ID: DAOS-1568 + """ + + +Jira ID: DAOS-1568 Test Description: Run daos_test -v @@ -295,15 +412,22 @@ def test_daos_rebuild_simple(self): 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_rebuild_simple +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test,rebuild +:avocado: tags=DaosCoreTest,test_daos_rebuild_simple,stage_daos_test_rebuild + + + """ self.run_subtest() def test_daos_drain_simple(self): - """Jira ID: DAOS-1568 + """ + + + +Jira ID: DAOS-1568 Test Description: Run daos_test -b @@ -311,15 +435,23 @@ def test_daos_drain_simple(self): 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_drain_simple +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test,rebuild +:avocado: tags=DaosCoreTest,test_daos_drain_simple,stage_daos_test + + + + """ self.run_subtest() def test_daos_extend_simple(self): - """Jira ID: DAOS-1568 + """ + + + +Jira ID: DAOS-1568 Test Description: Run daos_test -B @@ -327,15 +459,23 @@ def test_daos_extend_simple(self): 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 +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test,rebuild +:avocado: tags=DaosCoreTest,test_daos_extend_simple,stage_daos_test + + + + """ self.run_subtest() def test_daos_rebuild_interactive(self): - """Jira ID: DAOS-17358 + """ + + + +Jira ID: DAOS-17358 Test Description: Run daos_test -j @@ -343,15 +483,23 @@ def test_daos_rebuild_interactive(self): 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_rebuild_interactive +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test,rebuild +:avocado: tags=DaosCoreTest,test_daos_rebuild_interactive,stage_daos_test_rebuild + + + + """ self.run_subtest() def test_daos_oid_allocator(self): - """Jira ID: DAOS-1568 + """ + + + +Jira ID: DAOS-1568 Test Description: Run daos_test -O @@ -359,15 +507,22 @@ def test_daos_oid_allocator(self): 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 - :avocado: tags=DaosCoreTest,test_daos_oid_allocator +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_oid_allocator,stage_daos_test + + + + """ self.run_subtest() def test_daos_checksum(self): - """Jira ID: DAOS-1568 + """ + + +Jira ID: DAOS-1568 Test Description: Run daos_test -z @@ -375,15 +530,20 @@ def test_daos_checksum(self): 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 - :avocado: tags=DaosCoreTest,test_daos_checksum +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_checksum,stage_daos_test + + + """ self.run_subtest() def test_daos_rebuild_ec(self): - """Jira ID: DAOS-1568 + """ + +Jira ID: DAOS-1568 Test Description: Run daos_test -S @@ -391,15 +551,21 @@ def test_daos_rebuild_ec(self): 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_rebuild_ec +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium,provider +:avocado: tags=daos_test,daos_core_test,rebuild +:avocado: tags=DaosCoreTest,test_daos_rebuild_ec,stage_daos_test_ec + + """ self.run_subtest() def test_daos_aggregate_ec(self): - """Jira ID: DAOS-1568 + """ + + + +Jira ID: DAOS-1568 Test Description: Run daos_test -Z @@ -407,15 +573,23 @@ def test_daos_aggregate_ec(self): 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 - :avocado: tags=DaosCoreTest,test_daos_aggregate_ec +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_aggregate_ec,stage_daos_test + + + + """ self.run_subtest() def test_daos_degraded_ec(self): - """Jira ID: DAOS-1568 + """ + + + +Jira ID: DAOS-1568 Test Description: Run daos_test -X @@ -423,15 +597,23 @@ def test_daos_degraded_ec(self): 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 - :avocado: tags=DaosCoreTest,test_daos_degraded_ec +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_degraded_ec,stage_daos_test + + + + """ self.run_subtest() def test_daos_dedup(self): - """Jira ID: DAOS-1568 + """ + + + +Jira ID: DAOS-1568 Test Description: Run daos_test -U @@ -439,15 +621,23 @@ def test_daos_dedup(self): 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 - :avocado: tags=DaosCoreTest,test_daos_dedup +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_dedup,stage_daos_test + + + + """ self.run_subtest() def test_daos_upgrade(self): - """Jira ID: DAOS-10681 + """ + + + +Jira ID: DAOS-10681 Test Description: Run daos_test -G @@ -455,15 +645,22 @@ def test_daos_upgrade(self): 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 - :avocado: tags=DaosCoreTest,test_daos_upgrade +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test +:avocado: tags=DaosCoreTest,test_daos_upgrade,stage_daos_test + + + + """ self.run_subtest() def test_daos_pipeline(self): - """Jira ID: DAOS-13160 + """ + + +Jira ID: DAOS-13160 Test Description: Run daos_test -P @@ -471,9 +668,12 @@ def test_daos_pipeline(self): 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,faults - :avocado: tags=DaosCoreTest,test_daos_pipeline +:avocado: tags=all,pr,daily_regression +:avocado: tags=cb,medium,provider +:avocado: tags=daos_test,daos_core_test,faults +:avocado: tags=DaosCoreTest,test_daos_pipeline,stage_daos_test + + + """ self.run_subtest() diff --git a/src/tests/ftest/daos_test/suite.single_host.yaml b/src/tests/ftest/daos_test/suite.single_host.yaml index 0ecec02dfaf..3272e72b62f 100644 --- a/src/tests/ftest/daos_test/suite.single_host.yaml +++ b/src/tests/ftest/daos_test/suite.single_host.yaml @@ -9,30 +9,30 @@ timeout: 600 timeouts: test_daos_degraded_mode: 450 test_daos_management: 110 - test_daos_pool: 180 + test_daos_pool: 480 test_daos_container: 450 - test_daos_epoch: 125 - test_daos_verify_consistency: 105 - test_daos_io: 290 - test_daos_ec_io: 450 - test_daos_ec_obj: 600 - test_daos_object_array: 105 - test_daos_array: 106 - test_daos_kv: 105 - test_daos_capability: 104 - test_daos_epoch_recovery: 104 - test_daos_md_replication: 104 - test_daos_rebuild_simple: 1800 + test_daos_epoch: 350 + test_daos_verify_consistency: 210 + test_daos_io: 450 + test_daos_ec_io: 700 + test_daos_ec_obj: 1200 + test_daos_object_array: 210 + test_daos_array: 210 + test_daos_kv: 210 + test_daos_capability: 210 + test_daos_epoch_recovery: 210 + test_daos_md_replication: 210 + test_daos_rebuild_simple: 2400 test_daos_drain_simple: 3600 - test_daos_extend_simple: 3600 + test_daos_extend_simple: 4500 test_daos_oid_allocator: 640 test_daos_checksum: 500 - test_daos_rebuild_ec: 6700 - test_daos_aggregate_ec: 200 + test_daos_rebuild_ec: 15000 + test_daos_aggregate_ec: 400 test_daos_degraded_ec: 1900 - test_daos_dedup: 220 - test_daos_upgrade: 300 - test_daos_pipeline: 60 + test_daos_dedup: 440 + test_daos_upgrade: 600 + test_daos_pipeline: 120 pool: size: 16G server_config: diff --git a/src/tests/ftest/daos_test/suite.yaml b/src/tests/ftest/daos_test/suite.yaml index dac9e11dfef..cc286561999 100644 --- a/src/tests/ftest/daos_test/suite.yaml +++ b/src/tests/ftest/daos_test/suite.yaml @@ -8,9 +8,9 @@ hosts: # (I'm looking at you "rebuild tests") timeout: 600 timeouts: - test_daos_degraded_mode: 450 + test_daos_degraded_mode: 700 test_daos_management: 110 - test_daos_pool: 240 + test_daos_pool: 480 test_daos_container: 700 test_daos_epoch: 125 test_daos_verify_consistency: 105 @@ -24,12 +24,12 @@ timeouts: test_daos_epoch_recovery: 104 test_daos_md_replication: 104 test_daos_rebuild_simple: 2400 - test_daos_drain_simple: 3720 + test_daos_drain_simple: 5400 test_daos_extend_simple: 3600 - test_daos_rebuild_interactive: 1185 + test_daos_rebuild_interactive: 1800 test_daos_oid_allocator: 640 test_daos_checksum: 500 - test_daos_rebuild_ec: 9000 + test_daos_rebuild_ec: 15000 test_daos_aggregate_ec: 200 test_daos_degraded_ec: 1900 test_daos_dedup: 220 @@ -68,7 +68,7 @@ server_config: storage: auto transport_config: allow_insecure: true - system_ram_reserved: 64 + system_ram_reserved: 16 agent_config: transport_config: diff --git a/src/tests/ftest/daos_vol/h5_suite.py b/src/tests/ftest/daos_vol/h5_suite.py index fd4d339fb86..3ede6ab5270 100644 --- a/src/tests/ftest/daos_vol/h5_suite.py +++ b/src/tests/ftest/daos_vol/h5_suite.py @@ -35,7 +35,7 @@ def test_daos_vol_mpich(self): :avocado: tags=all,pr,daily_regression :avocado: tags=hw,medium :avocado: tags=hdf5,daos_vol,vol,volunit - :avocado: tags=DaosVol,test_daos_vol_mpich + :avocado: tags=DaosVol,test_daos_vol_mpich,stage_ftest """ manager = get_job_manager(self, mpi_type="mpich") self.run_test(manager, "/usr/lib64/mpich/lib", "/usr/lib64/hdf5_vol_daos/mpich/tests") diff --git a/src/tests/ftest/dfuse/daos_build.py b/src/tests/ftest/dfuse/daos_build.py index 2d2300c9a55..1029e7376ea 100644 --- a/src/tests/ftest/dfuse/daos_build.py +++ b/src/tests/ftest/dfuse/daos_build.py @@ -241,7 +241,7 @@ def test_dfuse_daos_build_wb(self): :avocado: tags=all,pr,daily_regression :avocado: tags=hw,medium :avocado: tags=daosio,dfs,dfuse,daos_cmd - :avocado: tags=DaosBuild,test_dfuse_daos_build_wb + :avocado: tags=DaosBuild,test_dfuse_daos_build_wb,stage_ftest """ run_build_test(self, "writeback") diff --git a/src/tests/ftest/io/io_consistency.py b/src/tests/ftest/io/io_consistency.py index a7e76a32c82..37de8415c1c 100644 --- a/src/tests/ftest/io/io_consistency.py +++ b/src/tests/ftest/io/io_consistency.py @@ -14,7 +14,9 @@ class IoConsistency(IorTestBase): """ def test_ioconsistency(self): - """Jira ID: DAOS-4778. + """ + +Jira ID: DAOS-4778. Test Description: Run IOR first using DFS and then using POSIX to verify data @@ -31,11 +33,13 @@ def test_ioconsistency(self): work without issues. Repeat the same steps as above for SSF this time. - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=io,daosio,ior,dfuse - :avocado: tags=IoConsistency,test_ioconsistency - :avocado: tags=DAOS_5610 +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium +:avocado: tags=io,daosio,ior,dfuse +:avocado: tags=IoConsistency,test_ioconsistency +:avocado: tags=DAOS_5610,stage_ftest + + """ # test params apis_flags = self.params.get("api_flag", "/run/ior/io_consistency/*") diff --git a/src/tests/ftest/ior/small.py b/src/tests/ftest/ior/small.py index 920d1749844..8bec896cafb 100644 --- a/src/tests/ftest/ior/small.py +++ b/src/tests/ftest/ior/small.py @@ -16,7 +16,9 @@ class IorSmall(IorTestBase): """ def test_ior_small(self): - """Jira ID: DAOS-2715, DAOS-3657, DAOS-4909, DAOS-9947. + """ + +Jira ID: DAOS-2715, DAOS-3657, DAOS-4909, DAOS-9947. Test Description: Verify basic IOR functionality with various APIs. @@ -26,10 +28,12 @@ def test_ior_small(self): Repeat for various IOR APIs and configurations. Run ior with Read, Write, CheckWrite, CheckRead in FPP mode. - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=daosio,mpiio,checksum,mpich,dfuse,ior,dfs,hdf5 - :avocado: tags=IorSmall,test_ior_small +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium +:avocado: tags=daosio,mpiio,checksum,mpich,dfuse,ior,dfs,hdf5 +:avocado: tags=IorSmall,test_ior_small + + """ cncl_tickets = [] flags = self.params.get("ior_flags", '/run/ior/iorflags/*') diff --git a/src/tests/ftest/mdtest/small.py b/src/tests/ftest/mdtest/small.py index b58202a245c..c275fc634c2 100644 --- a/src/tests/ftest/mdtest/small.py +++ b/src/tests/ftest/mdtest/small.py @@ -15,7 +15,9 @@ class MdtestSmall(MdtestBase): """ def test_mdtest_small(self): - """Jira ID: DAOS-2493, DAOS-10054. + """ + +Jira ID: DAOS-2493, DAOS-10054. Test Description: Verify MDTest functionality with various configurations. @@ -23,10 +25,12 @@ def test_mdtest_small(self): Use Cases: Run MDTest with various APIs and configurations. - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=mdtest,checksum,dfs,dfuse - :avocado: tags=MdtestSmall,test_mdtest_small +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium +:avocado: tags=mdtest,checksum,dfs,dfuse +:avocado: tags=MdtestSmall,test_mdtest_small + + """ mdtest_params = self.params.get("mdtest_params", "/run/mdtest/*") self.run_mdtest_multiple_variants(mdtest_params) diff --git a/src/tests/ftest/mpiio/romio.py b/src/tests/ftest/mpiio/romio.py index a5a205c4df1..1bc515556d8 100644 --- a/src/tests/ftest/mpiio/romio.py +++ b/src/tests/ftest/mpiio/romio.py @@ -14,15 +14,19 @@ class Romio(MpiioTests): """ def test_romio(self): - """Test ID: DAOS-1994. + """ + +Test ID: DAOS-1994. Run Romio test provided in mpich package Testing various I/O functions provided in romio test suite - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=mpiio,mpich,romio - :avocado: tags=Romio,test_romio +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium +:avocado: tags=mpiio,mpich,romio +:avocado: tags=Romio,test_romio,stage_ftest + + """ # setting romio parameters test_repo = self.params.get("romio_repo", '/run/romio/') diff --git a/src/tests/ftest/mpiio/romio.yaml b/src/tests/ftest/mpiio/romio.yaml index c73387764d1..70981c60fb5 100644 --- a/src/tests/ftest/mpiio/romio.yaml +++ b/src/tests/ftest/mpiio/romio.yaml @@ -5,6 +5,7 @@ timeout: 150 # below mentioned path should be replaced by path of # romio test suite directory in CI nodes when available. server_config: + system_ram_reserved: 16 name: daos_server engines_per_host: 1 engines: diff --git a/src/tests/ftest/osa/offline_drain.py b/src/tests/ftest/osa/offline_drain.py index b7443e31144..b651a83b9d0 100644 --- a/src/tests/ftest/osa/offline_drain.py +++ b/src/tests/ftest/osa/offline_drain.py @@ -145,14 +145,18 @@ def run_offline_drain_test(self, num_pool, ranks, data=False, oclass=None, pool_ self.container.check() def test_osa_offline_drain(self): - """JIRA ID: DAOS-4750. + """ + +JIRA ID: DAOS-4750. Test Description: Validate Offline Drain - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=osa,osa_drain,offline_drain,checksum,ior - :avocado: tags=OSAOfflineDrain,test_osa_offline_drain +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium +:avocado: tags=osa,osa_drain,offline_drain,checksum,ior +:avocado: tags=OSAOfflineDrain,test_osa_offline_drain + + """ self.log.info("Offline Drain : Basic Drain") ranks = self.get_random_test_ranks() diff --git a/src/tests/ftest/osa/offline_reintegration.py b/src/tests/ftest/osa/offline_reintegration.py index d72e61002ac..fed9fc2503b 100644 --- a/src/tests/ftest/osa/offline_reintegration.py +++ b/src/tests/ftest/osa/offline_reintegration.py @@ -184,15 +184,19 @@ def run_offline_reintegration_test(self, num_pool, ranks, data=False, server_boo self.container.check() def test_osa_offline_reintegration_without_checksum(self): - """Test ID: DAOS-6923. + """ + +Test ID: DAOS-6923. Test Description: Validate Offline Reintegration without enabling checksum in container properties. - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=osa,offline_reintegration,ior - :avocado: tags=OSAOfflineReintegration,test_osa_offline_reintegration_without_checksum +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium +:avocado: tags=osa,offline_reintegration,ior +:avocado: tags=OSAOfflineReintegration,test_osa_offline_reintegration_without_checksum,stage_ftest + + """ self.test_with_checksum = self.params.get("test_with_checksum", '/run/checksum/*') self.log.info("Offline Reintegration : Without Checksum") @@ -214,14 +218,18 @@ def test_osa_offline_reintegration_multiple_pools(self): self.run_offline_reintegration_test(num_pool=5, data=True, ranks=ranks) def test_osa_offline_reintegration_server_stop(self): - """Test ID: DAOS-6748. + """ + +Test ID: DAOS-6748. Test Description: Validate Offline Reintegration with server stop - :avocado: tags=all,pr,full_regression - :avocado: tags=hw,medium - :avocado: tags=osa,checksum,offline_reintegration,ior - :avocado: tags=OSAOfflineReintegration,test_osa_offline_reintegration_server_stop +:avocado: tags=all,pr,full_regression +:avocado: tags=hw,medium +:avocado: tags=osa,checksum,offline_reintegration,ior +:avocado: tags=OSAOfflineReintegration,test_osa_offline_reintegration_server_stop,stage_ftest + + """ self.log.info("Offline Reintegration : System Start/Stop") ranks = self.get_random_test_ranks() diff --git a/src/tests/ftest/osa/offline_reintegration.yaml b/src/tests/ftest/osa/offline_reintegration.yaml index ddca2f23e18..a87733b4848 100644 --- a/src/tests/ftest/osa/offline_reintegration.yaml +++ b/src/tests/ftest/osa/offline_reintegration.yaml @@ -13,6 +13,7 @@ setup: skip_add_log_msg: true server_config: + system_ram_reserved: 16 name: daos_server engines_per_host: 2 engines: diff --git a/src/tests/ftest/osa/online_drain.py b/src/tests/ftest/osa/online_drain.py index f044ad38af5..9bb62833ef4 100644 --- a/src/tests/ftest/osa/online_drain.py +++ b/src/tests/ftest/osa/online_drain.py @@ -120,7 +120,7 @@ def test_osa_online_drain(self): :avocado: tags=hw,medium :avocado: tags=osa,checksum :avocado: tags=osa_drain,online_drain,online_drain_with_csum - :avocado: tags=OSAOnlineDrain,test_osa_online_drain + :avocado: tags=OSAOnlineDrain,test_osa_online_drain,stage_ftest """ self.log.info("Online Drain : With Checksum") ranks = self.get_random_test_ranks() @@ -135,7 +135,7 @@ def test_osa_online_drain_no_csum(self): :avocado: tags=hw,medium :avocado: tags=osa :avocado: tags=osa_drain,online_drain,online_drain_without_csum - :avocado: tags=OSAOnlineDrain,test_osa_online_drain_no_csum + :avocado: tags=OSAOnlineDrain,test_osa_online_drain_no_csum,stage_ftest """ self.log.info("Online Drain : No Checksum") self.test_with_checksum = self.params.get("test_with_checksum", @@ -152,7 +152,7 @@ def test_osa_online_drain_oclass(self): :avocado: tags=hw,medium :avocado: tags=osa,checksum :avocado: tags=osa_drain,online_drain,online_drain_oclass - :avocado: tags=OSAOnlineDrain,test_osa_online_drain_oclass + :avocado: tags=OSAOnlineDrain,test_osa_online_drain_oclass,stage_ftest """ self.log.info("Online Drain : Oclass") ranks = self.get_random_test_ranks() @@ -168,7 +168,7 @@ def test_osa_online_drain_with_aggregation(self): :avocado: tags=hw,medium :avocado: tags=osa,checksum :avocado: tags=osa_drain,online_drain,online_drain_with_aggregation - :avocado: tags=OSAOnlineDrain,test_osa_online_drain_with_aggregation + :avocado: tags=OSAOnlineDrain,test_osa_online_drain_with_aggregation,stage_ftest """ self.log.info("Online Drain : Aggregation") self.test_during_aggregation = self.params.get("test_with_aggregation", @@ -177,15 +177,19 @@ def test_osa_online_drain_with_aggregation(self): self.run_online_drain_test(num_pool=1, ranks=ranks) def test_osa_online_drain_mdtest(self): - """Test ID: DAOS-4750 + """ + +Test ID: DAOS-4750 Test Description: Validate Online drain with mdtest running during the testing. - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=osa,checksum - :avocado: tags=osa_drain,online_drain,online_drain_mdtest - :avocado: tags=OSAOnlineDrain,test_osa_online_drain_mdtest +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium +:avocado: tags=osa,checksum +:avocado: tags=osa_drain,online_drain,online_drain_mdtest +:avocado: tags=OSAOnlineDrain,test_osa_online_drain_mdtest,stage_ftest + + """ self.log.info("Online Drain : With Mdtest") ranks = self.get_random_test_ranks() diff --git a/src/tests/ftest/osa/online_drain.yaml b/src/tests/ftest/osa/online_drain.yaml index 2f46b283f0a..23620b7a968 100644 --- a/src/tests/ftest/osa/online_drain.yaml +++ b/src/tests/ftest/osa/online_drain.yaml @@ -10,6 +10,7 @@ job_manager: skip_add_log_msg: true server_config: + system_ram_reserved: 16 name: daos_server engines_per_host: 2 engines: diff --git a/src/tests/ftest/osa/online_extend.py b/src/tests/ftest/osa/online_extend.py index d8c8b18e607..02030abcae6 100644 --- a/src/tests/ftest/osa/online_extend.py +++ b/src/tests/ftest/osa/online_extend.py @@ -161,27 +161,35 @@ def run_online_extend_test(self, num_pool, racer=False, oclass=None, app_name="i self.container.check() def test_osa_online_extend(self): - """Test ID: DAOS-4751. + """ + +Test ID: DAOS-4751. Test Description: Validate Online extend with checksum enabled. - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=osa,checksum,osa_extend,online_extend - :avocado: tags=OSAOnlineExtend,test_osa_online_extend +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium +:avocado: tags=osa,checksum,osa_extend,online_extend +:avocado: tags=OSAOnlineExtend,test_osa_online_extend,stage_ftest + + """ self.log.info("Online Extend : With Checksum") self.run_online_extend_test(1) def test_osa_online_extend_without_checksum(self): - """Test ID: DAOS-6645. + """ + +Test ID: DAOS-6645. Test Description: Validate Online extend without checksum enabled. - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=osa,checksum,osa_extend,online_extend - :avocado: tags=OSAOnlineExtend,test_osa_online_extend_without_checksum +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium +:avocado: tags=osa,checksum,osa_extend,online_extend +:avocado: tags=OSAOnlineExtend,test_osa_online_extend_without_checksum,stage_ftest + + """ self.log.info("Online Extend : Without Checksum") self.test_with_checksum = self.params.get("test_with_checksum", @@ -189,40 +197,52 @@ def test_osa_online_extend_without_checksum(self): self.run_online_extend_test(1) def test_osa_online_extend_oclass(self): - """Test ID: DAOS-6645. + """ + +Test ID: DAOS-6645. Test Description: Validate Online extend with different object class. - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=osa,checksum,osa_extend,online_extend - :avocado: tags=OSAOnlineExtend,test_osa_online_extend_oclass +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium +:avocado: tags=osa,checksum,osa_extend,online_extend +:avocado: tags=OSAOnlineExtend,test_osa_online_extend_oclass,stage_ftest + + """ self.log.info("Online Extend : Oclass") self.run_online_extend_test(1, oclass=self.test_oclass[0]) def test_osa_online_extend_mdtest(self): - """Test ID: DAOS-6645. + """ + +Test ID: DAOS-6645. Test Description: Validate Online extend with mdtest application. - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=osa,checksum,osa_extend,online_extend - :avocado: tags=OSAOnlineExtend,test_osa_online_extend_mdtest +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium +:avocado: tags=osa,checksum,osa_extend,online_extend +:avocado: tags=OSAOnlineExtend,test_osa_online_extend_mdtest,stage_ftest + + """ self.log.info("Online Extend : Mdtest") self.run_online_extend_test(1, app_name="mdtest") def test_osa_online_extend_with_aggregation(self): - """Test ID: DAOS-6645. + """ + +Test ID: DAOS-6645. Test Description: Validate Online extend with aggregation on. - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=osa,checksum,osa_extend,online_extend - :avocado: tags=OSAOnlineExtend,test_osa_online_extend_with_aggregation +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium +:avocado: tags=osa,checksum,osa_extend,online_extend +:avocado: tags=OSAOnlineExtend,test_osa_online_extend_with_aggregation,stage_ftest + + """ self.log.info("Online Extend : Aggregation") self.test_during_aggregation = self.params.get("test_with_aggregation", diff --git a/src/tests/ftest/osa/online_extend.yaml b/src/tests/ftest/osa/online_extend.yaml index 2224177be92..1e885d47a96 100644 --- a/src/tests/ftest/osa/online_extend.yaml +++ b/src/tests/ftest/osa/online_extend.yaml @@ -20,6 +20,7 @@ setup: skip_add_log_msg: true server_config: + system_ram_reserved: 16 name: daos_server engines_per_host: 2 engines: diff --git a/src/tests/ftest/osa/online_parallel_test.py b/src/tests/ftest/osa/online_parallel_test.py index cf473038f55..9c8aee0e6d6 100644 --- a/src/tests/ftest/osa/online_parallel_test.py +++ b/src/tests/ftest/osa/online_parallel_test.py @@ -188,13 +188,17 @@ def run_online_parallel_test(self, num_pool, racer=False): @skipForTicket("DAOS-6664") def test_osa_online_parallel_test(self): """ + + JIRA ID: DAOS-4752 Test Description: Runs multiple OSA commands/IO in parallel :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=osa,checksum,osa_parallel - :avocado: tags=OSAOnlineParallelTest,test_osa_online_parallel_test + :avocado: tags=OSAOnlineParallelTest,test_osa_online_parallel_test,stage_ftest + + """ self.run_online_parallel_test(1) diff --git a/src/tests/ftest/pool/create.py b/src/tests/ftest/pool/create.py index c40ff35d9ac..51181a380be 100644 --- a/src/tests/ftest/pool/create.py +++ b/src/tests/ftest/pool/create.py @@ -60,7 +60,8 @@ def test_create_max_pool(self): check_pool_creation(self, [pool], 120) def test_create_no_space_loop(self): - """JIRA ID: DAOS-3728. + """ +JIRA ID: DAOS-3728. Test Description: Create a pool using most of the capacity of one server on only one @@ -75,6 +76,7 @@ def test_create_no_space_loop(self): :avocado: tags=hw,medium :avocado: tags=pool :avocado: tags=PoolCreateTests,test_create_no_space_loop + """ # Define three pools to create: # - one pool using almost all of the available capacity of one server diff --git a/src/tests/ftest/pool/create_query.py b/src/tests/ftest/pool/create_query.py index 84593d7a547..147ea6b1dea 100644 --- a/src/tests/ftest/pool/create_query.py +++ b/src/tests/ftest/pool/create_query.py @@ -24,7 +24,8 @@ def setUp(self): super().setUp() def test_create_and_query(self): - """JIRA ID: DAOS-10339 + """ +JIRA ID: DAOS-10339 Test Description: Create a pool and check that the size of the response is close enough to the requested @@ -32,9 +33,10 @@ def test_create_and_query(self): pool create. :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=pool - :avocado: tags=PoolCreateQueryTests,test_create_and_query + :avocado: tags=PoolCreateQueryTests,test_create_and_query,stage_ftest + """ # Create pool pool = add_pool(self) diff --git a/src/tests/ftest/rebuild/pool_destroy_race.py b/src/tests/ftest/rebuild/pool_destroy_race.py index f225f526f4a..702109ede76 100644 --- a/src/tests/ftest/rebuild/pool_destroy_race.py +++ b/src/tests/ftest/rebuild/pool_destroy_race.py @@ -21,7 +21,9 @@ class RbldPoolDestroyWithIO(TestWithServers): """ def test_pool_destroy_with_io(self): - """Jira ID: DAOS-3794. + """ + +Jira ID: DAOS-3794. Test Description: Destroy pool when rebuild is ongoing. I/O performed using IOR. @@ -34,10 +36,12 @@ def test_pool_destroy_with_io(self): Destroy Pool during rebuild. Re-create pool on remaining ranks. - :avocado: tags=all,pr - :avocado: tags=hw,medium - :avocado: tags=pool,rebuild,ior - :avocado: tags=RbldPoolDestroyWithIO,test_pool_destroy_with_io +:avocado: tags=all,pr +:avocado: tags=cb,medium +:avocado: tags=pool,rebuild,ior +:avocado: tags=RbldPoolDestroyWithIO,test_pool_destroy_with_io,stage_ftest + + """ containers = [] diff --git a/src/tests/ftest/scrubber/basic.py b/src/tests/ftest/scrubber/basic.py index e4f6b85ef06..0fcae98140a 100644 --- a/src/tests/ftest/scrubber/basic.py +++ b/src/tests/ftest/scrubber/basic.py @@ -35,7 +35,9 @@ def run_scrubber_basic(self): self.log.info("------Test passed------") def test_scrubber_disabled_during_pool_creation(self): - """JIRA ID: DAOS-7371 + """ + +JIRA ID: DAOS-7371 1. Create a test pool without scrubber properties 2. Enable scrubber on a test pool and gather @@ -44,11 +46,13 @@ def test_scrubber_disabled_during_pool_creation(self): scrubber statistics 3. Disable checksum on a container and run IOR. Gather scrubber statistics. - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=scrubber - :avocado: tags=TestWithScrubberBasic,test_scrubber_disabled_during_pool_creation +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium +:avocado: tags=scrubber +:avocado: tags=TestWithScrubberBasic,test_scrubber_disabled_during_pool_creation,stage_ftest + + """ other_properties = self.params.get("other_properties", '/run/pool/*') @@ -62,7 +66,9 @@ def test_scrubber_disabled_during_pool_creation(self): self.run_scrubber_basic() def test_scrubber_enabled_during_pool_creation(self): - """JIRA ID: DAOS-7371 + """ + +JIRA ID: DAOS-7371 1. Create a test pool with scrubber properties 2. Enable scrubber on a test pool creation. @@ -70,11 +76,13 @@ def test_scrubber_enabled_during_pool_creation(self): scrubber statistics 3. Disable checksum on a container and run IOR. Gather scrubber statistics. - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=scrubber - :avocado: tags=TestWithScrubberBasic,test_scrubber_enabled_during_pool_creation +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium +:avocado: tags=scrubber +:avocado: tags=TestWithScrubberBasic,test_scrubber_enabled_during_pool_creation,stage_ftest + + """ pool_properties = self.params.get("properties", '/run/pool/*') other_properties = self.params.get("other_properties", '/run/pool/*') diff --git a/src/tests/ftest/scrubber/basic.yaml b/src/tests/ftest/scrubber/basic.yaml index 60a98eb3142..784997a351c 100644 --- a/src/tests/ftest/scrubber/basic.yaml +++ b/src/tests/ftest/scrubber/basic.yaml @@ -8,6 +8,7 @@ setup: start_servers_once: false server_config: + system_ram_reserved: 16 name: daos_server engines_per_host: 2 engines: diff --git a/src/tests/ftest/scrubber/csum_fault.py b/src/tests/ftest/scrubber/csum_fault.py index 431e7170327..ecbc239c011 100644 --- a/src/tests/ftest/scrubber/csum_fault.py +++ b/src/tests/ftest/scrubber/csum_fault.py @@ -16,15 +16,19 @@ class TestWithScrubberFault(TestWithScrubber): :avocado: recursive """ def test_scrubber_csum_fault(self): - """JIRA ID: DAOS-7333 + """ + +JIRA ID: DAOS-7333 1. Create checksum faults and see whether scrubber finds them. - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=scrubber,faults - :avocado: tags=TestWithScrubberFault,test_scrubber_csum_fault +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium +:avocado: tags=scrubber,faults +:avocado: tags=TestWithScrubberFault,test_scrubber_csum_fault,stage_ftest + + """ flags = self.params.get("ior_flags", '/run/ior/iorflags/*') apis = self.params.get("ior_api", '/run/ior/iorflags/*') diff --git a/src/tests/ftest/scrubber/csum_fault.yaml b/src/tests/ftest/scrubber/csum_fault.yaml index 407d8b7b414..b42265d8750 100644 --- a/src/tests/ftest/scrubber/csum_fault.yaml +++ b/src/tests/ftest/scrubber/csum_fault.yaml @@ -8,6 +8,7 @@ setup: start_servers_once: false server_config: + system_ram_reserved: 16 name: daos_server engines_per_host: 2 engines: diff --git a/src/tests/ftest/scrubber/target_auto_eviction.py b/src/tests/ftest/scrubber/target_auto_eviction.py index d602b0405c3..458d8055014 100644 --- a/src/tests/ftest/scrubber/target_auto_eviction.py +++ b/src/tests/ftest/scrubber/target_auto_eviction.py @@ -17,14 +17,18 @@ class TestWithScrubberTargetEviction(TestWithScrubber): :avocado: recursive """ def test_scrubber_ssd_auto_eviction(self): - """JIRA ID: DAOS-7300 + """ + +JIRA ID: DAOS-7300 1. Create checksum faults above scrubber threshold and see whether SSD auto eviction works as expected. - :avocado: tags=all,pr,daily_regression - :avocado: tags=hw,medium - :avocado: tags=scrubber,faults - :avocado: tags=TestWithScrubberTargetEviction,test_scrubber_ssd_auto_eviction +:avocado: tags=all,pr,daily_regression +:avocado: tags=hw,medium +:avocado: tags=scrubber,faults +:avocado: tags=TestWithScrubberTargetEviction,test_scrubber_ssd_auto_eviction,stage_ftest + + """ pool_prop = self.params.get("properties", '/run/pool/*') cont_prop = self.params.get("properties", '/run/container/*') diff --git a/src/tests/ftest/scrubber/target_auto_eviction.yaml b/src/tests/ftest/scrubber/target_auto_eviction.yaml index dc1e80d4429..c0b5a1fd626 100644 --- a/src/tests/ftest/scrubber/target_auto_eviction.yaml +++ b/src/tests/ftest/scrubber/target_auto_eviction.yaml @@ -8,6 +8,7 @@ setup: start_servers_once: false server_config: + system_ram_reserved: 16 name: daos_server engines_per_host: 2 engines: diff --git a/src/tests/ftest/server/replay.py b/src/tests/ftest/server/replay.py index fb4fd23685f..faf2f17f826 100644 --- a/src/tests/ftest/server/replay.py +++ b/src/tests/ftest/server/replay.py @@ -77,7 +77,9 @@ def verify_snapshots(self, container, expected): sorted(expected), sorted(detected), 'Detected snapshots does not match expected') def test_restart(self): - """Verify data access after engine restart w/ WAL replay + w/ check pointing (DAOS-13009). + """ + +Verify data access after engine restart w/ WAL replay + w/ check pointing (DAOS-13009). Tests un-synchronized WAL & VOS @@ -90,10 +92,12 @@ def test_restart(self): 5) Restart each engine (dmg system start) 6) Verify the previously written data matches with an ior read - :avocado: tags=all,pr - :avocado: tags=hw,medium - :avocado: tags=server,replay - :avocado: tags=ReplayTests,test_restart +:avocado: tags=all,pr +:avocado: tags=hw,medium +:avocado: tags=server,replay +:avocado: tags=ReplayTests,test_restart,stage_ftest + + """ container = self.create_container() @@ -108,7 +112,8 @@ def test_restart(self): self.log_step('Test passed') def test_replay_posix(self): - """Verify POSIX data access after engine restart (DAOS-13010). + """ +Verify POSIX data access after engine restart (DAOS-13010). Steps: 0) Start 2 DAOS servers with 1 engines on each server (setup) @@ -125,7 +130,8 @@ def test_replay_posix(self): :avocado: tags=all,pr :avocado: tags=hw,medium :avocado: tags=server,replay - :avocado: tags=ReplayTests,test_replay_posix + :avocado: tags=ReplayTests,test_replay_posix,stage_ftest + """ container = self.create_container() diff --git a/src/tests/ftest/server/storage_tiers.py b/src/tests/ftest/server/storage_tiers.py index fad085cd0db..f780f510503 100644 --- a/src/tests/ftest/server/storage_tiers.py +++ b/src/tests/ftest/server/storage_tiers.py @@ -22,16 +22,18 @@ class StorageTiers(TestWithServers): """ def test_tiers(self): - """JIRA ID: DAOS-1525. + """ +JIRA ID: DAOS-1525. Test Description: Verify storage tiers are correctly obtained from the test yaml file. Does not test or rely on actual hardware being present. :avocado: tags=all,pr - :avocado: tags=hw,medium + :avocado: tags=cb,medium :avocado: tags=server,storage,storage_tiers - :avocado: tags=StorageTiers,test_tiers + :avocado: tags=StorageTiers,test_tiers,stage_ftest + """ expected = [] for engine in range(2): diff --git a/src/tests/ftest/util/collection_utils.py b/src/tests/ftest/util/collection_utils.py index 7c0d3ccf08d..fc05621ea6e 100644 --- a/src/tests/ftest/util/collection_utils.py +++ b/src/tests/ftest/util/collection_utils.py @@ -750,6 +750,7 @@ def update_jenkins_xml(logger, test, logs_dir, test_result): bool: True if all the xml updates were successful; False if there was error """ logger.info("Updating the xml test result files for use in Jenkins") + stage_name = get_junit_stage_name() # Read the test xml file xml_file = os.path.join(logs_dir, 'results.xml') @@ -759,7 +760,8 @@ def update_jenkins_xml(logger, test, logs_dir, test_result): # Include the functional test directory in the class name of the avocado test xml file launchable_xml = os.path.join(logs_dir, 'xunit1_results.xml') - if not update_test_xml(logger, test, xml_file, xml_data, launchable_xml, test_result): + if not update_test_xml( + logger, test, xml_file, xml_data, launchable_xml, test_result, stage_name): return False # Determine if this test produced any cmocka xml files @@ -782,12 +784,48 @@ def update_jenkins_xml(logger, test, logs_dir, test_result): # Include the functional test directory in the class name of the cmocka xml file if not update_cmocka_xml( - logger, test, cmocka_xml, cmocka_data, test_class, test_result): + logger, test, cmocka_xml, cmocka_data, test_class, test_result, + stage_name): return False return True -def update_test_xml(logger, test, xml_file, xml_data, launchable_xml, test_result): +def get_junit_stage_name(): + """Get a Jenkins stage name that is safe to use in JUnit class names. + + Returns: + str | None: sanitized stage name or None if no stage name is defined + """ + stage_name = os.environ.get("STAGE_NAME", "") + if not stage_name: + return None + stage_name = stage_name.strip() + if not stage_name: + return None + return re.sub(r"[^A-Za-z0-9_.-]+", "_", stage_name) + + +def get_junit_class_prefix(test, stage_name=None, test_class=None): + """Build the JUnit classname prefix for functional tests. + + Args: + test (TestInfo): the test information + stage_name (str, optional): sanitized Jenkins stage name + test_class (str, optional): avocado test class name + + Returns: + str: classname prefix to use when updating test xml + """ + class_prefix = "FTEST_" + if stage_name: + class_prefix = f"{stage_name}/{class_prefix}." + class_prefix = f"{class_prefix}{test.directory}" + if test_class: + class_prefix = f"{class_prefix}.{test_class}" + return class_prefix + + +def update_test_xml(logger, test, xml_file, xml_data, launchable_xml, test_result, stage_name=None): """Update the class name the avocado test results xml file. Also create a launchable xml file from the original avocado test results.xml file data where @@ -801,6 +839,7 @@ def update_test_xml(logger, test, xml_file, xml_data, launchable_xml, test_resul xml_data (str): the data to modify and write to the xml file launchable_xml (str) the launchable test results xml file test_result (TestResult): the test result used to update the status of the test + stage_name (str, optional): sanitized Jenkins stage name Returns: bool: False if there problems updating the test results xml file; True otherwise @@ -809,8 +848,9 @@ def update_test_xml(logger, test, xml_file, xml_data, launchable_xml, test_resul # Update the class name to include the functional test directory pattern = 'classname="' - replacement = f'classname="FTEST_{test.directory}.' - if not update_xml(logger, xml_file, pattern, replacement, xml_data, test_result): + replacement = f'classname="{get_junit_class_prefix(test, stage_name)}.' + xml_data = replace_xml(logger, xml_file, pattern, replacement, xml_data, test_result) + if not xml_data: return False # Create an copy of the test xml for Launchable processing @@ -820,7 +860,8 @@ def update_test_xml(logger, test, xml_file, xml_data, launchable_xml, test_resul return update_xml(logger, launchable_xml, pattern, replacement, xml_data, test_result) -def update_cmocka_xml(logger, test, cmocka_xml, cmocka_data, test_class, test_result): +def update_cmocka_xml(logger, test, cmocka_xml, cmocka_data, test_class, test_result, + stage_name=None): """Update the class name in the cmocka test result xml file. Args: @@ -830,6 +871,7 @@ def update_cmocka_xml(logger, test, cmocka_xml, cmocka_data, test_class, test_re cmocka_data (str): the data to modify and write to the cmocka xml file test_class (str): avocado test class name test_result (TestResult): the test result used to update the status of the test + stage_name (str, optional): sanitized Jenkins stage name Returns: bool: False if there problems updating the cmocka results xml file; True otherwise @@ -855,12 +897,14 @@ def update_cmocka_xml(logger, test, cmocka_xml, cmocka_data, test_class, test_re test_result.fail_test(logger, "Process", message, sys.exc_info()) return False pattern = ' Date: Thu, 4 Jun 2026 15:46:17 -0600 Subject: [PATCH 2/7] SRE-3775 build: Introduce Cluster Box Stages - Combined Unit Test and Test stages - New Cluster Box stages - Changed gen_commit_pragmas.py to only include tests automatically if actual code changed ... not just comments. - Increased timeouts - Added pragma to set build description Signed-off-by: Ryon Jensen Build-description: Targetting ci_vm_hdr-232vm01-05 Cancel-prev-build: false Skip-unit-test: true Skip-unit-test-memcheck: true Skip-nlt: true Skip-fault-injection-test: true Skip-test-el-9-rpms: true Skip-test-leap-15-rpms: true Skip-func-test-el8: true Skip-func-test-el9: true Skip-func-test-leap15: true Skip-func-test-hw-medium: true Skip-func-test-hw-medium-md-on-ssd: true Skip-func-test-hw-medium-vmd: true Skip-func-test-hw-medium-verbs-provider: true Skip-func-test-hw-medium-verbs-provider-md-on-ssd: true Skip-func-test-hw-large: true Skip-func-test-hw-large-md-on-ssd: true Skip-python-bandit-check: true Skip-func-test-cb-md-on-ssd-daos-test: false Skip-func-test-cb-md-on-ssd-ftest: false Skip-build: true PR-repos: daos@ryon-jensen/speed_of_ci:165 Test-label-cb-md-on-ssd-daos-test: ci_vm_hdr-232vm01-05 Test-label-cb-md-on-ssd-ftest: ci_vm_hdr-232vm01-05 Signed-off-by: Ryon Jensen --- ryon_just_for_changes.txt | 1 + 1 file changed, 1 insertion(+) create mode 100644 ryon_just_for_changes.txt diff --git a/ryon_just_for_changes.txt b/ryon_just_for_changes.txt new file mode 100644 index 00000000000..21fb1eca31e --- /dev/null +++ b/ryon_just_for_changes.txt @@ -0,0 +1 @@ +changed \ No newline at end of file From d91c85305101f841bac7dc888c31b62e516d7f17 Mon Sep 17 00:00:00 2001 From: Ryon Jensen Date: Thu, 4 Jun 2026 15:56:31 -0600 Subject: [PATCH 3/7] SRE-3775 build: Introduce Cluster Box Stages - Combined Unit Test and Test stages - New Cluster Box stages - Changed gen_commit_pragmas.py to only include tests automatically if actual code changed ... not just comments. - Increased timeouts - Added pragma to set build description Signed-off-by: Ryon Jensen Build-description: Experiment with skip-build and targeting ci_vm_hdr-232vm01-05 Cancel-prev-build: false Skip-unit-test: true Skip-unit-test-memcheck: true Skip-nlt: true Skip-fault-injection-test: true Skip-test-el-9-rpms: true Skip-test-leap-15-rpms: true Skip-func-test-el8: true Skip-func-test-el9: true Skip-func-test-leap15: true Skip-func-test-hw-medium: true Skip-func-test-hw-medium-md-on-ssd: true Skip-func-test-hw-medium-vmd: true Skip-func-test-hw-medium-verbs-provider: true Skip-func-test-hw-medium-verbs-provider-md-on-ssd: true Skip-func-test-hw-large: true Skip-func-test-hw-large-md-on-ssd: true Skip-python-bandit-check: true Skip-func-test-cb-md-on-ssd-daos-test: false Skip-func-test-cb-md-on-ssd-ftest: false Skip-build-el8-gcc: true Skip-build-el9-gcc: true Skip-build-leap15-gcc: true PR-repos: daos@ryon-jensen/speed_of_ci:165 Test-label-cb-md-on-ssd-daos-test: ci_vm_hdr-232vm01-05 Test-label-cb-md-on-ssd-ftest: ci_vm_hdr-232vm01-05 Signed-off-by: Ryon Jensen --- ryon_just_for_changes.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ryon_just_for_changes.txt b/ryon_just_for_changes.txt index 21fb1eca31e..5f4cf768d2a 100644 --- a/ryon_just_for_changes.txt +++ b/ryon_just_for_changes.txt @@ -1 +1 @@ -changed \ No newline at end of file +changed again \ No newline at end of file From 62c55b13566436326f081334c587b009f898accf Mon Sep 17 00:00:00 2001 From: Ryon Jensen Date: Fri, 5 Jun 2026 09:53:19 -0600 Subject: [PATCH 4/7] SRE-3775 build: Introduce Cluster Box Stages - Combined Unit Test and Test stages - New Cluster Box stages - Changed gen_commit_pragmas.py to only include tests automatically if actual code changed ... not just comments. - Increased timeouts - Added pragma to set build description Signed-off-by: Ryon Jensen Build-description: Experiment with skip-build and targeting ci_vm_hdr-232vm01-05 Cancel-prev-build: false Skip-unit-test: true Skip-unit-test-memcheck: true Skip-nlt: true Skip-fault-injection-test: true Skip-test-el-9-rpms: true Skip-test-leap-15-rpms: true Skip-func-test-el8: true Skip-func-test-el9: true Skip-func-test-leap15: true Skip-func-test-hw-medium: true Skip-func-test-hw-medium-md-on-ssd: true Skip-func-test-hw-medium-vmd: true Skip-func-test-hw-medium-verbs-provider: true Skip-func-test-hw-medium-verbs-provider-md-on-ssd: true Skip-func-test-hw-large: true Skip-func-test-hw-large-md-on-ssd: true Skip-python-bandit-check: true Skip-func-test-cb-md-on-ssd-daos-test: false Skip-func-test-cb-md-on-ssd-ftest: false Skip-build-el8-gcc: true Skip-build-el9-gcc: true Skip-build-leap15-gcc: true PR-repos: daos@PR-17966:165 Test-label-cb-md-on-ssd-daos-test: ci_vm_hdr-232vm01-05 Test-label-cb-md-on-ssd-ftest: ci_vm_hdr-232vm01-05 Signed-off-by: Ryon Jensen --- ryon_just_for_changes.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ryon_just_for_changes.txt b/ryon_just_for_changes.txt index 5f4cf768d2a..21fb1eca31e 100644 --- a/ryon_just_for_changes.txt +++ b/ryon_just_for_changes.txt @@ -1 +1 @@ -changed again \ No newline at end of file +changed \ No newline at end of file From 77b0d5542acbb397a11e4ef35d4f187ab94aeeca Mon Sep 17 00:00:00 2001 From: Ryon Jensen Date: Fri, 5 Jun 2026 10:05:44 -0600 Subject: [PATCH 5/7] SRE-3775 build: Introduce Cluster Box Stages - Combined Unit Test and Test stages - New Cluster Box stages - Changed gen_commit_pragmas.py to only include tests automatically if actual code changed ... not just comments. - Increased timeouts - Added pragma to set build description Signed-off-by: Ryon Jensen Build-description: Targeting ci_vm_hdr-232vm01-05 Cancel-prev-build: false Skip-unit-test: true Skip-unit-test-memcheck: true Skip-nlt: true Skip-fault-injection-test: true Skip-test-el-9-rpms: true Skip-test-leap-15-rpms: true Skip-func-test-el8: true Skip-func-test-el9: true Skip-func-test-leap15: true Skip-func-test-hw-medium: true Skip-func-test-hw-medium-md-on-ssd: true Skip-func-test-hw-medium-vmd: true Skip-func-test-hw-medium-verbs-provider: true Skip-func-test-hw-medium-verbs-provider-md-on-ssd: true Skip-func-test-hw-large: true Skip-func-test-hw-large-md-on-ssd: true Skip-python-bandit-check: true Skip-func-test-cb-md-on-ssd-daos-test: false Skip-func-test-cb-md-on-ssd-ftest: false Skip-build-el8-gcc: true Skip-build-el9-gcc: true Skip-build-leap15-gcc: true PR-repos: daos@ryon-jensen/speed_of_ci Test-label-cb-md-on-ssd-daos-test: ci_vm_hdr-232vm01-05 Test-label-cb-md-on-ssd-ftest: ci_vm_hdr-232vm01-05 --- ryon_just_for_changes.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ryon_just_for_changes.txt b/ryon_just_for_changes.txt index 21fb1eca31e..5f4cf768d2a 100644 --- a/ryon_just_for_changes.txt +++ b/ryon_just_for_changes.txt @@ -1 +1 @@ -changed \ No newline at end of file +changed again \ No newline at end of file From 0d2d010661bdf8e9bcb80db8b8bfd26755c35fff Mon Sep 17 00:00:00 2001 From: Ryon Jensen Date: Fri, 5 Jun 2026 10:13:18 -0600 Subject: [PATCH 6/7] SRE-3775 build: Introduce Cluster Box Stages - Combined Unit Test and Test stages - New Cluster Box stages - Changed gen_commit_pragmas.py to only include tests automatically if actual code changed ... not just comments. - Increased timeouts - Added pragma to set build description Signed-off-by: Ryon Jensen Build-description: Targeting ci_vm_hdr-232vm01-05 Cancel-prev-build: false Skip-unit-test: true Skip-unit-test-memcheck: true Skip-nlt: true Skip-fault-injection-test: true Skip-test-el-9-rpms: true Skip-test-leap-15-rpms: true Skip-func-test-el8: true Skip-func-test-el9: true Skip-func-test-leap15: true Skip-func-test-hw-medium: true Skip-func-test-hw-medium-md-on-ssd: true Skip-func-test-hw-medium-vmd: true Skip-func-test-hw-medium-verbs-provider: true Skip-func-test-hw-medium-verbs-provider-md-on-ssd: true Skip-func-test-hw-large: true Skip-func-test-hw-large-md-on-ssd: true Skip-python-bandit-check: true Skip-func-test-cb-md-on-ssd-daos-test: false Skip-func-test-cb-md-on-ssd-ftest: false Skip-build-el8-gcc: true Skip-build-el9-gcc: true Skip-build-leap15-gcc: true PR-repos: daos@PR-17966/speed_of_ci Test-label-cb-md-on-ssd-daos-test: ci_vm_hdr-232vm01-05 Test-label-cb-md-on-ssd-ftest: ci_vm_hdr-232vm01-05 --- ryon_just_for_changes.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ryon_just_for_changes.txt b/ryon_just_for_changes.txt index 5f4cf768d2a..56a6051ca2b 100644 --- a/ryon_just_for_changes.txt +++ b/ryon_just_for_changes.txt @@ -1 +1 @@ -changed again \ No newline at end of file +1 \ No newline at end of file From 0dbeadda7d0c99d3aa5ac7487dfb455a48ac8780 Mon Sep 17 00:00:00 2001 From: Ryon Jensen Date: Fri, 5 Jun 2026 10:30:39 -0600 Subject: [PATCH 7/7] SRE-3775 build: Introduce Cluster Box Stages - Combined Unit Test and Test stages - New Cluster Box stages - Changed gen_commit_pragmas.py to only include tests automatically if actual code changed ... not just comments. - Increased timeouts - Added pragma to set build description Signed-off-by: Ryon Jensen Build-description: Targeting ci_vm_hdr-232vm01-05 Skip-build-el8-gcc: true Skip-build-el9-gcc: true Skip-build-leap15-gcc: true PR-repos: daos@PR-17966/165 Test-label-cb-md-on-ssd-daos-test: ci_vm_hdr-232vm01-05 Test-label-cb-md-on-ssd-ftest: ci_vm_hdr-232vm01-05 Cancel-prev-build: false Skip-unit-test: true Skip-unit-test-memcheck: true Skip-nlt: true Skip-fault-injection-test: true Skip-test-el-9-rpms: true Skip-test-leap-15-rpms: true Skip-func-test-el8: true Skip-func-test-el9: true Skip-func-test-leap15: true Skip-func-test-hw-medium: true Skip-func-test-hw-medium-md-on-ssd: true Skip-func-test-hw-medium-vmd: true Skip-func-test-hw-medium-verbs-provider: true Skip-func-test-hw-medium-verbs-provider-md-on-ssd: true Skip-func-test-hw-large: true Skip-func-test-hw-large-md-on-ssd: true Skip-python-bandit-check: true Skip-func-test-cb-md-on-ssd-daos-test: false Skip-func-test-cb-md-on-ssd-ftest: false --- ryon_just_for_changes.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ryon_just_for_changes.txt b/ryon_just_for_changes.txt index 56a6051ca2b..d8263ee9860 100644 --- a/ryon_just_for_changes.txt +++ b/ryon_just_for_changes.txt @@ -1 +1 @@ -1 \ No newline at end of file +2 \ No newline at end of file