| Index: filter/featureBreaker/featurebreaker_test.go
|
| diff --git a/filter/featureBreaker/featurebreaker_test.go b/filter/featureBreaker/featurebreaker_test.go
|
| index 241e12896daa12f48bf25c247d027f7456c9ff04..491edceb47360796a2bac2e3f0d43906510a4485 100644
|
| --- a/filter/featureBreaker/featurebreaker_test.go
|
| +++ b/filter/featureBreaker/featurebreaker_test.go
|
| @@ -5,15 +5,13 @@
|
| package featureBreaker
|
|
|
| import (
|
| - "errors"
|
| "testing"
|
|
|
| - "golang.org/x/net/context"
|
| -
|
| "github.com/luci/gae/impl/memory"
|
| "github.com/luci/gae/service/rawdatastore"
|
| -
|
| + "github.com/luci/luci-go/common/errors"
|
| . "github.com/smartystreets/goconvey/convey"
|
| + "golang.org/x/net/context"
|
| )
|
|
|
| func TestBrokenFeatures(t *testing.T) {
|
| @@ -21,6 +19,14 @@ func TestBrokenFeatures(t *testing.T) {
|
|
|
| e := errors.New("default err")
|
|
|
| + cbe := func(expect string) func(rawdatastore.PropertyMap, error) {
|
| + return func(_ rawdatastore.PropertyMap, err error) {
|
| + So(err.Error(), ShouldContainSubstring, expect)
|
| + }
|
| + }
|
| +
|
| + cbn := func(rawdatastore.PropertyMap, error) {}
|
| +
|
| Convey("BrokenFeatures", t, func() {
|
| c := memory.Use(context.Background())
|
|
|
| @@ -28,33 +34,39 @@ func TestBrokenFeatures(t *testing.T) {
|
| Convey("without a default", func() {
|
| c, bf := FilterRDS(c, nil)
|
| rds := rawdatastore.Get(c)
|
| + keys := []rawdatastore.Key{rds.NewKey("Wut", "", 1, nil)}
|
|
|
| Convey("by specifying an error", func() {
|
| - bf.BreakFeatures(e, "Get", "Put")
|
| - So(rds.Get(nil, nil), ShouldEqual, e)
|
| + bf.BreakFeatures(e, "GetMulti", "PutMulti")
|
| + So(rds.GetMulti(keys, cbn), ShouldEqual, e)
|
|
|
| Convey("and you can unbreak them as well", func() {
|
| - bf.UnbreakFeatures("Get")
|
| - So(rds.Get(nil, nil), ShouldEqual, rawdatastore.ErrInvalidKey)
|
| + bf.UnbreakFeatures("GetMulti")
|
| +
|
| + err := rds.GetMulti(keys, cbe(rawdatastore.ErrNoSuchEntity.Error()))
|
| + So(err, ShouldBeNil)
|
|
|
| Convey("no broken features at all is a shortcut", func() {
|
| - bf.UnbreakFeatures("Put")
|
| - So(rds.Get(nil, nil), ShouldEqual, rawdatastore.ErrInvalidKey)
|
| + bf.UnbreakFeatures("PutMulti")
|
| + err := rds.GetMulti(keys, cbe(rawdatastore.ErrNoSuchEntity.Error()))
|
| + So(err, ShouldBeNil)
|
| })
|
| })
|
| })
|
|
|
| Convey("Not specifying an error gets you a generic error", func() {
|
| - bf.BreakFeatures(nil, "Get")
|
| - So(rds.Get(nil, nil).Error(), ShouldEqual, `feature "Get" is broken`)
|
| + bf.BreakFeatures(nil, "GetMulti")
|
| + err := rds.GetMulti(keys, cbn)
|
| + So(err.Error(), ShouldContainSubstring, `feature "GetMulti" is broken`)
|
| })
|
| })
|
|
|
| Convey("with a default", func() {
|
| c, bf := FilterRDS(c, e)
|
| rds := rawdatastore.Get(c)
|
| - bf.BreakFeatures(nil, "Get")
|
| - So(rds.Get(nil, nil), ShouldEqual, e)
|
| + keys := []rawdatastore.Key{rds.NewKey("Wut", "", 1, nil)}
|
| + bf.BreakFeatures(nil, "GetMulti")
|
| + So(rds.GetMulti(keys, cbn), ShouldEqual, e)
|
| })
|
| })
|
| })
|
|
|