core, container: refactor environment config with docker
This commit is contained in:
parent
c35fc7ccac
commit
8d872e8640
|
@ -46,14 +46,9 @@ type Ethereum interface {
|
|||
Stop() error
|
||||
}
|
||||
|
||||
func NewEthereum(options ...Option) *ethereum {
|
||||
client, err := client.NewEnvClient()
|
||||
if err != nil {
|
||||
log.Fatalf("Cannot connect to Docker daemon, err: %v", err)
|
||||
}
|
||||
|
||||
func NewEthereum(c *client.Client, options ...Option) *ethereum {
|
||||
geth := ðereum{
|
||||
client: client,
|
||||
client: c,
|
||||
}
|
||||
|
||||
for _, opt := range options {
|
||||
|
|
|
@ -35,6 +35,7 @@ func TestEthereumContainer(t *testing.T) {
|
|||
|
||||
for _, env := range envs {
|
||||
geth := NewEthereum(
|
||||
env.Client,
|
||||
ImageName("quay.io/maicoin/ottoman_geth:istanbul_develop"),
|
||||
HostDataDir(env.DataDir),
|
||||
DataDir("/data"),
|
||||
|
|
|
@ -23,9 +23,11 @@ import (
|
|||
"io/ioutil"
|
||||
"log"
|
||||
"net"
|
||||
"net/url"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/docker/docker/client"
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/crypto"
|
||||
"github.com/ethereum/go-ethereum/p2p/discover"
|
||||
|
@ -44,10 +46,6 @@ const (
|
|||
GenesisJson = "genesis.json"
|
||||
)
|
||||
|
||||
var (
|
||||
defaultIP = net.IPv4(127, 0, 0, 1)
|
||||
)
|
||||
|
||||
func GenerateClusterKeys(numbers int) []*ecdsa.PrivateKey {
|
||||
keys := make([]*ecdsa.PrivateKey, numbers)
|
||||
for i := 0; i < len(keys); i++ {
|
||||
|
@ -66,6 +64,7 @@ type Env struct {
|
|||
RpcPort uint16
|
||||
DataDir string
|
||||
Key *ecdsa.PrivateKey
|
||||
Client *client.Client
|
||||
}
|
||||
|
||||
func Teardown(envs []*Env) {
|
||||
|
@ -80,6 +79,11 @@ func SetupEnv(prvKeys []*ecdsa.PrivateKey) []*Env {
|
|||
httpPort := defaultHttpPort
|
||||
|
||||
for i := 0; i < len(envs); i++ {
|
||||
client, err := client.NewEnvClient()
|
||||
if err != nil {
|
||||
log.Fatalf("Cannot connect to Docker daemon, err: %v", err)
|
||||
}
|
||||
|
||||
dataDir, err := saveNodeKey(prvKeys[i])
|
||||
if err != nil {
|
||||
panic("Failed to save node key")
|
||||
|
@ -91,6 +95,7 @@ func SetupEnv(prvKeys []*ecdsa.PrivateKey) []*Env {
|
|||
RpcPort: rpcPort,
|
||||
DataDir: dataDir,
|
||||
Key: prvKeys[i],
|
||||
Client: client,
|
||||
}
|
||||
|
||||
rpcPort = rpcPort + 1
|
||||
|
@ -159,8 +164,18 @@ func transformToStaticNodes(envs []*Env) []string {
|
|||
nodes := make([]string, len(envs))
|
||||
|
||||
for i, env := range envs {
|
||||
daemonHost := env.Client.DaemonHost()
|
||||
url, err := url.Parse(daemonHost)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to parse daemon host, err: %v", err)
|
||||
}
|
||||
host, _, err := net.SplitHostPort(url.Host)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to split host and port, err: %v", err)
|
||||
}
|
||||
|
||||
nodeID := discover.PubkeyID(&env.Key.PublicKey)
|
||||
nodes[i] = discover.NewNode(nodeID, defaultIP, 0, env.HttpPort).String()
|
||||
nodes[i] = discover.NewNode(nodeID, net.ParseIP(host), 0, env.HttpPort).String()
|
||||
}
|
||||
return nodes
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue