mirror of
https://github.com/aptly-dev/aptly.git
synced 2026-05-06 22:18:28 +00:00
315 lines
8.4 KiB
Go
315 lines
8.4 KiB
Go
// Code generated by private/model/cli/gen-api/main.go. DO NOT EDIT.
|
|
|
|
// +build go1.6
|
|
|
|
package kinesis
|
|
|
|
import (
|
|
"bytes"
|
|
"io/ioutil"
|
|
"net/http"
|
|
"reflect"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/aws/aws-sdk-go/aws"
|
|
"github.com/aws/aws-sdk-go/aws/awserr"
|
|
"github.com/aws/aws-sdk-go/aws/corehandlers"
|
|
"github.com/aws/aws-sdk-go/aws/request"
|
|
"github.com/aws/aws-sdk-go/awstesting/unit"
|
|
"github.com/aws/aws-sdk-go/private/protocol"
|
|
"github.com/aws/aws-sdk-go/private/protocol/eventstream"
|
|
"github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamapi"
|
|
"github.com/aws/aws-sdk-go/private/protocol/eventstream/eventstreamtest"
|
|
"github.com/aws/aws-sdk-go/private/protocol/jsonrpc"
|
|
)
|
|
|
|
var _ time.Time
|
|
var _ awserr.Error
|
|
|
|
func TestSubscribeToShard_Read(t *testing.T) {
|
|
expectEvents, eventMsgs := mockSubscribeToShardReadEvents()
|
|
sess, cleanupFn, err := eventstreamtest.SetupEventStreamSession(t,
|
|
eventstreamtest.ServeEventStream{
|
|
T: t,
|
|
Events: eventMsgs,
|
|
},
|
|
true,
|
|
)
|
|
if err != nil {
|
|
t.Fatalf("expect no error, %v", err)
|
|
}
|
|
defer cleanupFn()
|
|
|
|
svc := New(sess)
|
|
resp, err := svc.SubscribeToShard(nil)
|
|
if err != nil {
|
|
t.Fatalf("expect no error got, %v", err)
|
|
}
|
|
defer resp.EventStream.Close()
|
|
// Trim off response output type pseudo event so only event messages remain.
|
|
expectEvents = expectEvents[1:]
|
|
|
|
var i int
|
|
for event := range resp.EventStream.Events() {
|
|
if event == nil {
|
|
t.Errorf("%d, expect event, got nil", i)
|
|
}
|
|
if e, a := expectEvents[i], event; !reflect.DeepEqual(e, a) {
|
|
t.Errorf("%d, expect %T %v, got %T %v", i, e, e, a, a)
|
|
}
|
|
i++
|
|
}
|
|
|
|
if err := resp.EventStream.Err(); err != nil {
|
|
t.Errorf("expect no error, %v", err)
|
|
}
|
|
}
|
|
|
|
func TestSubscribeToShard_ReadClose(t *testing.T) {
|
|
_, eventMsgs := mockSubscribeToShardReadEvents()
|
|
sess, cleanupFn, err := eventstreamtest.SetupEventStreamSession(t,
|
|
eventstreamtest.ServeEventStream{
|
|
T: t,
|
|
Events: eventMsgs,
|
|
},
|
|
true,
|
|
)
|
|
if err != nil {
|
|
t.Fatalf("expect no error, %v", err)
|
|
}
|
|
defer cleanupFn()
|
|
|
|
svc := New(sess)
|
|
resp, err := svc.SubscribeToShard(nil)
|
|
if err != nil {
|
|
t.Fatalf("expect no error got, %v", err)
|
|
}
|
|
|
|
resp.EventStream.Close()
|
|
<-resp.EventStream.Events()
|
|
|
|
if err := resp.EventStream.Err(); err != nil {
|
|
t.Errorf("expect no error, %v", err)
|
|
}
|
|
}
|
|
|
|
func BenchmarkSubscribeToShard_Read(b *testing.B) {
|
|
_, eventMsgs := mockSubscribeToShardReadEvents()
|
|
var buf bytes.Buffer
|
|
encoder := eventstream.NewEncoder(&buf)
|
|
for _, msg := range eventMsgs {
|
|
if err := encoder.Encode(msg); err != nil {
|
|
b.Fatalf("failed to encode message, %v", err)
|
|
}
|
|
}
|
|
stream := &loopReader{source: bytes.NewReader(buf.Bytes())}
|
|
|
|
sess := unit.Session
|
|
svc := New(sess, &aws.Config{
|
|
Endpoint: aws.String("https://example.com"),
|
|
DisableParamValidation: aws.Bool(true),
|
|
})
|
|
svc.Handlers.Send.Swap(corehandlers.SendHandler.Name,
|
|
request.NamedHandler{Name: "mockSend",
|
|
Fn: func(r *request.Request) {
|
|
r.HTTPResponse = &http.Response{
|
|
Status: "200 OK",
|
|
StatusCode: 200,
|
|
Header: http.Header{},
|
|
Body: ioutil.NopCloser(stream),
|
|
}
|
|
},
|
|
},
|
|
)
|
|
|
|
resp, err := svc.SubscribeToShard(nil)
|
|
if err != nil {
|
|
b.Fatalf("failed to create request, %v", err)
|
|
}
|
|
defer resp.EventStream.Close()
|
|
b.ResetTimer()
|
|
|
|
for i := 0; i < b.N; i++ {
|
|
if err = resp.EventStream.Err(); err != nil {
|
|
b.Fatalf("expect no error, got %v", err)
|
|
}
|
|
event := <-resp.EventStream.Events()
|
|
if event == nil {
|
|
b.Fatalf("expect event, got nil, %v, %d", resp.EventStream.Err(), i)
|
|
}
|
|
}
|
|
}
|
|
|
|
func mockSubscribeToShardReadEvents() (
|
|
[]SubscribeToShardEventStreamEvent,
|
|
[]eventstream.Message,
|
|
) {
|
|
expectEvents := []SubscribeToShardEventStreamEvent{
|
|
&SubscribeToShardOutput{},
|
|
&SubscribeToShardEvent{
|
|
ContinuationSequenceNumber: aws.String("string value goes here"),
|
|
MillisBehindLatest: aws.Int64(1234),
|
|
Records: []*Record{
|
|
{
|
|
ApproximateArrivalTimestamp: aws.Time(time.Unix(1396594860, 0).UTC()),
|
|
Data: []byte("blob value goes here"),
|
|
EncryptionType: aws.String("string value goes here"),
|
|
PartitionKey: aws.String("string value goes here"),
|
|
SequenceNumber: aws.String("string value goes here"),
|
|
},
|
|
{
|
|
ApproximateArrivalTimestamp: aws.Time(time.Unix(1396594860, 0).UTC()),
|
|
Data: []byte("blob value goes here"),
|
|
EncryptionType: aws.String("string value goes here"),
|
|
PartitionKey: aws.String("string value goes here"),
|
|
SequenceNumber: aws.String("string value goes here"),
|
|
},
|
|
{
|
|
ApproximateArrivalTimestamp: aws.Time(time.Unix(1396594860, 0).UTC()),
|
|
Data: []byte("blob value goes here"),
|
|
EncryptionType: aws.String("string value goes here"),
|
|
PartitionKey: aws.String("string value goes here"),
|
|
SequenceNumber: aws.String("string value goes here"),
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
var marshalers request.HandlerList
|
|
marshalers.PushBackNamed(jsonrpc.BuildHandler)
|
|
payloadMarshaler := protocol.HandlerPayloadMarshal{
|
|
Marshalers: marshalers,
|
|
}
|
|
_ = payloadMarshaler
|
|
|
|
eventMsgs := []eventstream.Message{
|
|
{
|
|
Headers: eventstream.Headers{
|
|
eventstreamtest.EventMessageTypeHeader,
|
|
{
|
|
Name: eventstreamapi.EventTypeHeader,
|
|
Value: eventstream.StringValue("initial-response"),
|
|
},
|
|
},
|
|
Payload: eventstreamtest.MarshalEventPayload(payloadMarshaler, expectEvents[0]),
|
|
},
|
|
{
|
|
Headers: eventstream.Headers{
|
|
eventstreamtest.EventMessageTypeHeader,
|
|
{
|
|
Name: eventstreamapi.EventTypeHeader,
|
|
Value: eventstream.StringValue("SubscribeToShardEvent"),
|
|
},
|
|
},
|
|
Payload: eventstreamtest.MarshalEventPayload(payloadMarshaler, expectEvents[1]),
|
|
},
|
|
}
|
|
|
|
return expectEvents, eventMsgs
|
|
}
|
|
func TestSubscribeToShard_ReadException(t *testing.T) {
|
|
expectEvents := []SubscribeToShardEventStreamEvent{
|
|
&SubscribeToShardOutput{},
|
|
&InternalFailureException{
|
|
Message_: aws.String("string value goes here"),
|
|
},
|
|
}
|
|
|
|
var marshalers request.HandlerList
|
|
marshalers.PushBackNamed(jsonrpc.BuildHandler)
|
|
payloadMarshaler := protocol.HandlerPayloadMarshal{
|
|
Marshalers: marshalers,
|
|
}
|
|
|
|
eventMsgs := []eventstream.Message{
|
|
{
|
|
Headers: eventstream.Headers{
|
|
eventstreamtest.EventMessageTypeHeader,
|
|
{
|
|
Name: eventstreamapi.EventTypeHeader,
|
|
Value: eventstream.StringValue("initial-response"),
|
|
},
|
|
},
|
|
Payload: eventstreamtest.MarshalEventPayload(payloadMarshaler, expectEvents[0]),
|
|
},
|
|
{
|
|
Headers: eventstream.Headers{
|
|
eventstreamtest.EventExceptionTypeHeader,
|
|
{
|
|
Name: eventstreamapi.ExceptionTypeHeader,
|
|
Value: eventstream.StringValue("InternalFailureException"),
|
|
},
|
|
},
|
|
Payload: eventstreamtest.MarshalEventPayload(payloadMarshaler, expectEvents[1]),
|
|
},
|
|
}
|
|
|
|
sess, cleanupFn, err := eventstreamtest.SetupEventStreamSession(t,
|
|
eventstreamtest.ServeEventStream{
|
|
T: t,
|
|
Events: eventMsgs,
|
|
},
|
|
true,
|
|
)
|
|
if err != nil {
|
|
t.Fatalf("expect no error, %v", err)
|
|
}
|
|
defer cleanupFn()
|
|
|
|
svc := New(sess)
|
|
resp, err := svc.SubscribeToShard(nil)
|
|
if err != nil {
|
|
t.Fatalf("expect no error got, %v", err)
|
|
}
|
|
|
|
defer resp.EventStream.Close()
|
|
|
|
<-resp.EventStream.Events()
|
|
|
|
err = resp.EventStream.Err()
|
|
if err == nil {
|
|
t.Fatalf("expect err, got none")
|
|
}
|
|
|
|
expectErr := &InternalFailureException{
|
|
Message_: aws.String("string value goes here"),
|
|
}
|
|
aerr, ok := err.(awserr.Error)
|
|
if !ok {
|
|
t.Errorf("expect exception, got %T, %#v", err, err)
|
|
}
|
|
if e, a := expectErr.Code(), aerr.Code(); e != a {
|
|
t.Errorf("expect %v, got %v", e, a)
|
|
}
|
|
if e, a := expectErr.Message(), aerr.Message(); e != a {
|
|
t.Errorf("expect %v, got %v", e, a)
|
|
}
|
|
|
|
if e, a := expectErr, aerr; !reflect.DeepEqual(e, a) {
|
|
t.Errorf("expect %#v, got %#v", e, a)
|
|
}
|
|
}
|
|
|
|
var _ awserr.Error = (*InternalFailureException)(nil)
|
|
var _ awserr.Error = (*KMSAccessDeniedException)(nil)
|
|
var _ awserr.Error = (*KMSDisabledException)(nil)
|
|
var _ awserr.Error = (*KMSInvalidStateException)(nil)
|
|
var _ awserr.Error = (*KMSNotFoundException)(nil)
|
|
var _ awserr.Error = (*KMSOptInRequired)(nil)
|
|
var _ awserr.Error = (*KMSThrottlingException)(nil)
|
|
var _ awserr.Error = (*ResourceInUseException)(nil)
|
|
var _ awserr.Error = (*ResourceNotFoundException)(nil)
|
|
|
|
type loopReader struct {
|
|
source *bytes.Reader
|
|
}
|
|
|
|
func (c *loopReader) Read(p []byte) (int, error) {
|
|
if c.source.Len() == 0 {
|
|
c.source.Seek(0, 0)
|
|
}
|
|
|
|
return c.source.Read(p)
|
|
}
|