From 0e53c594f9e9147d5a6d590e04f66f62e7ec828e Mon Sep 17 00:00:00 2001 From: Anton Evangelatov Date: Mon, 3 Dec 2018 15:11:31 +0100 Subject: [PATCH] cmd/swarm/swarm-smoke: timeout flag --- cmd/swarm/swarm-smoke/main.go | 7 +++++++ cmd/swarm/swarm-smoke/upload_and_sync.go | 19 +++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/cmd/swarm/swarm-smoke/main.go b/cmd/swarm/swarm-smoke/main.go index 845998dc12..06ec20a079 100644 --- a/cmd/swarm/swarm-smoke/main.go +++ b/cmd/swarm/swarm-smoke/main.go @@ -35,6 +35,7 @@ var ( from int to int verbosity int + timeout int ) func main() { @@ -91,6 +92,12 @@ func main() { Usage: "verbosity", Destination: &verbosity, }, + cli.IntFlag{ + Name: "timeout", + Value: 120, + Usage: "timeout in seconds after which kill the process", + Destination: &timeout, + }, } app.Commands = []cli.Command{ diff --git a/cmd/swarm/swarm-smoke/upload_and_sync.go b/cmd/swarm/swarm-smoke/upload_and_sync.go index 3843457dc4..21be544fe3 100644 --- a/cmd/swarm/swarm-smoke/upload_and_sync.go +++ b/cmd/swarm/swarm-smoke/upload_and_sync.go @@ -40,11 +40,11 @@ import ( func generateEndpoints(scheme string, cluster string, app string, from int, to int) { if cluster == "prod" { - for port := from; port <= to; port++ { + for port := from; port < to; port++ { endpoints = append(endpoints, fmt.Sprintf("%s://%v.swarm-gateways.net", scheme, port)) } } else { - for port := from; port <= to; port++ { + for port := from; port < to; port++ { endpoints = append(endpoints, fmt.Sprintf("%s://%s-%v-%s.stg.swarm-gateways.net", scheme, app, port, cluster)) } } @@ -58,6 +58,21 @@ func cliUploadAndSync(c *cli.Context) error { log.PrintOrigins(true) log.Root().SetHandler(log.LvlFilterHandler(log.Lvl(verbosity), log.StreamHandler(os.Stdout, log.TerminalFormat(true)))) + errc := make(chan error) + go func() { + errc <- uploadAndSync(c) + }() + + select { + case err := <-errc: + return err + case <-time.After(time.Duration(timeout) * time.Second): + return fmt.Errorf("timeout after %v sec", timeout) + } + +} + +func uploadAndSync(c *cli.Context) error { defer func(now time.Time) { log.Info("total time", "time", time.Since(now), "kb", filesize) }(time.Now()) generateEndpoints(scheme, cluster, appName, from, to)