go.mercari.io/datastore@v1.8.2/aedatastore/testsuite_test.go (about) 1 package aedatastore 2 3 import ( 4 "testing" 5 6 "github.com/favclip/testerator/v2" 7 _ "github.com/favclip/testerator/v2/datastore" 8 _ "github.com/favclip/testerator/v2/memcache" 9 10 "go.mercari.io/datastore/testsuite" 11 _ "go.mercari.io/datastore/testsuite/dsmiddleware/dslog" 12 _ "go.mercari.io/datastore/testsuite/dsmiddleware/fishbone" 13 _ "go.mercari.io/datastore/testsuite/dsmiddleware/localcache" 14 _ "go.mercari.io/datastore/testsuite/dsmiddleware/rpcretry" 15 _ "go.mercari.io/datastore/testsuite/favcliptools" 16 _ "go.mercari.io/datastore/testsuite/realworld/recursivebatch" 17 _ "go.mercari.io/datastore/testsuite/realworld/tbf" 18 19 "go.mercari.io/datastore/dsmiddleware/aememcache" 20 "google.golang.org/appengine" 21 ) 22 23 func TestAEDatastoreTestSuite(t *testing.T) { 24 25 for name, test := range testsuite.TestSuite { 26 t.Run(name, func(t *testing.T) { 27 _, ctx, err := testerator.SpinUp() 28 if err != nil { 29 t.Fatal(err.Error()) 30 } 31 defer testerator.SpinDown() 32 33 ctx = testsuite.WrapAEFlag(ctx) 34 35 datastore, err := FromContext(ctx) 36 if err != nil { 37 t.Fatal(err) 38 } 39 test(ctx, t, datastore) 40 }) 41 } 42 } 43 44 func TestAEDatastoreWithAEMemcacheTestSuite(t *testing.T) { 45 46 for name, test := range testsuite.TestSuite { 47 t.Run(name, func(t *testing.T) { 48 switch name { 49 // Skip the failure that happens when you firstly appended another middleware layer. 50 case 51 "LocalCache_Basic", 52 "LocalCache_WithIncludeKinds", 53 "LocalCache_WithExcludeKinds", 54 "LocalCache_WithKeyFilter", 55 "FishBone_QueryWithoutTx": 56 t.SkipNow() 57 // It's annoying to avoid failure test. I think there is no problem in practical use. I believe... 58 case "PutAndGet_TimeTime": 59 t.SkipNow() 60 } 61 62 _, ctx, err := testerator.SpinUp() 63 if err != nil { 64 t.Fatal(err.Error()) 65 } 66 defer testerator.SpinDown() 67 68 ctx = testsuite.WrapAEFlag(ctx) 69 70 datastore, err := FromContext(ctx) 71 if err != nil { 72 t.Fatal(err) 73 } 74 75 ch := aememcache.New() 76 datastore.AppendMiddleware(ch) 77 78 test(ctx, t, datastore) 79 }) 80 } 81 } 82 83 func TestAEDatastoreTestSuiteWithNamespace(t *testing.T) { 84 85 for name, test := range testsuite.TestSuite { 86 t.Run(name, func(t *testing.T) { 87 _, ctx, err := testerator.SpinUp() 88 if err != nil { 89 t.Fatal(err.Error()) 90 } 91 defer testerator.SpinDown() 92 93 // Namespaceを設定する 94 // 本ライブラリでは appengine.Namespace による設定の影響をうけない設計であり、これを確認する 95 ctx, err = appengine.Namespace(ctx, "TestSuite") 96 if err != nil { 97 t.Fatal(err.Error()) 98 } 99 ctx = testsuite.WrapAEFlag(ctx) 100 101 datastore, err := FromContext(ctx) 102 if err != nil { 103 t.Fatal(err) 104 } 105 test(ctx, t, datastore) 106 }) 107 } 108 }