aboutsummaryrefslogtreecommitdiffstats
path: root/swarm/testutil
diff options
context:
space:
mode:
authorAlexey Sharov <www.pismeco@gmail.com>2018-11-14 16:21:14 +0800
committerViktor TrĂ³n <viktor.tron@gmail.com>2018-11-14 16:21:14 +0800
commiteb8fa3cc89ae3a3247c649486839b1c250554d2d (patch)
treec61b8ebebc739db0e5413cd214fdd0d3da2fe61e /swarm/testutil
parentcff97119a713a6f790893aaf1c172a397a48bf33 (diff)
downloadgo-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/testutil')
-rw-r--r--swarm/testutil/file.go21
-rw-r--r--swarm/testutil/http.go97
2 files changed, 21 insertions, 97 deletions
diff --git a/swarm/testutil/file.go b/swarm/testutil/file.go
index ecb0d971e..70732aa92 100644
--- a/swarm/testutil/file.go
+++ b/swarm/testutil/file.go
@@ -17,8 +17,10 @@
package testutil
import (
+ "bytes"
"io"
"io/ioutil"
+ "math/rand"
"os"
"strings"
"testing"
@@ -42,3 +44,22 @@ func TempFileWithContent(t *testing.T, content string) string {
}
return tempFile.Name()
}
+
+// RandomBytes returns pseudo-random deterministic result
+// because test fails must be reproducible
+func RandomBytes(seed, length int) []byte {
+ b := make([]byte, length)
+ reader := rand.New(rand.NewSource(int64(seed)))
+ for n := 0; n < length; {
+ read, err := reader.Read(b[n:])
+ if err != nil {
+ panic(err)
+ }
+ n += read
+ }
+ return b
+}
+
+func RandomReader(seed, length int) *bytes.Reader {
+ return bytes.NewReader(RandomBytes(seed, length))
+}
diff --git a/swarm/testutil/http.go b/swarm/testutil/http.go
deleted file mode 100644
index cdf9239d0..000000000
--- a/swarm/testutil/http.go
+++ /dev/null
@@ -1,97 +0,0 @@
-// 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 testutil
-
-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}
-}