mirror of
https://github.com/httprunner/httprunner.git
synced 2026-05-12 02:21:29 +08:00
70 lines
1.5 KiB
Go
70 lines
1.5 KiB
Go
package hrp
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/debugtalk/boomer"
|
|
)
|
|
|
|
var (
|
|
defaultMasterHost = "127.0.0.1"
|
|
defaultMasterPort = 5557
|
|
)
|
|
|
|
// run load test with default configs
|
|
func Boom(testcases ...ITestCase) {
|
|
NewBoomer(defaultMasterHost, defaultMasterPort).Run(testcases...)
|
|
}
|
|
|
|
func NewBoomer(masterHost string, masterPort int) *Boomer {
|
|
return &Boomer{
|
|
Boomer: boomer.NewBoomer(masterHost, masterPort),
|
|
debug: false,
|
|
}
|
|
}
|
|
|
|
type Boomer struct {
|
|
*boomer.Boomer
|
|
debug bool
|
|
}
|
|
|
|
func (b *Boomer) SetDebug(debug bool) *Boomer {
|
|
b.debug = debug
|
|
return b
|
|
}
|
|
|
|
func (b *Boomer) Run(testcases ...ITestCase) {
|
|
var taskSlice []*boomer.Task
|
|
for _, iTestCase := range testcases {
|
|
testcase, err := iTestCase.ToTestCase()
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
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()
|
|
stepData, err := runner.runStep(step, config)
|
|
elapsed := time.Since(start).Nanoseconds() / int64(time.Millisecond)
|
|
|
|
if err == nil {
|
|
boomer.RecordSuccess(step.Type(), step.Name(), elapsed, stepData.ResponseLength)
|
|
} else {
|
|
boomer.RecordFailure(step.Type(), step.Name(), elapsed, err.Error())
|
|
}
|
|
}
|
|
},
|
|
}
|
|
}
|