This is an automated email from the ASF dual-hosted git repository.
ashishtiwari pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix-ingress-controller.git
The following commit(s) were added to refs/heads/master by this push:
new eb7c06a6 chore: migrate retries/timeout tests for apisixupstream
(#2517)
eb7c06a6 is described below
commit eb7c06a6f527df1b756ea50ece2bc0fa7dbc6c4e
Author: Ashish Tiwari <[email protected]>
AuthorDate: Mon Aug 25 09:49:38 2025 +0530
chore: migrate retries/timeout tests for apisixupstream (#2517)
---
test/e2e/crds/v2/route.go | 111 ++++++++++++++++++++++++++++++++++++++++
test/e2e/framework/assertion.go | 2 +-
2 files changed, 112 insertions(+), 1 deletion(-)
diff --git a/test/e2e/crds/v2/route.go b/test/e2e/crds/v2/route.go
index 3e1dce56..1a0a01ce 100644
--- a/test/e2e/crds/v2/route.go
+++ b/test/e2e/crds/v2/route.go
@@ -1369,6 +1369,117 @@ spec:
})
})
})
+
+ Context("Test ApisixRoute with ApisixUpstream: retries", func() {
+ const apisixRouteSpec = `
+apiVersion: apisix.apache.org/v2
+kind: ApisixRoute
+metadata:
+ name: default
+ namespace: %s
+spec:
+ ingressClassName: %s
+ http:
+ - name: rule0
+ match:
+ hosts:
+ - httpbin
+ paths:
+ - /*
+ backends:
+ - serviceName: httpbin-service-e2e-test
+ servicePort: 80
+
+`
+ const apisixUpstreamSpec = `
+apiVersion: apisix.apache.org/v2
+kind: ApisixUpstream
+metadata:
+ name: httpbin-service-e2e-test
+ namespace: %s
+spec:
+ ingressClassName: %s
+ retries: 3
+`
+ It("create ApisixRoute and upstream with retries", func() {
+ By("apply apisixupstream")
+ applier.MustApplyAPIv2(types.NamespacedName{Namespace:
s.Namespace(), Name: "httpbin-service-e2e-test"},
+ new(apiv2.ApisixUpstream),
fmt.Sprintf(apisixUpstreamSpec, s.Namespace(), s.Namespace()))
+ By("apply apisixroute")
+ applier.MustApplyAPIv2(types.NamespacedName{Namespace:
s.Namespace(), Name: "default"},
+ new(apiv2.ApisixRoute),
fmt.Sprintf(apisixRouteSpec, s.Namespace(), s.Namespace()))
+ Eventually(func() bool {
+ services, err :=
s.DefaultDataplaneResource().Service().List(context.Background())
+ if err != nil {
+ return false
+ }
+ if len(services) != 1 {
+ return false
+ }
+ if services[0].Upstream == nil {
+ return false
+ }
+ return *services[0].Upstream.Retries == 3
+ }).WithTimeout(30 * time.Second).ProbeEvery(5 *
time.Second).Should(BeTrue())
+ })
+ })
+
+ Context("Test ApisixRoute with ApisixUpstream: timeout", func() {
+ const apisixRouteSpec = `
+apiVersion: apisix.apache.org/v2
+kind: ApisixRoute
+metadata:
+ name: default
+ namespace: %s
+spec:
+ ingressClassName: %s
+ http:
+ - name: rule0
+ match:
+ hosts:
+ - httpbin
+ paths:
+ - /*
+ backends:
+ - serviceName: httpbin-service-e2e-test
+ servicePort: 80
+
+`
+ const apisixUpstreamSpec = `
+apiVersion: apisix.apache.org/v2
+kind: ApisixUpstream
+metadata:
+ name: httpbin-service-e2e-test
+ namespace: %s
+spec:
+ ingressClassName: %s
+ timeout:
+ read: 10s
+ send: 10s
+`
+ It("create ApisixRoute and upstream with retries", func() {
+ By("apply apisixupstream")
+ applier.MustApplyAPIv2(types.NamespacedName{Namespace:
s.Namespace(), Name: "httpbin-service-e2e-test"},
+ new(apiv2.ApisixUpstream),
fmt.Sprintf(apisixUpstreamSpec, s.Namespace(), s.Namespace()))
+ By("apply apisixroute")
+ applier.MustApplyAPIv2(types.NamespacedName{Namespace:
s.Namespace(), Name: "default"},
+ new(apiv2.ApisixRoute),
fmt.Sprintf(apisixRouteSpec, s.Namespace(), s.Namespace()))
+ Eventually(func() bool {
+ services, err :=
s.DefaultDataplaneResource().Service().List(context.Background())
+ if err != nil {
+ return false
+ }
+ if len(services) != 1 {
+ return false
+ }
+ if services[0].Upstream == nil {
+ return false
+ }
+ return services[0].Upstream.Timeout.Read == 10
&& services[0].Upstream.Timeout.Send == 10
+ }).WithTimeout(30 * time.Second).ProbeEvery(5 *
time.Second).Should(BeTrue())
+ })
+ })
+
Context("Test tls secret processed from ApisixUpstream", func() {
var Cert = strings.TrimSpace(framework.TestServerCert)
var Key = strings.TrimSpace(framework.TestServerKey)
diff --git a/test/e2e/framework/assertion.go b/test/e2e/framework/assertion.go
index 32e9c2a9..fe069b4e 100644
--- a/test/e2e/framework/assertion.go
+++ b/test/e2e/framework/assertion.go
@@ -179,7 +179,7 @@ type applier struct {
func (a *applier) MustApplyAPIv2(nn types.NamespacedName, obj client.Object,
spec string) {
require.NoError(a.t, a.apply(spec), "creating %s", nn)
- APIv2MustHaveCondition(a.t, a.cli, 90*time.Second, nn, obj,
metav1.Condition{
+ APIv2MustHaveCondition(a.t, a.cli, 180*time.Second, nn, obj,
metav1.Condition{
Type: string(gatewayv1.RouteConditionAccepted),
Status: metav1.ConditionTrue,
Reason: string(gatewayv1.GatewayReasonAccepted),