feat: hrp boom support set run time

This commit is contained in:
machongwei
2022-08-10 21:39:15 +08:00
parent 88c25d26c4
commit 61c34bfd16
4 changed files with 53 additions and 0 deletions
+34
View File
@@ -195,6 +195,7 @@ type runner struct {
spawnCount int64 // target clients to spawn
spawnRate float64
runTime int64
controller *Controller
loop *Loop // specify loop count for testcase, count = loopCount * spawnCount
@@ -238,6 +239,20 @@ func (r *runner) getSpawnRate() float64 {
return r.spawnRate
}
func (r *runner) setRunTime(runTime int64) {
r.mutex.Lock()
defer r.mutex.Unlock()
if runTime > 0 {
r.runTime = time.Now().Unix() + runTime
}
}
func (r *runner) getRunTime() int64 {
r.mutex.RLock()
defer r.mutex.RUnlock()
return r.runTime
}
func (r *runner) getSpawnCount() int64 {
return atomic.LoadInt64(&r.spawnCount)
}
@@ -364,6 +379,15 @@ func (r *runner) reset() {
r.reportedChan = make(chan bool)
}
func (r *runner) runTimeCheck(runTime int64) {
for range time.Tick(time.Second * 3) {
nowTime := time.Now().Unix()
if nowTime > runTime {
r.stop()
}
}
}
func (r *runner) spawnWorkers(spawnCount int64, spawnRate float64, quit chan bool, spawnCompleteFunc func()) {
r.updateState(StateSpawning)
log.Info().
@@ -622,6 +646,11 @@ func (r *localRunner) start() {
// output setup
r.outputOnStart()
runTime := r.getRunTime()
if runTime != 0 {
go r.runTimeCheck(runTime)
}
go r.spawnWorkers(r.getSpawnCount(), r.getSpawnRate(), r.stoppingChan, nil)
defer func() {
@@ -912,6 +941,11 @@ func (r *workerRunner) start() {
r.outputOnStart()
runTime := r.getRunTime()
if runTime != 0 {
go r.runTimeCheck(runTime)
}
go r.spawnWorkers(r.getSpawnCount(), r.getSpawnRate(), r.stoppingChan, r.spawnComplete)
defer func() {