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