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  }