github.com/gofiber/fiber/v2@v2.47.0/internal/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 // go test -run Test_Memory -v -race 11 12 func Test_Memory(t *testing.T) { 13 t.Parallel() 14 var store = New() 15 var ( 16 key = "john" 17 val interface{} = []byte("doe") 18 exp = 1 * time.Second 19 ) 20 21 store.Set(key, val, 0) 22 store.Set(key, val, 0) 23 24 result := store.Get(key) 25 utils.AssertEqual(t, val, result) 26 27 result = store.Get("empty") 28 utils.AssertEqual(t, nil, result) 29 30 store.Set(key, val, exp) 31 time.Sleep(1100 * time.Millisecond) 32 33 result = store.Get(key) 34 utils.AssertEqual(t, nil, result) 35 36 store.Set(key, val, 0) 37 result = store.Get(key) 38 utils.AssertEqual(t, val, result) 39 40 store.Delete(key) 41 result = store.Get(key) 42 utils.AssertEqual(t, nil, result) 43 44 store.Set("john", val, 0) 45 store.Set("doe", val, 0) 46 store.Reset() 47 48 result = store.Get("john") 49 utils.AssertEqual(t, nil, result) 50 51 result = store.Get("doe") 52 utils.AssertEqual(t, nil, result) 53 } 54 55 // go test -v -run=^$ -bench=Benchmark_Memory -benchmem -count=4 56 func Benchmark_Memory(b *testing.B) { 57 keyLength := 1000 58 keys := make([]string, keyLength) 59 for i := 0; i < keyLength; i++ { 60 keys[i] = utils.UUID() 61 } 62 value := []byte("joe") 63 64 ttl := 2 * time.Second 65 b.Run("fiber_memory", func(b *testing.B) { 66 d := New() 67 b.ReportAllocs() 68 b.ResetTimer() 69 for n := 0; n < b.N; n++ { 70 for _, key := range keys { 71 d.Set(key, value, ttl) 72 } 73 for _, key := range keys { 74 _ = d.Get(key) 75 } 76 for _, key := range keys { 77 d.Delete(key) 78 79 } 80 } 81 }) 82 }