Path: blob/master/common/lazycontainer_test.go
508 views
package common12import (3"github.com/stretchr/testify/assert"4"testing"56"strconv"7"sync"8"sync/atomic"9"time"10"unsafe"11)1213func TestLazyContainer(t *testing.T) {1415const entries = 10000016const iterations = 2017const extra = 1001819var wg sync.WaitGroup2021var containers [entries + extra]*LazyContainer2223var computations int322425for i := 0; i < entries+extra; i++ {26z := i27containers[i] = NewLazyContainer(28func() unsafe.Pointer {29time.Sleep(5 * time.Millisecond)30pt := strconv.Itoa(z)31atomic.AddInt32(&computations, 1)32return unsafe.Pointer(&pt)33})34}3536for i := 0; i < entries; i += 2 {37for j := 0; j < iterations; j++ {38wg.Add(1)39go func(idx int) {40assert.Equal(t, strconv.Itoa(idx), *(*string)(containers[idx].Get()))41wg.Done()42}(i)43}44}4546wg.Wait()4748assert.Equal(t, entries/2, int(computations))49}505152