exec compose takes context

This commit is contained in:
William Banfield
2022-11-29 13:48:56 -05:00
parent 6415af6b92
commit be8d980f83
4 changed files with 15 additions and 13 deletions

View File

@@ -35,13 +35,13 @@ func (p *Provider) Setup() error {
return nil
}
func (p Provider) StartTendermint(ctx context.Context, n *e2e.Node) error {
return ExecCompose(p.Testnet.Dir, "start", n.Name)
return ExecCompose(ctx, p.Testnet.Dir, "start", n.Name)
}
func (p Provider) TerminateTendermint(ctx context.Context, n *e2e.Node) error {
return ExecCompose(p.Testnet.Dir, "kill", "-s", "SIGTERM", n.Name)
return ExecCompose(ctx, p.Testnet.Dir, "kill", "-s", "SIGTERM", n.Name)
}
func (p Provider) KillTendermint(ctx context.Context, n *e2e.Node) error {
return ExecCompose(p.Testnet.Dir, "kill", "-s", "SIGKILL", n.Name)
return ExecCompose(ctx, p.Testnet.Dir, "kill", "-s", "SIGKILL", n.Name)
}
// dockerComposeBytes generates a Docker Compose config file for a testnet and returns the
@@ -96,8 +96,8 @@ services:
}
// ExecCompose runs a Docker Compose command for a testnet.
func ExecCompose(dir string, args ...string) error {
return exec.Command(context.Background(), append(
func ExecCompose(ctx context.Context, dir string, args ...string) error {
return exec.Command(ctx, append(
[]string{"docker-compose", "-f", filepath.Join(dir, "docker-compose.yml")},
args...)...)
}

View File

@@ -211,7 +211,7 @@ func NewCLI() *CLI {
Short: "Stops the Docker testnet",
RunE: func(cmd *cobra.Command, args []string) error {
logger.Info("Stopping testnet")
return docker.ExecCompose(cli.testnet.Dir, "down")
return docker.ExecCompose(context.Background(), cli.testnet.Dir, "down")
},
})

View File

@@ -1,6 +1,7 @@
package main
import (
"context"
"fmt"
"time"
@@ -41,26 +42,26 @@ func PerturbNode(node *e2e.Node, perturbation e2e.Perturbation) (*rpctypes.Resul
case e2e.PerturbationKill:
logger.Info("perturb node", "msg", log.NewLazySprintf("Killing node %v...", node.Name))
if err := docker.ExecCompose(testnet.Dir, "kill", "-s", "SIGKILL", node.Name); err != nil {
if err := docker.ExecCompose(context.Background(), testnet.Dir, "kill", "-s", "SIGKILL", node.Name); err != nil {
return nil, err
}
if err := docker.ExecCompose(testnet.Dir, "start", node.Name); err != nil {
if err := docker.ExecCompose(context.Background(), testnet.Dir, "start", node.Name); err != nil {
return nil, err
}
case e2e.PerturbationPause:
logger.Info("perturb node", "msg", log.NewLazySprintf("Pausing node %v...", node.Name))
if err := docker.ExecCompose(testnet.Dir, "pause", node.Name); err != nil {
if err := docker.ExecCompose(context.Background(), testnet.Dir, "pause", node.Name); err != nil {
return nil, err
}
time.Sleep(10 * time.Second)
if err := docker.ExecCompose(testnet.Dir, "unpause", node.Name); err != nil {
if err := docker.ExecCompose(context.Background(), testnet.Dir, "unpause", node.Name); err != nil {
return nil, err
}
case e2e.PerturbationRestart:
logger.Info("perturb node", "msg", log.NewLazySprintf("Restarting node %v...", node.Name))
if err := docker.ExecCompose(testnet.Dir, "restart", node.Name); err != nil {
if err := docker.ExecCompose(context.Background(), testnet.Dir, "restart", node.Name); err != nil {
return nil, err
}

View File

@@ -1,6 +1,7 @@
package main
import (
"context"
"fmt"
"sort"
"time"
@@ -44,7 +45,7 @@ func Start(testnet *e2e.Testnet) error {
for len(nodeQueue) > 0 && nodeQueue[0].StartAt == 0 {
node := nodeQueue[0]
nodeQueue = nodeQueue[1:]
if err := docker.ExecCompose(testnet.Dir, "up", "-d", node.Name); err != nil {
if err := docker.ExecCompose(context.Background(), testnet.Dir, "up", "-d", node.Name); err != nil {
return err
}
if _, err := waitForNode(node, 0, 15*time.Second); err != nil {
@@ -98,7 +99,7 @@ func Start(testnet *e2e.Testnet) error {
logger.Info("Starting catch up node", "node", node.Name, "height", node.StartAt)
if err := docker.ExecCompose(testnet.Dir, "up", "-d", node.Name); err != nil {
if err := docker.ExecCompose(context.Background(), testnet.Dir, "up", "-d", node.Name); err != nil {
return err
}
status, err := waitForNode(node, node.StartAt, 3*time.Minute)