Skip to content

Commit effa544

Browse files
Add component + feature name to e2e tests
This will allow us to filter tests based on features. Signed-off-by: Martin Kennelly <mkennell@redhat.com>
1 parent a9f914b commit effa544

26 files changed

+255
-30
lines changed

test/e2e/acl_logging.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import (
88

99
. "github.com/onsi/ginkgo/v2"
1010
. "github.com/onsi/gomega"
11+
"github.com/ovn-org/ovn-kubernetes/test/e2e/feature"
12+
"github.com/ovn-org/ovn-kubernetes/test/e2e/ginkgo_wrapper"
1113

1214
v1 "k8s.io/api/core/v1"
1315
knet "k8s.io/api/networking/v1"
@@ -25,7 +27,7 @@ const (
2527
pokeInterval = 1 * time.Second
2628
)
2729

28-
var _ = Describe("ACL Logging for NetworkPolicy", func() {
30+
var _ = ginkgo_wrapper.Describe(feature.NetworkPolicy, "ACL Logging", func() {
2931
const (
3032
denyAllPolicyName = "default-deny-all"
3133
initialDenyACLSeverity = "alert"
@@ -172,7 +174,7 @@ var _ = Describe("ACL Logging for NetworkPolicy", func() {
172174
})
173175
})
174176

175-
var _ = Describe("ACL Logging for AdminNetworkPolicy and BaselineAdminNetworkPolicy", func() {
177+
var _ = ginkgo_wrapper.Describe(feature.AdminNetworkPolicy, feature.BaselineNetworkPolicy, "ACL Logging", func() {
176178
const (
177179
initialDenyACLSeverity = "alert"
178180
initialAllowACLSeverity = "notice"
@@ -487,7 +489,7 @@ var _ = Describe("ACL Logging for AdminNetworkPolicy and BaselineAdminNetworkPol
487489
})
488490
})
489491

490-
var _ = Describe("ACL Logging for EgressFirewall", func() {
492+
var _ = ginkgo_wrapper.Describe(feature.EgressFirewall, "ACL Logging", func() {
491493
const (
492494
denyAllPolicyName = "default-deny-all"
493495
initialDenyACLSeverity = "alert"

test/e2e/egress_firewall.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import (
1414
"github.com/onsi/ginkgo/extensions/table"
1515
"github.com/onsi/ginkgo/v2"
1616
"github.com/onsi/gomega"
17+
"github.com/ovn-org/ovn-kubernetes/test/e2e/feature"
18+
"github.com/ovn-org/ovn-kubernetes/test/e2e/ginkgo_wrapper"
1719

1820
v1 "k8s.io/api/core/v1"
1921
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -29,7 +31,7 @@ import (
2931
// Validate the egress firewall policies by applying a policy and verify
3032
// that both explicitly allowed traffic and implicitly denied traffic
3133
// is properly handled as defined in the crd configuration in the test.
32-
var _ = ginkgo.Describe("e2e egress firewall policy validation", func() {
34+
var _ = ginkgo_wrapper.Describe(feature.EgressFirewall, "policy validation", func() {
3335
const (
3436
svcname string = "egress-firewall-policy"
3537
egressFirewallYamlFile string = "egress-fw.yml"

test/e2e/egress_services.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import (
1212

1313
"github.com/onsi/ginkgo/v2"
1414
"github.com/onsi/gomega"
15+
"github.com/ovn-org/ovn-kubernetes/test/e2e/feature"
16+
"github.com/ovn-org/ovn-kubernetes/test/e2e/ginkgo_wrapper"
1517

1618
"golang.org/x/sync/errgroup"
1719
v1 "k8s.io/api/core/v1"
@@ -24,7 +26,7 @@ import (
2426
utilnet "k8s.io/utils/net"
2527
)
2628

27-
var _ = ginkgo.Describe("EgressService", func() {
29+
var _ = ginkgo_wrapper.Describe(feature.EgressService, func() {
2830
const (
2931
egressServiceYAML = "egress_service.yaml"
3032
externalKindContainerName = "kind-external-container-for-egress-service"

test/e2e/egressip.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import (
1616

1717
"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/types"
1818
"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/util"
19+
"github.com/ovn-org/ovn-kubernetes/test/e2e/feature"
20+
"github.com/ovn-org/ovn-kubernetes/test/e2e/ginkgo_wrapper"
1921

2022
nadclient "github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/client/clientset/versioned/typed/k8s.cni.cncf.io/v1"
2123
"github.com/onsi/ginkgo/v2"
@@ -298,7 +300,7 @@ func targetExternalContainerAndTest(targetNode node, podName, podNamespace strin
298300
}
299301
}
300302

301-
var _ = ginkgo.DescribeTableSubtree("e2e egress IP validation", func(netConfigParams networkAttachmentConfigParams) {
303+
var _ = ginkgo_wrapper.DescribeTableSubTree(feature.EgressIP, func(netConfigParams networkAttachmentConfigParams) {
302304
//FIXME: tests for CDN are designed for single stack clusters (IPv4 or IPv6) and must choose a single IP family for dual stack clusters.
303305
// Remove this restriction and allow the tests to detect if an IP family support is available.
304306
const (

test/e2e/egressqos.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import (
1010

1111
"github.com/onsi/ginkgo/v2"
1212
"github.com/onsi/gomega"
13+
"github.com/ovn-org/ovn-kubernetes/test/e2e/feature"
14+
"github.com/ovn-org/ovn-kubernetes/test/e2e/ginkgo_wrapper"
1315

1416
"golang.org/x/sync/errgroup"
1517
v1 "k8s.io/api/core/v1"
@@ -19,7 +21,7 @@ import (
1921
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
2022
)
2123

22-
var _ = ginkgo.Describe("e2e EgressQoS validation", func() {
24+
var _ = ginkgo_wrapper.Describe(feature.EgressQos, func() {
2325
const (
2426
egressQoSYaml = "egressqos.yaml"
2527
srcPodName = "src-dscp-pod"

test/e2e/external_gateways.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ import (
1313

1414
"github.com/onsi/ginkgo/v2"
1515
"github.com/onsi/gomega"
16+
"github.com/ovn-org/ovn-kubernetes/test/e2e/feature"
17+
"github.com/ovn-org/ovn-kubernetes/test/e2e/ginkgo_wrapper"
1618

1719
"github.com/google/go-cmp/cmp"
1820
nettypes "github.com/k8snetworkplumbingwg/network-attachment-definition-client/pkg/apis/k8s.cni.cncf.io/v1"
@@ -73,7 +75,7 @@ type gatewayTestIPs struct {
7375
targetIPs []string
7476
}
7577

76-
var _ = ginkgo.Describe("External Gateway", func() {
78+
var _ = ginkgo_wrapper.Describe(feature.ExternalGateway, func() {
7779

7880
// Validate pods can reach a network running in a container's looback address via
7981
// an external gateway running on eth0 of the container without any tunnel encap.

test/e2e/feature/features.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package feature
2+
3+
import "github.com/ovn-org/ovn-kubernetes/test/e2e/label"
4+
5+
var (
6+
Service = label.NewFeature("Service")
7+
NetworkPolicy = label.NewFeature("NetworkPolicy")
8+
AdminNetworkPolicy = label.NewFeature("AdminNetworkPolicy")
9+
BaselineNetworkPolicy = label.NewFeature("BaselineNetworkPolicy")
10+
NetworkSegmentation = label.NewFeature("NetworkSegmentation")
11+
EgressIP = label.NewFeature("EgressIP")
12+
EgressService = label.NewFeature("EgressService")
13+
EgressFirewall = label.NewFeature("EgressFirewall")
14+
EgressQos = label.NewFeature("EgressQos")
15+
ExternalGateway = label.NewFeature("ExternalGateway")
16+
DisablePacketMTUCheck = label.NewFeature("DisablePacketMTUCheck")
17+
KubeVirt = label.NewFeature("KubeVirt")
18+
Interconnect = label.NewFeature("Interconnect")
19+
Multicast = label.NewFeature("Multicast")
20+
NetworkAttachmentDefinition = label.NewFeature("NetworkAttachmentDefinition")
21+
NodeIPMACMigration = label.NewFeature("NodeIPMACMigration")
22+
OVSCPUPin = label.NewFeature("OVSCPUPin")
23+
Unidle = label.NewFeature("Unidle")
24+
)

test/e2e/gateway_mtu.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,14 @@ import (
55

66
"github.com/onsi/ginkgo/v2"
77
"github.com/onsi/gomega"
8+
"github.com/ovn-org/ovn-kubernetes/test/e2e/feature"
9+
"github.com/ovn-org/ovn-kubernetes/test/e2e/ginkgo_wrapper"
810

911
v1 "k8s.io/api/core/v1"
1012
e2enode "k8s.io/kubernetes/test/e2e/framework/node"
1113
)
1214

13-
var _ = ginkgo.Describe("Check whether gateway-mtu-support annotation on node is set based on disable-pkt-mtu-check value", func() {
15+
var _ = ginkgo_wrapper.Describe(feature.DisablePacketMTUCheck, "Check whether gateway-mtu-support annotation on node is set based on disable-pkt-mtu-check value", func() {
1416
var nodes *v1.NodeList
1517
f := wrappedTestFramework("gateway-mtu-support")
1618

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package ginkgo_wrapper
2+
3+
import (
4+
"fmt"
5+
"strings"
6+
7+
"github.com/onsi/ginkgo/v2"
8+
9+
"github.com/ovn-org/ovn-kubernetes/test/e2e/label"
10+
)
11+
12+
const componentName = "ovn-kubernetes"
13+
14+
var (
15+
Describe = okDescribe()
16+
DescribeTableSubTree = okDescribeTableSubtree()
17+
)
18+
19+
// okDescribe returns a wrapper function for ginkgo.Describe which prepends
20+
// the CNI name plus any additional labels.
21+
func okDescribe() func(...interface{}) bool {
22+
return func(args ...interface{}) bool {
23+
args = append([]interface{}{label.NewComponent(componentName)}, args...)
24+
return registerInSuite(ginkgo.Describe, args)
25+
}
26+
}
27+
28+
func okDescribeTableSubtree() func(...interface{}) bool {
29+
return func(args ...interface{}) bool {
30+
args = append([]interface{}{label.NewComponent(componentName)}, args...)
31+
return registerInSuite(ginkgo.DescribeTableSubtree, args)
32+
}
33+
}
34+
35+
// registerInSuite is the common implementation of all wrapper functions. It
36+
// expects to be called through one intermediate wrapper.
37+
func registerInSuite(ginkgoCall func(string, ...interface{}) bool, args []interface{}) bool {
38+
var ginkgoArgs []interface{}
39+
var offset ginkgo.Offset
40+
var texts []string
41+
42+
for _, arg := range args {
43+
switch arg := arg.(type) {
44+
case label.Label:
45+
if !arg.IsValid() {
46+
panic(fmt.Sprintf("invalid label %q", arg))
47+
}
48+
label := arg.String()
49+
ginkgoArgs = append(ginkgoArgs, ginkgo.Label(label))
50+
texts = append(texts, label)
51+
case ginkgo.Offset:
52+
offset = arg
53+
case string:
54+
if arg == "" {
55+
panic("labels must not empty strings as separators are unnecessary and need to be removed")
56+
}
57+
texts = append(texts, arg)
58+
default:
59+
ginkgoArgs = append(ginkgoArgs, arg)
60+
}
61+
}
62+
offset += 2 // This function and its direct caller.
63+
64+
// Enforce that text snippets to not start or end with spaces because
65+
// those lead to double spaces when concatenating below.
66+
for _, text := range texts {
67+
if strings.HasPrefix(text, " ") || strings.HasSuffix(text, " ") {
68+
panic("trailing or leading spaces are unnecessary and need to be removed")
69+
}
70+
}
71+
72+
ginkgoArgs = append(ginkgoArgs, offset)
73+
// compact labels and ensure test description contain a space between descriptions.
74+
var finalText string
75+
for _, text := range texts {
76+
if strings.HasPrefix(text, "[") {
77+
finalText += text
78+
} else {
79+
finalText += " " + text
80+
}
81+
}
82+
return ginkgoCall(finalText, ginkgoArgs...)
83+
}

test/e2e/kubevirt.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import (
1919
"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/config"
2020
"github.com/ovn-org/ovn-kubernetes/go-controller/pkg/util"
2121
"github.com/ovn-org/ovn-kubernetes/test/e2e/diagnostics"
22+
"github.com/ovn-org/ovn-kubernetes/test/e2e/feature"
23+
"github.com/ovn-org/ovn-kubernetes/test/e2e/ginkgo_wrapper"
2224
"github.com/ovn-org/ovn-kubernetes/test/e2e/images"
2325
"github.com/ovn-org/ovn-kubernetes/test/e2e/kubevirt"
2426

@@ -87,7 +89,7 @@ func newControllerRuntimeClient() (crclient.Client, error) {
8789
})
8890
}
8991

90-
var _ = Describe("Kubevirt Virtual Machines", func() {
92+
var _ = ginkgo_wrapper.Describe(feature.KubeVirt, func() {
9193
var (
9294
fr = wrappedTestFramework("kv-live-migration")
9395
d = diagnostics.New(fr)

0 commit comments

Comments
 (0)