aboutsummaryrefslogtreecommitdiffstats
path: root/swarm/testutil
diff options
context:
space:
mode:
Diffstat (limited to 'swarm/testutil')
-rw-r--r--swarm/testutil/http.go65
1 files changed, 40 insertions, 25 deletions
diff --git a/swarm/testutil/http.go b/swarm/testutil/http.go
index debf0b14b..992b919d0 100644
--- a/swarm/testutil/http.go
+++ b/swarm/testutil/http.go
@@ -17,15 +17,15 @@
package testutil
import (
- "context"
"io/ioutil"
- "math/big"
"net/http"
"net/http/httptest"
"os"
"testing"
+ "time"
- "github.com/ethereum/go-ethereum/core/types"
+ "github.com/ethereum/go-ethereum/metrics"
+ "github.com/ethereum/go-ethereum/metrics/influxdb"
"github.com/ethereum/go-ethereum/swarm/api"
"github.com/ethereum/go-ethereum/swarm/storage"
"github.com/ethereum/go-ethereum/swarm/storage/mru"
@@ -35,16 +35,17 @@ type TestServer interface {
ServeHTTP(http.ResponseWriter, *http.Request)
}
-type fakeBackend struct {
- blocknumber int64
+// simulated timeProvider
+type fakeTimeProvider struct {
+ currentTime uint64
}
-func (f *fakeBackend) HeaderByNumber(context context.Context, _ string, bigblock *big.Int) (*types.Header, error) {
- f.blocknumber++
- biggie := big.NewInt(f.blocknumber)
- return &types.Header{
- Number: biggie,
- }, nil
+func (f *fakeTimeProvider) Tick() {
+ f.currentTime++
+}
+
+func (f *fakeTimeProvider) Now() mru.Timestamp {
+ return mru.Timestamp{Time: f.currentTime}
}
func NewTestSwarmServer(t *testing.T, serverFunc func(*api.API) TestServer) *TestSwarmServer {
@@ -68,24 +69,25 @@ func NewTestSwarmServer(t *testing.T, serverFunc func(*api.API) TestServer) *Tes
if err != nil {
t.Fatal(err)
}
- rhparams := &mru.HandlerParams{
- QueryMaxPeriods: &mru.LookupParams{},
- HeaderGetter: &fakeBackend{
- blocknumber: 42,
- },
+
+ fakeTimeProvider := &fakeTimeProvider{
+ currentTime: 42,
}
+ mru.TimestampProvider = fakeTimeProvider
+ rhparams := &mru.HandlerParams{}
rh, err := mru.NewTestHandler(resourceDir, rhparams)
if err != nil {
t.Fatal(err)
}
- a := api.NewAPI(fileStore, nil, rh)
+ a := api.NewAPI(fileStore, nil, rh.Handler)
srv := httptest.NewServer(serverFunc(a))
return &TestSwarmServer{
- Server: srv,
- FileStore: fileStore,
- dir: dir,
- Hasher: storage.MakeHashFunc(storage.DefaultHash)(),
+ Server: srv,
+ FileStore: fileStore,
+ dir: dir,
+ Hasher: storage.MakeHashFunc(storage.DefaultHash)(),
+ timestampProvider: fakeTimeProvider,
cleanup: func() {
srv.Close()
rh.Close()
@@ -97,12 +99,25 @@ func NewTestSwarmServer(t *testing.T, serverFunc func(*api.API) TestServer) *Tes
type TestSwarmServer struct {
*httptest.Server
- Hasher storage.SwarmHash
- FileStore *storage.FileStore
- dir string
- cleanup func()
+ Hasher storage.SwarmHash
+ FileStore *storage.FileStore
+ dir string
+ cleanup func()
+ timestampProvider *fakeTimeProvider
}
func (t *TestSwarmServer) Close() {
t.cleanup()
}
+
+func (t *TestSwarmServer) GetCurrentTime() mru.Timestamp {
+ return t.timestampProvider.Now()
+}
+
+// EnableMetrics is starting InfluxDB reporter so that we collect stats when running tests locally
+func EnableMetrics() {
+ metrics.Enabled = true
+ go influxdb.InfluxDBWithTags(metrics.DefaultRegistry, 1*time.Second, "http://localhost:8086", "metrics", "admin", "admin", "swarm.", map[string]string{
+ "host": "test",
+ })
+}