mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +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:
		@@ -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}"
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user