Documentation
¶
Overview ¶
Package filtertest implements mock versions of the Filter, Spec and FilterContext interfaces used during tests.
Index ¶
- type Context
- func (fc *Context) BackendUrl() string
- func (fc *Context) Logger() filters.FilterContextLogger
- func (fc *Context) Loopback()
- func (fc *Context) MarkServed()
- func (fc *Context) Metrics() filters.Metrics
- func (fc *Context) OriginalRequest() *http.Request
- func (fc *Context) OriginalResponse() *http.Response
- func (fc *Context) OutgoingHost() string
- func (fc *Context) ParentSpan() opentracing.Span
- func (fc *Context) PathParam(key string) string
- func (fc *Context) Request() *http.Request
- func (fc *Context) Response() *http.Response
- func (fc *Context) ResponseController() *http.ResponseController
- func (fc *Context) ResponseWriter() http.ResponseWriter
- func (fc *Context) Serve(resp *http.Response)
- func (fc *Context) Served() bool
- func (fc *Context) SetOutgoingHost(h string)
- func (fc *Context) Split() (filters.FilterContext, error)
- func (fc *Context) StateBag() map[string]interface{}
- func (fc *Context) Tracer() opentracing.Tracer
- type Filter
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Context ¶
type Context struct {
FResponseWriter http.ResponseWriter
FOriginalRequest *http.Request
FRequest *http.Request
FResponse *http.Response
FServed bool
FServedWithResponse bool
FParams map[string]string
FStateBag map[string]interface{}
FBackendUrl string
FOutgoingHost string
FMetrics filters.Metrics
FTracer opentracing.Tracer
}
Simple FilterContext implementation.
Example ¶
package main
import (
"fmt"
"github.com/zalando/skipper/filters"
"github.com/zalando/skipper/filters/filtertest"
)
type customFilter struct{}
func (f *customFilter) Request(ctx filters.FilterContext) {
ctx.StateBag()["filter called"] = true
}
func (f *customFilter) Response(ctx filters.FilterContext) {}
func main() {
// create a filter instance:
filter := &customFilter{}
// create a test context:
ctx := &filtertest.Context{FStateBag: make(map[string]interface{})}
// call the request handler method of the filter:
filter.Request(ctx)
fmt.Printf("%t", ctx.StateBag()["filter called"].(bool))
}
Output: true
func (*Context) BackendUrl ¶
func (*Context) Logger ¶ added in v0.16.15
func (fc *Context) Logger() filters.FilterContextLogger
func (*Context) MarkServed ¶
func (fc *Context) MarkServed()
func (*Context) OriginalRequest ¶
func (*Context) OriginalResponse ¶
func (*Context) OutgoingHost ¶
func (*Context) ParentSpan ¶ added in v0.10.153
func (fc *Context) ParentSpan() opentracing.Span
func (*Context) ResponseController ¶ added in v0.16.23
func (fc *Context) ResponseController() *http.ResponseController
func (*Context) ResponseWriter ¶
func (fc *Context) ResponseWriter() http.ResponseWriter
func (*Context) SetOutgoingHost ¶
func (*Context) Split ¶ added in v0.11.113
func (fc *Context) Split() (filters.FilterContext, error)
func (*Context) Tracer ¶ added in v0.9.119
func (fc *Context) Tracer() opentracing.Tracer
type Filter ¶
type Filter struct {
FilterName string
Args []interface{}
}
Noop filter, used to verify the filter name and the args in the route. Implements both the Filter and the Spec interfaces.
Example ¶
package main
import (
"github.com/zalando/skipper/filters/builtin"
"github.com/zalando/skipper/filters/filtertest"
"github.com/zalando/skipper/proxy"
"github.com/zalando/skipper/routing"
"github.com/zalando/skipper/routing/testdataclient"
"log"
)
func main() {
// create a test filter and add to the registry:
fr := builtin.MakeRegistry()
fr.Register(&filtertest.Filter{FilterName: "testFilter"})
// create a data client, with a predefined route referencing the filter:
dc, err := testdataclient.NewDoc(`Path("/some/path/:param") -> testFilter(3.14, "Hello, world!") -> "https://www.example.org"`)
if err != nil {
log.Fatal(err)
}
// create routing object:
rt := routing.New(routing.Options{
DataClients: []routing.DataClient{dc},
FilterRegistry: fr})
defer rt.Close()
// create an http.Handler:
p := proxy.New(rt, proxy.OptionsNone)
defer p.Close()
}
func (*Filter) CreateFilter ¶
func (*Filter) Request ¶
func (f *Filter) Request(ctx filters.FilterContext)
func (*Filter) Response ¶
func (f *Filter) Response(ctx filters.FilterContext)
Click to show internal directories.
Click to hide internal directories.