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  }