aboutsummaryrefslogtreecommitdiffstats
path: root/swarm/testutil/http.go
diff options
context:
space:
mode:
authorLewis Marshall <lewis@lmars.net>2017-04-05 06:20:07 +0800
committerFelix Lange <fjl@users.noreply.github.com>2017-04-05 06:20:07 +0800
commitb319f027a0be232a9cb307336b0349b36737c7f1 (patch)
treea17c7dc775c270aea9acdabc8e13292b3c2ae958 /swarm/testutil/http.go
parent09777952ee476ff80d4b6e63b5041ff5ca0e441b (diff)
downloaddexon-b319f027a0be232a9cb307336b0349b36737c7f1.tar.gz
dexon-b319f027a0be232a9cb307336b0349b36737c7f1.tar.zst
dexon-b319f027a0be232a9cb307336b0349b36737c7f1.zip
cmd/swarm, swarm/api/client: add HTTP API client and 'swarm ls' command (#3742)
This adds a swarm ls command which lists files and directories stored in a manifest. Rather than listing all files, it uses "directory prefixes" in case there are a lot of files in a manifest but you just want to traverse it. This also includes some refactoring to the tests and the introduction of a swarm/api/client package to make things easier to test.
Diffstat (limited to 'swarm/testutil/http.go')
-rw-r--r--swarm/testutil/http.go56
1 files changed, 56 insertions, 0 deletions
diff --git a/swarm/testutil/http.go b/swarm/testutil/http.go
new file mode 100644
index 000000000..bf98d16eb
--- /dev/null
+++ b/swarm/testutil/http.go
@@ -0,0 +1,56 @@
+package testutil
+
+import (
+ "io/ioutil"
+ "net/http/httptest"
+ "os"
+ "testing"
+
+ "github.com/ethereum/go-ethereum/swarm/api"
+ httpapi "github.com/ethereum/go-ethereum/swarm/api/http"
+ "github.com/ethereum/go-ethereum/swarm/storage"
+)
+
+func NewTestSwarmServer(t *testing.T) *TestSwarmServer {
+ dir, err := ioutil.TempDir("", "swarm-storage-test")
+ if err != nil {
+ t.Fatal(err)
+ }
+ storeparams := &storage.StoreParams{
+ ChunkDbPath: dir,
+ DbCapacity: 5000000,
+ CacheCapacity: 5000,
+ Radius: 0,
+ }
+ localStore, err := storage.NewLocalStore(storage.MakeHashFunc("SHA3"), storeparams)
+ if err != nil {
+ os.RemoveAll(dir)
+ t.Fatal(err)
+ }
+ chunker := storage.NewTreeChunker(storage.NewChunkerParams())
+ dpa := &storage.DPA{
+ Chunker: chunker,
+ ChunkStore: localStore,
+ }
+ dpa.Start()
+ a := api.NewApi(dpa, nil)
+ srv := httptest.NewServer(httpapi.NewServer(a))
+ return &TestSwarmServer{
+ Server: srv,
+ Dpa: dpa,
+ dir: dir,
+ }
+}
+
+type TestSwarmServer struct {
+ *httptest.Server
+
+ Dpa *storage.DPA
+ dir string
+}
+
+func (t *TestSwarmServer) Close() {
+ t.Server.Close()
+ t.Dpa.Stop()
+ os.RemoveAll(t.dir)
+}