github.com/gogf/gf@v1.16.9/os/gsession/gsession_unit_storage_redis_test.go (about) 1 // Copyright GoFrame Author(https://goframe.org). All Rights Reserved. 2 // 3 // This Source Code Form is subject to the terms of the MIT License. 4 // If a copy of the MIT was not distributed with this file, 5 // You can obtain one at https://github.com/gogf/gf. 6 7 package gsession_test 8 9 import ( 10 "context" 11 "github.com/gogf/gf/database/gredis" 12 "github.com/gogf/gf/frame/g" 13 "github.com/gogf/gf/os/gsession" 14 "testing" 15 "time" 16 17 "github.com/gogf/gf/test/gtest" 18 ) 19 20 func Test_StorageRedis(t *testing.T) { 21 redis, err := gredis.NewFromStr("127.0.0.1:6379,0") 22 gtest.Assert(err, nil) 23 24 storage := gsession.NewStorageRedis(redis) 25 manager := gsession.New(time.Second, storage) 26 sessionId := "" 27 gtest.C(t, func(t *gtest.T) { 28 s := manager.New(context.TODO()) 29 defer s.Close() 30 s.Set("k1", "v1") 31 s.Set("k2", "v2") 32 s.Sets(g.Map{ 33 "k3": "v3", 34 "k4": "v4", 35 }) 36 t.Assert(s.IsDirty(), true) 37 sessionId = s.Id() 38 }) 39 40 time.Sleep(500 * time.Millisecond) 41 gtest.C(t, func(t *gtest.T) { 42 s := manager.New(context.TODO(), sessionId) 43 t.Assert(s.Get("k1"), "v1") 44 t.Assert(s.Get("k2"), "v2") 45 t.Assert(s.Get("k3"), "v3") 46 t.Assert(s.Get("k4"), "v4") 47 t.Assert(len(s.Map()), 4) 48 t.Assert(s.Map()["k1"], "v1") 49 t.Assert(s.Map()["k4"], "v4") 50 t.Assert(s.Id(), sessionId) 51 t.Assert(s.Size(), 4) 52 t.Assert(s.Contains("k1"), true) 53 t.Assert(s.Contains("k3"), true) 54 t.Assert(s.Contains("k5"), false) 55 s.Remove("k4") 56 t.Assert(s.Size(), 3) 57 t.Assert(s.Contains("k3"), true) 58 t.Assert(s.Contains("k4"), false) 59 s.RemoveAll() 60 t.Assert(s.Size(), 0) 61 t.Assert(s.Contains("k1"), false) 62 t.Assert(s.Contains("k2"), false) 63 s.Sets(g.Map{ 64 "k5": "v5", 65 "k6": "v6", 66 }) 67 t.Assert(s.Size(), 2) 68 t.Assert(s.Contains("k5"), true) 69 t.Assert(s.Contains("k6"), true) 70 }) 71 72 time.Sleep(1000 * time.Millisecond) 73 gtest.C(t, func(t *gtest.T) { 74 s := manager.New(context.TODO(), sessionId) 75 t.Assert(s.Size(), 0) 76 t.Assert(s.Get("k5"), nil) 77 t.Assert(s.Get("k6"), nil) 78 }) 79 } 80 81 func Test_StorageRedisPrefix(t *testing.T) { 82 redis, err := gredis.NewFromStr("127.0.0.1:6379,0") 83 gtest.Assert(err, nil) 84 85 prefix := "s_" 86 storage := gsession.NewStorageRedis(redis, prefix) 87 manager := gsession.New(time.Second, storage) 88 sessionId := "" 89 gtest.C(t, func(t *gtest.T) { 90 s := manager.New(context.TODO()) 91 defer s.Close() 92 s.Set("k1", "v1") 93 s.Set("k2", "v2") 94 s.Sets(g.Map{ 95 "k3": "v3", 96 "k4": "v4", 97 }) 98 t.Assert(s.IsDirty(), true) 99 sessionId = s.Id() 100 }) 101 102 time.Sleep(500 * time.Millisecond) 103 gtest.C(t, func(t *gtest.T) { 104 s := manager.New(context.TODO(), sessionId) 105 t.Assert(s.Get("k1"), "v1") 106 t.Assert(s.Get("k2"), "v2") 107 t.Assert(s.Get("k3"), "v3") 108 t.Assert(s.Get("k4"), "v4") 109 t.Assert(len(s.Map()), 4) 110 t.Assert(s.Map()["k1"], "v1") 111 t.Assert(s.Map()["k4"], "v4") 112 t.Assert(s.Id(), sessionId) 113 t.Assert(s.Size(), 4) 114 t.Assert(s.Contains("k1"), true) 115 t.Assert(s.Contains("k3"), true) 116 t.Assert(s.Contains("k5"), false) 117 s.Remove("k4") 118 t.Assert(s.Size(), 3) 119 t.Assert(s.Contains("k3"), true) 120 t.Assert(s.Contains("k4"), false) 121 s.RemoveAll() 122 t.Assert(s.Size(), 0) 123 t.Assert(s.Contains("k1"), false) 124 t.Assert(s.Contains("k2"), false) 125 s.Sets(g.Map{ 126 "k5": "v5", 127 "k6": "v6", 128 }) 129 t.Assert(s.Size(), 2) 130 t.Assert(s.Contains("k5"), true) 131 t.Assert(s.Contains("k6"), true) 132 }) 133 134 time.Sleep(1000 * time.Millisecond) 135 gtest.C(t, func(t *gtest.T) { 136 s := manager.New(context.TODO(), sessionId) 137 t.Assert(s.Size(), 0) 138 t.Assert(s.Get("k5"), nil) 139 t.Assert(s.Get("k6"), nil) 140 }) 141 }