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  }