mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
cmd/swarm: speed up StartNewNodes() by parallelization
Reduce cluster startup time from 13s to 7s.
This commit is contained in:
parent
985f2b8ceb
commit
5facd22fa2
1 changed files with 28 additions and 11 deletions
|
|
@ -165,10 +165,8 @@ outer:
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *testCluster) Shutdown() {
|
func (c *testCluster) Shutdown() {
|
||||||
for _, node := range c.Nodes {
|
c.Stop()
|
||||||
node.Shutdown()
|
c.Cleanup()
|
||||||
}
|
|
||||||
os.RemoveAll(c.TmpDir)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *testCluster) Stop() {
|
func (c *testCluster) Stop() {
|
||||||
|
|
@ -179,16 +177,35 @@ func (c *testCluster) Stop() {
|
||||||
|
|
||||||
func (c *testCluster) StartNewNodes(t *testing.T, size int) {
|
func (c *testCluster) StartNewNodes(t *testing.T, size int) {
|
||||||
c.Nodes = make([]*testNode, 0, size)
|
c.Nodes = make([]*testNode, 0, size)
|
||||||
|
|
||||||
|
errors := make(chan error, size)
|
||||||
|
nodes := make(chan *testNode, size)
|
||||||
for i := 0; i < size; i++ {
|
for i := 0; i < size; i++ {
|
||||||
dir := filepath.Join(c.TmpDir, fmt.Sprintf("swarm%02d", i))
|
go func(nodeIndex int) {
|
||||||
if err := os.Mkdir(dir, 0700); err != nil {
|
dir := filepath.Join(c.TmpDir, fmt.Sprintf("swarm%02d", nodeIndex))
|
||||||
t.Fatal(err)
|
if err := os.Mkdir(dir, 0700); err != nil {
|
||||||
|
errors <- err
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
node := newTestNode(t, dir)
|
||||||
|
node.Name = fmt.Sprintf("swarm%02d", nodeIndex)
|
||||||
|
nodes <- node
|
||||||
|
}(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
for i := 0; i < size; i++ {
|
||||||
|
select {
|
||||||
|
case node := <-nodes:
|
||||||
|
c.Nodes = append(c.Nodes, node)
|
||||||
|
case err := <-errors:
|
||||||
|
t.Error(err)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
node := newTestNode(t, dir)
|
if t.Failed() {
|
||||||
node.Name = fmt.Sprintf("swarm%02d", i)
|
c.Shutdown()
|
||||||
|
t.FailNow()
|
||||||
c.Nodes = append(c.Nodes, node)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue