diff options
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} +} |