Files
httprunner/boomer.go
2021-09-30 13:19:54 +08:00

58 lines
1.1 KiB
Go

package httpboomer
import (
"time"
"github.com/myzhan/boomer"
)
func Run(testcases ...*TestCase) {
NewBoomer().Run(testcases...)
}
func NewBoomer() *Boomer {
return &Boomer{
debug: false,
}
}
type Boomer struct {
debug bool
}
func (b *Boomer) SetDebug(debug bool) *Boomer {
b.debug = debug
return b
}
func (b *Boomer) Run(testcases ...*TestCase) {
var taskSlice []*boomer.Task
for _, testcase := range testcases {
task := b.convertBoomerTask(testcase)
taskSlice = append(taskSlice, task)
}
boomer.Run(taskSlice...)
}
func (b *Boomer) convertBoomerTask(testcase *TestCase) *boomer.Task {
runner := NewRunner().SetDebug(b.debug)
return &boomer.Task{
Name: testcase.Config.Name,
Weight: testcase.Config.Weight,
Fn: func() {
config := &testcase.Config
for _, step := range testcase.TestSteps {
start := time.Now()
_, err := runner.runStep(step, config)
elapsed := time.Since(start).Nanoseconds() / int64(time.Millisecond)
if err == nil {
boomer.RecordSuccess(step.Type(), step.Name(), elapsed, int64(0))
} else {
boomer.RecordFailure(step.Type(), step.Name(), elapsed, err.Error())
}
}
},
}
}