Documentation ¶
Index ¶
- Constants
- Variables
- func GetDB(name string) *bolt.DB
- func GetRandomName(n int) []byte
- func Pipeline(cmds ...*exec.Cmd) (pipeLineOutput, collectedStandardError []byte, pipeLineError error)
- func SynthesizeResponse(req *http.Request, middleware string) (*http.Response, error)
- type Cache
- func (c *Cache) DeleteBucket(name []byte) (err error)
- func (c *Cache) Get(key []byte) (value []byte, err error)
- func (c *Cache) GetAllKeys() (keys []string, err error)
- func (c *Cache) GetAllRequests() (payloads []Payload, err error)
- func (c *Cache) RecordsCount() (count int, err error)
- func (c *Cache) Set(key, value []byte) error
- type Client
- type Configuration
- type Constructor
- type CounterByMode
- type DBClient
- func (d *DBClient) AllRecordsHandler(w http.ResponseWriter, req *http.Request)
- func (d *DBClient) CurrentStateHandler(w http.ResponseWriter, req *http.Request)
- func (d *DBClient) DeleteAllRecordsHandler(w http.ResponseWriter, req *http.Request)
- func (d *DBClient) ImportRecordsHandler(w http.ResponseWriter, req *http.Request)
- func (d *DBClient) RecordsCount(w http.ResponseWriter, req *http.Request)
- func (d *DBClient) StartAdminInterface()
- func (d *DBClient) StateHandler(w http.ResponseWriter, r *http.Request)
- func (d *DBClient) StatsHandler(w http.ResponseWriter, req *http.Request)
- func (d *DBClient) StatsWSHandler(w http.ResponseWriter, r *http.Request)
- type Payload
- type RequestContainer
- type RequestDetails
- type ResponseDetails
- type Stats
Constants ¶
const CaptureMode = "capture"
CaptureMode - requests are captured and stored in cache
const DefaultAdminPort = "8888"
DefaultAdminPort - default admin interface port
const DefaultDatabaseName = "requests.db"
DefaultDatabaseName - default database name that will be created or used by Hoverfly
const DefaultPort = "8500"
DefaultPort - default proxy port
const ModifyMode = "modify"
ModifyMode - middleware is applied to outgoing and incoming traffic
const RequestsBucketName = "rqbucket"
RequestsBucketName - default name for BoltDB bucket
const SynthesizeMode = "synthesize"
SynthesizeMode - all requests are sent to middleware to create response
const VirtualizeMode = "virtualize"
VirtualizeMode - default mode when Hoverfly looks for captured requests to respond
Variables ¶
var TestDB *bolt.DB
TestDB - holds connection to database during tests
Functions ¶
func GetDB ¶ added in v0.5.10
GetDB - returns open BoltDB database with read/write permissions or goes down in flames if something bad happends
func GetRandomName ¶ added in v0.5.1
GetRandomName - provides random name for buckets. Each test case gets it's own bucket
Types ¶
type Cache ¶
Cache - provides access to BoltDB and holds current bucket name
func (*Cache) DeleteBucket ¶ added in v0.5.1
DeleteBucket - deletes bucket with all saved data
func (*Cache) Get ¶ added in v0.5.1
Get - searches for given key in the cache and returns value if found
func (*Cache) GetAllKeys ¶ added in v0.5.10
GetAllKeys - gets all current keys
func (*Cache) GetAllRequests ¶ added in v0.5.1
GetAllRequests - returns all captured requests/responses
func (*Cache) RecordsCount ¶ added in v0.5.8
RecordsCount - returns records count
type Configuration ¶
type Configuration struct { AdminPort string ProxyPort string Mode string Destination string Middleware string DatabaseName string Verbose bool Development bool // contains filtered or unexported fields }
Configuration - initial structure of configuration
func InitSettings ¶ added in v0.5.3
func InitSettings() *Configuration
InitSettings gets and returns initial configuration from env variables or sets defaults
func (*Configuration) GetMode ¶ added in v0.5.3
func (c *Configuration) GetMode() (mode string)
GetMode - provides safe way to get current mode
func (*Configuration) SetMode ¶ added in v0.5.3
func (c *Configuration) SetMode(mode string)
SetMode - provides safe way to set new mode
type Constructor ¶
type Constructor struct {
// contains filtered or unexported fields
}
Constructor - holds information about original request (which is needed to create response and also holds payload
func NewConstructor ¶
func NewConstructor(req *http.Request, payload Payload) *Constructor
NewConstructor - returns constructor instance
func (*Constructor) ApplyMiddleware ¶
func (c *Constructor) ApplyMiddleware(middleware string) error
ApplyMiddleware - activates given middleware, middleware should be passed as string to executable, can be full path.
func (*Constructor) ReconstructRequest ¶ added in v0.5.10
func (c *Constructor) ReconstructRequest() (*http.Request, error)
ReconstructRequest replaces original request with details provided in Constructor Payload.Request
func (*Constructor) ReconstructResponse ¶ added in v0.5.10
func (c *Constructor) ReconstructResponse() *http.Response
ReconstructResponse changes original response with details provided in Constructor Payload.Response
type CounterByMode ¶ added in v0.5.8
type CounterByMode struct {
// contains filtered or unexported fields
}
CounterByMode - container for mode counters, registry and flush interval
func NewModeCounter ¶ added in v0.5.8
func NewModeCounter() *CounterByMode
NewModeCounter - returns new counter instance
func (*CounterByMode) Count ¶ added in v0.5.8
func (c *CounterByMode) Count(mode string)
Count - counts requests based on mode
func (*CounterByMode) Flush ¶ added in v0.5.8
func (c *CounterByMode) Flush() (h Stats)
Flush gets current metrics from stats registry
func (*CounterByMode) Init ¶ added in v0.5.8
func (c *CounterByMode) Init()
Init initializes logging
type DBClient ¶
type DBClient struct { Cache Cache HTTP *http.Client Cfg *Configuration Counter *CounterByMode }
DBClient provides access to cache, http client and configuration
func GetNewHoverfly ¶ added in v0.5.10
func GetNewHoverfly(cfg *Configuration) (*goproxy.ProxyHttpServer, DBClient)
GetNewHoverfly returns a configured ProxyHttpServer and DBClient
func (*DBClient) AllRecordsHandler ¶
func (d *DBClient) AllRecordsHandler(w http.ResponseWriter, req *http.Request)
AllRecordsHandler returns JSON content type http response
func (*DBClient) CurrentStateHandler ¶
func (d *DBClient) CurrentStateHandler(w http.ResponseWriter, req *http.Request)
CurrentStateHandler returns current state
func (*DBClient) DeleteAllRecordsHandler ¶
func (d *DBClient) DeleteAllRecordsHandler(w http.ResponseWriter, req *http.Request)
DeleteAllRecordsHandler - deletes all captured requests
func (*DBClient) ImportRecordsHandler ¶
func (d *DBClient) ImportRecordsHandler(w http.ResponseWriter, req *http.Request)
ImportRecordsHandler - accepts JSON payload and saves it to cache
func (*DBClient) RecordsCount ¶ added in v0.5.1
func (d *DBClient) RecordsCount(w http.ResponseWriter, req *http.Request)
RecordsCount returns number of captured requests as a JSON payload
func (*DBClient) StartAdminInterface ¶ added in v0.5.10
func (d *DBClient) StartAdminInterface()
StartAdminInterface - starts admin interface web server
func (*DBClient) StateHandler ¶ added in v0.5.7
func (d *DBClient) StateHandler(w http.ResponseWriter, r *http.Request)
StateHandler handles current proxy state
func (*DBClient) StatsHandler ¶ added in v0.5.8
func (d *DBClient) StatsHandler(w http.ResponseWriter, req *http.Request)
StatsHandler - returns current stats about Hoverfly (request counts, record count)
func (*DBClient) StatsWSHandler ¶ added in v0.5.8
func (d *DBClient) StatsWSHandler(w http.ResponseWriter, r *http.Request)
StatsWSHandler - returns current stats about Hoverfly (request counts, record count) through the websocket
type Payload ¶
type Payload struct { Response ResponseDetails `json:"response"` Request RequestDetails `json:"request"` ID string `json:"id"` }
Payload structure holds request and response structure
func ExecuteMiddleware ¶
ExecuteMiddleware - takes command (middleware string) and payload, which is passed to middleware
type RequestContainer ¶ added in v0.5.10
type RequestContainer struct {
Details RequestDetails
}
RequestContainer holds structure for request
func (*RequestContainer) Hash ¶ added in v0.5.10
func (r *RequestContainer) Hash() string
Hash returns unique hash key for request
type RequestDetails ¶ added in v0.5.10
type RequestDetails struct { Path string `json:"path"` Method string `json:"method"` Destination string `json:"destination"` Scheme string `json:"scheme"` Query string `json:"query"` Body string `json:"body"` RemoteAddr string `json:"remoteAddr"` Headers map[string][]string `json:"headers"` }
RequestDetails stores information about request, it's used for creating unique hash and also as a payload structure
type ResponseDetails ¶ added in v0.5.10
type ResponseDetails struct { Status int `json:"status"` Body string `json:"body"` Headers map[string][]string `json:"headers"` }
ResponseDetails structure hold response body from external service, body is not decoded and is supposed to be bytes, however headers should provide all required information for later decoding by the client.