-
Notifications
You must be signed in to change notification settings - Fork 8
/
middleware_backend_test.go
91 lines (81 loc) · 2.44 KB
/
middleware_backend_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
// Copyright 2015-present, Cyrill @ Schumacher.fm and the CoreStore contributors
//
// 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.
// +build esiall
// above build tag triggers inclusion of all backend resource connectors
package caddyesi_test
import (
"net/http"
"net/http/httptest"
"testing"
"github.com/alicebob/miniredis"
"github.com/corestoreio/caddy-esi"
"github.com/corestoreio/caddy-esi/esitesting"
)
func TestMiddleware_ServeHTTP_Redis(t *testing.T) {
t.Parallel()
mr := miniredis.NewMiniRedis()
if err := mr.Start(); err != nil {
t.Fatal(err)
}
defer mr.Close()
if err := mr.Set("myKey_9876", "Gopher01"); err != nil {
t.Fatal(err)
}
if err := mr.Set("myKey02", "Rustafarian02"); err != nil {
t.Fatal(err)
}
esiCfg, clean := esitesting.WriteXMLTempFile(t, caddyesi.ResourceItems{
caddyesi.NewResourceItem(`redis://`+mr.Addr()+`/0`, "miniRedis"),
})
defer clean()
t.Run("Query in page04.html successfully", mwTestRunner(
`esi {
resources `+esiCfg+`
# miniRedis redis://`+mr.Addr()+`/0
# log_file +tmpLogFile+
# log_level debug
}`,
func() *http.Request {
req := httptest.NewRequest("GET", "/page04.html", nil)
req.Header.Set("X-Gopher-ID", "9876")
return req
}(),
`<p>Gopher01</p>
<p>Rustafarian02</p>`,
nil,
))
//tmpLogFile, _ := esitesting.Tempfile(t)
//t.Log(tmpLogFile)
// defer clean()
esiCfg, clean = esitesting.WriteXMLTempFile(t, caddyesi.ResourceItems{
caddyesi.NewResourceItem(`redis://`+mr.Addr()+`/0`, "miniRedis"),
caddyesi.NewResourceItem(`mockTimeout://50s`, "miniRedisTimeout"),
})
defer clean()
t.Run("Query in page05.html but timeout in server 2 and fall back to server 1", mwTestRunner(
`esi {
resources `+esiCfg+`
#log_file +tmpLogFile+
#log_level debug
}`,
func() *http.Request {
req := httptest.NewRequest("GET", "/page05.html", nil)
req.Header.Set("X-Gopher-ID", "9876")
return req
}(),
`<p>Gopher01</p>
<p>Rustafarian02</p>`,
nil,
))
}