diff --git a/internal/log/handlers/cli/cli.go b/internal/log/handlers/cli/cli.go index 5bb033a..c3de93e 100644 --- a/internal/log/handlers/cli/cli.go +++ b/internal/log/handlers/cli/cli.go @@ -110,10 +110,13 @@ func (h *Handler) TypedLog(t string, e *log.Entry) error { case "progress": perc := e.Fields.Get("percentage").(float64) * 100 eta := e.Fields.Get("eta").(float64) - s := fmt.Sprintf(" %s %-25s (%ss left)", + var etaMessage string + if eta >= 0 { + etaMessage = fmt.Sprintf("(%ss left)", bold.Sprintf("%.2f", eta)) + } + s := fmt.Sprintf(" %s %-25s %s", bold.Sprintf("%.2f%%", perc), - e.Message, - bold.Sprintf("%.2f", eta)) + e.Message, etaMessage) fmt.Fprint(h.Writer, s) fmt.Fprintln(h.Writer) return nil diff --git a/nettests/nettests.go b/nettests/nettests.go index 4826598..07cd90e 100644 --- a/nettests/nettests.go +++ b/nettests/nettests.go @@ -192,12 +192,14 @@ func (c *Controller) OnProgress(perc float64, msg string) { log.Debugf("OnProgress: %f - %s", perc, msg) var eta float64 eta = -1.0 - if c.numInputs >= 1 { + if c.numInputs > 1 { // make the percentage relative to the current input over all inputs floor := (float64(c.curInputIdx) / float64(c.numInputs)) step := 1.0 / float64(c.numInputs) perc = floor + perc*step - eta = (float64(time.Now().Sub(c.ntStartTime).Seconds()) / float64(c.curInputIdx)) * float64(c.numInputs-c.curInputIdx) + if c.curInputIdx > 0 { + eta = (time.Now().Sub(c.ntStartTime).Seconds() / float64(c.curInputIdx)) * float64(c.numInputs-c.curInputIdx) + } } if c.ntCount > 0 { // make the percentage relative to the current nettest over all nettests