diff options
author | Alexey Sharov <www.pismeco@gmail.com> | 2018-11-14 16:21:14 +0800 |
---|---|---|
committer | Viktor TrĂ³n <viktor.tron@gmail.com> | 2018-11-14 16:21:14 +0800 |
commit | eb8fa3cc89ae3a3247c649486839b1c250554d2d (patch) | |
tree | c61b8ebebc739db0e5413cd214fdd0d3da2fe61e /swarm/api/http/test_server.go | |
parent | cff97119a713a6f790893aaf1c172a397a48bf33 (diff) | |
download | go-tangerine-eb8fa3cc89ae3a3247c649486839b1c250554d2d.tar go-tangerine-eb8fa3cc89ae3a3247c649486839b1c250554d2d.tar.gz go-tangerine-eb8fa3cc89ae3a3247c649486839b1c250554d2d.tar.bz2 go-tangerine-eb8fa3cc89ae3a3247c649486839b1c250554d2d.tar.lz go-tangerine-eb8fa3cc89ae3a3247c649486839b1c250554d2d.tar.xz go-tangerine-eb8fa3cc89ae3a3247c649486839b1c250554d2d.tar.zst go-tangerine-eb8fa3cc89ae3a3247c649486839b1c250554d2d.zip |
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)
Diffstat (limited to 'swarm/api/http/test_server.go')
-rw-r--r-- | swarm/api/http/test_server.go | 97 |
1 files changed, 97 insertions, 0 deletions
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 <http://www.gnu.org/licenses/>. + +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} +} |