improve the syncMap.Iterate test to make it 100% reproducible (#970)
* improve the syncMap.Iterate test to make it 100% reproducible * rename store/mocks/Store.go * rename mocks/store to mock/store
This commit is contained in:
		
							
								
								
									
										1
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								go.mod
									
									
									
									
									
								
							| @@ -37,6 +37,7 @@ require ( | |||||||
| 	github.com/nlopes/slack v0.6.0 | 	github.com/nlopes/slack v0.6.0 | ||||||
| 	github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c | 	github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c | ||||||
| 	github.com/pkg/errors v0.8.1 | 	github.com/pkg/errors v0.8.1 | ||||||
|  | 	github.com/stretchr/testify v1.4.0 | ||||||
| 	go.uber.org/zap v1.12.0 // indirect | 	go.uber.org/zap v1.12.0 // indirect | ||||||
| 	golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a | 	golang.org/x/crypto v0.0.0-20191108234033-bd318be0434a | ||||||
| 	golang.org/x/net v0.0.0-20191109021931-daa7c04131f5 | 	golang.org/x/net v0.0.0-20191109021931-daa7c04131f5 | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								go.sum
									
									
									
									
									
								
							| @@ -360,6 +360,7 @@ github.com/src-d/gcfg v1.4.0 h1:xXbNR5AlLSA315x2UO+fTSSAXCDf+Ar38/6oyGbDKQ4= | |||||||
| github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= | github.com/src-d/gcfg v1.4.0/go.mod h1:p/UMsR43ujA89BJY9duynAwIpvqEujIH/jFlfL7jWoI= | ||||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||||
| github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||||
|  | github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= | ||||||
| github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= | github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= | ||||||
| github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= | github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= | ||||||
| github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= | ||||||
|   | |||||||
							
								
								
									
										103
									
								
								store/mock/store.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										103
									
								
								store/mock/store.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,103 @@ | |||||||
|  | // Code generated by mockery v1.0.0. DO NOT EDIT. | ||||||
|  |  | ||||||
|  | package mock | ||||||
|  |  | ||||||
|  | import mock "github.com/stretchr/testify/mock" | ||||||
|  | import store "github.com/micro/go-micro/store" | ||||||
|  |  | ||||||
|  | // Store is an autogenerated mock type for the Store type | ||||||
|  | type Store struct { | ||||||
|  | 	mock.Mock | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Delete provides a mock function with given fields: key | ||||||
|  | func (_m *Store) Delete(key ...string) error { | ||||||
|  | 	_va := make([]interface{}, len(key)) | ||||||
|  | 	for _i := range key { | ||||||
|  | 		_va[_i] = key[_i] | ||||||
|  | 	} | ||||||
|  | 	var _ca []interface{} | ||||||
|  | 	_ca = append(_ca, _va...) | ||||||
|  | 	ret := _m.Called(_ca...) | ||||||
|  |  | ||||||
|  | 	var r0 error | ||||||
|  | 	if rf, ok := ret.Get(0).(func(...string) error); ok { | ||||||
|  | 		r0 = rf(key...) | ||||||
|  | 	} else { | ||||||
|  | 		r0 = ret.Error(0) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return r0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // List provides a mock function with given fields: | ||||||
|  | func (_m *Store) List() ([]*store.Record, error) { | ||||||
|  | 	ret := _m.Called() | ||||||
|  |  | ||||||
|  | 	var r0 []*store.Record | ||||||
|  | 	if rf, ok := ret.Get(0).(func() []*store.Record); ok { | ||||||
|  | 		r0 = rf() | ||||||
|  | 	} else { | ||||||
|  | 		if ret.Get(0) != nil { | ||||||
|  | 			r0 = ret.Get(0).([]*store.Record) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	var r1 error | ||||||
|  | 	if rf, ok := ret.Get(1).(func() error); ok { | ||||||
|  | 		r1 = rf() | ||||||
|  | 	} else { | ||||||
|  | 		r1 = ret.Error(1) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return r0, r1 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Read provides a mock function with given fields: key | ||||||
|  | func (_m *Store) Read(key ...string) ([]*store.Record, error) { | ||||||
|  | 	_va := make([]interface{}, len(key)) | ||||||
|  | 	for _i := range key { | ||||||
|  | 		_va[_i] = key[_i] | ||||||
|  | 	} | ||||||
|  | 	var _ca []interface{} | ||||||
|  | 	_ca = append(_ca, _va...) | ||||||
|  | 	ret := _m.Called(_ca...) | ||||||
|  |  | ||||||
|  | 	var r0 []*store.Record | ||||||
|  | 	if rf, ok := ret.Get(0).(func(...string) []*store.Record); ok { | ||||||
|  | 		r0 = rf(key...) | ||||||
|  | 	} else { | ||||||
|  | 		if ret.Get(0) != nil { | ||||||
|  | 			r0 = ret.Get(0).([]*store.Record) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	var r1 error | ||||||
|  | 	if rf, ok := ret.Get(1).(func(...string) error); ok { | ||||||
|  | 		r1 = rf(key...) | ||||||
|  | 	} else { | ||||||
|  | 		r1 = ret.Error(1) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return r0, r1 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // Write provides a mock function with given fields: rec | ||||||
|  | func (_m *Store) Write(rec ...*store.Record) error { | ||||||
|  | 	_va := make([]interface{}, len(rec)) | ||||||
|  | 	for _i := range rec { | ||||||
|  | 		_va[_i] = rec[_i] | ||||||
|  | 	} | ||||||
|  | 	var _ca []interface{} | ||||||
|  | 	_ca = append(_ca, _va...) | ||||||
|  | 	ret := _m.Called(_ca...) | ||||||
|  |  | ||||||
|  | 	var r0 error | ||||||
|  | 	if rf, ok := ret.Get(0).(func(...*store.Record) error); ok { | ||||||
|  | 		r0 = rf(rec...) | ||||||
|  | 	} else { | ||||||
|  | 		r0 = ret.Error(0) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return r0 | ||||||
|  | } | ||||||
| @@ -4,14 +4,13 @@ import ( | |||||||
| 	"testing" | 	"testing" | ||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	store "github.com/micro/go-micro/store" | 	"github.com/micro/go-micro/store" | ||||||
| 	mem_store "github.com/micro/go-micro/store/memory" | 	store_mock "github.com/micro/go-micro/store/mock" | ||||||
| 	mem_lock "github.com/micro/go-micro/sync/lock/memory" | 	mem_lock "github.com/micro/go-micro/sync/lock/memory" | ||||||
|  | 	"github.com/stretchr/testify/mock" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func TestIterate(t *testing.T) { | func TestIterate(t *testing.T) { | ||||||
| 	s1 := mem_store.NewStore() |  | ||||||
| 	s2 := mem_store.NewStore() |  | ||||||
| 	recA := &store.Record{ | 	recA := &store.Record{ | ||||||
| 		Key:   "A", | 		Key:   "A", | ||||||
| 		Value: nil, | 		Value: nil, | ||||||
| @@ -20,10 +19,12 @@ func TestIterate(t *testing.T) { | |||||||
| 		Key:   "B", | 		Key:   "B", | ||||||
| 		Value: nil, | 		Value: nil, | ||||||
| 	} | 	} | ||||||
| 	s1.Write(recA) | 	s1 := &store_mock.Store{} | ||||||
| 	s1.Write(recB) | 	s2 := &store_mock.Store{} | ||||||
| 	s2.Write(recB) | 	s1.On("List").Return([]*store.Record{recA, recB}, nil) | ||||||
| 	s2.Write(recA) | 	s2.On("List").Return([]*store.Record{recB, recA}, nil) | ||||||
|  | 	s1.On("Write", mock.Anything).Return(nil) | ||||||
|  | 	s2.On("Write", mock.Anything).Return(nil) | ||||||
|  |  | ||||||
| 	f := func(key, val interface{}) error { | 	f := func(key, val interface{}) error { | ||||||
| 		time.Sleep(1 * time.Millisecond) | 		time.Sleep(1 * time.Millisecond) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user