Skip to content
Merged
Show file tree
Hide file tree
Changes from 26 commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
321ef8f
SRE-3704 ci: NPE - missing ignore_failure key
grom72 Apr 28, 2026
29edd4a
Fix duplicate VM_test recordIssues ID across NLT stages
grom72 Apr 28, 2026
e797b06
Skip memcheck tarball when no memcheck files were produced
grom72 Apr 29, 2026
280fe8e
Make NLT recordIssues section name configurable in unitTestPost
grom72 Apr 29, 2026
503106f
ci: allow empty memcheck archive in unitTestPost
grom72 Apr 29, 2026
7267d71
NLT: distinguish fault injection stage from regular NLT
grom72 Apr 30, 2026
be5702c
Normalize names on Jenkis GUI
grom72 May 5, 2026
f3c8243
Small optimization of code
grom72 May 5, 2026
633efd8
Remove vm_test/ prefix from path to nlt-errors.json file
grom72 May 6, 2026
bb73e99
Revert "Remove vm_test/ prefix from path to nlt-errors.json file"
grom72 May 6, 2026
8e3296c
Ensure 20 cores per VM for NLT tests
grom72 May 8, 2026
2cf4488
config['nlt_name'] no longer needed
grom72 May 8, 2026
6fe3ebe
Fix: typo
grom72 May 11, 2026
62ad221
Fix: sles15 is missing
grom72 May 11, 2026
f4942bf
Stable version ready for review
grom72 May 11, 2026
9ceceff
Test with 14 cores
grom72 May 11, 2026
c64934d
Fix: reply to review
grom72 May 12, 2026
4a52cb2
unitTest with prov_env_vars parameter
grom72 May 14, 2026
a068dc8
Revert debug code: fileExists(memcheck_dir)
grom72 May 14, 2026
4d4107e
Revert debug code: results.get('ignore_failure', false)
grom72 May 14, 2026
4a4efea
Revert debug code: artifact_list.add(memcheck)
grom72 May 14, 2026
fc92b8b
Revert debug code: unitTest try - final
grom72 May 14, 2026
b172622
Fix: Remove spaces
grom72 May 14, 2026
a2889d3
Revert debug code: unitTest try - final 2nd
grom72 May 14, 2026
336fbca
Revert debug code: unitTest try - final 3rd
grom72 May 14, 2026
5ee695d
Linting: spaces in wrong places
grom72 May 14, 2026
3125dc9
Skip NLT/FI tests when the required el-gcc build is skipped
grom72 May 15, 2026
fd71e70
unitTest/Post: allow config to override stage_info defaults
grom72 May 15, 2026
6594ef7
Pin com.diffplug.spotless plugin
grom72 May 15, 2026
cc22635
Pin com.diffplug.spotless plugin 2nd
grom72 May 15, 2026
f5cc551
Revert "Pin com.diffplug.spotless plugin 2nd"
grom72 May 15, 2026
b4df18e
Revert "Pin com.diffplug.spotless plugin"
grom72 May 15, 2026
5f451b4
Fix: config with_valgrind override stage_info
grom72 May 15, 2026
129f2d1
Fix: remove obsolete stage
grom72 May 18, 2026
f96665d
Fix: Test results name to follow stage name
grom72 May 19, 2026
0c5e426
Merge remote-tracking branch 'origin/master' into grom72/SRE-3704
grom72 May 19, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions vars/parseStageInfo.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -287,10 +287,14 @@ Map call(Map config = [:]) {

if (stage_name.contains('NLT')) {
result['NLT'] = true
result['valgrind_pattern'] = config.get('valgrind_pattern', '*memcheck.xml')
result['always_script'] = config.get('always_script', 'ci/unit/test_nlt_post.sh')
result['testResults'] = config.get('testResults', 'nlt-junit.xml')
result['with_valgrind'] = 'memcheck'
if (stage_name.toLowerCase().contains('nlt fault injection')) {
result['FI'] = true
} else {
result['valgrind_pattern'] = config.get('valgrind_pattern', '*memcheck.xml')
result['with_valgrind'] = 'memcheck'
}
} else {
result['NLT'] = false
if (config['valgrind_pattern']) {
Expand Down
2 changes: 1 addition & 1 deletion vars/rpmDistValue.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ String call(String distro) {
distro.startsWith('rocky9') || distro.startsWith('almalinux9') ||
distro.startsWith('rhel9')) {
return '.el9'
} else if (distro.startsWith('leap15')) {
} else if (distro.startsWith('leap15') || distro.startsWith('sles15')) {
Comment thread
grom72 marked this conversation as resolved.
return '.suse.lp' + parseStageInfo()['distro_version'].replaceAll('\\.', '')
}
error("Don't know what the RPM %{dist} is for ${distro}")
Expand Down
1 change: 1 addition & 0 deletions vars/skipStage.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -434,6 +434,7 @@ boolean call(Map config = [:]) {
skip_ftest('ubuntu20', target_branch, tags) */
return true
case 'Fault injection testing':
case 'NLT Fault injection testing':
Comment thread
phender marked this conversation as resolved.
Outdated
case 'Fault injection testing on CentOS 8':
case 'Fault injection testing on EL 8':
case 'Fault injection testing on EL 8.8':
Expand Down
13 changes: 10 additions & 3 deletions vars/unitTest.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,13 @@
*
* config['unstash_tests'] Un-stash -tests, default is true.
*
* config['image_version'] Image version to use for provisioning, e.g. el8.8, leap15.6, etc.
* config['image_version'] Image version to use for provisioning,
* e.g. el8.8, leap15.6, etc.
*
* config['prov_env_vars'] Optional provisioning environment to use.
* Default ''.
* Formatted as 'KEY=VALUE' space-separated pairs
* and passed to the provisionNodesSystem call.
*/

Map afterTest(Map config, Map testRunInfo) {
Expand All @@ -94,7 +100,7 @@ Map afterTest(Map config, Map testRunInfo) {
} else {
result['result'] = checkJunitFiles(testResults: testResults)
}
if (config['with_valgrind'] || config['NLT']) {
if (config['with_valgrind']) {
vgrcs = sh label: 'Check for Valgrind errors',
script: "grep -E '<error( |>)' ${valgrind_pattern} || true",
returnStdout: true
Expand Down Expand Up @@ -146,7 +152,8 @@ Map call(Map config = [:]) {
node_count: stage_info['node_count'],
distro: image_version,
inst_repos: config.get('inst_repos', ''),
inst_rpms: inst_rpms)
inst_rpms: inst_rpms,
prov_env_vars: config.get('prov_env_vars', ''))

/* el9-gcc-tests */
String target_stash = (image_version ?: ${stage_info['target']}).split('\\.')[0]
Expand Down
18 changes: 11 additions & 7 deletions vars/unitTestPost.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,6 @@
* Required if more than one stage is
* creating Valgrind reports.
*/

// groovylint-disable DuplicateStringLiteral, VariableName
Comment thread
janekmi marked this conversation as resolved.
/* groovylint-disable-next-line MethodSize */
void call(Map config = [:]) {
Map stage_info = parseStageInfo(config)
Expand Down Expand Up @@ -66,7 +64,7 @@ void call(Map config = [:]) {
junit testResults: testResults,
healthScaleFactor: health_scale
}
if (stage_info['with_valgrind'] || stage_info['NLT']) {
if (stage_info['with_valgrind']) {
String suite = sanitizedStageName()
int vgfail = 0
String testdata
Expand Down Expand Up @@ -112,6 +110,14 @@ void call(Map config = [:]) {
'daos-stack/daos/master'),
scm: 'daos-stack/daos',
requiredResult: 'UNSTABLE')
List nltTools = [issues(pattern: 'vm_test/nlt-errors.json',
name: stage_info['FI'] ? 'Fault injection' : 'NLT errors',
id: sanitizedStageName() + '_VM_test')]
if (stage_info['FI']) {
nltTools << issues(pattern: 'nlt-client-leaks.json',
name: 'Fault injection leaks',
id: 'NLT_client')
}
Comment thread
janekmi marked this conversation as resolved.
Comment on lines +116 to +131
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe I'm missing something, but when would we have both fi == true and nlt == true?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See line 117 (Boolean nlt = fi || ...),
We can have if(nlt || fi) {, but the way it is implemented shows clearly that the Fault injection is a special type of NLT

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If NLT is a special type of fault injection, then why have

if (nlt) {
        ...
        if (fi) {
            nltTools << issues(pattern: 'nlt-client-leaks.json',
                               name: 'Fault injection leaks',
                               id: 'NLT_client')
        }

If NLT is always FI, then why do we need the if (fi)?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

NLT can be run w/o fault injection. In fact, I need to run it this way in daos-stack/daos#17269 with the #487 changes.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FI is a special type of NLT.

recordIssues enabledForFailure: true,
/* ignore warning/errors from PMDK logging system */
filters: [excludeFile('pmdk/.+')],
Expand All @@ -125,10 +131,8 @@ void call(Map config = [:]) {
[threshold: 1, type: 'TOTAL_HIGH'],
[threshold: 1, type: 'NEW_NORMAL', unstable: true],
[threshold: 1, type: 'NEW_LOW', unstable: true]],
name: 'Node local testing',
tool: issues(pattern: 'vm_test/nlt-errors.json',
name: 'NLT results',
id: 'VM_test'),
name: stage_info['FI']?'Fault injection':'NLT',
tools: nltTools,
scm: 'daos-stack/daos'

if (cb_result != currentBuild.result) {
Expand Down