// package main ... package session import ( "context" "testing" "time" "go.mongodb.org/mongo-driver/bson/primitive" "repositories.action2quare.com/ayo/gocommon/logger" ) type sessioninfo struct { Platform string Uid string } func TestExpTable(t *testing.T) { pv, err := NewProvider[sessioninfo](context.Background(), "redis://192.168.8.94:6380/1", 10*time.Second) if err != nil { t.Error(err) } cs, err := NewConsumer[sessioninfo](context.Background(), "redis://192.168.8.94:6380/1", 10*time.Second) if err != nil { t.Error(err) } newid1 := primitive.NewObjectID() newid2 := primitive.NewObjectID() go func() { for { logger.Println("query :", cs.Query(newid1.Hex())) logger.Println("query :", cs.Query(newid2.Hex())) time.Sleep(time.Second) } }() time.Sleep(2 * time.Second) pv.Update(newid1.Hex(), &sessioninfo{ Platform: "editor", Uid: "uid-1", }) time.Sleep(2 * time.Second) pv.Update(newid2.Hex(), &sessioninfo{ Platform: "editor", Uid: "uid-2", }) cs.Touch(newid1.Hex()) time.Sleep(2 * time.Second) cs.Touch(newid2.Hex()) time.Sleep(2 * time.Second) time.Sleep(2 * time.Second) pv.Delete(newid1.Hex()) cs.Touch(newid1.Hex()) time.Sleep(2 * time.Second) cs.Touch(newid2.Hex()) time.Sleep(2 * time.Second) cs2, err := NewConsumer[sessioninfo](context.Background(), "redis://192.168.8.94:6380/1", 10*time.Second) if err != nil { t.Error(err) } logger.Println("queryf :", cs2.Query(newid2.Hex())) time.Sleep(20 * time.Second) }