Skip to content

Commit 658d9fc

Browse files
authored
[TRTLLM-8970][infra] Fix generate report when has isolation test result (#8861)
Signed-off-by: qqiao <qqiao@nvidia.com> Signed-off-by: Emma Qiao <qqiao@nvidia.com>
1 parent 5e52dff commit 658d9fc

File tree

2 files changed

+60
-26
lines changed

2 files changed

+60
-26
lines changed

jenkins/L0_Test.groovy

Lines changed: 53 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1946,19 +1946,41 @@ def generateRerunReport(stageName, llmSrc) {
19461946
def rerunBaseDir = "${WORKSPACE}/${stageName}/rerun"
19471947
def regularRerunDir = "${rerunBaseDir}/regular"
19481948

1949-
// Check if regular rerun directory exists
1950-
def hasRegularReruns = sh(script: "[ -d '${regularRerunDir}' ] && echo 'true' || echo 'false'", returnStdout: true).trim() == 'true'
1949+
// Check if regular rerun directory has rerun_results_*.xml files
1950+
def hasRegularReruns = sh(script: "[ -d '${regularRerunDir}' ] && find '${regularRerunDir}' -name 'rerun_results_*.xml' | head -1 | grep -q . && echo 'true' || echo 'false'", returnStdout: true).trim() == 'true'
19511951

1952-
// Find all isolated rerun directories (isolated_0, isolated_1, etc.)
1953-
def isolatedRerunDirs = []
1954-
def isolatedDirsOutput = sh(script: "find ${rerunBaseDir} -type d -name 'isolated_*' 2>/dev/null || true", returnStdout: true).trim()
1955-
if (isolatedDirsOutput) {
1956-
isolatedRerunDirs = isolatedDirsOutput.split('\n').findAll { it.trim() }
1952+
// Check if any isolated rerun directories have rerun_results_*.xml files
1953+
def hasIsolatedReruns = sh(script: "find ${rerunBaseDir} -type d -name 'isolated_*' -exec find {} -name 'rerun_results_*.xml' \\; 2>/dev/null | head -1 | grep -q . && echo 'true' || echo 'false'", returnStdout: true).trim() == 'true'
1954+
1955+
// Find isolated tests that have actual rerun results and build mapping
1956+
def isolatedTestsWithReruns = []
1957+
if (hasIsolatedReruns) {
1958+
def isolatedDirsOutput = sh(script: "find ${rerunBaseDir} -type d -name 'isolated_*' 2>/dev/null || true", returnStdout: true).trim()
1959+
if (isolatedDirsOutput) {
1960+
def isolatedDirs = isolatedDirsOutput.split('\n').findAll { it.trim() }
1961+
isolatedDirs.each { isolatedDir ->
1962+
// Extract the isolated number from directory name (e.g., isolated_0 -> 0)
1963+
def isolatedNum = isolatedDir.split('/').last().replace('isolated_', '')
1964+
1965+
// Check if this isolated directory has any rerun results
1966+
def hasRerunResults = sh(script: "find '${isolatedDir}' -name 'rerun_results_*.xml' | head -1 | grep -q . && echo 'true' || echo 'false'", returnStdout: true).trim() == 'true'
1967+
1968+
if (hasRerunResults) {
1969+
isolatedTestsWithReruns.add([
1970+
dir: isolatedDir,
1971+
num: isolatedNum,
1972+
originalResult: "${WORKSPACE}/${stageName}/results_isolated_${isolatedNum}.xml"
1973+
])
1974+
}
1975+
}
1976+
}
19571977
}
1958-
def hasIsolatedReruns = isolatedRerunDirs.size() > 0
1978+
1979+
// Collect rerun result files and corresponding original result files
1980+
def rerunResultFiles = []
19591981

19601982
echo "Found regular reruns: ${hasRegularReruns}"
1961-
echo "Found isolated rerun directories: ${isolatedRerunDirs}"
1983+
echo "Found isolated tests with reruns: ${isolatedTestsWithReruns.collect { "isolated_${it.num}" }}"
19621984

19631985
if (!hasRegularReruns && !hasIsolatedReruns) {
19641986
echo "No rerun results found, skipping rerun report generation"
@@ -1974,16 +1996,34 @@ def generateRerunReport(stageName, llmSrc) {
19741996
// Add original results
19751997
if (fileExists("${WORKSPACE}/${stageName}/results.xml")) {
19761998
allInputFiles.add("${WORKSPACE}/${stageName}/results.xml")
1999+
// Add to rerunResultFiles only if it has reruns
2000+
if (hasRegularReruns) {
2001+
rerunResultFiles.add("${WORKSPACE}/${stageName}/results.xml")
2002+
}
19772003
}
19782004

1979-
// Add isolated test results
2005+
// Add ALL isolated test results to allInputFiles
19802006
def isolatedResults = sh(script: "find ${WORKSPACE}/${stageName} -name 'results_isolated_*.xml' 2>/dev/null || true", returnStdout: true).trim()
19812007
if (isolatedResults) {
19822008
isolatedResults.split('\n').each { file ->
19832009
if (file.trim()) {
19842010
allInputFiles.add(file.trim())
19852011
}
19862012
}
2013+
// Add isolated test results that have reruns to rerunResultFiles and add their rerun results to allInputFiles
2014+
isolatedTestsWithReruns.each { isolatedTest ->
2015+
if (fileExists(isolatedTest.originalResult)) {
2016+
rerunResultFiles.add(isolatedTest.originalResult)
2017+
echo "Added isolated result with reruns to rerunResultFiles: ${isolatedTest.originalResult}"
2018+
}
2019+
for (times in [1, 2]) {
2020+
def rerunFile = "${isolatedTest.dir}/rerun_results_${times}.xml"
2021+
if (fileExists(rerunFile)) {
2022+
allInputFiles.add(rerunFile)
2023+
rerunResultFiles.add(rerunFile)
2024+
}
2025+
}
2026+
}
19872027
}
19882028

19892029
// Add regular rerun results
@@ -1992,19 +2032,7 @@ def generateRerunReport(stageName, llmSrc) {
19922032
def rerunFile = "${regularRerunDir}/rerun_results_${times}.xml"
19932033
if (fileExists(rerunFile)) {
19942034
allInputFiles.add(rerunFile)
1995-
}
1996-
}
1997-
}
1998-
1999-
// Add isolated rerun results from all isolated directories
2000-
if (hasIsolatedReruns) {
2001-
isolatedRerunDirs.each { isolatedDir ->
2002-
for (times in [1, 2]) {
2003-
def rerunFile = "${isolatedDir}/rerun_results_${times}.xml"
2004-
if (fileExists(rerunFile)) {
2005-
allInputFiles.add(rerunFile)
2006-
echo "Added isolated rerun result: ${rerunFile}"
2007-
}
2035+
rerunResultFiles.add(rerunFile)
20082036
}
20092037
}
20102038
}
@@ -2014,14 +2042,14 @@ def generateRerunReport(stageName, llmSrc) {
20142042
return
20152043
}
20162044

2017-
echo "Generating rerun report with input files: ${allInputFiles.join(',')}"
2045+
echo "Generating rerun report with input files: ${rerunResultFiles.join(',')}"
20182046

20192047
// Generate comprehensive rerun report
20202048
sh """
20212049
python3 ${llmSrc}/jenkins/scripts/test_rerun.py \
20222050
generate_rerun_report \
20232051
--output-file=${WORKSPACE}/${stageName}/rerun_results.xml \
2024-
--input-files=${allInputFiles.join(",")}
2052+
--input-files=${rerunResultFiles.join(",")}
20252053
"""
20262054

20272055
// Update original results xml file with all rerun results for junit

jenkins/scripts/test_rerun.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -385,7 +385,7 @@ def filter_failed_tests(xml_filename, output_filename):
385385

386386

387387
def generate_rerun_report(output_filename, input_filenames):
388-
# Merge the input xml files (filter failed tests for results.xml)
388+
# Merge the input xml files (filter failed tests for results.xml and results_isolated_*.xml)
389389
# and generate the rerun report html file.
390390
new_filename_list = []
391391
for input_filename in input_filenames:
@@ -394,6 +394,12 @@ def generate_rerun_report(output_filename, input_filenames):
394394
new_filename = input_filename.replace("results.xml",
395395
"failed_results.xml")
396396
filter_failed_tests(input_filename, new_filename)
397+
elif "/results_isolated_" in input_filename and input_filename.endswith(
398+
".xml"):
399+
# Handle isolation test result files: results_isolated_*.xml -> failed_results_isolated_*.xml
400+
new_filename = input_filename.replace("results_isolated_",
401+
"failed_results_isolated_")
402+
filter_failed_tests(input_filename, new_filename)
397403
new_filename_list.append(new_filename)
398404

399405
print(new_filename_list)

0 commit comments

Comments
 (0)