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 ActionType
- type ActionTypeHooks
- type BoltCache
- func (c *BoltCache) CloseDB()
- func (c *BoltCache) DeleteBucket(name []byte) (err error)
- func (c *BoltCache) DeleteData() error
- func (c *BoltCache) Get(key []byte) (value []byte, err error)
- func (c *BoltCache) GetAllKeys() (keys map[string]bool, err error)
- func (c *BoltCache) GetAllRequests() (payloads []Payload, err error)
- func (c *BoltCache) RecordsCount() (count int, err error)
- func (c *BoltCache) Set(key, value []byte) error
- type Cache
- type Client
- type Configuration
- type Constructor
- type CounterByMode
- type DBClient
- func (d *DBClient) AddHook(hook Hook)
- 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 Entry
- type Hook
- type Payload
- type RequestContainer
- type RequestDetails
- type ResponseDetails
- type Stats
Constants ¶
const ActionTypeConfigurationChanged = "configurationChanged"
ActionTypeConfigurationChanged - default action name for identifying configuration changes
const ActionTypeRequestCaptured = "requestCaptured"
ActionTypeRequestCaptured - default action type name for identifying
const ActionTypeWipeDB = "wipeDatabase"
ActionTypeWipeDB - default action type for wiping database
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 ¶
GetDB - returns open BoltDB database with read/write permissions or goes down in flames if something bad happends
func GetRandomName ¶
GetRandomName - provides random name for buckets. Each test case gets it's own bucket
Types ¶
type ActionType ¶ added in v0.5.11
type ActionType string
ActionType - action type can be things such as "RequestCaptured", "GotResponse" - anything
type ActionTypeHooks ¶ added in v0.5.11
type ActionTypeHooks map[ActionType][]Hook
ActionTypeHooks type for storing the hooks
func (ActionTypeHooks) Add ¶ added in v0.5.11
func (hooks ActionTypeHooks) Add(hook Hook)
Add a hook
func (ActionTypeHooks) Fire ¶ added in v0.5.11
func (hooks ActionTypeHooks) Fire(ac ActionType, entry *Entry) error
Fire all the hooks for the passed ActionType
type BoltCache ¶ added in v0.5.11
Cache - provides access to BoltDB and holds current bucket name
func NewBoltDBCache ¶ added in v0.5.11
NewBoltDBCache - returns new BoltCache instance
func (*BoltCache) CloseDB ¶ added in v0.5.11
func (c *BoltCache) CloseDB()
CloseDB - closes database
func (*BoltCache) DeleteBucket ¶ added in v0.5.11
DeleteBucket - deletes bucket with all saved data
func (*BoltCache) DeleteData ¶ added in v0.5.11
DeleteData - deletes bucket with all saved data
func (*BoltCache) Get ¶ added in v0.5.11
Get - searches for given key in the cache and returns value if found
func (*BoltCache) GetAllKeys ¶ added in v0.5.11
GetAllKeys - gets all current keys
func (*BoltCache) GetAllRequests ¶ added in v0.5.11
GetAllRequests - returns all captured requests/responses
func (*BoltCache) RecordsCount ¶ added in v0.5.11
RecordsCount - returns records count
type Cache ¶
type Cache interface {
Set(key, value []byte) error
Get(key []byte) ([]byte, error)
GetAllRequests() ([]Payload, error)
RecordsCount() (int, error)
DeleteData() error
GetAllKeys() (map[string]bool, error)
CloseDB()
}
Cache - cache interface used to store and retrieve request/response payloads
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 ¶
func InitSettings() *Configuration
InitSettings gets and returns initial configuration from env variables or sets defaults
func (*Configuration) GetMode ¶
func (c *Configuration) GetMode() (mode string)
GetMode - provides safe way to get current mode
func (*Configuration) SetMode ¶
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 ¶
func (c *Constructor) ReconstructRequest() (*http.Request, error)
ReconstructRequest replaces original request with details provided in Constructor Payload.Request
func (*Constructor) ReconstructResponse ¶
func (c *Constructor) ReconstructResponse() *http.Response
ReconstructResponse changes original response with details provided in Constructor Payload.Response
type CounterByMode ¶
type CounterByMode struct {
// contains filtered or unexported fields
}
CounterByMode - container for mode counters, registry and flush interval
func NewModeCounter ¶
func NewModeCounter() *CounterByMode
NewModeCounter - returns new counter instance
func (*CounterByMode) Count ¶
func (c *CounterByMode) Count(mode string)
Count - counts requests based on mode
func (*CounterByMode) Flush ¶
func (c *CounterByMode) Flush() (h Stats)
Flush gets current metrics from stats registry
type DBClient ¶
type DBClient struct {
Cache Cache
HTTP *http.Client
Cfg *Configuration
Counter *CounterByMode
Hooks ActionTypeHooks
}
DBClient provides access to cache, http client and configuration
func GetNewHoverfly ¶
func GetNewHoverfly(cfg *Configuration, cache Cache) (*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 ¶
func (d *DBClient) RecordsCount(w http.ResponseWriter, req *http.Request)
RecordsCount returns number of captured requests as a JSON payload
func (*DBClient) StartAdminInterface ¶
func (d *DBClient) StartAdminInterface()
StartAdminInterface - starts admin interface web server
func (*DBClient) StateHandler ¶
func (d *DBClient) StateHandler(w http.ResponseWriter, r *http.Request)
StateHandler handles current proxy state
func (*DBClient) StatsHandler ¶
func (d *DBClient) StatsHandler(w http.ResponseWriter, req *http.Request)
StatsHandler - returns current stats about Hoverfly (request counts, record count)
func (*DBClient) StatsWSHandler ¶
func (d *DBClient) StatsWSHandler(w http.ResponseWriter, r *http.Request)
StatsWSHandler - returns current stats about Hoverfly (request counts, record count) through the websocket
type Entry ¶ added in v0.5.11
type Entry struct {
// Contains encoded data
Data []byte
// Time at which the action entry was fired
Time time.Time
ActionType ActionType
// Message, can carry additional information
Message string
}
Entry - holds information about action, based on action type - other clients will be able to decode the data field.
type Hook ¶ added in v0.5.11
type Hook interface {
ActionTypes() []ActionType
Fire(*Entry) error
}
Hook - an interface to add dynamic hooks to extend functionality
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 ¶
type RequestContainer struct {
Details RequestDetails
}
RequestContainer holds structure for request
func (*RequestContainer) Hash ¶
func (r *RequestContainer) Hash() string
Hash returns unique hash key for request
type RequestDetails ¶
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 ¶
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.
