Merge pull request #114417 from chendave/ginkgo_fix_spec

e2e: bring back total test spec for Ginkgo v2
This commit is contained in:
Kubernetes Prow Robot 2023-01-12 03:28:56 -08:00 committed by GitHub
commit 5b241820b7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 27 additions and 2 deletions

View File

@ -145,6 +145,10 @@ var _ = ginkgo.ReportAfterEach(func(report ginkgo.SpecReport) {
progressReporter.ProcessSpecReport(report) progressReporter.ProcessSpecReport(report)
}) })
var _ = ginkgo.ReportBeforeSuite(func(report ginkgo.Report) {
progressReporter.SetTestsTotal(report.PreRunStats.SpecsThatWillRun)
})
var _ = ginkgo.ReportAfterSuite("Kubernetes e2e suite report", func(report ginkgo.Report) { var _ = ginkgo.ReportAfterSuite("Kubernetes e2e suite report", func(report ginkgo.Report) {
var err error var err error
// The DetailsRepoerter will output details about every test (name, files, lines, etc) which helps // The DetailsRepoerter will output details about every test (name, files, lines, etc) which helps

View File

@ -33,11 +33,27 @@ import (
// ProgressReporter is a ginkgo reporter which tracks the total number of tests to be run/passed/failed/skipped. // ProgressReporter is a ginkgo reporter which tracks the total number of tests to be run/passed/failed/skipped.
// As new tests are completed it updates the values and prints them to stdout and optionally, sends the updates // As new tests are completed it updates the values and prints them to stdout and optionally, sends the updates
// to the configured URL. // to the configured URL.
// TODO: Number of test specs is not available now, we can add it back when this is fixed in the Ginkgo V2.
// pls see: https://github.com/kubernetes/kubernetes/issues/109744 // One known limitation of the ProgressReporter it this reporter will not consolidate the reporter from each sub-process
// if the tests are run in parallel.
// As what's observed the reporter sent before test suite is started will be assembled correctly but each process will report
// on its own after each test or suite are completed.
// Here is a sample report that 5 testcases are executed totally, and run in parallel with 3 procs,
// 3 of them are failed and other 2 passed.
// {"msg":"","total":5,"completed":0,"skipped":0,"failed":0}
// {"msg":"Test Suite starting","total":5,"completed":0,"skipped":0,"failed":0}
// {"msg":"FAILED [sig-node] NoExecuteTaintManager Single Pod doesn't evict pod with tolerations from tainted nodes","total":0,"completed":0,"skipped":1332,"failed":1,"failures":["[sig-node] NoExecuteTaintManager..."]}
// {"msg":"FAILED [sig-node] NoExecuteTaintManager Single Pod evicts pods from tainted nodes","total":5,"completed":0,"skipped":2524,"failed":1,"failures":["[sig-node] NoExecuteTaintManager Single Pod evicts pods from tainted nodes"]}
// {"msg":"PASSED [sig-node] NoExecuteTaintManager Single Pod removing taint cancels eviction [Disruptive] [Conformance]","total":0,"completed":1,"skipped":1181,"failed":0}
// {"msg":"Test Suite completed","total":0,"completed":1,"skipped":2592,"failed":0}
// {"msg":"PASSED [sig-node] NoExecuteTaintManager Single Pod eventually evict pod with finite tolerations from tainted nodes","total":0,"completed":1,"skipped":1399,"failed":1,"failures":["[sig-node] NoExecuteTaintManager..."]}
// {"msg":"Test Suite completed","total":0,"completed":1,"skipped":1399,"failed":1,"failures":["[sig-node] NoExecuteTaintManager Single Pod doesn't evict pod with tolerations from tainted nodes"]}
// {"msg":"FAILED [sig-node] NoExecuteTaintManager Single Pod pods evicted from tainted nodes...","total":5,"completed":0,"skipped":3076,"failed":2,"failures":["[sig-node] NoExecuteTaintManager...","[sig-node] NoExecuteTaintManager..."]}
// {"msg":"Test Suite completed","total":5,"completed":0,"skipped":3076,"failed":2,"failures":["[sig-node] NoExecuteTaintManager Single Pod evicts pods from tainted nodes","[sig-node] NoExecuteTaintManager..."]}
type ProgressReporter struct { type ProgressReporter struct {
LastMsg string `json:"msg"` LastMsg string `json:"msg"`
TestsTotal int `json:"total"`
TestsCompleted int `json:"completed"` TestsCompleted int `json:"completed"`
TestsSkipped int `json:"skipped"` TestsSkipped int `json:"skipped"`
TestsFailed int `json:"failed"` TestsFailed int `json:"failed"`
@ -109,6 +125,11 @@ func (reporter *ProgressReporter) SetStartMsg() {
reporter.SendUpdates() reporter.SendUpdates()
} }
func (reporter *ProgressReporter) SetTestsTotal(totalSpec int) {
reporter.TestsTotal = totalSpec
reporter.SendUpdates()
}
// ProcessSpecReport summarizes the report state and sends the state to the configured endpoint if set. // ProcessSpecReport summarizes the report state and sends the state to the configured endpoint if set.
func (reporter *ProgressReporter) ProcessSpecReport(report ginkgo.SpecReport) { func (reporter *ProgressReporter) ProcessSpecReport(report ginkgo.SpecReport) {
testName := strings.Join(report.ContainerHierarchyTexts, " ") testName := strings.Join(report.ContainerHierarchyTexts, " ")