| Index: go/src/infra/gae/libs/gae/helper/serialize_test.go
|
| diff --git a/go/src/infra/gae/libs/gae/helper/serialize_test.go b/go/src/infra/gae/libs/gae/helper/serialize_test.go
|
| deleted file mode 100644
|
| index cd64a4f1f9664daead587e51e7f9b8a119ba77c3..0000000000000000000000000000000000000000
|
| --- a/go/src/infra/gae/libs/gae/helper/serialize_test.go
|
| +++ /dev/null
|
| @@ -1,329 +0,0 @@
|
| -// Copyright 2015 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -package helper
|
| -
|
| -import (
|
| - "bytes"
|
| - "io"
|
| - "testing"
|
| - "time"
|
| -
|
| - "infra/gae/libs/gae"
|
| -
|
| - "github.com/luci/luci-go/common/cmpbin"
|
| - . "github.com/smartystreets/goconvey/convey"
|
| -)
|
| -
|
| -func init() {
|
| - WriteDSPropertyMapDeterministic = true
|
| -}
|
| -
|
| -type dspmapTC struct {
|
| - name string
|
| - props gae.DSPropertyMap
|
| -}
|
| -
|
| -func TestDSPropertyMapSerialization(t *testing.T) {
|
| - t.Parallel()
|
| -
|
| - tests := []dspmapTC{
|
| - {
|
| - "basic",
|
| - gae.DSPropertyMap{
|
| - "R": {mp(false), mp(2.1), mp(3, true)},
|
| - "S": {mp("hello"), mp("world")},
|
| - },
|
| - },
|
| - {
|
| - "keys",
|
| - gae.DSPropertyMap{
|
| - "DS": {mp(mkKey("appy", "ns", "Foo", 7)), mp(mkKey("other", "", "Yot", "wheeep"))},
|
| - "BS": {mp(gae.BSKey("sup")), mp(gae.BSKey("nerds"))},
|
| - },
|
| - },
|
| - {
|
| - "geo",
|
| - gae.DSPropertyMap{
|
| - "G": {mp(gae.DSGeoPoint{Lat: 1, Lng: 2})},
|
| - },
|
| - },
|
| - {
|
| - "data",
|
| - gae.DSPropertyMap{
|
| - "S": {mp("sup"), mp("fool"), mp("nerd")},
|
| - "D.Foo.Nerd": {mp([]byte("sup")), mp([]byte("fool"))},
|
| - "B": {mp(gae.DSByteString("sup")), mp(gae.DSByteString("fool"))},
|
| - },
|
| - },
|
| - {
|
| - "time",
|
| - gae.DSPropertyMap{
|
| - "T": {
|
| - mp(time.Now().UTC()),
|
| - mp(time.Now().Add(time.Second).UTC())},
|
| - },
|
| - },
|
| - {
|
| - "empty vals",
|
| - gae.DSPropertyMap{
|
| - "T": {mp(true), mp(true)},
|
| - "F": {mp(false), mp(false)},
|
| - "N": {mp(nil), mp(nil)},
|
| - "E": {},
|
| - },
|
| - },
|
| - }
|
| -
|
| - Convey("DSPropertyMap serialization", t, func() {
|
| - Convey("round trip", func() {
|
| - for _, tc := range tests {
|
| - tc := tc
|
| - Convey(tc.name, func() {
|
| - buf := &bytes.Buffer{}
|
| - WriteDSPropertyMap(buf, tc.props, WithContext)
|
| - dec, err := ReadDSPropertyMap(buf, WithContext, "", "")
|
| - So(err, ShouldBeNil)
|
| - So(dec, ShouldResemble, tc.props)
|
| - })
|
| - }
|
| - })
|
| - })
|
| -}
|
| -
|
| -func TestSerializationReadMisc(t *testing.T) {
|
| - t.Parallel()
|
| -
|
| - Convey("Misc Serialization tests", t, func() {
|
| - Convey("ReadDSKey", func() {
|
| - Convey("good cases", func() {
|
| - Convey("w/ ctx decodes normally w/ ctx", func() {
|
| - k := mkKey("aid", "ns", "knd", "yo", "other", 10)
|
| - buf := &bytes.Buffer{}
|
| - WriteDSKey(buf, WithContext, k)
|
| - dk, err := ReadDSKey(buf, WithContext, "", "")
|
| - So(err, ShouldBeNil)
|
| - So(dk, ShouldEqualKey, k)
|
| - })
|
| - Convey("w/ ctx decodes normally w/o ctx", func() {
|
| - k := mkKey("aid", "ns", "knd", "yo", "other", 10)
|
| - buf := &bytes.Buffer{}
|
| - WriteDSKey(buf, WithContext, k)
|
| - dk, err := ReadDSKey(buf, WithoutContext, "spam", "nerd")
|
| - So(err, ShouldBeNil)
|
| - So(dk, ShouldEqualKey, mkKey("spam", "nerd", "knd", "yo", "other", 10))
|
| - })
|
| - Convey("w/o ctx decodes normally w/ ctx", func() {
|
| - k := mkKey("aid", "ns", "knd", "yo", "other", 10)
|
| - buf := &bytes.Buffer{}
|
| - WriteDSKey(buf, WithoutContext, k)
|
| - dk, err := ReadDSKey(buf, WithContext, "spam", "nerd")
|
| - So(err, ShouldBeNil)
|
| - So(dk, ShouldEqualKey, mkKey("", "", "knd", "yo", "other", 10))
|
| - })
|
| - Convey("w/o ctx decodes normally w/o ctx", func() {
|
| - k := mkKey("aid", "ns", "knd", "yo", "other", 10)
|
| - buf := &bytes.Buffer{}
|
| - WriteDSKey(buf, WithoutContext, k)
|
| - dk, err := ReadDSKey(buf, WithoutContext, "spam", "nerd")
|
| - So(err, ShouldBeNil)
|
| - So(dk, ShouldEqualKey, mkKey("spam", "nerd", "knd", "yo", "other", 10))
|
| - })
|
| - })
|
| -
|
| - Convey("err cases", func() {
|
| - Convey("nil", func() {
|
| - buf := &bytes.Buffer{}
|
| - _, err := ReadDSKey(buf, WithContext, "", "")
|
| - So(err, ShouldEqual, io.EOF)
|
| - })
|
| - Convey("str", func() {
|
| - buf := &bytes.Buffer{}
|
| - buf.WriteString("sup")
|
| - _, err := ReadDSKey(buf, WithContext, "", "")
|
| - So(err, ShouldErrLike, "expected actualCtx")
|
| - })
|
| - Convey("truncated 1", func() {
|
| - buf := &bytes.Buffer{}
|
| - buf.WriteByte(1) // actualCtx == 1
|
| - _, err := ReadDSKey(buf, WithContext, "", "")
|
| - So(err, ShouldEqual, io.EOF)
|
| - })
|
| - Convey("truncated 2", func() {
|
| - buf := &bytes.Buffer{}
|
| - buf.WriteByte(1) // actualCtx == 1
|
| - cmpbin.WriteString(buf, "aid")
|
| - _, err := ReadDSKey(buf, WithContext, "", "")
|
| - So(err, ShouldEqual, io.EOF)
|
| - })
|
| - Convey("truncated 3", func() {
|
| - buf := &bytes.Buffer{}
|
| - buf.WriteByte(1) // actualCtx == 1
|
| - cmpbin.WriteString(buf, "aid")
|
| - cmpbin.WriteString(buf, "ns")
|
| - _, err := ReadDSKey(buf, WithContext, "", "")
|
| - So(err, ShouldEqual, io.EOF)
|
| - })
|
| - Convey("huge key", func() {
|
| - buf := &bytes.Buffer{}
|
| - buf.WriteByte(1) // actualCtx == 1
|
| - cmpbin.WriteString(buf, "aid")
|
| - cmpbin.WriteString(buf, "ns")
|
| - cmpbin.WriteUint(buf, 1000)
|
| - _, err := ReadDSKey(buf, WithContext, "", "")
|
| - So(err, ShouldErrLike, "huge key")
|
| - })
|
| - Convey("insufficient tokens", func() {
|
| - buf := &bytes.Buffer{}
|
| - buf.WriteByte(1) // actualCtx == 1
|
| - cmpbin.WriteString(buf, "aid")
|
| - cmpbin.WriteString(buf, "ns")
|
| - cmpbin.WriteUint(buf, 2)
|
| - _, err := ReadDSKey(buf, WithContext, "", "")
|
| - So(err, ShouldEqual, io.EOF)
|
| - })
|
| - Convey("partial token 1", func() {
|
| - buf := &bytes.Buffer{}
|
| - buf.WriteByte(1) // actualCtx == 1
|
| - cmpbin.WriteString(buf, "aid")
|
| - cmpbin.WriteString(buf, "ns")
|
| - cmpbin.WriteUint(buf, 2)
|
| - cmpbin.WriteString(buf, "hi")
|
| - _, err := ReadDSKey(buf, WithContext, "", "")
|
| - So(err, ShouldEqual, io.EOF)
|
| - })
|
| - Convey("partial token 2", func() {
|
| - buf := &bytes.Buffer{}
|
| - buf.WriteByte(1) // actualCtx == 1
|
| - cmpbin.WriteString(buf, "aid")
|
| - cmpbin.WriteString(buf, "ns")
|
| - cmpbin.WriteUint(buf, 2)
|
| - cmpbin.WriteString(buf, "hi")
|
| - cmpbin.WriteString(buf, "")
|
| - _, err := ReadDSKey(buf, WithContext, "", "")
|
| - So(err, ShouldEqual, io.EOF)
|
| - })
|
| - Convey("bad token", func() {
|
| - buf := &bytes.Buffer{}
|
| - buf.WriteByte(1) // actualCtx == 1
|
| - cmpbin.WriteString(buf, "aid")
|
| - cmpbin.WriteString(buf, "ns")
|
| - cmpbin.WriteUint(buf, 2)
|
| - cmpbin.WriteString(buf, "hi")
|
| - cmpbin.WriteString(buf, "")
|
| - cmpbin.WriteInt(buf, -2)
|
| - _, err := ReadDSKey(buf, WithContext, "", "")
|
| - So(err, ShouldErrLike, "zero/negative")
|
| - })
|
| - })
|
| - })
|
| -
|
| - Convey("ReadDSGeoPoint", func() {
|
| - Convey("trunc 1", func() {
|
| - buf := &bytes.Buffer{}
|
| - _, err := ReadDSGeoPoint(buf)
|
| - So(err, ShouldEqual, io.EOF)
|
| - })
|
| - Convey("trunc 2", func() {
|
| - buf := &bytes.Buffer{}
|
| - cmpbin.WriteFloat64(buf, 100)
|
| - _, err := ReadDSGeoPoint(buf)
|
| - So(err, ShouldEqual, io.EOF)
|
| - })
|
| - Convey("invalid", func() {
|
| - buf := &bytes.Buffer{}
|
| - cmpbin.WriteFloat64(buf, 100)
|
| - cmpbin.WriteFloat64(buf, 1000)
|
| - _, err := ReadDSGeoPoint(buf)
|
| - So(err, ShouldErrLike, "invalid DSGeoPoint")
|
| - })
|
| - })
|
| -
|
| - Convey("WriteTime", func() {
|
| - Convey("in non-UTC!", func() {
|
| - buf := &bytes.Buffer{}
|
| - So(func() {
|
| - WriteTime(buf, time.Now())
|
| - }, ShouldPanic)
|
| - })
|
| - })
|
| -
|
| - Convey("ReadTime", func() {
|
| - Convey("trunc 1", func() {
|
| - buf := &bytes.Buffer{}
|
| - _, err := ReadTime(buf)
|
| - So(err, ShouldEqual, io.EOF)
|
| - })
|
| - })
|
| -
|
| - Convey("ReadDSProperty", func() {
|
| - Convey("trunc 1", func() {
|
| - buf := &bytes.Buffer{}
|
| - _, err := ReadDSProperty(buf, WithContext, "", "")
|
| - So(err, ShouldEqual, io.EOF)
|
| - })
|
| - Convey("trunc (DSPTBytes)", func() {
|
| - buf := &bytes.Buffer{}
|
| - buf.WriteByte(byte(gae.DSPTBytes))
|
| - _, err := ReadDSProperty(buf, WithContext, "", "")
|
| - So(err, ShouldEqual, io.EOF)
|
| - })
|
| - Convey("trunc (DSPTBlobKey)", func() {
|
| - buf := &bytes.Buffer{}
|
| - buf.WriteByte(byte(gae.DSPTBlobKey))
|
| - _, err := ReadDSProperty(buf, WithContext, "", "")
|
| - So(err, ShouldEqual, io.EOF)
|
| - })
|
| - Convey("invalid type", func() {
|
| - buf := &bytes.Buffer{}
|
| - buf.WriteByte(byte(gae.DSPTUnknown + 1))
|
| - _, err := ReadDSProperty(buf, WithContext, "", "")
|
| - So(err, ShouldErrLike, "unknown type!")
|
| - })
|
| - })
|
| -
|
| - Convey("ReadDSPropertyMap", func() {
|
| - Convey("trunc 1", func() {
|
| - buf := &bytes.Buffer{}
|
| - _, err := ReadDSPropertyMap(buf, WithContext, "", "")
|
| - So(err, ShouldEqual, io.EOF)
|
| - })
|
| - Convey("too many rows", func() {
|
| - buf := &bytes.Buffer{}
|
| - cmpbin.WriteUint(buf, 1000000)
|
| - _, err := ReadDSPropertyMap(buf, WithContext, "", "")
|
| - So(err, ShouldErrLike, "huge number of rows")
|
| - })
|
| - Convey("trunc 2", func() {
|
| - buf := &bytes.Buffer{}
|
| - cmpbin.WriteUint(buf, 10)
|
| - _, err := ReadDSPropertyMap(buf, WithContext, "", "")
|
| - So(err, ShouldEqual, io.EOF)
|
| - })
|
| - Convey("trunc 3", func() {
|
| - buf := &bytes.Buffer{}
|
| - cmpbin.WriteUint(buf, 10)
|
| - cmpbin.WriteString(buf, "ohai")
|
| - _, err := ReadDSPropertyMap(buf, WithContext, "", "")
|
| - So(err, ShouldEqual, io.EOF)
|
| - })
|
| - Convey("too many values", func() {
|
| - buf := &bytes.Buffer{}
|
| - cmpbin.WriteUint(buf, 10)
|
| - cmpbin.WriteString(buf, "ohai")
|
| - cmpbin.WriteUint(buf, 100000)
|
| - _, err := ReadDSPropertyMap(buf, WithContext, "", "")
|
| - So(err, ShouldErrLike, "huge number of properties")
|
| - })
|
| - Convey("trunc 4", func() {
|
| - buf := &bytes.Buffer{}
|
| - cmpbin.WriteUint(buf, 10)
|
| - cmpbin.WriteString(buf, "ohai")
|
| - cmpbin.WriteUint(buf, 10)
|
| - _, err := ReadDSPropertyMap(buf, WithContext, "", "")
|
| - So(err, ShouldEqual, io.EOF)
|
| - })
|
| - })
|
| - })
|
| -}
|
|
|