toxiproxy - ActiveState ActiveGo 1.8

Package toxiproxy

import ""

Overview ▾

Package Toxiproxy provides a client wrapper around the Toxiproxy HTTP API for testing the resiliency of Go applications.

For use with Toxiproxy 2.x

type ApiError

type ApiError struct {
    Message string `json:"error"`
    Status  int    `json:"status"`

func (*ApiError) Error

func (err *ApiError) Error() string

type Attributes

type Attributes map[string]interface{}

type Client

Client holds information about where to connect to Toxiproxy.

type Client struct {
    // contains filtered or unexported fields

func NewClient

func NewClient(endpoint string) *Client

NewClient creates a new client which provides the base of all communication with Toxiproxy. Endpoint is the address to the proxy (e.g. localhost:8474 if not overriden)

func (*Client) CreateProxy

func (client *Client) CreateProxy(name, listen, upstream string) (*Proxy, error)

CreateProxy instantiates a new proxy and starts listening on the specified address. This is an alias for `NewProxy()` + `proxy.Save()`

func (*Client) NewProxy

func (client *Client) NewProxy() *Proxy

Generates a new uncommitted proxy instance. In order to use the result, the proxy fields will need to be set and have `Save()` called.

func (*Client) Populate

func (client *Client) Populate(config []Proxy) ([]*Proxy, error)

Create a list of proxies using a configuration list. If a proxy already exists, it will be replaced with the specified configuration. For large amounts of proxies, `config` can be loaded from a file. Returns a list of the successfully created proxies.

func (*Client) Proxies

func (client *Client) Proxies() (map[string]*Proxy, error)

Proxies returns a map with all the proxies and their toxics.

func (*Client) Proxy

func (client *Client) Proxy(name string) (*Proxy, error)

Proxy returns a proxy by name.

func (*Client) ResetState

func (client *Client) ResetState() error

ResetState resets the state of all proxies and toxics in Toxiproxy.

type Proxy

type Proxy struct {
    Name     string `json:"name"`     // The name of the proxy
    Listen   string `json:"listen"`   // The address the proxy listens on
    Upstream string `json:"upstream"` // The upstream address to proxy to
    Enabled  bool   `json:"enabled"`  // Whether the proxy is enabled

    ActiveToxics Toxics `json:"toxics"` // The toxics active on this proxy
    // contains filtered or unexported fields

func (*Proxy) AddToxic

func (proxy *Proxy) AddToxic(name, typeName, stream string, toxicity float32, attrs Attributes) (*Toxic, error)

AddToxic adds a toxic to the given stream direction. If a name is not specified, it will default to <type>_<stream>. If a stream is not specified, it will default to downstream. See for a list of all Toxic types.

func (*Proxy) Delete

func (proxy *Proxy) Delete() error

Delete a proxy complete and close all existing connections through it. All information about the proxy such as listen port and active toxics will be deleted as well. If you just wish to stop and later enable a proxy, use `Enable()` and `Disable()`.

func (*Proxy) Disable

func (proxy *Proxy) Disable() error

Disable a proxy so that no connections can pass through. This will drop all active connections.

func (*Proxy) Enable

func (proxy *Proxy) Enable() error

Enable a proxy again after it has been disabled.

func (*Proxy) RemoveToxic

func (proxy *Proxy) RemoveToxic(name string) error

RemoveToxic renives the toxic with the given name.

func (*Proxy) Save

func (proxy *Proxy) Save() error

Save saves changes to a proxy such as its enabled status or upstream port.

func (*Proxy) Toxics

func (proxy *Proxy) Toxics() (Toxics, error)

Toxics returns a map of all the active toxics and their attributes.

func (*Proxy) UpdateToxic

func (proxy *Proxy) UpdateToxic(name string, toxicity float32, attrs Attributes) (*Toxic, error)

UpdateToxic sets the parameters for an existing toxic with the given name. If toxicity is set to -1, the current value will be used.

type Toxic

type Toxic struct {
    Name       string     `json:"name"`
    Type       string     `json:"type"`
    Stream     string     `json:"stream,omitempty"`
    Toxicity   float32    `json:"toxicity"`
    Attributes Attributes `json:"attributes"`

type Toxics

type Toxics []Toxic