diff options
Diffstat (limited to 'swarm/testutil')
-rw-r--r-- | swarm/testutil/file.go | 21 | ||||
-rw-r--r-- | swarm/testutil/http.go | 97 |
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} -} |