From 12fe318fdb167770ad60d11a859db251329ffe48 Mon Sep 17 00:00:00 2001 From: Balazs Szekeres Date: Fri, 28 Feb 2020 12:13:53 +0100 Subject: [PATCH] Added test case for proxy connect, read, and send timeout from setting them via Nginx configmap. --- test/e2e/annotations/proxy.go | 4 +- test/e2e/settings/proxy_connect_timeout.go | 68 ++++++++++++++++++++++ test/e2e/settings/proxy_read_timeout.go | 68 ++++++++++++++++++++++ test/e2e/settings/proxy_send_timeout.go | 68 ++++++++++++++++++++++ 4 files changed, 206 insertions(+), 2 deletions(-) create mode 100644 test/e2e/settings/proxy_connect_timeout.go create mode 100644 test/e2e/settings/proxy_read_timeout.go create mode 100644 test/e2e/settings/proxy_send_timeout.go diff --git a/test/e2e/annotations/proxy.go b/test/e2e/annotations/proxy.go index a7a3ebbea..65e71da8e 100644 --- a/test/e2e/annotations/proxy.go +++ b/test/e2e/annotations/proxy.go @@ -149,8 +149,8 @@ var _ = framework.DescribeAnnotation("proxy-*", func() { f.WaitForNginxServer(host, func(server string) bool { return !strings.Contains(server, fmt.Sprintf("proxy_connect_timeout %ss;", proxyConnectTimeout)) && - !strings.Contains(server, fmt.Sprintf("proxy_connect_timeout %ss;", proxyConnectTimeout)) && - !strings.Contains(server, fmt.Sprintf("proxy_connect_timeout %ss;", proxyConnectTimeout)) + !strings.Contains(server, fmt.Sprintf("proxy_send_timeout %ss;", proxySendTimeout)) && + !strings.Contains(server, fmt.Sprintf("proxy_read_timeout %ss;", proxyReadtimeout)) }) }) diff --git a/test/e2e/settings/proxy_connect_timeout.go b/test/e2e/settings/proxy_connect_timeout.go new file mode 100644 index 000000000..8d2fd5fda --- /dev/null +++ b/test/e2e/settings/proxy_connect_timeout.go @@ -0,0 +1,68 @@ +/* +Copyright 2020 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 settings + +import ( + "fmt" + "strings" + + "github.com/onsi/ginkgo" + + "k8s.io/ingress-nginx/test/e2e/framework" +) + +var _ = framework.DescribeSetting("proxy-connect-timeout", func() { + f := framework.NewDefaultFramework("proxy") + host := "proxy-connect-timeout.com" + + ginkgo.BeforeEach(func() { + f.NewEchoDeployment() + }) + + ginkgo.It("should set valid proxy timeouts using configmap values", func() { + ing := framework.NewSingleIngress(host, "/", host, f.Namespace, framework.EchoService, 80, nil) + f.EnsureIngress(ing) + + proxyConnectTimeout := "50" + + cm := make(map[string]string) + cm["proxy-connect-timeout"] = proxyConnectTimeout + f.SetNginxConfigMapData(cm) + + f.WaitForNginxServer(host, + func(server string) bool { + return strings.Contains(server, fmt.Sprintf("proxy_connect_timeout %ss;", proxyConnectTimeout)) + }) + }) + + ginkgo.It("should not set invalid proxy timeouts using configmap values", func() { + ing := framework.NewSingleIngress(host, "/", host, f.Namespace, framework.EchoService, 80, nil) + f.EnsureIngress(ing) + + proxyConnectTimeout := "50k" + + cm := make(map[string]string) + cm["proxy-connect-timeout"] = proxyConnectTimeout + f.SetNginxConfigMapData(cm) + + f.WaitForNginxServer(host, + func(server string) bool { + return !strings.Contains(server, fmt.Sprintf("proxy_connect_timeout %ss;", proxyConnectTimeout)) + }) + }) + +}) diff --git a/test/e2e/settings/proxy_read_timeout.go b/test/e2e/settings/proxy_read_timeout.go new file mode 100644 index 000000000..41171e2c6 --- /dev/null +++ b/test/e2e/settings/proxy_read_timeout.go @@ -0,0 +1,68 @@ +/* +Copyright 2020 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 settings + +import ( + "fmt" + "strings" + + "github.com/onsi/ginkgo" + + "k8s.io/ingress-nginx/test/e2e/framework" +) + +var _ = framework.DescribeSetting("proxy-read-timeout", func() { + f := framework.NewDefaultFramework("proxy") + host := "proxy-read-timeout.com" + + ginkgo.BeforeEach(func() { + f.NewEchoDeployment() + }) + + ginkgo.It("should set valid proxy read timeouts using configmap values", func() { + ing := framework.NewSingleIngress(host, "/", host, f.Namespace, framework.EchoService, 80, nil) + f.EnsureIngress(ing) + + proxyReadtimeout := "20" + + cm := make(map[string]string) + cm["proxy-read-timeout"] = proxyReadtimeout + f.SetNginxConfigMapData(cm) + + f.WaitForNginxServer(host, + func(server string) bool { + return strings.Contains(server, fmt.Sprintf("proxy_read_timeout %ss;", proxyReadtimeout)) + }) + }) + + ginkgo.It("should not set invalid proxy read timeouts using configmap values", func() { + ing := framework.NewSingleIngress(host, "/", host, f.Namespace, framework.EchoService, 80, nil) + f.EnsureIngress(ing) + + proxyReadtimeout := "20k" + + cm := make(map[string]string) + cm["proxy-read-timeout"] = proxyReadtimeout + f.SetNginxConfigMapData(cm) + + f.WaitForNginxServer(host, + func(server string) bool { + return !strings.Contains(server, fmt.Sprintf("proxy_read_timeout %ss;", proxyReadtimeout)) + }) + }) + +}) diff --git a/test/e2e/settings/proxy_send_timeout.go b/test/e2e/settings/proxy_send_timeout.go new file mode 100644 index 000000000..031f4361f --- /dev/null +++ b/test/e2e/settings/proxy_send_timeout.go @@ -0,0 +1,68 @@ +/* +Copyright 2020 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 settings + +import ( + "fmt" + "strings" + + "github.com/onsi/ginkgo" + + "k8s.io/ingress-nginx/test/e2e/framework" +) + +var _ = framework.DescribeSetting("proxy-send-timeout", func() { + f := framework.NewDefaultFramework("proxy") + host := "proxy-send-timeout.com" + + ginkgo.BeforeEach(func() { + f.NewEchoDeployment() + }) + + ginkgo.It("should set valid proxy send timeouts using configmap values", func() { + ing := framework.NewSingleIngress(host, "/", host, f.Namespace, framework.EchoService, 80, nil) + f.EnsureIngress(ing) + + proxySendTimeout := "20" + + cm := make(map[string]string) + cm["proxy-send-timeout"] = proxySendTimeout + f.SetNginxConfigMapData(cm) + + f.WaitForNginxServer(host, + func(server string) bool { + return strings.Contains(server, fmt.Sprintf("proxy_send_timeout %ss;", proxySendTimeout)) + }) + }) + + ginkgo.It("should not set invalid proxy send timeouts using configmap values", func() { + ing := framework.NewSingleIngress(host, "/", host, f.Namespace, framework.EchoService, 80, nil) + f.EnsureIngress(ing) + + proxySendTimeout := "20k" + + cm := make(map[string]string) + cm["proxy-send-timeout"] = proxySendTimeout + f.SetNginxConfigMapData(cm) + + f.WaitForNginxServer(host, + func(server string) bool { + return !strings.Contains(server, fmt.Sprintf("proxy_send_timeout %ss;", proxySendTimeout)) + }) + }) + +})