Skip to content

feat(conformance): Add HTTPRouteMultipleGatewaysDifferentPools test #838

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 105 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
87d1756
copy of accepted inference pool test to start from.
SinaChavoshi May 14, 2025
a9dcb62
add yaml file for the test
SinaChavoshi May 14, 2025
c36e5f8
update time out
SinaChavoshi May 14, 2025
aaf23e2
update the yaml file to add port 9002
SinaChavoshi May 14, 2025
2a67e7d
read timeout config from local repo
SinaChavoshi May 14, 2025
8ac7d72
remove excess comments
SinaChavoshi May 14, 2025
c859896
copy from existing test to start with
SinaChavoshi May 14, 2025
fe540a7
update test and add gateway to main manifest
SinaChavoshi May 15, 2025
63fedab
fix spelling error
SinaChavoshi May 19, 2025
66f325d
correct spelling for scenarios
SinaChavoshi May 20, 2025
fd0fa10
check route condition on RouteConditionResolvedRefs
SinaChavoshi May 20, 2025
68812d7
check RouteConditionResolvedRefs instead of Reconciled
SinaChavoshi May 20, 2025
59b1f9c
Merge branch 'main' into inf_pool_tests_11
SinaChavoshi May 27, 2025
8a078dc
remove empty lines in yaml
SinaChavoshi May 27, 2025
c55a803
set optional/defaulted fields as unspecified
SinaChavoshi May 27, 2025
5efaeb2
add new line at the end of yaml files.
SinaChavoshi May 27, 2025
2cd8dab
delete blank lines in yaml files.
SinaChavoshi May 27, 2025
26704a1
change variable names to use primary / secondary
SinaChavoshi May 27, 2025
bb62da7
add to do for name change across the project.
SinaChavoshi May 27, 2025
796b584
fix comment
SinaChavoshi May 27, 2025
403b588
Merge branch 'main' into inf_pool_tests_12
SinaChavoshi May 27, 2025
6506d44
change all variable names to use primary/secondary consistantly
SinaChavoshi May 27, 2025
dafd21e
add to do for http route testing
SinaChavoshi May 27, 2025
ecf11e4
HTTPRouteMustBeAcceptedAndResolved
SinaChavoshi May 27, 2025
f1ce162
add helper method.
SinaChavoshi May 27, 2025
f3d8e8c
using helper method for pool route accepted.
SinaChavoshi May 28, 2025
1cd8790
combline pool and route accpetnace
SinaChavoshi May 28, 2025
44b1427
add http route validation
SinaChavoshi May 28, 2025
c6bacb4
Merge branch 'main' into inf_pool_tests_11
SinaChavoshi May 28, 2025
d15c25e
Merge branch 'main' into inf_pool_tests_12
SinaChavoshi May 28, 2025
1451a90
remove extra comments and yaml fields.
SinaChavoshi May 28, 2025
271b7a8
Merge branch 'main' into inf_pool_tests_11
SinaChavoshi May 28, 2025
adcc104
Merge branch 'main' into inf_pool_tests_12
SinaChavoshi May 28, 2025
1535ccc
remove duplicate method
SinaChavoshi May 28, 2025
c92a402
fix timeout
SinaChavoshi May 28, 2025
ff25051
fix timeout
SinaChavoshi May 28, 2025
5a61a70
change varialbe names to use primary secondary consistently.
SinaChavoshi May 28, 2025
6fa352d
remove extra comments
SinaChavoshi May 28, 2025
5f1bcad
factor out common code
SinaChavoshi May 28, 2025
e5fc860
Add actual http traffic validation using echo-basic
SinaChavoshi May 28, 2025
62791b5
remove extra comments from manifest
SinaChavoshi May 28, 2025
2f08131
remove modifiedTimeoutConfig.HTTPRouteMustHaveCondition per review co…
SinaChavoshi May 28, 2025
cf587a6
remove modifiedTimeoutConfig.HTTPRouteMustHaveCondition per review co…
SinaChavoshi May 28, 2025
afc8bc3
remove excessive logging from conformance.go
SinaChavoshi May 28, 2025
8588183
Update conformance/tests/basic/httproute_multiple_gateways_different_…
SinaChavoshi May 28, 2025
8b6a873
Update conformance/tests/basic/httproute_multiple_gateways_different_…
SinaChavoshi May 28, 2025
efe3990
Update conformance/tests/basic/httproute_multiple_gateways_different_…
SinaChavoshi May 28, 2025
b63459d
Update conformance/tests/basic/httproute_multiple_gateways_different_…
SinaChavoshi May 28, 2025
b903d8f
Update conformance/tests/basic/httproute_multiple_gateways_different_…
SinaChavoshi May 28, 2025
2d52812
Remove unecessary logs for accpeted reason.
SinaChavoshi May 28, 2025
fc2a410
Merge remote-tracking branch 'upstream/main'
SinaChavoshi May 29, 2025
939ae57
Remove all comments from yaml and go files and fix yaml
SinaChavoshi May 29, 2025
d34457a
Merge remote-tracking branch 'upstream/main'
SinaChavoshi Jun 5, 2025
753917a
Merge remote-tracking branch 'upstream/main'
SinaChavoshi Jun 6, 2025
f4bcc9a
Merge branch 'main' into inf_pool_tests_11
SinaChavoshi Jun 6, 2025
d5530dc
Merge remote-tracking branch 'upstream/main'
SinaChavoshi Jun 6, 2025
0ce459c
Merge branch 'main' into inf_pool_tests_11
SinaChavoshi Jun 6, 2025
3b884d6
intermediate update
SinaChavoshi Jun 6, 2025
d90eae0
fix the test run
SinaChavoshi Jun 6, 2025
73731e3
factor out common code
SinaChavoshi Jun 6, 2025
b57fb8a
Merge remote-tracking branch 'upstream/main'
SinaChavoshi Jun 9, 2025
6ee73d5
Merge branch 'main' into inf_pool_tests_11
SinaChavoshi Jun 9, 2025
b239930
move epp def to shared manifest
SinaChavoshi Jun 9, 2025
66b8426
remove extra comments
SinaChavoshi Jun 9, 2025
9432280
revert back to two epps
SinaChavoshi Jun 9, 2025
4b1f44a
Merge branch 'main' into inf_pool_tests_12
SinaChavoshi Jun 9, 2025
450a5c5
Merge branch 'inf_pool_tests_11' into inf_pool_tests_12
SinaChavoshi Jun 9, 2025
5990c51
update to use epp filter
SinaChavoshi Jun 9, 2025
392171d
remove extra comments
SinaChavoshi Jun 9, 2025
117652e
Merge remote-tracking branch 'upstream/main'
SinaChavoshi Jun 13, 2025
ad82e88
Merge remote-tracking branch 'upstream/main' into inf_pool_tests_11
SinaChavoshi Jun 13, 2025
ab4e4bc
Merge remote-tracking branch 'upstream/main' into inf_pool_tests_12
SinaChavoshi Jun 13, 2025
04f52f3
add to do for epp image
SinaChavoshi Jun 16, 2025
d6b588e
switch to GeneralMustHaveConditionTimeout
SinaChavoshi Jun 16, 2025
112d878
undo gateway version changes
SinaChavoshi Jun 16, 2025
120feb3
remove unused HTTPRouteMustHaveConditions
SinaChavoshi Jun 16, 2025
8214cdf
update doc string for GetPod
SinaChavoshi Jun 16, 2025
76cb644
update docstring
SinaChavoshi Jun 16, 2025
f50054f
Merge branch 'inf_pool_tests_11' into inf_pool_tests_12
SinaChavoshi Jun 16, 2025
b235dbd
fix defaults in timing.go
SinaChavoshi Jun 16, 2025
5dca67b
Remove resource type from names in manifests.
SinaChavoshi Jun 16, 2025
f2c0602
remove type from name
SinaChavoshi Jun 17, 2025
daeb8e6
remove health check
SinaChavoshi Jun 17, 2025
79b3015
Merge remote-tracking branch 'upstream/main'
SinaChavoshi Jun 17, 2025
f1ab79f
Merge remote-tracking branch 'upstream/main' into inf_pool_tests_11
SinaChavoshi Jun 17, 2025
81562a2
add todo for combining getpod methods
SinaChavoshi Jun 17, 2025
871d4d6
Merge branch 'inf_pool_tests_11' into inf_pool_tests_12
SinaChavoshi Jun 17, 2025
ae33369
Merge remote-tracking branch 'upstream'
SinaChavoshi Jun 17, 2025
43c1fa1
Merge branch 'main' into inf_pool_tests_12
SinaChavoshi Jun 17, 2025
182ee70
remove duplicate methods
SinaChavoshi Jun 18, 2025
2afea17
Merge remote-tracking branch 'upstream/main' into inf_pool_tests_12
SinaChavoshi Jun 20, 2025
948956c
revert changes to conformance.go
SinaChavoshi Jun 20, 2025
eae8202
revert chagnes to conformance.go
SinaChavoshi Jun 20, 2025
e88bf77
revert changes to helpers.go
SinaChavoshi Jun 20, 2025
89869d7
use epp and pool from shared manifest
SinaChavoshi Jun 20, 2025
be03841
add todo to factor out common constants
SinaChavoshi Jun 20, 2025
7a9133c
Merge remote-tracking branch 'upstream' into inf_pool_tests_12
SinaChavoshi Jun 23, 2025
810e055
remove port number for EPP call
SinaChavoshi Jun 23, 2025
17ab77b
remove port number for inf pool ref
SinaChavoshi Jun 23, 2025
fbce2d5
use GetPodsWithLabel
SinaChavoshi Jun 23, 2025
af6b681
removed unused method
SinaChavoshi Jun 23, 2025
22bf7f9
fix routing issue
SinaChavoshi Jun 23, 2025
d491509
switch to using MakeRequestAndExpectEventuallyConsistentResponse
SinaChavoshi Jun 23, 2025
413ec25
undo changes to GatewayFollowingEPPRouting
SinaChavoshi Jun 23, 2025
0b94f9f
revert changes to traffic.go
SinaChavoshi Jun 23, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
118 changes: 118 additions & 0 deletions conformance/tests/basic/httproute_multiple_gateways_different_pools.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
/*
Copyright 2025 The Kubernetes Authors.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package basic

import (
"net/http"
"testing"

"k8s.io/apimachinery/pkg/types"
"sigs.k8s.io/gateway-api/conformance/utils/suite"

"sigs.k8s.io/gateway-api-inference-extension/conformance/tests"
k8sutils "sigs.k8s.io/gateway-api-inference-extension/conformance/utils/kubernetes"
"sigs.k8s.io/gateway-api-inference-extension/conformance/utils/traffic"
)

func init() {
tests.ConformanceTests = append(tests.ConformanceTests, HTTPRouteMultipleGatewaysDifferentPools)
}

var HTTPRouteMultipleGatewaysDifferentPools = suite.ConformanceTest{
ShortName: "HTTPRouteMultipleGatewaysDifferentPools",
Description: "Validates two HTTPRoutes on different Gateways successfully referencing different InferencePools and routes traffic accordingly.",
Manifests: []string{"tests/basic/httproute_multiple_gateways_different_pools.yaml"},
Test: func(t *testing.T, s *suite.ConformanceTestSuite) {
const (
appBackendNamespace = "gateway-conformance-app-backend"
infraNamespace = "gateway-conformance-infra"

primaryGatewayName = "conformance-primary-gateway"
routeForPrimaryGWName = "route-for-primary-gateway"
primaryPoolName = "primary-inference-pool"
primaryBackendPodName = "primary-inference-model-server"
primaryRoutePath = "/test-primary-gateway"
primaryRouteHostname = "primary.example.com"

secondaryGatewayName = "conformance-secondary-gateway"
routeForSecondaryGWName = "route-for-secondary-gateway"
secondaryPoolName = "secondary-inference-pool"
secondaryBackendPodName = "secondary-inference-model-server"
secondaryRoutePath = "/test-secondary-gateway"
secondaryRouteHostname = "secondary.example.com"
)

routeForPrimaryGWNN := types.NamespacedName{Name: routeForPrimaryGWName, Namespace: appBackendNamespace}
routeForSecondaryGWNN := types.NamespacedName{Name: routeForSecondaryGWName, Namespace: appBackendNamespace}
primaryPoolNN := types.NamespacedName{Name: primaryPoolName, Namespace: appBackendNamespace}
secondaryPoolNN := types.NamespacedName{Name: secondaryPoolName, Namespace: appBackendNamespace}
primaryGatewayNN := types.NamespacedName{Name: primaryGatewayName, Namespace: infraNamespace}
secondaryGatewayNN := types.NamespacedName{Name: secondaryGatewayName, Namespace: infraNamespace}

t.Run("Primary HTTPRoute, InferencePool, and Gateway path: verify status and traffic", func(t *testing.T) {
k8sutils.HTTPRouteAndInferencePoolMustBeAcceptedAndRouteAccepted(
t,
s.Client,
routeForPrimaryGWNN,
primaryGatewayNN,
primaryPoolNN,
)

primaryGwAddr := k8sutils.GetGatewayEndpoint(t, s.Client, s.TimeoutConfig, primaryGatewayNN)

traffic.MakeRequestAndExpectEventuallyConsistentResponse(
t,
s.RoundTripper,
s.TimeoutConfig,
primaryGwAddr,
traffic.Request{
Host: primaryRouteHostname,
Path: primaryRoutePath,
ExpectedStatusCode: http.StatusOK,
Backend: primaryBackendPodName,
Namespace: appBackendNamespace,
},
)
})

t.Run("Secondary HTTPRoute, InferencePool, and Gateway path: verify status and traffic", func(t *testing.T) {
k8sutils.HTTPRouteAndInferencePoolMustBeAcceptedAndRouteAccepted(
t,
s.Client,
routeForSecondaryGWNN,
secondaryGatewayNN,
secondaryPoolNN,
)

secondaryGwAddr := k8sutils.GetGatewayEndpoint(t, s.Client, s.TimeoutConfig, secondaryGatewayNN)

traffic.MakeRequestAndExpectEventuallyConsistentResponse(
t,
s.RoundTripper,
s.TimeoutConfig,
secondaryGwAddr,
traffic.Request{
Host: secondaryRouteHostname,
Path: secondaryRoutePath,
ExpectedStatusCode: http.StatusOK,
Backend: secondaryBackendPodName,
Namespace: appBackendNamespace,
},
)
})
},
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: route-for-primary-gateway
namespace: gateway-conformance-app-backend
spec:
parentRefs:
- kind: Gateway
name: conformance-primary-gateway
namespace: gateway-conformance-infra
hostnames:
- "primary.example.com"
rules:
- backendRefs:
- group: inference.networking.x-k8s.io
kind: InferencePool
name: primary-inference-pool
matches:
- path:
type: PathPrefix
value: /test-primary-gateway
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: route-for-secondary-gateway
namespace: gateway-conformance-app-backend
spec:
parentRefs:
- kind: Gateway
name: conformance-secondary-gateway
namespace: gateway-conformance-infra
hostnames:
- "secondary.example.com"
rules:
- backendRefs:
- group: inference.networking.x-k8s.io
kind: InferencePool
name: secondary-inference-pool
matches:
- path:
type: PathPrefix
value: /test-secondary-gateway