diff --git a/test/e2e/features/inferenceextension/suite.go b/test/e2e/features/agentgateway/inference/suite.go similarity index 99% rename from test/e2e/features/inferenceextension/suite.go rename to test/e2e/features/agentgateway/inference/suite.go index 951f498e850..baa56caa282 100644 --- a/test/e2e/features/inferenceextension/suite.go +++ b/test/e2e/features/agentgateway/inference/suite.go @@ -1,6 +1,6 @@ //go:build e2e -package inferenceextension +package inference import ( "context" diff --git a/test/e2e/features/inferenceextension/testdata/curl_pod.yaml b/test/e2e/features/agentgateway/inference/testdata/curl_pod.yaml similarity index 100% rename from test/e2e/features/inferenceextension/testdata/curl_pod.yaml rename to test/e2e/features/agentgateway/inference/testdata/curl_pod.yaml diff --git a/test/e2e/features/inferenceextension/testdata/epp.yaml b/test/e2e/features/agentgateway/inference/testdata/epp.yaml similarity index 92% rename from test/e2e/features/inferenceextension/testdata/epp.yaml rename to test/e2e/features/agentgateway/inference/testdata/epp.yaml index 6cb6eea45af..c8df5b2e4e3 100644 --- a/test/e2e/features/inferenceextension/testdata/epp.yaml +++ b/test/e2e/features/agentgateway/inference/testdata/epp.yaml @@ -2,7 +2,7 @@ apiVersion: v1 kind: Service metadata: name: vllm-llama3-8b-instruct-epp - namespace: inf-ext-e2e + namespace: agent-gateway-test spec: selector: app: vllm-llama3-8b-instruct-epp @@ -17,13 +17,13 @@ apiVersion: v1 kind: ServiceAccount metadata: name: vllm-llama3-8b-instruct-epp - namespace: inf-ext-e2e + namespace: agent-gateway-test --- apiVersion: apps/v1 kind: Deployment metadata: name: vllm-llama3-8b-instruct-epp - namespace: inf-ext-e2e + namespace: agent-gateway-test labels: app: vllm-llama3-8b-instruct-epp spec: @@ -47,7 +47,7 @@ spec: - -pool-name - vllm-llama3-8b-instruct - -pool-namespace - - inf-ext-e2e + - agent-gateway-test - -v - "4" - -zap-encoder @@ -87,7 +87,7 @@ apiVersion: v1 kind: ConfigMap metadata: name: plugins-config - namespace: inf-ext-e2e + namespace: agent-gateway-test data: default-plugins.yaml: | apiVersion: inference.networking.x-k8s.io/v1alpha1 @@ -107,7 +107,7 @@ kind: Role apiVersion: rbac.authorization.k8s.io/v1 metadata: name: pod-read - namespace: inf-ext-e2e + namespace: agent-gateway-test rules: - apiGroups: [ "inference.networking.x-k8s.io" ] resources: [ "inferenceobjectives" ] @@ -123,11 +123,11 @@ kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: pod-read-binding - namespace: inf-ext-e2e + namespace: agent-gateway-test subjects: - kind: ServiceAccount name: vllm-llama3-8b-instruct-epp - namespace: inf-ext-e2e + namespace: agent-gateway-test roleRef: apiGroup: rbac.authorization.k8s.io kind: Role @@ -158,7 +158,7 @@ metadata: subjects: - kind: ServiceAccount name: vllm-llama3-8b-instruct-epp - namespace: inf-ext-e2e + namespace: agent-gateway-test roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole diff --git a/test/e2e/features/inferenceextension/testdata/gateway.yaml b/test/e2e/features/agentgateway/inference/testdata/gateway.yaml similarity index 85% rename from test/e2e/features/inferenceextension/testdata/gateway.yaml rename to test/e2e/features/agentgateway/inference/testdata/gateway.yaml index fddeb127230..f2a817cf423 100644 --- a/test/e2e/features/inferenceextension/testdata/gateway.yaml +++ b/test/e2e/features/agentgateway/inference/testdata/gateway.yaml @@ -2,7 +2,7 @@ apiVersion: gateway.networking.k8s.io/v1 kind: Gateway metadata: name: inference-gateway - namespace: inf-ext-e2e + namespace: agent-gateway-test spec: gatewayClassName: agentgateway listeners: diff --git a/test/e2e/features/inferenceextension/testdata/pool.yaml b/test/e2e/features/agentgateway/inference/testdata/pool.yaml similarity index 90% rename from test/e2e/features/inferenceextension/testdata/pool.yaml rename to test/e2e/features/agentgateway/inference/testdata/pool.yaml index beefcf6a287..60e6fd33aa0 100644 --- a/test/e2e/features/inferenceextension/testdata/pool.yaml +++ b/test/e2e/features/agentgateway/inference/testdata/pool.yaml @@ -2,7 +2,7 @@ apiVersion: inference.networking.k8s.io/v1 kind: InferencePool metadata: name: vllm-llama3-8b-instruct - namespace: inf-ext-e2e + namespace: agent-gateway-test spec: targetPorts: - number: 8000 diff --git a/test/e2e/features/inferenceextension/testdata/route.yaml b/test/e2e/features/agentgateway/inference/testdata/route.yaml similarity index 92% rename from test/e2e/features/inferenceextension/testdata/route.yaml rename to test/e2e/features/agentgateway/inference/testdata/route.yaml index 80b8810beaf..c75ccb93698 100644 --- a/test/e2e/features/inferenceextension/testdata/route.yaml +++ b/test/e2e/features/agentgateway/inference/testdata/route.yaml @@ -2,7 +2,7 @@ apiVersion: gateway.networking.k8s.io/v1 kind: HTTPRoute metadata: name: llm-route - namespace: inf-ext-e2e + namespace: agent-gateway-test spec: parentRefs: - group: gateway.networking.k8s.io diff --git a/test/e2e/features/inferenceextension/testdata/vllm.yaml b/test/e2e/features/agentgateway/inference/testdata/vllm.yaml similarity index 96% rename from test/e2e/features/inferenceextension/testdata/vllm.yaml rename to test/e2e/features/agentgateway/inference/testdata/vllm.yaml index 6891bffe098..06c5189dfe0 100644 --- a/test/e2e/features/inferenceextension/testdata/vllm.yaml +++ b/test/e2e/features/agentgateway/inference/testdata/vllm.yaml @@ -2,7 +2,7 @@ apiVersion: apps/v1 kind: Deployment metadata: name: vllm-llama3-8b-instruct - namespace: inf-ext-e2e + namespace: agent-gateway-test spec: replicas: 3 selector: diff --git a/test/e2e/features/inferenceextension/types.go b/test/e2e/features/agentgateway/inference/types.go similarity index 97% rename from test/e2e/features/inferenceextension/types.go rename to test/e2e/features/agentgateway/inference/types.go index 402d2a10b92..f7fc41bfa13 100644 --- a/test/e2e/features/inferenceextension/types.go +++ b/test/e2e/features/agentgateway/inference/types.go @@ -1,6 +1,6 @@ //go:build e2e -package inferenceextension +package inference import ( "net/http" @@ -18,7 +18,7 @@ import ( var ( // testNS is the namespace used for e2e tests. Test data manifests are hardcoded for this namespace. - testNS = "inf-ext-e2e" + testNS = "agent-gateway-test" // vllmDeployName is the name of the vLLM deployment name vllmDeployName = "vllm-llama3-8b-instruct" // targetModelName is the model name value defined in an LLM request body. diff --git a/test/e2e/tests/agent_gateway_test.go b/test/e2e/tests/agent_gateway_test.go index 6fa7b9da1e5..bbbe3511bc8 100644 --- a/test/e2e/tests/agent_gateway_test.go +++ b/test/e2e/tests/agent_gateway_test.go @@ -5,25 +5,46 @@ package tests_test import ( "context" "os" + "path/filepath" "testing" + "github.com/kgateway-dev/kgateway/v2/pkg/kgateway/crds" + "github.com/kgateway-dev/kgateway/v2/pkg/schemes" "github.com/kgateway-dev/kgateway/v2/pkg/utils/envutils" "github.com/kgateway-dev/kgateway/v2/test/e2e" . "github.com/kgateway-dev/kgateway/v2/test/e2e/tests" + "github.com/kgateway-dev/kgateway/v2/test/e2e/testutils/cluster" "github.com/kgateway-dev/kgateway/v2/test/e2e/testutils/install" + testruntime "github.com/kgateway-dev/kgateway/v2/test/e2e/testutils/runtime" "github.com/kgateway-dev/kgateway/v2/test/testutils" ) +var ( + // poolCrdManifest defines the manifest file containing Inference Extension CRDs. + // Created using command: + // kubectl kustomize "https://github.com/kubernetes-sigs/gateway-api-inference-extension/config/crd/?ref=$COMMIT_SHA" \ + // > pkg/kgateway/crds/inference-crds.yaml + poolCrdManifest = filepath.Join(crds.AbsPathToCrd("inference-crds.yaml")) +) + func TestAgentgatewayIntegration(t *testing.T) { ctx := context.Background() installNs, nsEnvPredefined := envutils.LookupOrDefault(testutils.InstallNamespace, "agent-gateway-test") - testInstallation := e2e.CreateTestInstallation( + + runtimeContext := testruntime.NewContext() + clusterContext := cluster.MustKindContextWithScheme(runtimeContext.ClusterName, schemes.InferExtScheme()) + + installContext := &install.Context{ + InstallNamespace: installNs, + ProfileValuesManifestFile: e2e.CommonRecommendationManifest, + ValuesManifestFile: e2e.ManifestPath("agent-gateway-integration.yaml"), + } + + testInstallation := e2e.CreateTestInstallationForCluster( t, - &install.Context{ - InstallNamespace: installNs, - ProfileValuesManifestFile: e2e.CommonRecommendationManifest, - ValuesManifestFile: e2e.ManifestPath("agent-gateway-integration.yaml"), - }, + runtimeContext, + clusterContext, + installContext, ) // Set the env to the install namespace if it is not already set @@ -42,10 +63,20 @@ func TestAgentgatewayIntegration(t *testing.T) { } testInstallation.UninstallKgateway(ctx) + + // Uninstall InferencePool v1 CRD + err := testInstallation.Actions.Kubectl().DeleteFile(ctx, poolCrdManifest) + testInstallation.Assertions.Require.NoError(err, "can delete manifest %s", poolCrdManifest) }) + // Install InferencePool v1 CRD + err := testInstallation.Actions.Kubectl().ApplyFile(ctx, poolCrdManifest) + testInstallation.Assertions.Require.NoError(err, "can apply manifest %s", poolCrdManifest) + // Install kgateway testInstallation.InstallKgatewayFromLocalChart(ctx) + testInstallation.Assertions.EventuallyNamespaceExists(ctx, installNs) AgentgatewaySuiteRunner().Run(ctx, t, testInstallation) + } diff --git a/test/e2e/tests/agent_gateway_tests.go b/test/e2e/tests/agent_gateway_tests.go index a9474a7b38a..dd9e34ac9f1 100644 --- a/test/e2e/tests/agent_gateway_tests.go +++ b/test/e2e/tests/agent_gateway_tests.go @@ -12,6 +12,7 @@ import ( "github.com/kgateway-dev/kgateway/v2/test/e2e/features/agentgateway/configmap" "github.com/kgateway-dev/kgateway/v2/test/e2e/features/agentgateway/csrf" "github.com/kgateway-dev/kgateway/v2/test/e2e/features/agentgateway/extauth" + "github.com/kgateway-dev/kgateway/v2/test/e2e/features/agentgateway/inference" "github.com/kgateway-dev/kgateway/v2/test/e2e/features/agentgateway/jwtauth" "github.com/kgateway-dev/kgateway/v2/test/e2e/features/agentgateway/mcp" global_rate_limit "github.com/kgateway-dev/kgateway/v2/test/e2e/features/agentgateway/rate_limit/global" @@ -40,6 +41,7 @@ func AgentgatewaySuiteRunner() e2e.SuiteRunner { agentgatewaySuiteRunner.Register("ApiKeyAuth", apikeyauth.NewTestingSuite) agentgatewaySuiteRunner.Register("JwtAuth", jwtauth.NewTestingSuite) agentgatewaySuiteRunner.Register("RemoteJwtAuth", remotejwtauth.NewTestingSuite) + agentgatewaySuiteRunner.Register("Inference", inference.NewTestingSuite) return agentgatewaySuiteRunner } diff --git a/test/e2e/tests/inference_extension_test.go b/test/e2e/tests/inference_extension_test.go deleted file mode 100644 index d2e5aebf171..00000000000 --- a/test/e2e/tests/inference_extension_test.go +++ /dev/null @@ -1,74 +0,0 @@ -//go:build e2e - -package tests_test - -import ( - "context" - "path/filepath" - "testing" - - "github.com/kgateway-dev/kgateway/v2/pkg/kgateway/crds" - "github.com/kgateway-dev/kgateway/v2/pkg/schemes" - "github.com/kgateway-dev/kgateway/v2/test/e2e" - . "github.com/kgateway-dev/kgateway/v2/test/e2e/tests" - "github.com/kgateway-dev/kgateway/v2/test/e2e/testutils/cluster" - "github.com/kgateway-dev/kgateway/v2/test/e2e/testutils/install" - testruntime "github.com/kgateway-dev/kgateway/v2/test/e2e/testutils/runtime" - "github.com/kgateway-dev/kgateway/v2/test/testutils" -) - -var ( - // poolCrdManifest defines the manifest file containing Inference Extension CRDs. - // Created using command: - // kubectl kustomize "https://github.com/kubernetes-sigs/gateway-api-inference-extension/config/crd/?ref=$COMMIT_SHA" \ - // > pkg/kgateway/crds/inference-crds.yaml - poolCrdManifest = filepath.Join(crds.AbsPathToCrd("inference-crds.yaml")) - // infExtNs is the namespace to install kgateway - infExtNs = "inf-ext-e2e" -) - -// TestInferenceExtension tests Inference Extension functionality -func TestInferenceExtension(t *testing.T) { - ctx := context.Background() - - runtimeContext := testruntime.NewContext() - clusterContext := cluster.MustKindContextWithScheme(runtimeContext.ClusterName, schemes.InferExtScheme()) - - installContext := &install.Context{ - InstallNamespace: infExtNs, - ProfileValuesManifestFile: e2e.ManifestPath("inference-extension-helm.yaml"), - ValuesManifestFile: e2e.EmptyValuesManifestPath, - } - - testInstallation := e2e.CreateTestInstallationForCluster( - t, - runtimeContext, - clusterContext, - installContext, - ) - - // We register the cleanup function _before_ we actually perform the installation. - // This allows us to uninstall kgateway, in case the original installation only completed partially - testutils.Cleanup(t, func() { - if t.Failed() { - testInstallation.PreFailHandler(ctx) - } - - testInstallation.UninstallKgateway(ctx) - - // Uninstall InferencePool v1 CRD - err := testInstallation.Actions.Kubectl().DeleteFile(ctx, poolCrdManifest) - testInstallation.Assertions.Require.NoError(err, "can delete manifest %s", poolCrdManifest) - }) - - // Install InferencePool v1 CRD - err := testInstallation.Actions.Kubectl().ApplyFile(ctx, poolCrdManifest) - testInstallation.Assertions.Require.NoError(err, "can apply manifest %s", poolCrdManifest) - - // Install kgateway - testInstallation.InstallKgatewayFromLocalChart(ctx) - testInstallation.Assertions.EventuallyNamespaceExists(ctx, infExtNs) - - // Run the e2e tests - InferenceExtensionSuiteRunner().Run(ctx, t, testInstallation) -} diff --git a/test/e2e/tests/inference_extension_tests.go b/test/e2e/tests/inference_extension_tests.go deleted file mode 100644 index 02a9691ec18..00000000000 --- a/test/e2e/tests/inference_extension_tests.go +++ /dev/null @@ -1,15 +0,0 @@ -//go:build e2e - -package tests - -import ( - "github.com/kgateway-dev/kgateway/v2/test/e2e" - "github.com/kgateway-dev/kgateway/v2/test/e2e/features/inferenceextension" -) - -func InferenceExtensionSuiteRunner() e2e.SuiteRunner { - infExtSuiteRunner := e2e.NewSuiteRunner(false) - - infExtSuiteRunner.Register("InferenceExtension", inferenceextension.NewTestingSuite) - return infExtSuiteRunner -} diff --git a/test/e2e/tests/manifests/inference-extension-helm.yaml b/test/e2e/tests/manifests/inference-extension-helm.yaml deleted file mode 100644 index 636819a0e21..00000000000 --- a/test/e2e/tests/manifests/inference-extension-helm.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# Remove image registry directive when https://github.com/kgateway-dev/kgateway/issues/11359 is fixed -image: - registry: ghcr.io/kgateway-dev - -# Configuration for the kgateway controller pod -controller: - logLevel: debug - -inferenceExtension: - enabled: true