mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 02:42:27 +00:00
cmd/swarm/global-store: add comments
This commit is contained in:
parent
4ab38f28bb
commit
421749f90a
2 changed files with 31 additions and 0 deletions
|
|
@ -29,6 +29,8 @@ import (
|
||||||
cli "gopkg.in/urfave/cli.v1"
|
cli "gopkg.in/urfave/cli.v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// startHTTP starts a global store with HTTP RPC server.
|
||||||
|
// It is used for "http" cli command.
|
||||||
func startHTTP(ctx *cli.Context) (err error) {
|
func startHTTP(ctx *cli.Context) (err error) {
|
||||||
server, cleanup, err := newServer(ctx)
|
server, cleanup, err := newServer(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -45,6 +47,8 @@ func startHTTP(ctx *cli.Context) (err error) {
|
||||||
return http.Serve(listener, server)
|
return http.Serve(listener, server)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// startWS starts a global store with WebSocket RPC server.
|
||||||
|
// It is used for "websocket" cli command.
|
||||||
func startWS(ctx *cli.Context) (err error) {
|
func startWS(ctx *cli.Context) (err error) {
|
||||||
server, cleanup, err := newServer(ctx)
|
server, cleanup, err := newServer(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -62,6 +66,8 @@ func startWS(ctx *cli.Context) (err error) {
|
||||||
return http.Serve(listener, server.WebsocketHandler(origins))
|
return http.Serve(listener, server.WebsocketHandler(origins))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// newServer creates a global store and returns its RPC server.
|
||||||
|
// Returned cleanup function should be called only if err is nil.
|
||||||
func newServer(ctx *cli.Context) (server *rpc.Server, cleanup func(), err error) {
|
func newServer(ctx *cli.Context) (server *rpc.Server, cleanup func(), err error) {
|
||||||
log.PrintOrigins(true)
|
log.PrintOrigins(true)
|
||||||
log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(ctx.Int("verbosity")), log.StreamHandler(os.Stdout, log.TerminalFormat(true))))
|
log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(ctx.Int("verbosity")), log.StreamHandler(os.Stdout, log.TerminalFormat(true))))
|
||||||
|
|
@ -86,6 +92,7 @@ func newServer(ctx *cli.Context) (server *rpc.Server, cleanup func(), err error)
|
||||||
|
|
||||||
server = rpc.NewServer()
|
server = rpc.NewServer()
|
||||||
if err := server.RegisterName("mockStore", globalStore); err != nil {
|
if err := server.RegisterName("mockStore", globalStore); err != nil {
|
||||||
|
cleanup()
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,10 +30,14 @@ import (
|
||||||
mockRPC "github.com/ethereum/go-ethereum/swarm/storage/mock/rpc"
|
mockRPC "github.com/ethereum/go-ethereum/swarm/storage/mock/rpc"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// TestHTTP_InMemory tests in-memory global store that exposes
|
||||||
|
// HTTP server.
|
||||||
func TestHTTP_InMemory(t *testing.T) {
|
func TestHTTP_InMemory(t *testing.T) {
|
||||||
testHTTP(t, true)
|
testHTTP(t, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestHTTP_Database tests global store with persisted database
|
||||||
|
// that exposes HTTP server.
|
||||||
func TestHTTP_Database(t *testing.T) {
|
func TestHTTP_Database(t *testing.T) {
|
||||||
dir, err := ioutil.TempDir("", "swarm-global-store-")
|
dir, err := ioutil.TempDir("", "swarm-global-store-")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -41,11 +45,18 @@ func TestHTTP_Database(t *testing.T) {
|
||||||
}
|
}
|
||||||
defer os.RemoveAll(dir)
|
defer os.RemoveAll(dir)
|
||||||
|
|
||||||
|
// create a fresh global store
|
||||||
testHTTP(t, true, "--dir", dir)
|
testHTTP(t, true, "--dir", dir)
|
||||||
|
|
||||||
|
// check if data saved by the previous global store instance
|
||||||
testHTTP(t, false, "--dir", dir)
|
testHTTP(t, false, "--dir", dir)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// testWebsocket starts global store binary with HTTP server
|
||||||
|
// and validates that it can store and retrieve data.
|
||||||
|
// If put is false, no data will be stored, only retrieved,
|
||||||
|
// giving the possibility to check if data is present in the
|
||||||
|
// storage directory.
|
||||||
func testHTTP(t *testing.T, put bool, args ...string) {
|
func testHTTP(t *testing.T, put bool, args ...string) {
|
||||||
addr := findFreeTCPAddress(t)
|
addr := findFreeTCPAddress(t)
|
||||||
testCmd := runGlobalStore(t, append([]string{"http", "--addr", addr}, args...)...)
|
testCmd := runGlobalStore(t, append([]string{"http", "--addr", addr}, args...)...)
|
||||||
|
|
@ -94,10 +105,14 @@ func testHTTP(t *testing.T, put bool, args ...string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestWebsocket_InMemory tests in-memory global store that exposes
|
||||||
|
// WebSocket server.
|
||||||
func TestWebsocket_InMemory(t *testing.T) {
|
func TestWebsocket_InMemory(t *testing.T) {
|
||||||
testWebsocket(t, true)
|
testWebsocket(t, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TestWebsocket_Database tests global store with persisted database
|
||||||
|
// that exposes HTTP server.
|
||||||
func TestWebsocket_Database(t *testing.T) {
|
func TestWebsocket_Database(t *testing.T) {
|
||||||
dir, err := ioutil.TempDir("", "swarm-global-store-")
|
dir, err := ioutil.TempDir("", "swarm-global-store-")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
@ -105,11 +120,18 @@ func TestWebsocket_Database(t *testing.T) {
|
||||||
}
|
}
|
||||||
defer os.RemoveAll(dir)
|
defer os.RemoveAll(dir)
|
||||||
|
|
||||||
|
// create a fresh global store
|
||||||
testWebsocket(t, true, "--dir", dir)
|
testWebsocket(t, true, "--dir", dir)
|
||||||
|
|
||||||
|
// check if data saved by the previous global store instance
|
||||||
testWebsocket(t, false, "--dir", dir)
|
testWebsocket(t, false, "--dir", dir)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// testWebsocket starts global store binary with WebSocket server
|
||||||
|
// and validates that it can store and retrieve data.
|
||||||
|
// If put is false, no data will be stored, only retrieved,
|
||||||
|
// giving the possibility to check if data is present in the
|
||||||
|
// storage directory.
|
||||||
func testWebsocket(t *testing.T, put bool, args ...string) {
|
func testWebsocket(t *testing.T, put bool, args ...string) {
|
||||||
addr := findFreeTCPAddress(t)
|
addr := findFreeTCPAddress(t)
|
||||||
testCmd := runGlobalStore(t, append([]string{"ws", "--addr", addr}, args...)...)
|
testCmd := runGlobalStore(t, append([]string{"ws", "--addr", addr}, args...)...)
|
||||||
|
|
@ -154,6 +176,8 @@ func testWebsocket(t *testing.T, put bool, args ...string) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// findFreeTCPAddress returns a local address (IP:Port) to which
|
||||||
|
// global store can listen on.
|
||||||
func findFreeTCPAddress(t *testing.T) (addr string) {
|
func findFreeTCPAddress(t *testing.T) (addr string) {
|
||||||
t.Helper()
|
t.Helper()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue