From 1958883a245d071ab5200cd7de45d3ac6cc2da56 Mon Sep 17 00:00:00 2001 From: debugtalk Date: Mon, 20 Dec 2021 18:38:36 +0800 Subject: [PATCH] feat: report testcase as a whole Action transaction, inspired by LoadRunner --- boomer.go | 11 +++++++---- runner.go | 8 +++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/boomer.go b/boomer.go index 549725d9..7694f628 100644 --- a/boomer.go +++ b/boomer.go @@ -62,6 +62,7 @@ func (b *hrpBoomer) convertBoomerTask(testcase *TestCase) *boomer.Task { Weight: config.Weight, Fn: func() { runner := NewRunner(nil).SetDebug(b.debug).Reset() + startTime := time.Now() for _, step := range testcase.TestSteps { stepData, err := runner.runStep(step, testcase.Config) @@ -72,9 +73,8 @@ func (b *hrpBoomer) convertBoomerTask(testcase *TestCase) *boomer.Task { // record transaction if stepData.stepType == stepTypeTransaction { - // TODO: implement recording transaction in boomer - if stepData.elapsed != 0 { - b.RecordSuccess(string(stepTypeTransaction), stepData.name, stepData.elapsed, 0) + if stepData.elapsed != 0 { // only record when transaction ends + b.RecordTransaction(stepData.name, stepData.elapsed, 0) } continue } @@ -96,9 +96,12 @@ func (b *hrpBoomer) convertBoomerTask(testcase *TestCase) *boomer.Task { if len(transaction) == 1 { // if transaction end time not exists, use testcase end time instead duration := endTime.Sub(transaction[TransactionStart]) - b.RecordSuccess(string(stepTypeTransaction), name, duration.Milliseconds(), 0) + b.RecordTransaction(name, duration.Milliseconds(), 0) } } + + // report testcase as a whole Action transaction, inspired by LoadRunner + b.RecordTransaction("Action", endTime.Sub(startTime).Milliseconds(), 0) }, } } diff --git a/runner.go b/runner.go index 04fcb912..b02c59dc 100644 --- a/runner.go +++ b/runner.go @@ -206,9 +206,11 @@ func (r *hrpRunner) runStepTransaction(transaction *Transaction) (stepResult *st Msg("transaction") stepResult = &stepData{ - name: transaction.Name, - stepType: stepTypeTransaction, - success: true, + name: transaction.Name, + stepType: stepTypeTransaction, + success: true, + elapsed: 0, + responseLength: 0, // TODO: record transaction total response length } // create transaction if not exists