vendor: switch to using go1.11 modules

This commit is contained in:
Nick Craig-Wood 2018-08-28 15:27:07 +01:00
parent 5c75453aba
commit da1682a30e
6142 changed files with 390 additions and 5155875 deletions

View file

@ -1,168 +0,0 @@
package eventstream
import (
"bytes"
"encoding/hex"
"os"
"path/filepath"
"reflect"
"testing"
)
func TestWriteEncodedFromDecoded(t *testing.T) {
cases, err := readPositiveTests("testdata")
if err != nil {
t.Fatalf("failed to load positive tests, %v", err)
}
for _, c := range cases {
f, err := os.Create(filepath.Join("testdata", "encoded", "positive", c.Name))
if err != nil {
t.Fatalf("failed to open %q, %v", c.Name, err)
}
defer f.Close()
encoder := NewEncoder(f)
msg := c.Decoded.Message()
if err := encoder.Encode(msg); err != nil {
t.Errorf("failed to encode %q, %v", c.Name, err)
}
}
}
func TestDecoder_Decode(t *testing.T) {
cases, err := readPositiveTests("testdata")
if err != nil {
t.Fatalf("failed to load positive tests, %v", err)
}
for _, c := range cases {
decoder := NewDecoder(bytes.NewBuffer(c.Encoded))
msg, err := decoder.Decode(nil)
if err != nil {
t.Fatalf("%s, expect no decode error, got %v", c.Name, err)
}
raw, err := msg.rawMessage() // rawMessage will fail if payload read CRC fails
if err != nil {
t.Fatalf("%s, failed to get raw decoded message %v", c.Name, err)
}
if e, a := c.Decoded.Length, raw.Length; e != a {
t.Errorf("%s, expect %v length, got %v", c.Name, e, a)
}
if e, a := c.Decoded.HeadersLen, raw.HeadersLen; e != a {
t.Errorf("%s, expect %v HeadersLen, got %v", c.Name, e, a)
}
if e, a := c.Decoded.PreludeCRC, raw.PreludeCRC; e != a {
t.Errorf("%s, expect %v PreludeCRC, got %v", c.Name, e, a)
}
if e, a := Headers(c.Decoded.Headers), msg.Headers; !reflect.DeepEqual(e, a) {
t.Errorf("%s, expect %v headers, got %v", c.Name, e, a)
}
if e, a := c.Decoded.Payload, raw.Payload; !bytes.Equal(e, a) {
t.Errorf("%s, expect %v payload, got %v", c.Name, e, a)
}
if e, a := c.Decoded.CRC, raw.CRC; e != a {
t.Errorf("%s, expect %v CRC, got %v", c.Name, e, a)
}
}
}
func TestDecoder_Decode_Negative(t *testing.T) {
cases, err := readNegativeTests("testdata")
if err != nil {
t.Fatalf("failed to load negative tests, %v", err)
}
for _, c := range cases {
decoder := NewDecoder(bytes.NewBuffer(c.Encoded))
msg, err := decoder.Decode(nil)
if err == nil {
rawMsg, rawMsgErr := msg.rawMessage()
t.Fatalf("%s, expect error, got none, %s,\n%s\n%#v, %v\n", c.Name,
c.Err, hex.Dump(c.Encoded), rawMsg, rawMsgErr)
}
}
}
var testEncodedMsg = []byte{0, 0, 0, 61, 0, 0, 0, 32, 7, 253, 131, 150, 12, 99, 111, 110, 116, 101, 110, 116, 45, 116, 121, 112, 101, 7, 0, 16, 97, 112, 112, 108, 105, 99, 97, 116, 105, 111, 110, 47, 106, 115, 111, 110, 123, 39, 102, 111, 111, 39, 58, 39, 98, 97, 114, 39, 125, 141, 156, 8, 177}
func TestDecoder_DecodeMultipleMessages(t *testing.T) {
const (
expectMsgCount = 10
expectPayloadLen = 13
)
r := bytes.NewBuffer(nil)
for i := 0; i < expectMsgCount; i++ {
r.Write(testEncodedMsg)
}
decoder := NewDecoder(r)
var err error
var msg Message
var count int
for {
msg, err = decoder.Decode(nil)
if err != nil {
break
}
count++
if e, a := expectPayloadLen, len(msg.Payload); e != a {
t.Errorf("expect %v payload len, got %v", e, a)
}
if e, a := []byte(`{'foo':'bar'}`), msg.Payload; !bytes.Equal(e, a) {
t.Errorf("expect %v payload, got %v", e, a)
}
}
type causer interface {
Cause() error
}
if err != nil && count != expectMsgCount {
t.Fatalf("expect, no error, got %v", err)
}
if e, a := expectMsgCount, count; e != a {
t.Errorf("expect %v messages read, got %v", e, a)
}
}
func BenchmarkDecode(b *testing.B) {
r := bytes.NewReader(testEncodedMsg)
decoder := NewDecoder(r)
payloadBuf := make([]byte, 0, 5*1024)
b.ResetTimer()
for i := 0; i < b.N; i++ {
msg, err := decoder.Decode(payloadBuf)
if err != nil {
b.Fatal(err)
}
// Release the payload buffer
payloadBuf = msg.Payload[0:0]
r.Seek(0, 0)
}
}
func BenchmarkDecode_NoPayloadBuf(b *testing.B) {
r := bytes.NewReader(testEncodedMsg)
decoder := NewDecoder(r)
b.ResetTimer()
for i := 0; i < b.N; i++ {
_, err := decoder.Decode(nil)
if err != nil {
b.Fatal(err)
}
r.Seek(0, 0)
}
}

View file

@ -1,50 +0,0 @@
package eventstream
import (
"bytes"
"encoding/hex"
"reflect"
"testing"
)
func TestEncoder_Encode(t *testing.T) {
cases, err := readPositiveTests("testdata")
if err != nil {
t.Fatalf("failed to load positive tests, %v", err)
}
for _, c := range cases {
var w bytes.Buffer
encoder := NewEncoder(&w)
err = encoder.Encode(c.Decoded.Message())
if err != nil {
t.Fatalf("%s, failed to encode message, %v", c.Name, err)
}
if e, a := c.Encoded, w.Bytes(); !reflect.DeepEqual(e, a) {
t.Errorf("%s, expect:\n%v\nactual:\n%v\n", c.Name,
hex.Dump(e), hex.Dump(a))
}
}
}
func BenchmarkEncode(b *testing.B) {
var w bytes.Buffer
encoder := NewEncoder(&w)
msg := Message{
Headers: Headers{
{Name: "event-id", Value: Int16Value(123)},
},
Payload: []byte(`{"abc":123}`),
}
b.ResetTimer()
for i := 0; i < b.N; i++ {
err := encoder.Encode(msg)
if err != nil {
b.Fatal(err)
}
}
}

View file

@ -1,197 +0,0 @@
package eventstreamapi
import (
"bytes"
"fmt"
"io"
"io/ioutil"
"testing"
"github.com/aws/aws-sdk-go/aws/awserr"
"github.com/aws/aws-sdk-go/aws/request"
"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/restjson"
)
var eventMessageTypeHeader = eventstream.Header{
Name: MessageTypeHeader,
Value: eventstream.StringValue(EventMessageType),
}
func TestEventReader(t *testing.T) {
stream := createStream(
eventstream.Message{
Headers: eventstream.Headers{
eventMessageTypeHeader,
eventstream.Header{
Name: EventTypeHeader,
Value: eventstream.StringValue("eventABC"),
},
},
},
eventstream.Message{
Headers: eventstream.Headers{
eventMessageTypeHeader,
eventstream.Header{
Name: EventTypeHeader,
Value: eventstream.StringValue("eventEFG"),
},
},
},
)
var unmarshalers request.HandlerList
unmarshalers.PushBackNamed(restjson.UnmarshalHandler)
eventReader := NewEventReader(stream,
protocol.HandlerPayloadUnmarshal{
Unmarshalers: unmarshalers,
},
unmarshalerForEventType,
)
event, err := eventReader.ReadEvent()
if err != nil {
t.Fatalf("expect no error, got %v", err)
}
if event == nil {
t.Fatalf("expect event got none")
}
event, err = eventReader.ReadEvent()
if err == nil {
t.Fatalf("expect error for unknown event, got none")
}
if event != nil {
t.Fatalf("expect no event, got %T, %v", event, event)
}
}
func TestEventReader_Error(t *testing.T) {
stream := createStream(
eventstream.Message{
Headers: eventstream.Headers{
eventstream.Header{
Name: MessageTypeHeader,
Value: eventstream.StringValue(ErrorMessageType),
},
eventstream.Header{
Name: ErrorCodeHeader,
Value: eventstream.StringValue("errorCode"),
},
eventstream.Header{
Name: ErrorMessageHeader,
Value: eventstream.StringValue("error message occur"),
},
},
},
)
var unmarshalers request.HandlerList
unmarshalers.PushBackNamed(restjson.UnmarshalHandler)
eventReader := NewEventReader(stream,
protocol.HandlerPayloadUnmarshal{
Unmarshalers: unmarshalers,
},
unmarshalerForEventType,
)
event, err := eventReader.ReadEvent()
if err == nil {
t.Fatalf("expect error got none")
}
if event != nil {
t.Fatalf("expect no event, got %v", event)
}
aerr := err.(awserr.Error)
if e, a := "errorCode", aerr.Code(); e != a {
t.Errorf("expect %v code, got %v", e, a)
}
if e, a := "error message occur", aerr.Message(); e != a {
t.Errorf("expect %v message, got %v", e, a)
}
}
func BenchmarkEventReader(b *testing.B) {
var buf bytes.Buffer
encoder := eventstream.NewEncoder(&buf)
msg := eventstream.Message{
Headers: eventstream.Headers{
eventMessageTypeHeader,
eventstream.Header{
Name: EventTypeHeader,
Value: eventstream.StringValue("eventABC"),
},
},
}
if err := encoder.Encode(msg); err != nil {
b.Fatalf("failed to encode message, %v", err)
}
stream := bytes.NewReader(buf.Bytes())
var unmarshalers request.HandlerList
unmarshalers.PushBackNamed(restjson.UnmarshalHandler)
eventReader := NewEventReader(ioutil.NopCloser(stream),
protocol.HandlerPayloadUnmarshal{
Unmarshalers: unmarshalers,
},
unmarshalerForEventType,
)
b.ResetTimer()
for i := 0; i < b.N; i++ {
stream.Seek(0, 0)
event, err := eventReader.ReadEvent()
if err != nil {
b.Fatalf("expect no error, got %v", err)
}
if event == nil {
b.Fatalf("expect event got none")
}
}
}
func unmarshalerForEventType(eventType string) (Unmarshaler, error) {
switch eventType {
case "eventABC":
return &eventABC{}, nil
default:
return nil, fmt.Errorf("unknown event type, %v", eventType)
}
}
type eventABC struct {
_ struct{}
HeaderField string
Payload []byte
}
func (e *eventABC) UnmarshalEvent(
unmarshaler protocol.PayloadUnmarshaler,
msg eventstream.Message,
) error {
return nil
}
func createStream(msgs ...eventstream.Message) io.ReadCloser {
w := bytes.NewBuffer(nil)
encoder := eventstream.NewEncoder(w)
for _, msg := range msgs {
if err := encoder.Encode(msg); err != nil {
panic("createStream failed, " + err.Error())
}
}
return ioutil.NopCloser(w)
}

View file

@ -1,116 +0,0 @@
package eventstreamtest
import (
"bytes"
"crypto/tls"
"fmt"
"io"
"net/http"
"net/http/httptest"
"testing"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"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"
"golang.org/x/net/http2"
)
// ServeEventStream provides serving EventStream messages from a HTTP server to
// the client. The events are sent sequentially to the client without delay.
type ServeEventStream struct {
T *testing.T
Events []eventstream.Message
}
func (s ServeEventStream) ServeHTTP(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(http.StatusOK)
encoder := eventstream.NewEncoder(flushWriter{w})
for _, event := range s.Events {
encoder.Encode(event)
}
}
// SetupEventStreamSession creates a HTTP server SDK session for communicating
// with that server to be used for EventStream APIs. If HTTP/2 is enabled the
// server/client will only attempt to use HTTP/2.
func SetupEventStreamSession(
t *testing.T, handler http.Handler, h2 bool,
) (sess *session.Session, cleanupFn func(), err error) {
server := httptest.NewUnstartedServer(handler)
server.Config.TLSConfig = &tls.Config{
InsecureSkipVerify: true,
}
clientTrans := &http.Transport{
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
}
if h2 {
http2.ConfigureServer(server.Config, nil)
http2.ConfigureTransport(clientTrans)
server.Config.TLSConfig.NextProtos = []string{http2.NextProtoTLS}
clientTrans.TLSClientConfig.NextProtos = []string{http2.NextProtoTLS}
}
server.TLS = server.Config.TLSConfig
server.StartTLS()
cleanupFn = func() {
server.Close()
}
client := &http.Client{
Transport: clientTrans,
}
sess, err = session.NewSession(unit.Session.Config, &aws.Config{
Endpoint: &server.URL,
DisableParamValidation: aws.Bool(true),
HTTPClient: client,
// LogLevel: aws.LogLevel(aws.LogDebugWithEventStreamBody),
})
if err != nil {
return nil, nil, err
}
return sess, cleanupFn, nil
}
type flushWriter struct {
w io.Writer
}
func (fw flushWriter) Write(p []byte) (n int, err error) {
n, err = fw.w.Write(p)
if f, ok := fw.w.(http.Flusher); ok {
f.Flush()
}
return
}
// MarshalEventPayload marshals a SDK API shape into its associated wire
// protocol payload.
func MarshalEventPayload(
payloadMarshaler protocol.PayloadMarshaler,
v interface{},
) []byte {
var w bytes.Buffer
err := payloadMarshaler.MarshalPayload(&w, v)
if err != nil {
panic(fmt.Sprintf("failed to marshal event %T, %v", v, v))
}
return w.Bytes()
}
// EventMessageTypeHeader is a event message type header for marking an
// message as being the event type.
var EventMessageTypeHeader = eventstream.Header{
Name: eventstreamapi.MessageTypeHeader,
Value: eventstream.StringValue(eventstreamapi.EventMessageType),
}

View file

@ -1,66 +0,0 @@
package eventstream
import (
"reflect"
"testing"
"time"
)
func TestHeaders_Set(t *testing.T) {
expect := Headers{
{Name: "ABC", Value: StringValue("123")},
{Name: "EFG", Value: TimestampValue(time.Time{})},
}
var actual Headers
actual.Set("ABC", Int32Value(123))
actual.Set("ABC", StringValue("123")) // replase case
actual.Set("EFG", TimestampValue(time.Time{}))
if e, a := expect, actual; !reflect.DeepEqual(e, a) {
t.Errorf("expect %v headers, got %v", e, a)
}
}
func TestHeaders_Get(t *testing.T) {
headers := Headers{
{Name: "ABC", Value: StringValue("123")},
{Name: "EFG", Value: TimestampValue(time.Time{})},
}
cases := []struct {
Name string
Value Value
}{
{Name: "ABC", Value: StringValue("123")},
{Name: "EFG", Value: TimestampValue(time.Time{})},
{Name: "NotFound"},
}
for i, c := range cases {
actual := headers.Get(c.Name)
if e, a := c.Value, actual; !reflect.DeepEqual(e, a) {
t.Errorf("%d, expect %v value, got %v", i, e, a)
}
}
}
func TestHeaders_Del(t *testing.T) {
headers := Headers{
{Name: "ABC", Value: StringValue("123")},
{Name: "EFG", Value: TimestampValue(time.Time{})},
{Name: "HIJ", Value: StringValue("123")},
{Name: "KML", Value: TimestampValue(time.Time{})},
}
expectAfterDel := Headers{
{Name: "EFG", Value: TimestampValue(time.Time{})},
}
headers.Del("HIJ")
headers.Del("ABC")
headers.Del("KML")
if e, a := expectAfterDel, headers; !reflect.DeepEqual(e, a) {
t.Errorf("expect %v headers, got %v", e, a)
}
}

View file

@ -1,203 +0,0 @@
package eventstream
import (
"bytes"
"encoding/binary"
"io"
"reflect"
"testing"
"time"
)
func binWrite(v interface{}) []byte {
var w bytes.Buffer
binary.Write(&w, binary.BigEndian, v)
return w.Bytes()
}
var testValueEncodingCases = []struct {
Val Value
Expect []byte
Decode func(io.Reader) (Value, error)
}{
{
BoolValue(true),
[]byte{byte(trueValueType)},
nil,
},
{
BoolValue(false),
[]byte{byte(falseValueType)},
nil,
},
{
Int8Value(0x0f),
[]byte{byte(int8ValueType), 0x0f},
func(r io.Reader) (Value, error) {
var v Int8Value
err := v.decode(r)
return v, err
},
},
{
Int16Value(0x0f),
append([]byte{byte(int16ValueType)}, binWrite(int16(0x0f))...),
func(r io.Reader) (Value, error) {
var v Int16Value
err := v.decode(r)
return v, err
},
},
{
Int32Value(0x0f),
append([]byte{byte(int32ValueType)}, binWrite(int32(0x0f))...),
func(r io.Reader) (Value, error) {
var v Int32Value
err := v.decode(r)
return v, err
},
},
{
Int64Value(0x0f),
append([]byte{byte(int64ValueType)}, binWrite(int64(0x0f))...),
func(r io.Reader) (Value, error) {
var v Int64Value
err := v.decode(r)
return v, err
},
},
{
BytesValue([]byte{0, 1, 2, 3}),
[]byte{byte(bytesValueType), 0x00, 0x04, 0, 1, 2, 3},
func(r io.Reader) (Value, error) {
var v BytesValue
err := v.decode(r)
return v, err
},
},
{
StringValue("abc123"),
append([]byte{byte(stringValueType), 0, 6}, []byte("abc123")...),
func(r io.Reader) (Value, error) {
var v StringValue
err := v.decode(r)
return v, err
},
},
{
TimestampValue(
time.Date(2014, 04, 04, 0, 1, 0, 0, time.FixedZone("PDT", -7)),
),
append([]byte{byte(timestampValueType)}, binWrite(int64(1396569667000))...),
func(r io.Reader) (Value, error) {
var v TimestampValue
err := v.decode(r)
return v, err
},
},
{
UUIDValue(
[16]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf},
),
[]byte{byte(uuidValueType), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf},
func(r io.Reader) (Value, error) {
var v UUIDValue
err := v.decode(r)
return v, err
},
},
}
func TestValue_MarshalValue(t *testing.T) {
for i, c := range testValueEncodingCases {
var w bytes.Buffer
if err := c.Val.encode(&w); err != nil {
t.Fatalf("%d, expect no error, got %v", i, err)
}
if e, a := c.Expect, w.Bytes(); !reflect.DeepEqual(e, a) {
t.Errorf("%d, expect %v, got %v", i, e, a)
}
}
}
func TestHeader_DecodeValues(t *testing.T) {
for i, c := range testValueEncodingCases {
r := bytes.NewBuffer(c.Expect)
v, err := decodeHeaderValue(r)
if err != nil {
t.Fatalf("%d, expect no error, got %v", i, err)
}
switch tv := v.(type) {
case TimestampValue:
exp := time.Time(c.Val.(TimestampValue))
if e, a := exp, time.Time(tv); !e.Equal(a) {
t.Errorf("%d, expect %v, got %v", i, e, a)
}
default:
if e, a := c.Val, v; !reflect.DeepEqual(e, a) {
t.Errorf("%d, expect %v, got %v", i, e, a)
}
}
}
}
func TestValue_Decode(t *testing.T) {
for i, c := range testValueEncodingCases {
if c.Decode == nil {
continue
}
r := bytes.NewBuffer(c.Expect)
r.ReadByte() // strip off Type field
v, err := c.Decode(r)
if err != nil {
t.Fatalf("%d, expect no error, got %v", i, err)
}
switch tv := v.(type) {
case TimestampValue:
exp := time.Time(c.Val.(TimestampValue))
if e, a := exp, time.Time(tv); !e.Equal(a) {
t.Errorf("%d, expect %v, got %v", i, e, a)
}
default:
if e, a := c.Val, v; !reflect.DeepEqual(e, a) {
t.Errorf("%d, expect %v, got %v", i, e, a)
}
}
}
}
func TestValue_String(t *testing.T) {
cases := []struct {
Val Value
Expect string
}{
{BoolValue(true), "true"},
{BoolValue(false), "false"},
{Int8Value(0x0f), "0x0f"},
{Int16Value(0x0f), "0x000f"},
{Int32Value(0x0f), "0x0000000f"},
{Int64Value(0x0f), "0x000000000000000f"},
{BytesValue([]byte{0, 1, 2, 3}), "AAECAw=="},
{StringValue("abc123"), "abc123"},
{TimestampValue(
time.Date(2014, 04, 04, 0, 1, 0, 0, time.FixedZone("PDT", -7)),
),
"1396569667000",
},
{UUIDValue([16]byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf}),
"00010203-0405-0607-0809-0A0B0C0D0E0F",
},
}
for i, c := range cases {
if e, a := c.Expect, c.Val.String(); e != a {
t.Errorf("%d, expect %v, got %v", i, e, a)
}
}
}

View file

@ -1,152 +0,0 @@
package eventstream
import (
"bufio"
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"path/filepath"
"testing"
)
type testCase struct {
Name string
Encoded []byte
Decoded decodedMessage
}
type testErrorCase struct {
Name string
Encoded []byte
Err string
}
type rawTestCase struct {
Name string
Encoded, Decoded []byte
}
func readRawTestCases(root, class string) (map[string]rawTestCase, error) {
encoded, err := readTests(filepath.Join(root, "encoded", class))
if err != nil {
return nil, err
}
decoded, err := readTests(filepath.Join(root, "decoded", class))
if err != nil {
return nil, err
}
if len(encoded) == 0 {
return nil, fmt.Errorf("expect encoded cases, found none")
}
if len(encoded) != len(decoded) {
return nil, fmt.Errorf("encoded and decoded sets different")
}
rawCases := map[string]rawTestCase{}
for name, encData := range encoded {
decData, ok := decoded[name]
if !ok {
return nil, fmt.Errorf("encoded %q case not found in decoded set", name)
}
rawCases[name] = rawTestCase{
Name: name,
Encoded: encData,
Decoded: decData,
}
}
return rawCases, nil
}
func readNegativeTests(root string) ([]testErrorCase, error) {
rawCases, err := readRawTestCases(root, "negative")
if err != nil {
return nil, err
}
cases := make([]testErrorCase, 0, len(rawCases))
for name, rawCase := range rawCases {
cases = append(cases, testErrorCase{
Name: name,
Encoded: rawCase.Encoded,
Err: string(rawCase.Decoded),
})
}
return cases, nil
}
func readPositiveTests(root string) ([]testCase, error) {
rawCases, err := readRawTestCases(root, "positive")
if err != nil {
return nil, err
}
cases := make([]testCase, 0, len(rawCases))
for name, rawCase := range rawCases {
var dec decodedMessage
if err := json.Unmarshal(rawCase.Decoded, &dec); err != nil {
return nil, fmt.Errorf("failed to decode %q, %v", name, err)
}
cases = append(cases, testCase{
Name: name,
Encoded: rawCase.Encoded,
Decoded: dec,
})
}
return cases, nil
}
func readTests(root string) (map[string][]byte, error) {
items, err := ioutil.ReadDir(root)
if err != nil {
return nil, fmt.Errorf("failed to read test suite %q dirs, %v", root, err)
}
cases := map[string][]byte{}
for _, item := range items {
if item.IsDir() {
continue
}
filename := filepath.Join(root, item.Name())
data, err := ioutil.ReadFile(filename)
if err != nil {
return nil, fmt.Errorf("failed to read test_data file %q, %v", filename, err)
}
cases[item.Name()] = data
}
return cases, nil
}
func compareLines(t *testing.T, a, b []byte) bool {
as := bufio.NewScanner(bytes.NewBuffer(a))
bs := bufio.NewScanner(bytes.NewBuffer(b))
var failed bool
for {
if ab, bb := as.Scan(), bs.Scan(); ab != bb {
t.Errorf("expect a & b to have same number of lines")
return false
} else if !ab {
break
}
if v1, v2 := as.Text(), bs.Text(); v1 != v2 {
t.Errorf("expect %q to be %q", v1, v2)
failed = true
}
}
return !failed
}

View file

@ -1 +0,0 @@
Prelude checksum mismatch

View file

@ -1 +0,0 @@
Message checksum mismatch

View file

@ -1 +0,0 @@
Prelude checksum mismatch

View file

@ -1 +0,0 @@
Message checksum mismatch

View file

@ -1,58 +0,0 @@
{
"total_length": 204,
"headers_length": 175,
"prelude_crc": 263087306,
"headers": [ {
"name": "event-type",
"type": 4,
"value": 40972
},
{
"name": "content-type",
"type": 7,
"value": "YXBwbGljYXRpb24vanNvbg=="
},
{
"name": "bool false",
"type": 1,
"value": false
},
{
"name": "bool true",
"type": 0,
"value": true
},
{
"name": "byte",
"type": 2,
"value": -49
},
{
"name": "byte buf",
"type": 6,
"value": "SSdtIGEgbGl0dGxlIHRlYXBvdCE="
},
{
"name": "timestamp",
"type": 8,
"value": 8675309
},
{
"name": "int16",
"type": 3,
"value": 42
},
{
"name": "int64",
"type": 5,
"value": 42424242
},
{
"name": "uuid",
"type": 9,
"value": "AQIDBAUGBwgJCgsMDQ4PEA=="
}
],
"payload": "eydmb28nOidiYXInfQ==",
"message_crc": -1415188212
}

View file

@ -1,8 +0,0 @@
{
"total_length": 16,
"headers_length": 0,
"prelude_crc": 96618731,
"headers": [ ],
"payload": "",
"message_crc": 2107164927
}

View file

@ -1,13 +0,0 @@
{
"total_length": 45,
"headers_length": 16,
"prelude_crc": 1103373496,
"headers": [ {
"name": "event-type",
"type": 4,
"value": 40972
}
],
"payload": "eydmb28nOidiYXInfQ==",
"message_crc": 921993376
}

View file

@ -1,8 +0,0 @@
{
"total_length": 29,
"headers_length": 0,
"prelude_crc": -44921766,
"headers": [ ],
"payload": "eydmb28nOidiYXInfQ==",
"message_crc": -1016776394
}

View file

@ -1,13 +0,0 @@
{
"total_length": 61,
"headers_length": 32,
"prelude_crc": 134054806,
"headers": [ {
"name": "content-type",
"type": 7,
"value": "YXBwbGljYXRpb24vanNvbg=="
}
],
"payload": "eydmb28nOidiYXInfQ==",
"message_crc": -1919153999
}