2016-11-10 22:56:29 +00:00
|
|
|
/*
|
|
|
|
Copyright 2015 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 template
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
2017-01-10 18:02:35 +00:00
|
|
|
"github.com/kylelemons/godebug/pretty"
|
|
|
|
|
2016-11-10 22:56:29 +00:00
|
|
|
"k8s.io/ingress/controllers/nginx/pkg/config"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestFilterErrors(t *testing.T) {
|
|
|
|
e := filterErrors([]int{200, 300, 345, 500, 555, 999})
|
|
|
|
if len(e) != 4 {
|
|
|
|
t.Errorf("expected 4 elements but %v returned", len(e))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestMergeConfigMapToStruct(t *testing.T) {
|
2017-01-20 22:37:59 +00:00
|
|
|
conf := map[string]string{
|
|
|
|
"custom-http-errors": "300,400,demo",
|
|
|
|
"proxy-read-timeout": "1",
|
|
|
|
"proxy-send-timeout": "2",
|
|
|
|
"skip-access-log-urls": "/log,/demo,/test",
|
|
|
|
"use-proxy-protocol": "true",
|
2017-02-09 23:20:12 +00:00
|
|
|
"disable-access-log": "true",
|
2017-08-23 14:57:28 +00:00
|
|
|
"access-log-path": "/var/log/test/access.log",
|
|
|
|
"error-log-path": "/var/log/test/error.log",
|
2017-01-20 22:37:59 +00:00
|
|
|
"use-gzip": "true",
|
|
|
|
"enable-dynamic-tls-records": "false",
|
|
|
|
"gzip-types": "text/html",
|
2017-07-06 20:17:46 +00:00
|
|
|
"proxy-real-ip-cidr": "1.1.1.1/8,2.2.2.2/24",
|
2017-08-25 02:24:32 +00:00
|
|
|
"bind-address": "1.1.1.1,2.2.2.2,3.3.3,2001:db8:a0b:12f0::1,3731:54:65fe:2::a7,33:33:33::33::33",
|
2017-08-29 09:49:18 +00:00
|
|
|
"worker-shutdown-timeout": "99s",
|
2016-12-28 13:08:02 +00:00
|
|
|
}
|
2016-11-10 22:56:29 +00:00
|
|
|
def := config.NewDefault()
|
|
|
|
def.CustomHTTPErrors = []int{300, 400}
|
2017-02-09 23:20:12 +00:00
|
|
|
def.DisableAccessLog = true
|
2017-08-23 14:57:28 +00:00
|
|
|
def.AccessLogPath = "/var/log/test/access.log"
|
|
|
|
def.ErrorLogPath = "/var/log/test/error.log"
|
2016-12-28 13:08:02 +00:00
|
|
|
def.SkipAccessLogURLs = []string{"/log", "/demo", "/test"}
|
|
|
|
def.ProxyReadTimeout = 1
|
|
|
|
def.ProxySendTimeout = 2
|
|
|
|
def.EnableDynamicTLSRecords = false
|
|
|
|
def.UseProxyProtocol = true
|
|
|
|
def.GzipTypes = "text/html"
|
2017-07-06 20:17:46 +00:00
|
|
|
def.ProxyRealIPCIDR = []string{"1.1.1.1/8", "2.2.2.2/24"}
|
2017-08-25 02:24:32 +00:00
|
|
|
def.BindAddressIpv4 = []string{"1.1.1.1", "2.2.2.2"}
|
|
|
|
def.BindAddressIpv6 = []string{"[2001:db8:a0b:12f0::1]", "[3731:54:65fe:2::a7]"}
|
2017-08-29 09:49:18 +00:00
|
|
|
def.WorkerShutdownTimeout = "99s"
|
2016-12-28 13:08:02 +00:00
|
|
|
|
|
|
|
to := ReadConfig(conf)
|
2017-01-13 13:26:13 +00:00
|
|
|
if diff := pretty.Compare(to, def); diff != "" {
|
|
|
|
t.Errorf("unexpected diff: (-got +want)\n%s", diff)
|
2016-12-28 13:08:02 +00:00
|
|
|
}
|
2017-01-10 18:02:35 +00:00
|
|
|
|
|
|
|
def = config.NewDefault()
|
2017-01-20 22:37:59 +00:00
|
|
|
to = ReadConfig(map[string]string{})
|
2017-01-13 13:26:13 +00:00
|
|
|
if diff := pretty.Compare(to, def); diff != "" {
|
|
|
|
t.Errorf("unexpected diff: (-got +want)\n%s", diff)
|
2017-01-10 18:02:35 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
def = config.NewDefault()
|
|
|
|
def.WhitelistSourceRange = []string{"1.1.1.1/32"}
|
2017-01-20 22:37:59 +00:00
|
|
|
to = ReadConfig(map[string]string{
|
|
|
|
"whitelist-source-range": "1.1.1.1/32",
|
2017-01-10 18:02:35 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
if diff := pretty.Compare(to, def); diff != "" {
|
|
|
|
t.Errorf("unexpected diff: (-got +want)\n%s", diff)
|
|
|
|
}
|
2016-11-10 22:56:29 +00:00
|
|
|
}
|
2017-04-28 20:41:53 +00:00
|
|
|
|
|
|
|
func TestDefaultLoadBalance(t *testing.T) {
|
2017-05-12 00:50:43 +00:00
|
|
|
conf := map[string]string{}
|
2017-04-28 20:41:53 +00:00
|
|
|
to := ReadConfig(conf)
|
|
|
|
if to.LoadBalanceAlgorithm != "least_conn" {
|
|
|
|
t.Errorf("default load balance algorithm wrong")
|
|
|
|
}
|
|
|
|
}
|