proxytest

package
v0.0.14 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 12, 2021 License: Apache-2.0 Imports: 5 Imported by: 0

README

test framework for proxy-wasm-go-sdk

With proxytest build tag, you can test your extension with the official command:

go test -tags=proxytest ./... 

This framework simulates the expected behavior of Envoyproxy, and you can test your extensions without running Envoy. For detail, see examples/*/main_test.go.

Note that we have not covered all the functionality, and the API is very likely to change in the future.

Documentation

Index

Constants

View Source
const (
	RootContextID uint32 = 1 // TODO: support multiple rootContext
)

Variables

This section is empty.

Functions

This section is empty.

Types

type EmulatorOption added in v0.0.5

type EmulatorOption struct {
	// contains filtered or unexported fields
}

func NewEmulatorOption added in v0.0.5

func NewEmulatorOption() *EmulatorOption

func (*EmulatorOption) WithNewHttpContext added in v0.0.5

func (o *EmulatorOption) WithNewHttpContext(f func(uint32, uint32) proxywasm.HttpContext) *EmulatorOption

func (*EmulatorOption) WithNewRootContext added in v0.0.5

func (o *EmulatorOption) WithNewRootContext(f func(uint32) proxywasm.RootContext) *EmulatorOption

func (*EmulatorOption) WithNewStreamContext added in v0.0.5

func (o *EmulatorOption) WithNewStreamContext(f func(uint32, uint32) proxywasm.StreamContext) *EmulatorOption

func (*EmulatorOption) WithPluginConfiguration added in v0.0.5

func (o *EmulatorOption) WithPluginConfiguration(data []byte) *EmulatorOption

func (*EmulatorOption) WithVMConfiguration added in v0.0.5

func (o *EmulatorOption) WithVMConfiguration(data []byte) *EmulatorOption

type HostEmulator added in v0.0.5

type HostEmulator interface {
	Done()

	// Root
	StartVM()
	StartPlugin()
	FinishVM()

	GetCalloutAttributesFromContext(contextID uint32) []HttpCalloutAttribute
	PutCalloutResponse(contextID uint32, headers, trailers [][2]string, body []byte)

	GetLogs(level types.LogLevel) []string
	GetTickPeriod() uint32
	Tick()
	GetQueueSize(queueID uint32) int

	// network
	NetworkFilterInitConnection() (contextID uint32)
	NetworkFilterPutUpstreamData(contextID uint32, data []byte)
	NetworkFilterPutDownstreamData(contextID uint32, data []byte)
	NetworkFilterCloseUpstreamConnection(contextID uint32)
	NetworkFilterCloseDownstreamConnection(contextID uint32)
	NetworkFilterCompleteConnection(contextID uint32)

	// http
	HttpFilterInitContext() (contextID uint32)
	HttpFilterPutRequestHeaders(contextID uint32, headers [][2]string)
	HttpFilterGetRequestHeaders(contextID uint32) (headers [][2]string)
	HttpFilterPutRequestHeadersEndOfStream(contextID uint32, headers [][2]string, endOfStream bool)
	HttpFilterPutResponseHeaders(contextID uint32, headers [][2]string)
	HttpFilterGetResponseHeaders(contextID uint32) (headers [][2]string)
	HttpFilterPutResponseHeadersEndOfStream(contextID uint32, headers [][2]string, endOfStream bool)
	HttpFilterPutRequestTrailers(contextID uint32, headers [][2]string)
	HttpFilterPutResponseTrailers(contextID uint32, headers [][2]string)
	HttpFilterPutRequestBody(contextID uint32, body []byte)
	HttpFilterPutRequestBodyEndOfStream(contextID uint32, body []byte, endOfStream bool)
	HttpFilterGetRequestBody(contextID uint32) []byte
	HttpFilterPutResponseBody(contextID uint32, body []byte)
	HttpFilterPutResponseBodyEndOfStream(contextID uint32, body []byte, endOfStream bool)
	HttpFilterGetResponseBody(contextID uint32) []byte
	HttpFilterCompleteHttpStream(contextID uint32)
	HttpFilterGetCurrentStreamAction(contextID uint32) types.Action
	HttpFilterGetSentLocalResponse(contextID uint32) *LocalHttpResponse
	CallOnLogForAccessLogger(requestHeaders, responseHeaders [][2]string)
}

func NewHostEmulator added in v0.0.5

func NewHostEmulator(opt *EmulatorOption) HostEmulator

type HttpCalloutAttribute added in v0.0.5

type HttpCalloutAttribute struct {
	CalloutID         uint32
	Upstream          string
	Headers, Trailers [][2]string
	Body              []byte
}

type LocalHttpResponse

type LocalHttpResponse struct {
	StatusCode       uint32
	StatusCodeDetail string
	Data             []byte
	Headers          [][2]string
	GRPCStatus       int32
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL