Documentation ¶
Index ¶
- Variables
- func WithRetryPolicy(ctx context.Context, retryPolicy RetryPolicy) context.Context
- type CircuitBreakerSettings
- type Client
- type ExponentialRetryPolicy
- type GetAuthorsIter
- type GetBooksIter
- type HystrixSSEEvent
- type MockClient
- func (_m *MockClient) CreateBook(ctx context.Context, i *models.Book) (*models.Book, error)
- func (_m *MockClient) EXPECT() *_MockClientRecorder
- func (_m *MockClient) GetAuthors(ctx context.Context, i *models.GetAuthorsInput) (*models.AuthorsResponse, error)
- func (_m *MockClient) GetBookByID(ctx context.Context, i *models.GetBookByIDInput) (*models.Book, error)
- func (_m *MockClient) GetBookByID2(ctx context.Context, id string) (*models.Book, error)
- func (_m *MockClient) GetBooks(ctx context.Context, i *models.GetBooksInput) ([]models.Book, error)
- func (_m *MockClient) HealthCheck(ctx context.Context) error
- func (_m *MockClient) NewGetAuthorsIter(ctx context.Context, i *models.GetAuthorsInput) (GetAuthorsIter, error)
- func (_m *MockClient) NewGetBooksIter(ctx context.Context, i *models.GetBooksInput) (GetBooksIter, error)
- type MockGetAuthorsIter
- type MockGetBooksIter
- type NoRetryPolicy
- type RetryPolicy
- type SingleRetryPolicy
- type WagClient
- func (c *WagClient) CreateBook(ctx context.Context, i *models.Book) (*models.Book, error)
- func (c *WagClient) GetAuthors(ctx context.Context, i *models.GetAuthorsInput) (*models.AuthorsResponse, error)
- func (c *WagClient) GetBookByID(ctx context.Context, i *models.GetBookByIDInput) (*models.Book, error)
- func (c *WagClient) GetBookByID2(ctx context.Context, id string) (*models.Book, error)
- func (c *WagClient) GetBooks(ctx context.Context, i *models.GetBooksInput) ([]models.Book, error)
- func (c *WagClient) HealthCheck(ctx context.Context) error
- func (c *WagClient) NewGetAuthorsIter(ctx context.Context, i *models.GetAuthorsInput) (GetAuthorsIter, error)
- func (c *WagClient) NewGetBooksIter(ctx context.Context, i *models.GetBooksInput) (GetBooksIter, error)
- func (c *WagClient) SetCircuitBreakerDebug(b bool)
- func (c *WagClient) SetCircuitBreakerSettings(settings CircuitBreakerSettings)
- func (c *WagClient) SetLogger(logger *logger.Logger)
- func (c *WagClient) SetRetryPolicy(retryPolicy RetryPolicy)
- func (c *WagClient) SetTimeout(timeout time.Duration)
Constants ¶
This section is empty.
Variables ¶
var DefaultCircuitBreakerSettings = CircuitBreakerSettings{
MaxConcurrentRequests: 100,
RequestVolumeThreshold: 20,
SleepWindow: 5000,
ErrorPercentThreshold: 90,
}
DefaultCircuitBreakerSettings describes the default circuit parameters.
Functions ¶
func WithRetryPolicy ¶ added in v0.2.0
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 ¶ added in v0.1.3
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 { // GetAuthors makes a GET request to /authors // Gets authors // 200: *models.AuthorsResponse // 400: *models.BadRequest // 500: *models.InternalError // default: client side HTTP errors, for example: context.DeadlineExceeded. GetAuthors(ctx context.Context, i *models.GetAuthorsInput) (*models.AuthorsResponse, error) NewGetAuthorsIter(ctx context.Context, i *models.GetAuthorsInput) (GetAuthorsIter, error) // GetBooks makes a GET request to /books // Returns a list of books // 200: []models.Book // 400: *models.BadRequest // 500: *models.InternalError // default: client side HTTP errors, for example: context.DeadlineExceeded. GetBooks(ctx context.Context, i *models.GetBooksInput) ([]models.Book, error) NewGetBooksIter(ctx context.Context, i *models.GetBooksInput) (GetBooksIter, error) // CreateBook makes a POST request to /books // Creates a book // 200: *models.Book // 400: *models.BadRequest // 500: *models.InternalError // default: client side HTTP errors, for example: context.DeadlineExceeded. CreateBook(ctx context.Context, i *models.Book) (*models.Book, error) // GetBookByID makes a GET request to /books/{book_id} // Returns a book // 200: *models.Book // 400: *models.BadRequest // 401: *models.Unathorized // 404: *models.Error // 500: *models.InternalError // default: client side HTTP errors, for example: context.DeadlineExceeded. GetBookByID(ctx context.Context, i *models.GetBookByIDInput) (*models.Book, error) // GetBookByID2 makes a GET request to /books2/{id} // Retrieve a book // 200: *models.Book // 400: *models.BadRequest // 404: *models.Error // 500: *models.InternalError // default: client side HTTP errors, for example: context.DeadlineExceeded. GetBookByID2(ctx context.Context, id string) (*models.Book, error) // HealthCheck makes a GET request to /health/check // // 200: nil // 400: *models.BadRequest // 500: *models.InternalError // default: client side HTTP errors, for example: context.DeadlineExceeded. HealthCheck(ctx context.Context) 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.
type GetAuthorsIter ¶ added in v1.3.0
GetAuthorsIter defines the methods available on GetAuthors iterators.
type GetBooksIter ¶ added in v1.3.0
GetBooksIter defines the methods available on GetBooks iterators.
type HystrixSSEEvent ¶ added in v0.1.3
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) CreateBook ¶
func (*MockClient) EXPECT ¶
func (_m *MockClient) EXPECT() *_MockClientRecorder
func (*MockClient) GetAuthors ¶ added in v1.3.0
func (_m *MockClient) GetAuthors(ctx context.Context, i *models.GetAuthorsInput) (*models.AuthorsResponse, error)
func (*MockClient) GetBookByID ¶
func (_m *MockClient) GetBookByID(ctx context.Context, i *models.GetBookByIDInput) (*models.Book, error)
func (*MockClient) GetBookByID2 ¶
func (*MockClient) GetBooks ¶
func (_m *MockClient) GetBooks(ctx context.Context, i *models.GetBooksInput) ([]models.Book, error)
func (*MockClient) HealthCheck ¶
func (_m *MockClient) HealthCheck(ctx context.Context) error
func (*MockClient) NewGetAuthorsIter ¶ added in v1.3.0
func (_m *MockClient) NewGetAuthorsIter(ctx context.Context, i *models.GetAuthorsInput) (GetAuthorsIter, error)
func (*MockClient) NewGetBooksIter ¶ added in v1.3.0
func (_m *MockClient) NewGetBooksIter(ctx context.Context, i *models.GetBooksInput) (GetBooksIter, error)
type MockGetAuthorsIter ¶ added in v1.3.0
type MockGetAuthorsIter struct {
// contains filtered or unexported fields
}
Mock of GetAuthorsIter interface
func NewMockGetAuthorsIter ¶ added in v1.3.0
func NewMockGetAuthorsIter(ctrl *gomock.Controller) *MockGetAuthorsIter
func (*MockGetAuthorsIter) EXPECT ¶ added in v1.3.0
func (_m *MockGetAuthorsIter) EXPECT() *_MockGetAuthorsIterRecorder
func (*MockGetAuthorsIter) Err ¶ added in v1.3.0
func (_m *MockGetAuthorsIter) Err() error
type MockGetBooksIter ¶ added in v1.3.0
type MockGetBooksIter struct {
// contains filtered or unexported fields
}
Mock of GetBooksIter interface
func NewMockGetBooksIter ¶ added in v1.3.0
func NewMockGetBooksIter(ctrl *gomock.Controller) *MockGetBooksIter
func (*MockGetBooksIter) EXPECT ¶ added in v1.3.0
func (_m *MockGetBooksIter) EXPECT() *_MockGetBooksIterRecorder
func (*MockGetBooksIter) Err ¶ added in v1.3.0
func (_m *MockGetBooksIter) Err() error
type NoRetryPolicy ¶ added in v0.2.0
type NoRetryPolicy struct{}
NoRetryPolicy defines a policy of never retrying a request.
func (NoRetryPolicy) Backoffs ¶ added in v0.2.0
func (NoRetryPolicy) Backoffs() []time.Duration
Backoffs returns an empty slice.
type RetryPolicy ¶ added in v0.2.0
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.
type WagClient ¶
type WagClient struct {
// contains filtered or unexported fields
}
WagClient is used to make requests to the swagger-test service.
func NewFromDiscovery ¶
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) CreateBook ¶
CreateBook makes a POST request to /books Creates a book 200: *models.Book 400: *models.BadRequest 500: *models.InternalError default: client side HTTP errors, for example: context.DeadlineExceeded.
func (*WagClient) GetAuthors ¶ added in v1.3.0
func (c *WagClient) GetAuthors(ctx context.Context, i *models.GetAuthorsInput) (*models.AuthorsResponse, error)
GetAuthors makes a GET request to /authors Gets authors 200: *models.AuthorsResponse 400: *models.BadRequest 500: *models.InternalError default: client side HTTP errors, for example: context.DeadlineExceeded.
func (*WagClient) GetBookByID ¶
func (c *WagClient) GetBookByID(ctx context.Context, i *models.GetBookByIDInput) (*models.Book, error)
GetBookByID makes a GET request to /books/{book_id} Returns a book 200: *models.Book 400: *models.BadRequest 401: *models.Unathorized 404: *models.Error 500: *models.InternalError default: client side HTTP errors, for example: context.DeadlineExceeded.
func (*WagClient) GetBookByID2 ¶
GetBookByID2 makes a GET request to /books2/{id} Retrieve a book 200: *models.Book 400: *models.BadRequest 404: *models.Error 500: *models.InternalError default: client side HTTP errors, for example: context.DeadlineExceeded.
func (*WagClient) GetBooks ¶
GetBooks makes a GET request to /books Returns a list of books 200: []models.Book 400: *models.BadRequest 500: *models.InternalError default: client side HTTP errors, for example: context.DeadlineExceeded.
func (*WagClient) HealthCheck ¶
HealthCheck makes a GET request to /health/check
200: nil 400: *models.BadRequest 500: *models.InternalError default: client side HTTP errors, for example: context.DeadlineExceeded.
func (*WagClient) NewGetAuthorsIter ¶ added in v1.3.0
func (c *WagClient) NewGetAuthorsIter(ctx context.Context, i *models.GetAuthorsInput) (GetAuthorsIter, error)
NewgetAuthorsIter constructs an iterator that makes calls to getAuthors for each page.
func (*WagClient) NewGetBooksIter ¶ added in v1.3.0
func (c *WagClient) NewGetBooksIter(ctx context.Context, i *models.GetBooksInput) (GetBooksIter, error)
NewgetBooksIter constructs an iterator that makes calls to getBooks for each page.
func (*WagClient) SetCircuitBreakerDebug ¶ added in v0.1.3
SetCircuitBreakerDebug puts the circuit
func (*WagClient) SetCircuitBreakerSettings ¶ added in v0.1.3
func (c *WagClient) SetCircuitBreakerSettings(settings CircuitBreakerSettings)
SetCircuitBreakerSettings sets parameters on the circuit breaker. It must be called on application startup.
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
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.