client

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Nov 8, 2016 License: Apache-2.0 Imports: 24 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var DefaultCircuitBreakerSettings = CircuitBreakerSettings{
	MaxConcurrentRequests:  100,
	RequestVolumeThreshold: 20,
	SleepWindow:            5000,
	ErrorPercentThreshold:  90,
}

DefaultCircuitBreakerSettings describes the default circuit parameters.

Functions

func JoinByFormat

func JoinByFormat(data []string, format string) string

JoinByFormat joins a string array by a known format:

csv: comma separated value (default)
ssv: space separated value
tsv: tab separated value
pipes: pipe (|) separated value

func WithRetryPolicy

func WithRetryPolicy(ctx context.Context, retryPolicy RetryPolicy) context.Context

WithRetryPolicy returns a new context that overrides the client object's retry policy.

Types

type CircuitBreakerSettings

type CircuitBreakerSettings struct {
	// MaxConcurrentRequests is the maximum number of concurrent requests
	// the client can make at the same time. Default: 100.
	MaxConcurrentRequests int
	// RequestVolumeThreshold is the minimum number of requests needed
	// before a circuit can be tripped due to health. Default: 20.
	RequestVolumeThreshold int
	// SleepWindow how long, in milliseconds, to wait after a circuit opens
	// before testing for recovery. Default: 5000.
	SleepWindow int
	// ErrorPercentThreshold is the threshold to place on the rolling error
	// rate. Once the error rate exceeds this percentage, the circuit opens.
	// Default: 90.
	ErrorPercentThreshold int
}

CircuitBreakerSettings are the parameters that govern the client's circuit breaker.

type Client

type Client interface {

	// GetBook makes a GET request to /books/{id}.
	GetBook(ctx context.Context, i *models.GetBookInput) error
}

Client defines the methods available to clients of the swagger-test service.

type DefaultRetryPolicy

type DefaultRetryPolicy struct{}

DefaultRetryPolicy defines the default retry policy.

func (DefaultRetryPolicy) Backoffs

func (DefaultRetryPolicy) Backoffs() []time.Duration

Backoffs returns five backoffs with exponentially increasing wait times between requests: 100, 200, 400, 800, and 1600 milliseconds +/- up to 5% jitter.

func (DefaultRetryPolicy) Retry

func (DefaultRetryPolicy) Retry(req *http.Request, resp *http.Response, err error) bool

Retry will retry non-POST, non-PATCH requests that 5XX. TODO: It does not currently retry any errors returned by net/http.Client's `Do`.

type HystrixSSEEvent

type HystrixSSEEvent struct {
	Type                            string `json:"type"`
	Name                            string `json:"name"`
	RequestCount                    int    `json:"requestCount"`
	ErrorCount                      int    `json:"errorCount"`
	ErrorPercentage                 int    `json:"errorPercentage"`
	IsCircuitBreakerOpen            bool   `json:"isCircuitBreakerOpen"`
	RollingCountFailure             int    `json:"rollingCountFailure"`
	RollingCountFallbackFailure     int    `json:"rollingCountFallbackFailure"`
	RollingCountFallbackSuccess     int    `json:"rollingCountFallbackSuccess"`
	RollingCountShortCircuited      int    `json:"rollingCountShortCircuited"`
	RollingCountSuccess             int    `json:"rollingCountSuccess"`
	RollingCountThreadPoolRejected  int    `json:"rollingCountThreadPoolRejected"`
	RollingCountTimeout             int    `json:"rollingCountTimeout"`
	CurrentConcurrentExecutionCount int    `json:"currentConcurrentExecutionCount"`
	LatencyTotalMean                int    `json:"latencyTotal_mean"`
}

HystrixSSEEvent is emitted by hystrix-go via server-sent events. It describes the state of a circuit.

type MockClient

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

Mock of Client interface

func NewMockClient

func NewMockClient(ctrl *gomock.Controller) *MockClient

func (*MockClient) EXPECT

func (_m *MockClient) EXPECT() *_MockClientRecorder

func (*MockClient) GetBook

func (_m *MockClient) GetBook(ctx context.Context, i *models.GetBookInput) error

type NoRetryPolicy

type NoRetryPolicy struct{}

NoRetryPolicy defines a policy of never retrying a request.

func (NoRetryPolicy) Backoffs

func (NoRetryPolicy) Backoffs() []time.Duration

Backoffs returns an empty slice.

func (NoRetryPolicy) Retry

Retry always returns false.

type RetryPolicy

type RetryPolicy interface {
	// Backoffs returns the number and timing of retry attempts.
	Backoffs() []time.Duration
	// Retry receives the http request, as well as the result of
	// net/http.Client's `Do` method.
	Retry(*http.Request, *http.Response, error) bool
}

RetryPolicy defines a retry policy.

type WagClient

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

WagClient is used to make requests to the swagger-test service.

func New

func New(basePath string) *WagClient

New creates a new client. The base path and http transport are configurable.

func NewFromDiscovery

func NewFromDiscovery() (*WagClient, error)

NewFromDiscovery creates a client from the discovery environment variables. This method requires the three env vars: SERVICE_SWAGGER_TEST_HTTP_(HOST/PORT/PROTO) to be set. Otherwise it returns an error.

func (*WagClient) GetBook

func (c *WagClient) GetBook(ctx context.Context, i *models.GetBookInput) error

GetBook makes a GET request to /books/{id}.

func (*WagClient) SetCircuitBreakerDebug

func (c *WagClient) SetCircuitBreakerDebug(b bool)

SetCircuitBreakerDebug puts the circuit

func (*WagClient) SetCircuitBreakerSettings

func (c *WagClient) SetCircuitBreakerSettings(settings CircuitBreakerSettings)

SetCircuitBreakerSettings sets parameters on the circuit breaker. It must be called on application startup.

func (*WagClient) WithRetryPolicy

func (c *WagClient) WithRetryPolicy(retryPolicy RetryPolicy) *WagClient

WithRetryPolicy returns a new client that will use the given retry policy for all requests.

func (*WagClient) WithTimeout

func (c *WagClient) WithTimeout(timeout time.Duration) *WagClient

WithTimeout returns a new client that has the specified timeout on all operations. To make a single request have a timeout use context.WithTimeout as described here: https://godoc.org/golang.org/x/net/context#WithTimeout.

Jump to

Keyboard shortcuts

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