From eb8fa3cc89ae3a3247c649486839b1c250554d2d Mon Sep 17 00:00:00 2001 From: Alexey Sharov Date: Wed, 14 Nov 2018 15:21:14 +0700 Subject: cmd/swarm, swarm/api/http, swarm/bmt, swarm/fuse, swarm/network/stream, swarm/storage, swarm/storage/encryption, swarm/testutil: use pseudo-random instead of crypto-random for test files content generation (#18083) - Replace "crypto/rand" to "math/rand" for files content generation - Remove swarm/network_test.go.Shuffle and swarm/btm/btm_test.go.Shuffle - because go1.9 support dropped (see https://github.com/ethereum/go-ethereum/pull/17807 and comments to swarm/network_test.go.Shuffle) --- swarm/api/http/test_server.go | 97 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 swarm/api/http/test_server.go (limited to 'swarm/api/http/test_server.go') diff --git a/swarm/api/http/test_server.go b/swarm/api/http/test_server.go new file mode 100644 index 000000000..9245c9c5b --- /dev/null +++ b/swarm/api/http/test_server.go @@ -0,0 +1,97 @@ +// Copyright 2017 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 . + +package http + +import ( + "io/ioutil" + "net/http" + "net/http/httptest" + "os" + "testing" + + "github.com/ethereum/go-ethereum/swarm/api" + "github.com/ethereum/go-ethereum/swarm/storage" + "github.com/ethereum/go-ethereum/swarm/storage/feed" +) + +type TestServer interface { + ServeHTTP(http.ResponseWriter, *http.Request) +} + +func NewTestSwarmServer(t *testing.T, serverFunc func(*api.API) TestServer, resolver api.Resolver) *TestSwarmServer { + dir, err := ioutil.TempDir("", "swarm-storage-test") + if err != nil { + t.Fatal(err) + } + storeparams := storage.NewDefaultLocalStoreParams() + storeparams.DbCapacity = 5000000 + storeparams.CacheCapacity = 5000 + storeparams.Init(dir) + localStore, err := storage.NewLocalStore(storeparams, nil) + if err != nil { + os.RemoveAll(dir) + t.Fatal(err) + } + fileStore := storage.NewFileStore(localStore, storage.NewFileStoreParams()) + + // Swarm feeds test setup + feedsDir, err := ioutil.TempDir("", "swarm-feeds-test") + if err != nil { + t.Fatal(err) + } + + rhparams := &feed.HandlerParams{} + rh, err := feed.NewTestHandler(feedsDir, rhparams) + if err != nil { + t.Fatal(err) + } + + a := api.NewAPI(fileStore, resolver, rh.Handler, nil) + srv := httptest.NewServer(serverFunc(a)) + tss := &TestSwarmServer{ + Server: srv, + FileStore: fileStore, + dir: dir, + Hasher: storage.MakeHashFunc(storage.DefaultHash)(), + cleanup: func() { + srv.Close() + rh.Close() + os.RemoveAll(dir) + os.RemoveAll(feedsDir) + }, + CurrentTime: 42, + } + feed.TimestampProvider = tss + return tss +} + +type TestSwarmServer struct { + *httptest.Server + Hasher storage.SwarmHash + FileStore *storage.FileStore + dir string + cleanup func() + CurrentTime uint64 +} + +func (t *TestSwarmServer) Close() { + t.cleanup() +} + +func (t *TestSwarmServer) Now() feed.Timestamp { + return feed.Timestamp{Time: t.CurrentTime} +} -- cgit v1.2.3