Index: service/datastore/serialize/serialize_test.go |
diff --git a/service/datastore/serialize/serialize_test.go b/service/datastore/serialize/serialize_test.go |
index d6c9b9f65453e9030f7eecb5803414cc64f22309..74d8e0a1cd91912c87276b0aa03f4aea7c2061a1 100644 |
--- a/service/datastore/serialize/serialize_test.go |
+++ b/service/datastore/serialize/serialize_test.go |
@@ -14,6 +14,7 @@ import ( |
"github.com/luci/gae/service/blobstore" |
ds "github.com/luci/gae/service/datastore" |
"github.com/luci/luci-go/common/data/cmpbin" |
+ |
. "github.com/luci/luci-go/common/testing/assertions" |
. "github.com/smartystreets/goconvey/convey" |
) |
@@ -32,7 +33,9 @@ type dspmapTC struct { |
props ds.PropertyMap |
} |
-var mkKey = ds.MakeKey |
+func mkKey(appID, namespace string, elems ...interface{}) *ds.Key { |
+ return ds.KeyContext{appID, namespace}.MakeKey(elems...) |
+} |
func mkBuf(data []byte) Buffer { |
return Invertible(bytes.NewBuffer(data)) |
@@ -111,7 +114,7 @@ func TestPropertyMapSerialization(t *testing.T) { |
tc := tc |
Convey(tc.name, func() { |
data := ToBytesWithContext(tc.props) |
- dec, err := ReadPropertyMap(mkBuf(data), WithContext, "", "") |
+ dec, err := ReadPropertyMap(mkBuf(data), WithContext, ds.KeyContext{}) |
So(err, ShouldBeNil) |
So(dec, ShouldResemble, tc.props) |
}) |
@@ -204,28 +207,28 @@ func TestSerializationReadMisc(t *testing.T) { |
Convey("w/ ctx decodes normally w/ ctx", func() { |
k := mkKey("aid", "ns", "knd", "yo", "other", 10) |
data := ToBytesWithContext(k) |
- dk, err := ReadKey(mkBuf(data), WithContext, "", "") |
+ dk, err := ReadKey(mkBuf(data), WithContext, ds.KeyContext{}) |
So(err, ShouldBeNil) |
So(dk, ShouldEqualKey, k) |
}) |
Convey("w/ ctx decodes normally w/o ctx", func() { |
k := mkKey("aid", "ns", "knd", "yo", "other", 10) |
data := ToBytesWithContext(k) |
- dk, err := ReadKey(mkBuf(data), WithoutContext, "spam", "nerd") |
+ dk, err := ReadKey(mkBuf(data), WithoutContext, ds.KeyContext{"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) |
data := ToBytes(k) |
- dk, err := ReadKey(mkBuf(data), WithContext, "spam", "nerd") |
+ dk, err := ReadKey(mkBuf(data), WithContext, ds.KeyContext{"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) |
data := ToBytes(k) |
- dk, err := ReadKey(mkBuf(data), WithoutContext, "spam", "nerd") |
+ dk, err := ReadKey(mkBuf(data), WithoutContext, ds.KeyContext{"spam", "nerd"}) |
So(err, ShouldBeNil) |
So(dk, ShouldEqualKey, mkKey("spam", "nerd", "knd", "yo", "other", 10)) |
}) |
@@ -245,31 +248,31 @@ func TestSerializationReadMisc(t *testing.T) { |
Convey("err cases", func() { |
buf := mkBuf(nil) |
Convey("nil", func() { |
- _, err := ReadKey(buf, WithContext, "", "") |
+ _, err := ReadKey(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldEqual, io.EOF) |
}) |
Convey("str", func() { |
_, err := buf.WriteString("sup") |
die(err) |
- _, err = ReadKey(buf, WithContext, "", "") |
+ _, err = ReadKey(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldErrLike, "expected actualCtx") |
}) |
Convey("truncated 1", func() { |
die(buf.WriteByte(1)) // actualCtx == 1 |
- _, err := ReadKey(buf, WithContext, "", "") |
+ _, err := ReadKey(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldEqual, io.EOF) |
}) |
Convey("truncated 2", func() { |
die(buf.WriteByte(1)) // actualCtx == 1 |
ws(buf, "aid") |
- _, err := ReadKey(buf, WithContext, "", "") |
+ _, err := ReadKey(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldEqual, io.EOF) |
}) |
Convey("truncated 3", func() { |
die(buf.WriteByte(1)) // actualCtx == 1 |
ws(buf, "aid") |
ws(buf, "ns") |
- _, err := ReadKey(buf, WithContext, "", "") |
+ _, err := ReadKey(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldEqual, io.EOF) |
}) |
Convey("huge key", func() { |
@@ -281,7 +284,7 @@ func TestSerializationReadMisc(t *testing.T) { |
die(WriteKeyTok(buf, ds.KeyTok{Kind: "sup", IntID: int64(i)})) |
} |
die(buf.WriteByte(0)) |
- _, err := ReadKey(buf, WithContext, "", "") |
+ _, err := ReadKey(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldErrLike, "huge key") |
}) |
Convey("insufficient tokens", func() { |
@@ -289,7 +292,7 @@ func TestSerializationReadMisc(t *testing.T) { |
ws(buf, "aid") |
ws(buf, "ns") |
wui(buf, 2) |
- _, err := ReadKey(buf, WithContext, "", "") |
+ _, err := ReadKey(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldEqual, io.EOF) |
}) |
Convey("partial token 1", func() { |
@@ -298,7 +301,7 @@ func TestSerializationReadMisc(t *testing.T) { |
ws(buf, "ns") |
die(buf.WriteByte(1)) |
ws(buf, "hi") |
- _, err := ReadKey(buf, WithContext, "", "") |
+ _, err := ReadKey(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldEqual, io.EOF) |
}) |
Convey("partial token 2", func() { |
@@ -308,7 +311,7 @@ func TestSerializationReadMisc(t *testing.T) { |
die(buf.WriteByte(1)) |
ws(buf, "hi") |
die(buf.WriteByte(byte(ds.PTString))) |
- _, err := ReadKey(buf, WithContext, "", "") |
+ _, err := ReadKey(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldEqual, io.EOF) |
}) |
Convey("bad token (invalid type)", func() { |
@@ -318,7 +321,7 @@ func TestSerializationReadMisc(t *testing.T) { |
die(buf.WriteByte(1)) |
ws(buf, "hi") |
die(buf.WriteByte(byte(ds.PTBlobKey))) |
- _, err := ReadKey(buf, WithContext, "", "") |
+ _, err := ReadKey(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldErrLike, "invalid type PTBlobKey") |
}) |
Convey("bad token (invalid IntID)", func() { |
@@ -329,7 +332,7 @@ func TestSerializationReadMisc(t *testing.T) { |
ws(buf, "hi") |
die(buf.WriteByte(byte(ds.PTInt))) |
wi(buf, -2) |
- _, err := ReadKey(buf, WithContext, "", "") |
+ _, err := ReadKey(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldErrLike, "zero/negative") |
}) |
}) |
@@ -374,24 +377,24 @@ func TestSerializationReadMisc(t *testing.T) { |
Convey("ReadProperty", func() { |
buf := mkBuf(nil) |
Convey("trunc 1", func() { |
- p, err := ReadProperty(buf, WithContext, "", "") |
+ p, err := ReadProperty(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldEqual, io.EOF) |
So(p.Type(), ShouldEqual, ds.PTNull) |
So(p.Value(), ShouldBeNil) |
}) |
Convey("trunc (PTBytes)", func() { |
die(buf.WriteByte(byte(ds.PTBytes))) |
- _, err := ReadProperty(buf, WithContext, "", "") |
+ _, err := ReadProperty(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldEqual, io.EOF) |
}) |
Convey("trunc (PTBlobKey)", func() { |
die(buf.WriteByte(byte(ds.PTBlobKey))) |
- _, err := ReadProperty(buf, WithContext, "", "") |
+ _, err := ReadProperty(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldEqual, io.EOF) |
}) |
Convey("invalid type", func() { |
die(buf.WriteByte(byte(ds.PTUnknown + 1))) |
- _, err := ReadProperty(buf, WithContext, "", "") |
+ _, err := ReadProperty(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldErrLike, "unknown type!") |
}) |
}) |
@@ -399,37 +402,37 @@ func TestSerializationReadMisc(t *testing.T) { |
Convey("ReadPropertyMap", func() { |
buf := mkBuf(nil) |
Convey("trunc 1", func() { |
- _, err := ReadPropertyMap(buf, WithContext, "", "") |
+ _, err := ReadPropertyMap(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldEqual, io.EOF) |
}) |
Convey("too many rows", func() { |
wui(buf, 1000000) |
- _, err := ReadPropertyMap(buf, WithContext, "", "") |
+ _, err := ReadPropertyMap(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldErrLike, "huge number of rows") |
}) |
Convey("trunc 2", func() { |
wui(buf, 10) |
- _, err := ReadPropertyMap(buf, WithContext, "", "") |
+ _, err := ReadPropertyMap(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldEqual, io.EOF) |
}) |
Convey("trunc 3", func() { |
wui(buf, 10) |
ws(buf, "ohai") |
- _, err := ReadPropertyMap(buf, WithContext, "", "") |
+ _, err := ReadPropertyMap(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldEqual, io.EOF) |
}) |
Convey("too many values", func() { |
wui(buf, 10) |
ws(buf, "ohai") |
wui(buf, 100000) |
- _, err := ReadPropertyMap(buf, WithContext, "", "") |
+ _, err := ReadPropertyMap(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldErrLike, "huge number of properties") |
}) |
Convey("trunc 4", func() { |
wui(buf, 10) |
ws(buf, "ohai") |
wui(buf, 10) |
- _, err := ReadPropertyMap(buf, WithContext, "", "") |
+ _, err := ReadPropertyMap(buf, WithContext, ds.KeyContext{}) |
So(err, ShouldEqual, io.EOF) |
}) |
}) |