diff --git a/hrp/runner.go b/hrp/runner.go index a51b947b..f80f20fa 100644 --- a/hrp/runner.go +++ b/hrp/runner.go @@ -424,12 +424,13 @@ func (r *CaseRunner) NewSession() *SessionRunner { type SessionRunner struct { caseRunner *CaseRunner // all session runners share one CaseRunner - sessionVariables map[string]interface{} + sessionVariables map[string]interface{} // testcase execution session variables + summary *TestCaseSummary // record test case summary + // transactions stores transaction timing info. // key is transaction name, value is map of transaction type and time, e.g. start time and end time. - transactions map[string]map[transactionType]time.Time - startTime time.Time // record start time of the testcase - summary *TestCaseSummary // record test case summary + transactions map[string]map[transactionType]time.Time + wsConnMap map[string]*websocket.Conn // save all websocket connections inheritWsConnMap map[string]*websocket.Conn // inherit all websocket connections pongResponseChan chan string // channel used to receive pong response message @@ -439,9 +440,9 @@ type SessionRunner struct { func (r *SessionRunner) resetSession() { log.Info().Msg("reset session runner") r.sessionVariables = make(map[string]interface{}) - r.transactions = make(map[string]map[transactionType]time.Time) - r.startTime = time.Now() r.summary = newSummary() + + r.transactions = make(map[string]map[transactionType]time.Time) r.wsConnMap = make(map[string]*websocket.Conn) r.inheritWsConnMap = make(map[string]*websocket.Conn) r.pongResponseChan = make(chan string, 1) @@ -616,8 +617,7 @@ func (r *SessionRunner) InitWithParameters(parameters map[string]interface{}) { func (r *SessionRunner) GetSummary() (*TestCaseSummary, error) { caseSummary := r.summary caseSummary.Name = r.caseRunner.Config.Name - caseSummary.Time.StartAt = r.startTime - caseSummary.Time.Duration = time.Since(r.startTime).Seconds() + caseSummary.Time.Duration = time.Since(caseSummary.Time.StartAt).Seconds() exportVars := make(map[string]interface{}) for _, value := range r.caseRunner.Config.Export { exportVars[value] = r.sessionVariables[value] diff --git a/hrp/step_transaction.go b/hrp/step_transaction.go index 184be64f..ac6cf1d8 100644 --- a/hrp/step_transaction.go +++ b/hrp/step_transaction.go @@ -69,7 +69,7 @@ func (s *StepTransaction) Run(r *SessionRunner) (*StepResult, error) { // if transaction start time not exists, use testcase start time instead if _, ok := r.transactions[transaction.Name][transactionStart]; !ok { - r.transactions[transaction.Name][transactionStart] = r.startTime + r.transactions[transaction.Name][transactionStart] = r.summary.Time.StartAt } // calculate transaction duration diff --git a/hrp/summary.go b/hrp/summary.go index ebe1c588..a536de7d 100644 --- a/hrp/summary.go +++ b/hrp/summary.go @@ -196,7 +196,9 @@ func newSummary() *TestCaseSummary { return &TestCaseSummary{ Success: true, Stat: &TestStepStat{}, - Time: &TestCaseTime{}, + Time: &TestCaseTime{ + StartAt: time.Now(), + }, InOut: &TestCaseInOut{}, Records: []*StepResult{}, }