mse6

package module
v0.5.1 Latest Latest
Warning

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

Go to latest
Published: Jun 1, 2023 License: Apache-2.0 Imports: 17 Imported by: 0

README

mse6 is designed to test the resilience of your http client. It's a mock HTTP/TLS server that responds with abnormal behaviour such as slow HTTP responses, bad content encoding, sudden crashes, network termination that are otherwise difficult to consistently reproduce under test conditions.

Circleci Builds Github Workflows Github Issues Github Activity
Go Report Codeclimate Maintainability Codeclimate Test Coverage Go Version License Docker Pulls Docker Image Size Version

Up and running

Docker

docker pull simonmittag/mse6 &&
  docker run -p8081:8081 simonmittag/mse6

Homebrew

brew tap simonmittag/cli &&
  brew install mse6 &&
  mse6

Golang

go install github.com/simonmittag/mse6/cmd/mse6 && 
  mse6

Usage

λ mse6 -h
  Usage of mse6:
    -p int
      	the http port (default 8081)
    -s self-signed ssl mode
    -t	server self test
    -u string
    	the path prefix (default "/mse6/")
    -v	print the server version

Routes

GET /mse6/badcontentlength Sends invalid content length header, too large for response

GET /mse6/badgzip Sends a response gzip content encoding header and garbled binary

GET /mse6/brotli Sends a response with br content encoding header and brotli encoded binary response

CONNECT /mse6/connect?body=true Sends a HTTP 200 OK response to the HTTP connect method. Has no bearing on network connection other than standard keepalive. Will send (illegal) body if body=true

GET /mse6/choose Sends a HTTP response to the client with one of the following content encodings: br, gzip, deflate or identity Content encoding preference is in above order and depends on values found in Accept-Encoding header found on request.

GET /mse6/chunked Sends a chunked HTTP/1.1 response to the client

DELETE /mse6/delete Standard json response with status code 204

GET /mse6/deflate sends a deflate encoded response

GET /mse6/echoheader echoes all request headers sent on response body for testing

GET /mse6/echoquery echoes all query string values sent with request on response body for testing

GET /mse6/echoport sends a response with the http port the server is listening on

GET /mse6/formget simulates a form GET by echoing the raw request

POST /mse6/formpost simulates a form POST by echoing the raw request. Supports both Content-Type: application/x-www-form-urlencoded and Content-Type: multipart/form-data

GET /mse6/get Standard json response with status code 200

HEAD /mse6/getorhead?cl=y GET /mse6/getorhead Sends a HTTP HEAD response or a GET response, depending on request method. If query param cl is appended with any value, the Content-Length header of the body otherwise sent by GET is also included in the HEAD response

GET /mse6/gzip Sends a gzipped response with proper content encoding

GET /mse6/hangupduringheader Sends a partial header only response, waits 2s, then closes the TCP connection.

GET /mse6/hangupafterheader Sends a complete header only response message , waits 2s, then closes the TCP connection.

GET /mse6/hangupduringbody Sends a complete header message, then some of the body, waits 2s, then closes the TCP connection.

GET /mse6/jwks sends a list of RS256 Jwks keys

GET /mse6/jwksmix sends a list of mixed algorithm Jwks keys

GET /mse6/jwkses256 sends a JWKS key of type ES256

GET /mse6/jwksbad sends illegally formatted Jwks key

GET /mse6/jwksrotate sends a rotating Jwks keys that change arbitrarily.

GET /mse6/jwksbadrotate?rc=0 sends a rotating Jwks key that alternates every request. Sends malformed keys. Stateful method, reset good behaviour with rc=0

GET /mse6/nocontentenc Sends a HTTP response without a content encoding header set

OPTIONS /mse6/options?code=n&body=true Sends a HTTP OPTIONS response as per RFC7231, section 4.3.7. Contains Allow headers and a status code. Legal status codes are 200 and 204, the rest is undefined. Will send (illegal) body if body=true

PATCH /mse6/patch Standard json response with status code 200

POST /mse6/post Standard json response with status code 201

PUT /mse6/put Standard json response with status code 200

GET /mse6/send?code=nnn&url=http%3A%2F%2Fwww.google.com Sends arbitrary response code between 100 and 999. For redirects, you can supply a custom location parameter. Don't forget to URL encode your params.

GET /mse6/slowheader?wait=n Sends headers but only after waiting for n seconds. Alternatively configure default with -w=n on cli

GET /mse6/slowbody?wait=n Sends body after initial lag of n/2s, then sends remaining body without chunking after n/2s. Alternatively configure default with -w=n on cli

TRACE /mse6/trace Standard json response with status code 200 and "message/http" content type. Sends boilerplate trace response in body, not actual request echo.

GET /mse6/tiny Tiny JSON response with content encoding identity

GET /mse6/tinygzip Tiny JSON response with content encoding gzip

GET /mse6/unknowncontentenc Sends unknown content-encoding header with json response.

GET /mse6/websocket?n=1&c=true&c1=true&c2=true Upgrade the client connection to a HTTP/1.1 websocket that echoes messages sent to it. Specify n for how often the echo should repeat. Specify c to orderly close the connection from the server side after sending all echo responses. Specify c1 to only send websocket protocol close. Specify c2 to only hang up on TCP connection, without respecting websocket protocol.

Contributions

The mse6 team welcomes all contributors. Everyone interacting with the project's codebase, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Port int
View Source
var Prefix string
View Source
var Version = "v0.5.1"

Functions

func Bootstrap

func Bootstrap(port int, prefix string, tlsMode bool)

func BrotliDecode added in v0.4.0

func BrotliDecode(input []byte) *[]byte

BrotliDecode decodes a []byte from Brotli binary format

func BrotliEncode added in v0.4.0

func BrotliEncode(input []byte) *[]byte

BrotliEncode encodes to brotli from byte array.

func Deflate added in v0.4.0

func Deflate(input []byte) *[]byte

Flate compress a []byte

func Inflate added in v0.4.0

func Inflate(input []byte) *[]byte

Inflate a []byte

Types

type ServerHandler added in v0.5.0

type ServerHandler struct {
	Methods []string
	Pattern string
	Handler http.HandlerFunc
}

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

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