hugo

Unnamed repository; edit this file 'description' to name the repository.

git clone git://git.shimmy1996.com/hugo.git
commit b3c8056de24f6090d1fdf41707bc39cc57a9416a
parent fe132e1c3e883f0100824eafa097cdd28d0fc441
Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date:   Wed, 28 Jun 2017 22:44:37 +0200

cache: Add concurrent cache test

Diffstat:
Mcache/partitioned_lazy_cache_test.go | 44++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 44 insertions(+), 0 deletions(-)
diff --git 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()
+}