MCPcopy Create free account
hub / github.com/zalando/skipper / TestShadowSingle

Function TestShadowSingle

proxy/shadow_test.go:27–105  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

25)
26
27func TestShadowSingle(t *testing.T) {
28 s := stdlibhttptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
29 w.Header().Add("Backend", "main")
30 w.WriteHeader(http.StatusOK)
31 w.Write([]byte("OK"))
32 }))
33 defer s.Close()
34
35 shadow := stdlibhttptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
36 w.Header().Add("Backend", "shadow")
37 w.WriteHeader(http.StatusOK)
38 w.Write([]byte("OK"))
39 }))
40 defer shadow.Close()
41
42 metrics := &metricstest.MockMetrics{}
43 reg := sched.RegistryWith(sched.Options{
44 Metrics: metrics,
45 EnableRouteFIFOMetrics: true,
46 })
47 defer reg.Close()
48
49 fr := make(filters.Registry)
50 fr.Register(tee.NewTeeLoopback())
51 fr.Register(scheduler.NewFifo())
52
53 doc := fmt.Sprintf(`
54main: PathSubtree("/")
55 -> "%s";
56split: PathSubtree("/") && Traffic(0.5)
57 -> teeLoopback("test")
58 -> "%s";
59shadow: PathSubtree("/") && Tee("test") && True()
60 -> "%s";
61 `, s.URL, s.URL, shadow.URL)
62
63 dc, err := testdataclient.NewDoc(doc)
64 if err != nil {
65 t.Fatalf("Failed to create testdataclient: %v", err)
66 }
67 defer dc.Close()
68
69 ro := routing.Options{
70 SignalFirstLoad: true,
71 FilterRegistry: fr,
72 DataClients: []routing.DataClient{dc},
73 PostProcessors: []routing.PostProcessor{reg},
74 Predicates: []routing.PredicateSpec{
75 teepred.New(),
76 traffic.New(),
77 primitive.NewTrue(),
78 },
79 }
80 rt := routing.New(ro)
81 defer rt.Close()
82 <-rt.FirstLoad()
83
84 pr := WithParams(Params{

Callers

nothing calls this directly

Calls 15

NewDocFunction · 0.92
NewFunction · 0.92
NewTrueFunction · 0.92
NewFunction · 0.92
RegisterMethod · 0.80
NewMethod · 0.80
FirstLoadMethod · 0.80
ClientMethod · 0.80
WithParamsFunction · 0.70
AddMethod · 0.65
CloseMethod · 0.65
GetMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…