From d20df79545a41e499082f3786f9953d65eee450d Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Tue, 29 Mar 2022 12:05:03 -0400 Subject: [PATCH] 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 --- cmd/prune-junit-xml/prunexml.go | 5 +++++ hack/make-rules/test.sh | 8 ++++++++ 2 files changed, 13 insertions(+) diff --git a/cmd/prune-junit-xml/prunexml.go b/cmd/prune-junit-xml/prunexml.go index 3ad7b3a6425..f4a5421736b 100644 --- a/cmd/prune-junit-xml/prunexml.go +++ b/cmd/prune-junit-xml/prunexml.go @@ -19,6 +19,7 @@ package main import ( "encoding/xml" "flag" + "fmt" "io" "os" ) @@ -76,6 +77,7 @@ func main() { if flag.NArg() > 0 { for _, path := range flag.Args() { + fmt.Printf("processing junit xml file : %s\n", path) xmlReader, err := os.Open(path) if err != nil { panic(err) @@ -97,6 +99,7 @@ func main() { if err != nil { panic(err) } + fmt.Println("done.") } } } @@ -106,12 +109,14 @@ func pruneXML(suites *JUnitTestSuites, maxBytes int) { for _, testcase := range suite.TestCases { if testcase.SkipMessage != nil { 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[len(testcase.SkipMessage.Message)-maxBytes:] } } if testcase.Failure != nil { 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[len(testcase.Failure.Contents)-maxBytes:] } diff --git a/hack/make-rules/test.sh b/hack/make-rules/test.sh index 4c0015ebd62..33e8c311dc7 100755 --- a/hack/make-rules/test.sh +++ b/hack/make-rules/test.sh @@ -240,6 +240,14 @@ produceJUnitXMLReport() { rm "${junit_filename_prefix}"*.stdout 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}" }