github.com/mweagle/Sparta@v1.15.0/aws/accessor/accessor_test.go (about) 1 package accessor 2 3 import ( 4 "context" 5 "math/rand" 6 "os" 7 "testing" 8 "time" 9 10 sparta "github.com/mweagle/Sparta" 11 ) 12 13 type testObject struct { 14 Data string 15 SomeOtherData []string 16 Value int 17 } 18 19 func newTestObject() *testObject { 20 return &testObject{ 21 Data: "Hello World at " + time.Now().UTC().String(), 22 SomeOtherData: []string{"Val1", "Val2", "Val3"}, 23 Value: 42, 24 } 25 } 26 27 // Disable test in Travis. 28 // Ref: https://help.github.com/en/actions/automating-your-workflow-with-github-actions/using-environment-variables 29 // 30 func testDisabled() bool { 31 return os.Getenv("GITHUB_WORKFLOW") != "" 32 } 33 func testObjectConstructor() interface{} { 34 return &testObject{} 35 } 36 37 func testPut(t *testing.T, kvStore KevValueAccessor) { 38 if testDisabled() { 39 return 40 } 41 logger, _ := sparta.NewLogger("info") 42 43 ctx := context.Background() 44 ctx = context.WithValue(ctx, sparta.ContextKeyLogger, logger) 45 46 testID := time.Now().UTC().String() 47 record := newTestObject() 48 err := kvStore.Put(ctx, testID, record) 49 if err != nil { 50 t.Fatalf("%T failed to put item: %s", kvStore, err.Error()) 51 } 52 var emptyRecord testObject 53 err = kvStore.Get(ctx, testID, &emptyRecord) 54 if err != nil { 55 t.Fatalf("%T failed to get item: %s", kvStore, err.Error()) 56 } 57 err = kvStore.Delete(ctx, testID) 58 if err != nil { 59 t.Fatalf("%T failed to delete item: %s", kvStore, err.Error()) 60 } 61 } 62 63 func testPutAll(t *testing.T, kvStore KevValueAccessor) { 64 if testDisabled() { 65 return 66 } 67 logger, _ := sparta.NewLogger("debug") 68 ctx := context.Background() 69 ctx = context.WithValue(ctx, sparta.ContextKeyLogger, logger) 70 recordCount := int(rand.Int31n(2) + 1) 71 72 for i := 0; i != recordCount; i++ { 73 testID := time.Now().UTC().String() 74 record := newTestObject() 75 err := kvStore.Put(ctx, testID, record) 76 if err != nil { 77 t.Fatalf("%T failed to put item: %s", kvStore, err) 78 } 79 time.Sleep(50 * time.Millisecond) 80 } 81 getAll, getAllErr := kvStore.GetAll(ctx, testObjectConstructor) 82 if getAllErr != nil { 83 t.Fatalf("%T failed to get all items: %s", kvStore, getAllErr) 84 } 85 if len(getAll) != recordCount { 86 t.Fatalf("%T returned item count %d doesn't match expected %d", 87 kvStore, 88 len(getAll), 89 recordCount) 90 } 91 deleteAllErr := kvStore.DeleteAll(ctx) 92 if deleteAllErr != nil { 93 t.Fatalf("%T failed to delete all items: %s", kvStore, deleteAllErr) 94 } 95 getAll, getAllErr = kvStore.GetAll(ctx, testObjectConstructor) 96 if getAllErr != nil { 97 t.Fatalf("%T failed to confirm get all items: %s", kvStore, getAllErr) 98 } 99 if len(getAll) != 0 { 100 t.Fatalf("%T failed to confirm all items deleted: %s", kvStore, getAll) 101 } 102 }