go.mercari.io/datastore@v1.8.2/dsmiddleware/chaosrpc/chaosrpc_test.go (about) 1 package chaosrpc 2 3 import ( 4 "math/rand" 5 "testing" 6 7 "go.mercari.io/datastore/internal/testutils" 8 ) 9 10 func TestChaosRPC_CheckRaiseError(t *testing.T) { 11 ctx, client, cleanUp := testutils.SetupCloudDatastore(t) 12 defer cleanUp() 13 14 type Data struct { 15 Name string 16 } 17 18 // Put. 19 key := client.IDKey("Data", 111, nil) 20 objBefore := &Data{Name: "Data"} 21 _, err := client.Put(ctx, key, objBefore) 22 if err != nil { 23 t.Fatal(err) 24 } 25 26 ch := New(rand.NewSource(100)) 27 client.AppendMiddleware(ch) 28 defer func() { 29 // stop chaos before cleanUp func called. 30 client.RemoveMiddleware(ch) 31 }() 32 33 // Get. 34 catchErr := false 35 for i := 0; i < 100; i++ { 36 objAfter := &Data{} 37 err = client.Get(ctx, key, objAfter) 38 if err != nil { 39 t.Logf("#%d catch err=%s", i+1, err.Error()) 40 catchErr = true 41 } 42 } 43 if !catchErr { 44 t.Errorf("unexpected: %v", catchErr) 45 } 46 }