mirror of
https://gitlab.com/pulsechaincom/prysm-pulse.git
synced 2024-12-22 03:30:35 +00:00
add test boilerplate for sharding client
Former-commit-id: 7cbd81db9421e1517ad92829a2dbbdfcf5f38699 [formerly 76607161435699e18a970c82f9838d20e94f04d7] Former-commit-id: f6db97246aa70eda35e59a2a05fa55316289bd76
This commit is contained in:
parent
9b6f224f83
commit
50e92a018e
@ -1,7 +1,6 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/ethereum/go-ethereum/log"
|
||||
"github.com/ethereum/go-ethereum/sharding"
|
||||
|
||||
"github.com/ethereum/go-ethereum/cmd/utils"
|
||||
@ -20,7 +19,6 @@ var (
|
||||
)
|
||||
|
||||
func shardingClient(ctx *cli.Context) error {
|
||||
log.Info("hello world!")
|
||||
c := sharding.MakeShardingClient(ctx)
|
||||
if err := c.Start(); err != nil {
|
||||
return err
|
||||
|
@ -1,29 +1,58 @@
|
||||
package sharding
|
||||
|
||||
import (
|
||||
"github.com/ethereum/go-ethereum/cmd/utils"
|
||||
"github.com/ethereum/go-ethereum/log"
|
||||
"github.com/ethereum/go-ethereum/node"
|
||||
"github.com/ethereum/go-ethereum/rpc"
|
||||
cli "gopkg.in/urfave/cli.v1"
|
||||
)
|
||||
|
||||
const (
|
||||
// TODO: Can this be referenced from main.clientIdentifier?
|
||||
clientIdentifier = "geth" // Client identifier to advertise over the network
|
||||
)
|
||||
|
||||
type Client struct {
|
||||
endpoint string
|
||||
client *rpc.Client
|
||||
}
|
||||
|
||||
func MakeShardingClient(ctx *cli.Context) *Client {
|
||||
// TODO: Setup client
|
||||
return &Client{}
|
||||
endpoint := ""
|
||||
if ctx.GlobalIsSet(utils.DataDirFlag.Name) {
|
||||
endpoint = ctx.GlobalString(utils.DataDirFlag.Name)
|
||||
}
|
||||
|
||||
return &Client{
|
||||
endpoint: endpoint,
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Client) Start() error {
|
||||
log.Info("Starting sharding client")
|
||||
// TODO: Dial to RPC
|
||||
// TODO: Verify VMC
|
||||
rpcClient, err := dialRPC(c.endpoint)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
c.client = rpcClient
|
||||
defer c.client.Close()
|
||||
if err := c.verifyVMC(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// TODO: Wait to be selected?
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *Client) Wait() {
|
||||
// TODO: Blocking lock
|
||||
}
|
||||
|
||||
func dialRPC(endpoint string) (*rpc.Client, error) {
|
||||
if endpoint == "" {
|
||||
endpoint = node.DefaultIPCEndpoint(clientIdentifier)
|
||||
}
|
||||
return rpc.Dial(endpoint)
|
||||
}
|
||||
|
54
sharding/client_test.go
Normal file
54
sharding/client_test.go
Normal file
@ -0,0 +1,54 @@
|
||||
package sharding
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/ethereum/go-ethereum/cmd/utils"
|
||||
"github.com/ethereum/go-ethereum/rpc"
|
||||
cli "gopkg.in/urfave/cli.v1"
|
||||
)
|
||||
|
||||
func randomEndpoint() string {
|
||||
return fmt.Sprintf("/tmp/go-ethereum-test-ipc-%d-%d", os.Getpid(), rand.Int63())
|
||||
}
|
||||
|
||||
func newTestServer(endpoint string) (*rpc.Server, error) {
|
||||
server := rpc.NewServer()
|
||||
|
||||
l, err := rpc.CreateIPCListener(endpoint)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
go server.ServeListener(l)
|
||||
|
||||
return server, nil
|
||||
}
|
||||
|
||||
func createContext() *cli.Context {
|
||||
set := flag.NewFlagSet("test", 0)
|
||||
set.String(utils.DataDirFlag.Name, "", "")
|
||||
return cli.NewContext(nil, set, nil)
|
||||
}
|
||||
|
||||
func TestStart(t *testing.T) {
|
||||
endpoint := randomEndpoint()
|
||||
server, err := newTestServer(endpoint)
|
||||
if err != nil {
|
||||
t.Fatalf("Failed to create a test server: %v", err)
|
||||
}
|
||||
defer server.Stop()
|
||||
|
||||
ctx := createContext()
|
||||
if err := ctx.GlobalSet(utils.DataDirFlag.Name, endpoint); err != nil {
|
||||
t.Fatalf("Failed to set global variable for flag %s. Error: %v", utils.DataDirFlag.Name, err)
|
||||
}
|
||||
|
||||
c := MakeShardingClient(ctx)
|
||||
if err := c.Start(); err != nil {
|
||||
t.Errorf("Failed to start server: %v", err)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user