client

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Nov 17, 2016 License: Apache-2.0 Imports: 23 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 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}
	//
	// 200: nil
	// 400: *models.ExtendedError
	// 404: *models.NotFound
	// 500: *models.InternalError
	// default: client side HTTP errors, for example: context.DeadlineExceeded.
	GetBook(ctx context.Context, i *models.GetBookInput) error
}

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

type ExponentialRetryPolicy added in v1.0.0

type ExponentialRetryPolicy struct{}

ExponentialRetryPolicy defines an exponential retry policy

func (ExponentialRetryPolicy) Backoffs added in v1.0.0

func (ExponentialRetryPolicy) 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 (ExponentialRetryPolicy) Retry added in v1.0.0

func (ExponentialRetryPolicy) 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 SingleRetryPolicy added in v1.0.0

type SingleRetryPolicy struct{}

SingleRetryPolicy defines a retry that retries a request once

func (SingleRetryPolicy) Backoffs added in v1.0.0

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

Backoffs returns that you should retry the request 1second after it fails.

func (SingleRetryPolicy) Retry added in v1.0.0

func (SingleRetryPolicy) 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 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}

200: nil 400: *models.ExtendedError 404: *models.NotFound 500: *models.InternalError default: client side HTTP errors, for example: context.DeadlineExceeded.

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) SetLogger added in v1.0.3

func (c *WagClient) SetLogger(logger *logger.Logger)

SetLogger allows for setting a custom logger

func (*WagClient) SetRetryPolicy added in v1.0.0

func (c *WagClient) SetRetryPolicy(retryPolicy RetryPolicy)

SetRetryPolicy sets a the given retry policy for all requests.

func (*WagClient) SetTimeout added in v1.0.0

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

SetTimeout sets a timeout on all operations for the client. To make a single request with 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