aboutsummaryrefslogtreecommitdiffstats
path: root/swarm/storage/feeds/testutil.go
diff options
context:
space:
mode:
Diffstat (limited to 'swarm/storage/feeds/testutil.go')
-rw-r--r--swarm/storage/feeds/testutil.go71
1 files changed, 71 insertions, 0 deletions
diff --git a/swarm/storage/feeds/testutil.go b/swarm/storage/feeds/testutil.go
new file mode 100644
index 000000000..879f73348
--- /dev/null
+++ b/swarm/storage/feeds/testutil.go
@@ -0,0 +1,71 @@
+// Copyright 2018 The go-ethereum Authors
+// This file is part of the go-ethereum library.
+//
+// The go-ethereum library is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Lesser General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// The go-ethereum library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public License
+// along with the go-ethereum library. If not, see <http://www.gnu.org/licenses/>.
+
+package feeds
+
+import (
+ "context"
+ "fmt"
+ "path/filepath"
+ "sync"
+
+ "github.com/ethereum/go-ethereum/p2p/enode"
+ "github.com/ethereum/go-ethereum/swarm/storage"
+)
+
+const (
+ testDbDirName = "feeds"
+)
+
+type TestHandler struct {
+ *Handler
+}
+
+func (t *TestHandler) Close() {
+ t.chunkStore.Close()
+}
+
+type mockNetFetcher struct{}
+
+func (m *mockNetFetcher) Request(ctx context.Context, hopCount uint8) {
+}
+func (m *mockNetFetcher) Offer(ctx context.Context, source *enode.ID) {
+}
+
+func newFakeNetFetcher(context.Context, storage.Address, *sync.Map) storage.NetFetcher {
+ return &mockNetFetcher{}
+}
+
+// NewTestHandler creates Handler object to be used for testing purposes.
+func NewTestHandler(datadir string, params *HandlerParams) (*TestHandler, error) {
+ path := filepath.Join(datadir, testDbDirName)
+ fh := NewHandler(params)
+ localstoreparams := storage.NewDefaultLocalStoreParams()
+ localstoreparams.Init(path)
+ localStore, err := storage.NewLocalStore(localstoreparams, nil)
+ if err != nil {
+ return nil, fmt.Errorf("localstore create fail, path %s: %v", path, err)
+ }
+ localStore.Validators = append(localStore.Validators, storage.NewContentAddressValidator(storage.MakeHashFunc(feedsHashAlgorithm)))
+ localStore.Validators = append(localStore.Validators, fh)
+ netStore, err := storage.NewNetStore(localStore, nil)
+ if err != nil {
+ return nil, err
+ }
+ netStore.NewNetFetcherFunc = newFakeNetFetcher
+ fh.SetStore(netStore)
+ return &TestHandler{fh}, nil
+}