summaryrefslogtreecommitdiff
path: root/modules/caddyhttp/matchers_test.go
diff options
context:
space:
mode:
authorPascal <pascalgn@users.noreply.github.com>2019-10-14 19:29:36 +0200
committerMatt Holt <mholt@users.noreply.github.com>2019-10-14 11:29:36 -0600
commitbc738991b6234bf334855e1396919e79ef9791b8 (patch)
tree62777f65ca331cf5125708f7200d381585e74ee3 /modules/caddyhttp/matchers_test.go
parentfcd8869f51b78f260e3c3aed53d7d87c2051ffe9 (diff)
caddyhttp: Support placeholders in MatchHost (#2810)
* Replace global placeholders in host matcher * caddyhttp: Fix panic on MatchHost tests
Diffstat (limited to 'modules/caddyhttp/matchers_test.go')
-rw-r--r--modules/caddyhttp/matchers_test.go52
1 files changed, 52 insertions, 0 deletions
diff --git a/modules/caddyhttp/matchers_test.go b/modules/caddyhttp/matchers_test.go
index 48783ae..81cb1d0 100644
--- a/modules/caddyhttp/matchers_test.go
+++ b/modules/caddyhttp/matchers_test.go
@@ -20,12 +20,18 @@ import (
"net/http"
"net/http/httptest"
"net/url"
+ "os"
"testing"
"github.com/caddyserver/caddy/v2"
)
func TestHostMatcher(t *testing.T) {
+ err := os.Setenv("GO_BENCHMARK_DOMAIN", "localhost")
+ if err != nil {
+ t.Errorf("error while setting up environment: %v", err)
+ }
+
for i, tc := range []struct {
match MatchHost
input string
@@ -106,8 +112,22 @@ func TestHostMatcher(t *testing.T) {
input: "example.com:5555",
expect: true,
},
+ {
+ match: MatchHost{"{env.GO_BENCHMARK_DOMAIN}"},
+ input: "localhost",
+ expect: true,
+ },
+ {
+ match: MatchHost{"{env.GO_NONEXISTENT}"},
+ input: "localhost",
+ expect: false,
+ },
} {
req := &http.Request{Host: tc.input}
+ repl := caddy.NewReplacer()
+ ctx := context.WithValue(req.Context(), caddy.ReplacerCtxKey, repl)
+ req = req.WithContext(ctx)
+
actual := tc.match.Match(req)
if actual != tc.expect {
t.Errorf("Test %d %v: Expected %t, got %t for '%s'", i, tc.match, tc.expect, actual, tc.input)
@@ -518,3 +538,35 @@ func TestResponseMatcher(t *testing.T) {
}
}
}
+
+func BenchmarkHostMatcherWithoutPlaceholder(b *testing.B) {
+ req := &http.Request{Host: "localhost"}
+ repl := caddy.NewReplacer()
+ ctx := context.WithValue(req.Context(), caddy.ReplacerCtxKey, repl)
+ req = req.WithContext(ctx)
+
+ match := MatchHost{"localhost"}
+
+ b.ResetTimer()
+ for i := 0; i < b.N; i++ {
+ match.Match(req)
+ }
+}
+
+func BenchmarkHostMatcherWithPlaceholder(b *testing.B) {
+ err := os.Setenv("GO_BENCHMARK_DOMAIN", "localhost")
+ if err != nil {
+ b.Errorf("error while setting up environment: %v", err)
+ }
+
+ req := &http.Request{Host: "localhost"}
+ repl := caddy.NewReplacer()
+ ctx := context.WithValue(req.Context(), caddy.ReplacerCtxKey, repl)
+ req = req.WithContext(ctx)
+ match := MatchHost{"{env.GO_BENCHMARK_DOMAIN}"}
+
+ b.ResetTimer()
+ for i := 0; i < b.N; i++ {
+ match.Match(req)
+ }
+}