github.com/gofiber/fiber/v2@v2.47.0/internal/storage/memory/memory_test.go (about) 1 package memory 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/gofiber/fiber/v2/utils" 8 ) 9 10 var testStore = New() 11 12 func Test_Storage_Memory_Set(t *testing.T) { 13 t.Parallel() 14 var ( 15 key = "john" 16 val = []byte("doe") 17 ) 18 19 err := testStore.Set(key, val, 0) 20 utils.AssertEqual(t, nil, err) 21 } 22 23 func Test_Storage_Memory_Set_Override(t *testing.T) { 24 t.Parallel() 25 var ( 26 key = "john" 27 val = []byte("doe") 28 ) 29 30 err := testStore.Set(key, val, 0) 31 utils.AssertEqual(t, nil, err) 32 33 err = testStore.Set(key, val, 0) 34 utils.AssertEqual(t, nil, err) 35 } 36 37 func Test_Storage_Memory_Get(t *testing.T) { 38 t.Parallel() 39 var ( 40 key = "john" 41 val = []byte("doe") 42 ) 43 44 err := testStore.Set(key, val, 0) 45 utils.AssertEqual(t, nil, err) 46 47 result, err := testStore.Get(key) 48 utils.AssertEqual(t, nil, err) 49 utils.AssertEqual(t, val, result) 50 } 51 52 func Test_Storage_Memory_Set_Expiration(t *testing.T) { 53 t.Parallel() 54 var ( 55 key = "john" 56 val = []byte("doe") 57 exp = 1 * time.Second 58 ) 59 60 err := testStore.Set(key, val, exp) 61 utils.AssertEqual(t, nil, err) 62 63 time.Sleep(1100 * time.Millisecond) 64 } 65 66 func Test_Storage_Memory_Get_Expired(t *testing.T) { 67 var ( 68 key = "john" 69 ) 70 71 result, err := testStore.Get(key) 72 utils.AssertEqual(t, nil, err) 73 utils.AssertEqual(t, true, len(result) == 0) 74 } 75 76 func Test_Storage_Memory_Get_NotExist(t *testing.T) { 77 t.Parallel() 78 79 result, err := testStore.Get("notexist") 80 utils.AssertEqual(t, nil, err) 81 utils.AssertEqual(t, true, len(result) == 0) 82 } 83 84 func Test_Storage_Memory_Delete(t *testing.T) { 85 t.Parallel() 86 var ( 87 key = "john" 88 val = []byte("doe") 89 ) 90 91 err := testStore.Set(key, val, 0) 92 utils.AssertEqual(t, nil, err) 93 94 err = testStore.Delete(key) 95 utils.AssertEqual(t, nil, err) 96 97 result, err := testStore.Get(key) 98 utils.AssertEqual(t, nil, err) 99 utils.AssertEqual(t, true, len(result) == 0) 100 } 101 102 func Test_Storage_Memory_Reset(t *testing.T) { 103 t.Parallel() 104 var ( 105 val = []byte("doe") 106 ) 107 108 err := testStore.Set("john1", val, 0) 109 utils.AssertEqual(t, nil, err) 110 111 err = testStore.Set("john2", val, 0) 112 utils.AssertEqual(t, nil, err) 113 114 err = testStore.Reset() 115 utils.AssertEqual(t, nil, err) 116 117 result, err := testStore.Get("john1") 118 utils.AssertEqual(t, nil, err) 119 utils.AssertEqual(t, true, len(result) == 0) 120 121 result, err = testStore.Get("john2") 122 utils.AssertEqual(t, nil, err) 123 utils.AssertEqual(t, true, len(result) == 0) 124 } 125 126 func Test_Storage_Memory_Close(t *testing.T) { 127 t.Parallel() 128 utils.AssertEqual(t, nil, testStore.Close()) 129 } 130 131 func Test_Storage_Memory_Conn(t *testing.T) { 132 t.Parallel() 133 utils.AssertEqual(t, true, testStore.Conn() != nil) 134 } 135 136 // go test -v -run=^$ -bench=Benchmark_Storage_Memory -benchmem -count=4 137 func Benchmark_Storage_Memory(b *testing.B) { 138 keyLength := 1000 139 keys := make([]string, keyLength) 140 for i := 0; i < keyLength; i++ { 141 keys[i] = utils.UUID() 142 } 143 value := []byte("joe") 144 145 ttl := 2 * time.Second 146 b.Run("fiber_memory", func(b *testing.B) { 147 d := New() 148 b.ReportAllocs() 149 b.ResetTimer() 150 for n := 0; n < b.N; n++ { 151 for _, key := range keys { 152 d.Set(key, value, ttl) 153 } 154 for _, key := range keys { 155 _, _ = d.Get(key) 156 } 157 for _, key := range keys { 158 d.Delete(key) 159 } 160 } 161 }) 162 }