@@ -25,6 +25,7 @@ import (
2525
2626 . "github.com/onsi/ginkgo/v2"
2727 . "github.com/onsi/gomega"
28+ corev1 "k8s.io/api/core/v1"
2829 "k8s.io/apimachinery/pkg/types"
2930 "sigs.k8s.io/yaml"
3031
@@ -42,16 +43,71 @@ var _ = Describe("Test apisix.apache.org/v2 Status", Label("apisix.apache.org",
4243 applier = framework .NewApplier (s .GinkgoT , s .K8sClient , s .CreateResourceFromString )
4344 )
4445
46+ var gatewayProxyYaml = `
47+ apiVersion: apisix.apache.org/v1alpha1
48+ kind: GatewayProxy
49+ metadata:
50+ name: apisix-proxy-config
51+ spec:
52+ provider:
53+ type: ControlPlane
54+ controlPlane:
55+ service:
56+ name: %s
57+ port: 9180
58+ auth:
59+ type: AdminKey
60+ adminKey:
61+ value: "%s"
62+ `
63+
64+ var gatewayProxyYamlAPI7 = `
65+ apiVersion: apisix.apache.org/v1alpha1
66+ kind: GatewayProxy
67+ metadata:
68+ name: apisix-proxy-config
69+ spec:
70+ provider:
71+ type: ControlPlane
72+ controlPlane:
73+ endpoints:
74+ - %s
75+ auth:
76+ type: AdminKey
77+ adminKey:
78+ value: "%s"
79+ `
80+ getGatewayProxySpec := func () string {
81+ if s .Deployer .Name () == adc .BackendModeAPI7EE {
82+ return fmt .Sprintf (gatewayProxyYamlAPI7 , s .Deployer .GetAdminEndpoint (), s .AdminKey ())
83+ }
84+ return fmt .Sprintf (gatewayProxyYaml , framework .ProviderType , s .AdminKey ())
85+ }
86+
4587 Context ("Test ApisixRoute Sync Status" , func () {
4688 BeforeEach (func () {
4789 By ("create GatewayProxy" )
48- gatewayProxy := fmt . Sprintf ( gatewayProxyYaml , s . Deployer . GetAdminEndpoint (), s . AdminKey () )
49- err := s .CreateResourceFromStringWithNamespace (gatewayProxy , "default" )
90+ gatewayProxy := getGatewayProxySpec ( )
91+ err := s .CreateResourceFromString (gatewayProxy )
5092 Expect (err ).NotTo (HaveOccurred (), "creating GatewayProxy" )
5193 time .Sleep (5 * time .Second )
5294
5395 By ("create IngressClass" )
54- ingressClass := fmt .Sprintf (ingressClassYaml , framework .IngressVersion )
96+ const ingressClassYaml = `
97+ apiVersion: networking.k8s.io/%s
98+ kind: IngressClass
99+ metadata:
100+ name: apisix
101+ spec:
102+ controller: "apisix.apache.org/apisix-ingress-controller"
103+ parameters:
104+ apiGroup: "apisix.apache.org"
105+ kind: "GatewayProxy"
106+ name: "apisix-proxy-config"
107+ scope: Namespace
108+ namespace: %s
109+ `
110+ ingressClass := fmt .Sprintf (ingressClassYaml , framework .IngressVersion , s .Namespace ())
55111 err = s .CreateResourceFromStringWithNamespace (ingressClass , "" )
56112 Expect (err ).NotTo (HaveOccurred (), "creating IngressClass" )
57113 time .Sleep (5 * time .Second )
@@ -157,7 +213,22 @@ spec:
157213 Check : scaffold .WithExpectedStatus (200 ),
158214 })
159215
160- s .Deployer .ScaleDataplane (0 )
216+ By ("get yaml from service" )
217+ serviceYaml , err := s .GetOutputFromString ("svc" , framework .ProviderType , "-o" , "yaml" )
218+ Expect (err ).NotTo (HaveOccurred (), "getting service yaml" )
219+ By ("update service to type ExternalName with invalid host" )
220+ var k8sservice corev1.Service
221+ err = yaml .Unmarshal ([]byte (serviceYaml ), & k8sservice )
222+ Expect (err ).NotTo (HaveOccurred (), "unmarshalling service" )
223+ oldSpec := k8sservice .Spec
224+ k8sservice .Spec = corev1.ServiceSpec {
225+ Type : corev1 .ServiceTypeExternalName ,
226+ ExternalName : "invalid.host" ,
227+ }
228+ newServiceYaml , err := yaml .Marshal (k8sservice )
229+ Expect (err ).NotTo (HaveOccurred (), "marshalling service" )
230+ err = s .CreateResourceFromString (string (newServiceYaml ))
231+ Expect (err ).NotTo (HaveOccurred (), "creating service" )
161232
162233 By ("check ApisixRoute status" )
163234 s .RetryAssertion (func () string {
@@ -171,7 +242,16 @@ spec:
171242 ),
172243 )
173244
174- s .Deployer .ScaleDataplane (1 )
245+ By ("update service to original spec" )
246+ serviceYaml , err = s .GetOutputFromString ("svc" , framework .ProviderType , "-o" , "yaml" )
247+ Expect (err ).NotTo (HaveOccurred (), "getting service yaml" )
248+ err = yaml .Unmarshal ([]byte (serviceYaml ), & k8sservice )
249+ Expect (err ).NotTo (HaveOccurred (), "unmarshalling service" )
250+ k8sservice .Spec = oldSpec
251+ newServiceYaml , err = yaml .Marshal (k8sservice )
252+ Expect (err ).NotTo (HaveOccurred (), "marshalling service" )
253+ err = s .CreateResourceFromString (string (newServiceYaml ))
254+ Expect (err ).NotTo (HaveOccurred (), "creating service" )
175255
176256 By ("check ApisixRoute status after scaling up" )
177257 s .RetryAssertion (func () string {
0 commit comments