gitee.com/liuxuezhan/go-micro-v1.18.0@v1.0.0/sync/map_test.go (about) 1 package sync 2 3 import ( 4 "testing" 5 "time" 6 7 "gitee.com/liuxuezhan/go-micro-v1.18.0/store" 8 store_mock "gitee.com/liuxuezhan/go-micro-v1.18.0/store/mock" 9 mem_lock "gitee.com/liuxuezhan/go-micro-v1.18.0/sync/lock/memory" 10 "github.com/stretchr/testify/mock" 11 ) 12 13 func TestIterate(t *testing.T) { 14 recA := &store.Record{ 15 Key: "A", 16 Value: nil, 17 } 18 recB := &store.Record{ 19 Key: "B", 20 Value: nil, 21 } 22 s1 := &store_mock.Store{} 23 s2 := &store_mock.Store{} 24 s1.On("List").Return([]*store.Record{recA, recB}, nil) 25 s2.On("List").Return([]*store.Record{recB, recA}, nil) 26 s1.On("Write", mock.Anything).Return(nil) 27 s2.On("Write", mock.Anything).Return(nil) 28 29 f := func(key, val interface{}) error { 30 time.Sleep(1 * time.Millisecond) 31 return nil 32 } 33 l := mem_lock.NewLock() 34 m1 := NewMap(WithStore(s1), WithLock(l)) 35 m2 := NewMap(WithStore(s2), WithLock(l)) 36 go func() { 37 m2.Iterate(f) 38 }() 39 m1.Iterate(f) 40 }