11package libcache_test
22
33import (
4+ "context"
45 "fmt"
56 "math/rand"
67 "testing"
@@ -321,7 +322,7 @@ func TestNotify(t *testing.T) {
321322 }
322323}
323324
324- func TestGC (t * testing.T ) {
325+ func TestCacheGC (t * testing.T ) {
325326 for _ , tt := range cacheTests {
326327 t .Run ("Test" + tt .cont .String ()+ "CacheGC" , func (t * testing.T ) {
327328 cache := tt .cont .NewUnsafe (0 )
@@ -338,6 +339,27 @@ func TestGC(t *testing.T) {
338339 }
339340}
340341
342+ func TestGC (t * testing.T ) {
343+ ctx , cancel := context .WithCancel (context .Background ())
344+ defer cancel ()
345+
346+ cache := libcache .LRU .New (0 )
347+ go libcache .GC (ctx , cache )
348+
349+ cache .StoreWithTTL (1 , 1 , time .Millisecond * 100 )
350+ time .Sleep (time .Millisecond * 150 )
351+ assert .Zero (t , cache .Len ())
352+
353+ cache .StoreWithTTL (1 , 1 , time .Millisecond * 100 )
354+ cache .StoreWithTTL (2 , 2 , time .Millisecond * 200 )
355+
356+ time .Sleep (time .Millisecond * 150 )
357+ assert .Equal (t , 1 , cache .Len ())
358+
359+ time .Sleep (time .Millisecond * 150 )
360+ assert .Zero (t , cache .Len ())
361+ }
362+
341363func BenchmarkCache (b * testing.B ) {
342364 for _ , tt := range cacheTests {
343365 b .Run ("Benchmark" + tt .cont .String ()+ "Cache" , func (b * testing.B ) {
0 commit comments