diff --git a/go.mod b/go.mod index b0f2492440880..1e6bb0d0918c4 100644 --- a/go.mod +++ b/go.mod @@ -49,7 +49,7 @@ require ( github.com/opencontainers/cgroups v0.0.3 github.com/opencontainers/runc v1.2.5 github.com/opencontainers/selinux v1.11.1 - github.com/openshift-eng/openshift-tests-extension v0.0.0-20250916161632-d81c09058835 + github.com/openshift-eng/openshift-tests-extension v0.0.0-20251104171704-4de6984a8e50 github.com/openshift/api v0.0.0-20251015095338-264e80a2b6e7 github.com/openshift/apiserver-library-go v0.0.0-20251015164739-79d04067059d github.com/openshift/client-go v0.0.0-20251015124057-db0dee36e235 diff --git a/go.sum b/go.sum index c4622857565ca..acc6e111b6d5d 100644 --- a/go.sum +++ b/go.sum @@ -306,8 +306,8 @@ github.com/opencontainers/runtime-spec v1.2.0 h1:z97+pHb3uELt/yiAWD691HNHQIF07bE github.com/opencontainers/runtime-spec v1.2.0/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= github.com/opencontainers/selinux v1.11.1 h1:nHFvthhM0qY8/m+vfhJylliSshm8G1jJ2jDMcgULaH8= github.com/opencontainers/selinux v1.11.1/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= -github.com/openshift-eng/openshift-tests-extension v0.0.0-20250916161632-d81c09058835 h1:rkqIIfdYYkasXbF2XKVgh/3f1mhjSQK9By8WtVMgYo8= -github.com/openshift-eng/openshift-tests-extension v0.0.0-20250916161632-d81c09058835/go.mod h1:6gkP5f2HL0meusT0Aim8icAspcD1cG055xxBZ9yC68M= +github.com/openshift-eng/openshift-tests-extension v0.0.0-20251104171704-4de6984a8e50 h1:IDbKc3X/GwWtwDraBK+l0H0nUNcE3vU8BCba7HTo7/0= +github.com/openshift-eng/openshift-tests-extension v0.0.0-20251104171704-4de6984a8e50/go.mod h1:6gkP5f2HL0meusT0Aim8icAspcD1cG055xxBZ9yC68M= github.com/openshift/api v0.0.0-20251015095338-264e80a2b6e7 h1:Ot2fbEEPmF3WlPQkyEW/bUCV38GMugH/UmZvxpWceNc= github.com/openshift/api v0.0.0-20251015095338-264e80a2b6e7/go.mod h1:d5uzF0YN2nQQFA0jIEWzzOZ+edmo6wzlGLvx5Fhz4uY= github.com/openshift/apiserver-library-go v0.0.0-20251015164739-79d04067059d h1:Mfya3RxHWvidOrKyHj3bmFn5x2B89DLZIvDAhwm+C2s= diff --git a/openshift-hack/cmd/k8s-tests-ext/k8s-tests.go b/openshift-hack/cmd/k8s-tests-ext/k8s-tests.go index bf48e7e4b00f6..68f725cf14928 100644 --- a/openshift-hack/cmd/k8s-tests-ext/k8s-tests.go +++ b/openshift-hack/cmd/k8s-tests-ext/k8s-tests.go @@ -88,9 +88,16 @@ func main() { Qualifiers: []string{withExcludedTestsFilter(`name.contains('[Serial]')`)}, }) - for k, v := range image.GetOriginalImageConfigs() { - image := convertToImage(v) - image.Index = int(k) + mirror := "quay.io/openshift/community-e2e-images" + if v := os.Getenv("TEST_IMAGE_MIRROR"); len(v) > 0 { + mirror = v + } + originals := image.GetOriginalImageConfigs() + mapped := image.GetMappedImageConfigs(originals, mirror) + for k, v := range originals { + image := convertToImage(v, int(k)) + mappedImage := convertToImage(mapped[k], int(k)) + image.Mapped = &mappedImage kubeTestsExtension.RegisterImage(image) } @@ -158,10 +165,10 @@ func main() { } } -// convertToImages converts an image.Config to an extension.Image, which +// convertToImage converts an image.Config to an extension.Image, which // can easily be serialized to JSON. Since image.Config has unexported fields, // reflection is used to read its values. -func convertToImage(obj interface{}) e.Image { +func convertToImage(obj interface{}, index int) e.Image { image := e.Image{} val := reflect.ValueOf(obj) typ := reflect.TypeOf(obj) @@ -177,6 +184,7 @@ func convertToImage(obj interface{}) e.Image { image.Version = fieldValue.String() } } + image.Index = index return image } diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/types.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/types.go index 3b51674f4aa89..00d2d9d6633fc 100644 --- a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/types.go +++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/extension/types.go @@ -88,4 +88,7 @@ type Image struct { Registry string `json:"registry"` Name string `json:"name"` Version string `json:"version"` + // Mapped is the image reference that this image is mirrored to by the image mirror tool. + // This field should be populated if the mirrored image reference is predetermined by the test extensions. + Mapped *Image `json:"mapped,omitempty"` } diff --git a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo/util.go b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo/util.go index 308576c633d5c..e970d46ad4176 100644 --- a/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo/util.go +++ b/vendor/github.com/openshift-eng/openshift-tests-extension/pkg/ginkgo/util.go @@ -115,7 +115,7 @@ func BuildExtensionTestSpecsFromOpenShiftGinkgoSuite(selectFns ...ext.SelectFunc summary.Failure.ForwardedPanic, ) } - case summary.State == types.SpecStateFailed, summary.State == types.SpecStatePanicked, summary.State == types.SpecStateInterrupted: + case summary.State == types.SpecStateFailed, summary.State == types.SpecStatePanicked, summary.State == types.SpecStateInterrupted, summary.State == types.SpecStateAborted: result.Result = ext.ResultFailed var errors []string if len(summary.Failure.ForwardedPanic) > 0 { @@ -126,6 +126,17 @@ func BuildExtensionTestSpecsFromOpenShiftGinkgoSuite(selectFns ...ext.SelectFunc } errors = append(errors, fmt.Sprintf("fail [%s:%d]: %s", lastFilenameSegment(summary.Failure.Location.FileName), summary.Failure.Location.LineNumber, summary.Failure.Message)) result.Error = strings.Join(errors, "\n") + case summary.State == types.SpecStateTimedout: + result.Result = ext.ResultFailed + var errors []string + for _, additionalFailure := range summary.AdditionalFailures { + collectAdditionalFailures(&errors, " ", additionalFailure.Failure) + } + if summary.Failure.AdditionalFailure != nil { + collectAdditionalFailures(&errors, " ", summary.Failure.AdditionalFailure.Failure) + } + errors = append(errors, fmt.Sprintf("fail [%s:%d]: %s", lastFilenameSegment(summary.Failure.Location.FileName), summary.Failure.Location.LineNumber, summary.Failure.Message)) + result.Error = strings.Join(errors, "\n") default: panic(fmt.Sprintf("test produced unknown outcome: %#v", summary)) } @@ -198,3 +209,21 @@ func lastFilenameSegment(filename string) string { } return filename } + +func collectAdditionalFailures(errors *[]string, suffix string, failure types.Failure) { + if failure.IsZero() { + return + } + + if len(failure.ForwardedPanic) > 0 { + if len(failure.Location.FullStackTrace) > 0 { + *errors = append(*errors, fmt.Sprintf("\n%s\n", failure.Location.FullStackTrace)) + } + *errors = append(*errors, fmt.Sprintf("fail [%s:%d]: Test Panicked: %s%s", lastFilenameSegment(failure.Location.FileName), failure.Location.LineNumber, failure.ForwardedPanic, suffix)) + } + *errors = append(*errors, fmt.Sprintf("fail [%s:%d] %s%s", lastFilenameSegment(failure.Location.FileName), failure.Location.LineNumber, failure.Message, suffix)) + + if failure.AdditionalFailure != nil { + collectAdditionalFailures(errors, " ", failure.AdditionalFailure.Failure) + } +} diff --git a/vendor/modules.txt b/vendor/modules.txt index aff9ef6ea919d..0222ff9f8873b 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -496,7 +496,7 @@ github.com/opencontainers/runtime-spec/specs-go github.com/opencontainers/selinux/go-selinux github.com/opencontainers/selinux/go-selinux/label github.com/opencontainers/selinux/pkg/pwalkdir -# github.com/openshift-eng/openshift-tests-extension v0.0.0-20250916161632-d81c09058835 +# github.com/openshift-eng/openshift-tests-extension v0.0.0-20251104171704-4de6984a8e50 ## explicit; go 1.23.0 github.com/openshift-eng/openshift-tests-extension/pkg/cmd github.com/openshift-eng/openshift-tests-extension/pkg/cmd/cmdimages