Skip to content

Commit 09a600c

Browse files
committed
remove skipped test features from supported features list
Signed-off-by: Kobi Levi <[email protected]>
1 parent 1036848 commit 09a600c

12 files changed

+118
-75
lines changed

internal/cmd/egctl/testdata/translate/out/default-resources.all.yaml

-7
Original file line numberDiff line numberDiff line change
@@ -160,14 +160,9 @@ gatewayClass:
160160
type: Accepted
161161
supportedFeatures:
162162
- GRPCRoute
163-
- Gateway
164-
- GatewayHTTPListenerIsolation
165163
- GatewayPort8080
166-
- GatewayStaticAddresses
167-
- HTTPRoute
168164
- HTTPRouteBackendProtocolH2C
169165
- HTTPRouteBackendProtocolWebSocket
170-
- HTTPRouteBackendRequestHeaderModification
171166
- HTTPRouteBackendTimeout
172167
- HTTPRouteDestinationPortMatching
173168
- HTTPRouteHostRewrite
@@ -182,8 +177,6 @@ gatewayClass:
182177
- HTTPRouteRequestTimeout
183178
- HTTPRouteResponseHeaderModification
184179
- HTTPRouteSchemeRedirect
185-
- MeshClusterIPMatching
186-
- MeshConsumerRoute
187180
- ReferenceGrant
188181
- TLSRoute
189182
gateways:

internal/cmd/egctl/testdata/translate/out/echo-gateway-api.cluster.yaml

-7
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,9 @@ gatewayClass:
1414
type: Accepted
1515
supportedFeatures:
1616
- GRPCRoute
17-
- Gateway
18-
- GatewayHTTPListenerIsolation
1917
- GatewayPort8080
20-
- GatewayStaticAddresses
21-
- HTTPRoute
2218
- HTTPRouteBackendProtocolH2C
2319
- HTTPRouteBackendProtocolWebSocket
24-
- HTTPRouteBackendRequestHeaderModification
2520
- HTTPRouteBackendTimeout
2621
- HTTPRouteDestinationPortMatching
2722
- HTTPRouteHostRewrite
@@ -36,8 +31,6 @@ gatewayClass:
3631
- HTTPRouteRequestTimeout
3732
- HTTPRouteResponseHeaderModification
3833
- HTTPRouteSchemeRedirect
39-
- MeshClusterIPMatching
40-
- MeshConsumerRoute
4134
- ReferenceGrant
4235
- TLSRoute
4336
gateways:

internal/cmd/egctl/testdata/translate/out/echo-gateway-api.route.json

-7
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,9 @@
2020
],
2121
"supportedFeatures": [
2222
"GRPCRoute",
23-
"Gateway",
24-
"GatewayHTTPListenerIsolation",
2523
"GatewayPort8080",
26-
"GatewayStaticAddresses",
27-
"HTTPRoute",
2824
"HTTPRouteBackendProtocolH2C",
2925
"HTTPRouteBackendProtocolWebSocket",
30-
"HTTPRouteBackendRequestHeaderModification",
3126
"HTTPRouteBackendTimeout",
3227
"HTTPRouteDestinationPortMatching",
3328
"HTTPRouteHostRewrite",
@@ -42,8 +37,6 @@
4237
"HTTPRouteRequestTimeout",
4338
"HTTPRouteResponseHeaderModification",
4439
"HTTPRouteSchemeRedirect",
45-
"MeshClusterIPMatching",
46-
"MeshConsumerRoute",
4740
"ReferenceGrant",
4841
"TLSRoute"
4942
]

internal/cmd/egctl/testdata/translate/out/invalid-envoyproxy.all.yaml

-7
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,9 @@ gatewayClass:
4040
type: Accepted
4141
supportedFeatures:
4242
- GRPCRoute
43-
- Gateway
44-
- GatewayHTTPListenerIsolation
4543
- GatewayPort8080
46-
- GatewayStaticAddresses
47-
- HTTPRoute
4844
- HTTPRouteBackendProtocolH2C
4945
- HTTPRouteBackendProtocolWebSocket
50-
- HTTPRouteBackendRequestHeaderModification
5146
- HTTPRouteBackendTimeout
5247
- HTTPRouteDestinationPortMatching
5348
- HTTPRouteHostRewrite
@@ -62,8 +57,6 @@ gatewayClass:
6257
- HTTPRouteRequestTimeout
6358
- HTTPRouteResponseHeaderModification
6459
- HTTPRouteSchemeRedirect
65-
- MeshClusterIPMatching
66-
- MeshConsumerRoute
6760
- ReferenceGrant
6861
- TLSRoute
6962
gateways:

internal/cmd/egctl/testdata/translate/out/rejected-http-route.route.yaml

-7
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,9 @@ gatewayClass:
1414
type: Accepted
1515
supportedFeatures:
1616
- GRPCRoute
17-
- Gateway
18-
- GatewayHTTPListenerIsolation
1917
- GatewayPort8080
20-
- GatewayStaticAddresses
21-
- HTTPRoute
2218
- HTTPRouteBackendProtocolH2C
2319
- HTTPRouteBackendProtocolWebSocket
24-
- HTTPRouteBackendRequestHeaderModification
2520
- HTTPRouteBackendTimeout
2621
- HTTPRouteDestinationPortMatching
2722
- HTTPRouteHostRewrite
@@ -36,8 +31,6 @@ gatewayClass:
3631
- HTTPRouteRequestTimeout
3732
- HTTPRouteResponseHeaderModification
3833
- HTTPRouteSchemeRedirect
39-
- MeshClusterIPMatching
40-
- MeshConsumerRoute
4134
- ReferenceGrant
4235
- TLSRoute
4336
gateways:

internal/cmd/egctl/testdata/translate/out/valid-envoyproxy.all.yaml

-7
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,9 @@ gatewayClass:
3333
type: Accepted
3434
supportedFeatures:
3535
- GRPCRoute
36-
- Gateway
37-
- GatewayHTTPListenerIsolation
3836
- GatewayPort8080
39-
- GatewayStaticAddresses
40-
- HTTPRoute
4137
- HTTPRouteBackendProtocolH2C
4238
- HTTPRouteBackendProtocolWebSocket
43-
- HTTPRouteBackendRequestHeaderModification
4439
- HTTPRouteBackendTimeout
4540
- HTTPRouteDestinationPortMatching
4641
- HTTPRouteHostRewrite
@@ -55,8 +50,6 @@ gatewayClass:
5550
- HTTPRouteRequestTimeout
5651
- HTTPRouteResponseHeaderModification
5752
- HTTPRouteSchemeRedirect
58-
- MeshClusterIPMatching
59-
- MeshConsumerRoute
6053
- ReferenceGrant
6154
- TLSRoute
6255
gateways:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
// Copyright Envoy Gateway Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
// The full text of the Apache license is available in the LICENSE file at
4+
// the root of the repo.
5+
6+
package conformance
7+
8+
import (
9+
"k8s.io/apimachinery/pkg/util/sets"
10+
"sigs.k8s.io/gateway-api/conformance/tests"
11+
"sigs.k8s.io/gateway-api/conformance/utils/suite"
12+
"sigs.k8s.io/gateway-api/pkg/features"
13+
)
14+
15+
// SkipTests is a list of tests that are skipped in the conformance suite.
16+
var SkipTests = []suite.ConformanceTest{
17+
tests.GatewayStaticAddresses,
18+
tests.GatewayHTTPListenerIsolation, // https://github.com/kubernetes-sigs/gateway-api/issues/3049
19+
tests.HTTPRouteBackendRequestHeaderModifier, // https://github.com/envoyproxy/gateway/issues/3338
20+
}
21+
22+
func skipTestsShortNames(skipTests []suite.ConformanceTest) []string {
23+
shortNames := make([]string, len(skipTests))
24+
for i, test := range skipTests {
25+
shortNames[i] = test.ShortName
26+
}
27+
return shortNames
28+
}
29+
30+
// EnvoyGatewaySuite is the conformance suite configuration for the Gateway API.
31+
var EnvoyGatewaySuite = suite.ConformanceOptions{
32+
SupportedFeatures: features.AllFeatures,
33+
ExemptFeatures: sets.New[features.SupportedFeature]().
34+
Insert(features.MeshCoreFeatures.UnsortedList()...).
35+
Insert(features.MeshExtendedFeatures.UnsortedList()...),
36+
SkipTests: skipTestsShortNames(SkipTests),
37+
}

internal/gatewayapi/status/gatewayclass.go

+12-5
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,9 @@ import (
1919
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2020
"k8s.io/apimachinery/pkg/util/sets"
2121
gwapiv1 "sigs.k8s.io/gateway-api/apis/v1"
22+
"sigs.k8s.io/gateway-api/conformance/utils/suite"
2223

23-
"github.com/envoyproxy/gateway/test/conformance"
24+
"github.com/envoyproxy/gateway/internal/gatewayapi/conformance"
2425
)
2526

2627
const (
@@ -68,11 +69,17 @@ func computeGatewayClassAcceptedCondition(gatewayClass *gwapiv1.GatewayClass,
6869

6970
// GatewaySupportedFeatures is a list of supported Gateway-API features,
7071
// based on the running conformance tests suite.
71-
var GatewaySupportedFeatures = getSupportedFeatures()
72+
var GatewaySupportedFeatures = getSupportedFeatures(conformance.EnvoyGatewaySuite, conformance.SkipTests)
7273

73-
func getSupportedFeatures() []gwapiv1.SupportedFeature {
74-
supportedFeatures := conformance.EnvoyGatewaySuite.SupportedFeatures
75-
supportedFeatures.Delete(conformance.EnvoyGatewaySuite.ExemptFeatures.UnsortedList()...)
74+
func getSupportedFeatures(gatewaySuite suite.ConformanceOptions, skippedTests []suite.ConformanceTest) []gwapiv1.SupportedFeature {
75+
supportedFeatures := gatewaySuite.SupportedFeatures.Clone()
76+
supportedFeatures.Delete(gatewaySuite.ExemptFeatures.UnsortedList()...)
77+
78+
for _, skippedTest := range skippedTests {
79+
for _, feature := range skippedTest.Features {
80+
supportedFeatures.Delete(feature)
81+
}
82+
}
7683

7784
ret := sets.New[gwapiv1.SupportedFeature]()
7885
for _, feature := range supportedFeatures.UnsortedList() {

internal/gatewayapi/status/gatewayclass_test.go

+59
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,11 @@ import (
1010

1111
"github.com/stretchr/testify/assert"
1212
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
13+
"k8s.io/apimachinery/pkg/util/sets"
14+
1315
gwapiv1 "sigs.k8s.io/gateway-api/apis/v1"
16+
"sigs.k8s.io/gateway-api/conformance/utils/suite"
17+
"sigs.k8s.io/gateway-api/pkg/features"
1418
)
1519

1620
func TestComputeGatewayClassAcceptedCondition(t *testing.T) {
@@ -66,3 +70,58 @@ func TestComputeGatewayClassAcceptedCondition(t *testing.T) {
6670
assert.Equal(t, gc.Generation, got.ObservedGeneration)
6771
}
6872
}
73+
74+
func TestGetSupportedFeatures(t *testing.T) {
75+
testCases := []struct {
76+
name string
77+
gatewaySuite suite.ConformanceOptions
78+
skippedTests []suite.ConformanceTest
79+
expectedResult []gwapiv1.SupportedFeature
80+
}{
81+
{
82+
name: "No exempt features",
83+
gatewaySuite: suite.ConformanceOptions{
84+
SupportedFeatures: sets.New[features.SupportedFeature]("Gateway", "HTTPRoute"),
85+
ExemptFeatures: sets.New[features.SupportedFeature](),
86+
},
87+
expectedResult: []gwapiv1.SupportedFeature{"Gateway", "HTTPRoute"},
88+
},
89+
{
90+
name: "All features exempt",
91+
gatewaySuite: suite.ConformanceOptions{
92+
SupportedFeatures: sets.New[features.SupportedFeature]("Gateway", "HTTPRoute"),
93+
ExemptFeatures: sets.New[features.SupportedFeature]("Gateway", "HTTPRoute"),
94+
},
95+
expectedResult: []gwapiv1.SupportedFeature{},
96+
},
97+
{
98+
name: "Some features exempt",
99+
gatewaySuite: suite.ConformanceOptions{
100+
SupportedFeatures: sets.New[features.SupportedFeature]("Gateway", "HTTPRoute", "GRPCRoute"),
101+
ExemptFeatures: sets.New[features.SupportedFeature]("GRPCRoute"),
102+
},
103+
expectedResult: []gwapiv1.SupportedFeature{"Gateway", "HTTPRoute"},
104+
},
105+
{
106+
name: "Some features exempt with skipped tests",
107+
gatewaySuite: suite.ConformanceOptions{
108+
SupportedFeatures: sets.New[features.SupportedFeature]("Gateway", "HTTPRoute", "GRPCRoute"),
109+
ExemptFeatures: sets.New[features.SupportedFeature]("GRPCRoute"),
110+
},
111+
skippedTests: []suite.ConformanceTest{
112+
{
113+
Features: []features.SupportedFeature{"HTTPRoute"},
114+
},
115+
},
116+
expectedResult: []gwapiv1.SupportedFeature{"Gateway"},
117+
},
118+
}
119+
120+
for _, tc := range testCases {
121+
t.Run(tc.name, func(t *testing.T) {
122+
result := getSupportedFeatures(tc.gatewaySuite, tc.skippedTests)
123+
124+
assert.ElementsMatch(t, tc.expectedResult, result, "The result should match the expected output for the test case.")
125+
})
126+
}
127+
}

test/conformance/conformance_features.go

-22
This file was deleted.

test/conformance/conformance_test.go

+5-3
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,17 @@ import (
1515
"sigs.k8s.io/gateway-api/conformance"
1616
"sigs.k8s.io/gateway-api/conformance/tests"
1717
"sigs.k8s.io/gateway-api/conformance/utils/suite"
18+
19+
internalconf "github.com/envoyproxy/gateway/internal/gatewayapi/conformance"
1820
)
1921

2022
func TestGatewayAPIConformance(t *testing.T) {
2123
flag.Parse()
2224

2325
opts := conformance.DefaultOptions(t)
24-
opts.SkipTests = EnvoyGatewaySuite.SkipTests
25-
opts.SupportedFeatures = EnvoyGatewaySuite.SupportedFeatures
26-
opts.ExemptFeatures = EnvoyGatewaySuite.ExemptFeatures
26+
opts.SkipTests = internalconf.EnvoyGatewaySuite.SkipTests
27+
opts.SupportedFeatures = internalconf.EnvoyGatewaySuite.SupportedFeatures
28+
opts.ExemptFeatures = internalconf.EnvoyGatewaySuite.ExemptFeatures
2729

2830
cSuite, err := suite.NewConformanceTestSuite(opts)
2931
if err != nil {

test/conformance/experimental_conformance_test.go

+5-3
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,17 @@ import (
2121
"sigs.k8s.io/gateway-api/conformance/utils/flags"
2222
"sigs.k8s.io/gateway-api/conformance/utils/suite"
2323
"sigs.k8s.io/yaml"
24+
25+
internalconf "github.com/envoyproxy/gateway/internal/gatewayapi/conformance"
2426
)
2527

2628
func TestExperimentalConformance(t *testing.T) {
2729
flag.Parse()
2830

2931
opts := conformance.DefaultOptions(t)
30-
opts.SkipTests = EnvoyGatewaySuite.SkipTests
31-
opts.SupportedFeatures = EnvoyGatewaySuite.SupportedFeatures
32-
opts.ExemptFeatures = EnvoyGatewaySuite.ExemptFeatures
32+
opts.SkipTests = internalconf.EnvoyGatewaySuite.SkipTests
33+
opts.SupportedFeatures = internalconf.EnvoyGatewaySuite.SupportedFeatures
34+
opts.ExemptFeatures = internalconf.EnvoyGatewaySuite.ExemptFeatures
3335
opts.ConformanceProfiles = sets.New(
3436
suite.GatewayHTTPConformanceProfileName,
3537
suite.GatewayTLSConformanceProfileName,

0 commit comments

Comments
 (0)