github.com/linapex/ethereum-go-chinese@v0.0.0-20190316121929-f8b7a73c3fa1/swarm/storage/feed/testutil.go (about) 1 2 //<developer> 3 // <name>linapex 曹一峰</name> 4 // <email>linapex@163.com</email> 5 // <wx>superexc</wx> 6 // <qqgroup>128148617</qqgroup> 7 // <url>https://jsq.ink</url> 8 // <role>pku engineer</role> 9 // <date>2019-03-16 19:16:44</date> 10 //</624450119462293504> 11 12 13 package feed 14 15 import ( 16 "context" 17 "fmt" 18 "path/filepath" 19 "sync" 20 21 "github.com/ethereum/go-ethereum/p2p/enode" 22 "github.com/ethereum/go-ethereum/swarm/storage" 23 ) 24 25 const ( 26 testDbDirName = "feeds" 27 ) 28 29 type TestHandler struct { 30 *Handler 31 } 32 33 func (t *TestHandler) Close() { 34 t.chunkStore.Close() 35 } 36 37 type mockNetFetcher struct{} 38 39 func (m *mockNetFetcher) Request(ctx context.Context, hopCount uint8) { 40 } 41 func (m *mockNetFetcher) Offer(ctx context.Context, source *enode.ID) { 42 } 43 44 func newFakeNetFetcher(context.Context, storage.Address, *sync.Map) storage.NetFetcher { 45 return &mockNetFetcher{} 46 } 47 48 //NewTestHandler创建用于测试的处理程序对象。 49 func NewTestHandler(datadir string, params *HandlerParams) (*TestHandler, error) { 50 path := filepath.Join(datadir, testDbDirName) 51 fh := NewHandler(params) 52 localstoreparams := storage.NewDefaultLocalStoreParams() 53 localstoreparams.Init(path) 54 localStore, err := storage.NewLocalStore(localstoreparams, nil) 55 if err != nil { 56 return nil, fmt.Errorf("localstore create fail, path %s: %v", path, err) 57 } 58 localStore.Validators = append(localStore.Validators, storage.NewContentAddressValidator(storage.MakeHashFunc(feedsHashAlgorithm))) 59 localStore.Validators = append(localStore.Validators, fh) 60 netStore, err := storage.NewNetStore(localStore, nil) 61 if err != nil { 62 return nil, err 63 } 64 netStore.NewNetFetcherFunc = newFakeNetFetcher 65 fh.SetStore(netStore) 66 return &TestHandler{fh}, nil 67 } 68