b319f027a0
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.
57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
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)
|
|
}
|