-
Notifications
You must be signed in to change notification settings - Fork 338
/
conceptResult.go
104 lines (88 loc) · 4.45 KB
/
conceptResult.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*----------------------------------------------------------------
* Copyright (c) ThoughtWorks, Inc.
* Licensed under the Apache License, Version 2.0
* See LICENSE in the project root for license information.
*----------------------------------------------------------------*/
package result
import "github.com/getgauge/gauge-proto/go/gauge_messages"
// ConceptResult represents result of a concept execution
type ConceptResult struct {
ProtoConcept *gauge_messages.ProtoConcept
}
// NewConceptResult creates a ConceptResult with given ProtoConcept
func NewConceptResult(con *gauge_messages.ProtoConcept) *ConceptResult {
return &ConceptResult{ProtoConcept: con}
}
// SetFailure sets the conceptResult as failed
func (conceptResult *ConceptResult) SetFailure() {
conceptResult.ProtoConcept.ConceptExecutionResult.ExecutionResult.Failed = true
}
// GetFailed returns the state of the concept result
func (conceptResult *ConceptResult) GetFailed() bool {
return conceptResult.ProtoConcept.GetConceptExecutionResult().GetExecutionResult().GetFailed()
}
// GetRecoverable returns the state of the concept result
func (conceptResult *ConceptResult) GetRecoverable() bool {
return conceptResult.ProtoConcept.GetConceptExecutionResult().GetExecutionResult().GetRecoverableError()
}
// ExecTime returns the time taken for concept execution
func (conceptResult *ConceptResult) ExecTime() int64 {
return conceptResult.ProtoConcept.GetConceptExecutionResult().GetExecutionResult().GetExecutionTime()
}
// SetConceptExecResult sets the conceptExecResult as result of concept execution as well as result of ConceptStep
func (conceptResult *ConceptResult) SetConceptExecResult(conceptExecResult *gauge_messages.ProtoStepExecutionResult) {
conceptResult.ProtoConcept.ConceptExecutionResult = conceptExecResult
conceptResult.ProtoConcept.ConceptStep.StepExecutionResult = conceptExecResult
}
// UpdateConceptExecResult sets the result of Concept execution
func (conceptResult *ConceptResult) UpdateConceptExecResult() {
var failed, recoverable bool
protoConcept := conceptResult.ProtoConcept
var conceptExecutionTime int64
for _, step := range protoConcept.GetSteps() {
if step.GetItemType() == gauge_messages.ProtoItem_Concept {
stepExecResult := step.GetConcept().GetConceptExecutionResult().GetExecutionResult()
conceptExecutionTime += stepExecResult.GetExecutionTime()
if step.GetConcept().GetConceptExecutionResult().GetExecutionResult().GetFailed() {
failed = true
conceptExecutionResult := &gauge_messages.ProtoStepExecutionResult{ExecutionResult: step.GetConcept().GetConceptExecutionResult().GetExecutionResult(), Skipped: false}
conceptExecutionResult.ExecutionResult.ExecutionTime = conceptExecutionTime
protoConcept.ConceptExecutionResult = conceptExecutionResult
protoConcept.ConceptStep.StepExecutionResult = conceptExecutionResult
recoverable = step.GetConcept().GetConceptExecutionResult().GetExecutionResult().GetRecoverableError()
if !recoverable {
return
}
}
} else if step.GetItemType() == gauge_messages.ProtoItem_Step {
stepExecResult := step.GetStep().GetStepExecutionResult().GetExecutionResult()
conceptExecutionTime += stepExecResult.GetExecutionTime()
if stepExecResult.GetFailed() {
failed = true
conceptExecutionResult := &gauge_messages.ProtoStepExecutionResult{ExecutionResult: stepExecResult, Skipped: false}
conceptExecutionResult.ExecutionResult.ExecutionTime = conceptExecutionTime
protoConcept.ConceptExecutionResult = conceptExecutionResult
protoConcept.ConceptStep.StepExecutionResult = conceptExecutionResult
recoverable = step.GetStep().GetStepExecutionResult().GetExecutionResult().GetRecoverableError()
if !recoverable {
return
}
}
}
}
conceptResult.SetConceptExecResult(&gauge_messages.ProtoStepExecutionResult{ExecutionResult: &gauge_messages.ProtoExecutionResult{RecoverableError: recoverable, Failed: failed, ExecutionTime: conceptExecutionTime}})
protoConcept.ConceptStep.StepExecutionResult.Skipped = false
}
func (conceptResult *ConceptResult) GetPreHook() []*gauge_messages.ProtoHookFailure {
return nil
}
func (conceptResult *ConceptResult) GetPostHook() []*gauge_messages.ProtoHookFailure {
return nil
}
func (conceptResult *ConceptResult) AddPreHook(_ ...*gauge_messages.ProtoHookFailure) {
}
func (conceptResult *ConceptResult) AddPostHook(_ ...*gauge_messages.ProtoHookFailure) {
}
func (conceptResult *ConceptResult) Item() interface{} {
return conceptResult.ProtoConcept
}