gitpod/dev/loadgen/pkg/observer/progress.go
2022-12-08 13:05:19 -03:00

33 lines
903 B
Go

// Copyright (c) 2020 Gitpod GmbH. All rights reserved.
// Licensed under the GNU Affero General Public License (AGPL).
// See License.AGPL.txt in the project root for license information.
package observer
import (
"github.com/cheggaaa/pb/v3"
"github.com/gitpod-io/gitpod/loadgen/pkg/loadgen"
)
// NewProgressBarObserver produces a new progress bar
func NewProgressBarObserver(total int) chan<- *loadgen.SessionEvent {
res := make(chan *loadgen.SessionEvent)
// bar := pb.Full.New(total)
tmpl := `{{ green "spinning up:" }} {{ bar . "[" "█" (cycle . "↖" "↗" "↘" "↙" ) " " "]"}} {{speed . }} {{counters . "%s/%s"}}`
// start bar based on our template
bar := pb.ProgressBarTemplate(tmpl).New(total)
go func() {
defer bar.Finish()
for evt := range res {
if evt.Kind != loadgen.SessionWorkspaceStart {
continue
}
bar.Increment()
bar.Write()
}
}()
return res
}