diff options
Diffstat (limited to 'cache')
-rw-r--r-- | cache/partitioned_lazy_cache_test.go | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/cache/partitioned_lazy_cache_test.go b/cache/partitioned_lazy_cache_test.go index 73f75fe17..97c8e09da 100644 --- a/cache/partitioned_lazy_cache_test.go +++ b/cache/partitioned_lazy_cache_test.go @@ -15,6 +15,7 @@ package cache import ( "errors" + "sync" "testing" "github.com/stretchr/testify/require" @@ -90,3 +91,46 @@ func TestNewPartitionedLazyCache(t *testing.T) { assert.Error(err) } + +func TestConcurrentPartitionedLazyCache(t *testing.T) { + t.Parallel() + + assert := require.New(t) + + var wg sync.WaitGroup + + p1 := Partition{ + Key: "p1", + Load: func() (map[string]interface{}, error) { + return map[string]interface{}{ + "p1_1": "p1v1", + "p1_2": "p1v2", + "p1_nil": nil, + }, nil + }, + } + + p2 := Partition{ + Key: "p2", + Load: func() (map[string]interface{}, error) { + return map[string]interface{}{ + "p2_1": "p2v1", + "p2_2": "p2v2", + "p2_3": "p2v3", + }, nil + }, + } + + cache := NewPartitionedLazyCache(p1, p2) + + for j := 0; j < 100; j++ { + wg.Add(1) + go func() { + defer wg.Done() + v, err := cache.Get("p1", "p1_1") + assert.NoError(err) + assert.Equal("p1v1", v) + }() + } + wg.Wait() +} |