mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 10:51:29 +00:00
prune junit xml files in ci harness
Over time the size of our junit xml has exploded to the point where test-grid fails to process them. We still have the original/full *.stdout files from where the junit xml files are generated from so the junit xml files need NOT have the fill/exact output for processing/display. So let us prune the large messages with an indicator that we have "[... clipped...]" some of the content so folks can see that they have to consult the full *.stdout files. Signed-off-by: Davanum Srinivas <davanum@gmail.com>
This commit is contained in:
parent
917c361880
commit
d20df79545
@ -19,6 +19,7 @@ package main
|
|||||||
import (
|
import (
|
||||||
"encoding/xml"
|
"encoding/xml"
|
||||||
"flag"
|
"flag"
|
||||||
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
@ -76,6 +77,7 @@ func main() {
|
|||||||
|
|
||||||
if flag.NArg() > 0 {
|
if flag.NArg() > 0 {
|
||||||
for _, path := range flag.Args() {
|
for _, path := range flag.Args() {
|
||||||
|
fmt.Printf("processing junit xml file : %s\n", path)
|
||||||
xmlReader, err := os.Open(path)
|
xmlReader, err := os.Open(path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
@ -97,6 +99,7 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
fmt.Println("done.")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -106,12 +109,14 @@ func pruneXML(suites *JUnitTestSuites, maxBytes int) {
|
|||||||
for _, testcase := range suite.TestCases {
|
for _, testcase := range suite.TestCases {
|
||||||
if testcase.SkipMessage != nil {
|
if testcase.SkipMessage != nil {
|
||||||
if len(testcase.SkipMessage.Message) > maxBytes {
|
if len(testcase.SkipMessage.Message) > maxBytes {
|
||||||
|
fmt.Printf("clipping skip message in test case : %s\n", testcase.Name)
|
||||||
testcase.SkipMessage.Message = "[... clipped...]" +
|
testcase.SkipMessage.Message = "[... clipped...]" +
|
||||||
testcase.SkipMessage.Message[len(testcase.SkipMessage.Message)-maxBytes:]
|
testcase.SkipMessage.Message[len(testcase.SkipMessage.Message)-maxBytes:]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if testcase.Failure != nil {
|
if testcase.Failure != nil {
|
||||||
if len(testcase.Failure.Contents) > maxBytes {
|
if len(testcase.Failure.Contents) > maxBytes {
|
||||||
|
fmt.Printf("clipping failure message in test case : %s\n", testcase.Name)
|
||||||
testcase.Failure.Contents = "[... clipped...]" +
|
testcase.Failure.Contents = "[... clipped...]" +
|
||||||
testcase.Failure.Contents[len(testcase.Failure.Contents)-maxBytes:]
|
testcase.Failure.Contents[len(testcase.Failure.Contents)-maxBytes:]
|
||||||
}
|
}
|
||||||
|
@ -240,6 +240,14 @@ produceJUnitXMLReport() {
|
|||||||
rm "${junit_filename_prefix}"*.stdout
|
rm "${junit_filename_prefix}"*.stdout
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if ! command -v prune-junit-xml >/dev/null 2>&1; then
|
||||||
|
kube::log::status "prune-junit-xml not found; installing from hack/tools"
|
||||||
|
pushd "${KUBE_ROOT}/cmd/prune-junit-xml" >/dev/null
|
||||||
|
GO111MODULE=on go install .
|
||||||
|
popd >/dev/null
|
||||||
|
fi
|
||||||
|
prune-junit-xml "${junit_xml_filename}"
|
||||||
|
|
||||||
kube::log::status "Saved JUnit XML test report to ${junit_xml_filename}"
|
kube::log::status "Saved JUnit XML test report to ${junit_xml_filename}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user