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.
This commit is contained in:
committed by
Felix Lange
parent
09777952ee
commit
b319f027a0
56
swarm/testutil/http.go
Normal file
56
swarm/testutil/http.go
Normal file
@ -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)
|
||||
}
|
Reference in New Issue
Block a user