@@ -2,18 +2,18 @@ package com.netflix.spinnaker.orca.echo.spring
2
2
3
3
import com.netflix.spinnaker.kork.dynamicconfig.DynamicConfigService
4
4
import com.netflix.spinnaker.orca.echo.EchoService
5
- import com.netflix.spinnaker.orca.listeners.Persister
6
5
import com.netflix.spinnaker.orca.pipeline.model.PipelineExecutionImpl
7
6
import com.netflix.spinnaker.orca.pipeline.model.StageExecutionImpl
8
7
import com.netflix.spinnaker.orca.pipeline.model.TaskExecutionImpl
9
- import com.netflix.spinnaker.orca.pipeline.persistence.ExecutionRepository
10
8
import com.netflix.spinnaker.orca.pipeline.util.ContextParameterProcessor
11
9
import spock.lang.Shared
12
10
import spock.lang.Specification
13
11
import spock.lang.Subject
14
12
import spock.lang.Unroll
15
13
import static com.netflix.spinnaker.orca.api.pipeline.models.ExecutionStatus.*
16
14
import static com.netflix.spinnaker.orca.echo.spring.EchoNotifyingStageListener.INCLUDE_FULL_EXECUTION_PROPERTY
15
+ import static com.netflix.spinnaker.orca.echo.spring.EchoNotifyingStageListener.IGNORE_TASK_EVENTS_PROPERTY
16
+
17
17
18
18
class EchoNotifyingStageListenerSpec extends Specification {
19
19
@@ -30,6 +30,7 @@ class EchoNotifyingStageListenerSpec extends Specification {
30
30
@Shared
31
31
def orchestrationStage = new StageExecutionImpl (PipelineExecutionImpl . newOrchestration(" orca" ), " test" )
32
32
33
+ @Unroll
33
34
def " triggers an event when a task step starts" () {
34
35
given :
35
36
def task = new TaskExecutionImpl (status : NOT_STARTED )
@@ -38,7 +39,12 @@ class EchoNotifyingStageListenerSpec extends Specification {
38
39
echoListener. beforeTask(pipelineStage, task)
39
40
40
41
then :
41
- 1 * echoService. recordEvent({ event -> event. details. type == " orca:task:starting" })
42
+ 1 * dynamicConfigService. getConfig(Boolean , IGNORE_TASK_EVENTS_PROPERTY , false ) >> ignoreTaskEvents
43
+ if (! ignoreTaskEvents) 1 * echoService. recordEvent({ event -> event. details. type == " orca:task:starting" })
44
+ else 0 * echoService. recordEvent(_)
45
+
46
+ where :
47
+ ignoreTaskEvents << [true , false ]
42
48
}
43
49
44
50
def " triggers an event when a stage starts" () {
@@ -49,20 +55,25 @@ class EchoNotifyingStageListenerSpec extends Specification {
49
55
1 * echoService. recordEvent({ event -> event. details. type == " orca:stage:starting" })
50
56
}
51
57
58
+ @Unroll
52
59
def " triggers an event when a task starts" () {
53
60
given :
54
61
def task = new TaskExecutionImpl (stageStart : false )
55
62
56
- and :
57
- def events = []
58
- echoService. recordEvent(_) >> { events << it[0 ]; null }
59
-
60
63
when :
61
64
echoListener. beforeTask(pipelineStage, task)
62
65
63
66
then :
64
- events. size() == 1
65
- events. details. type == [" orca:task:starting" ]
67
+ 1 * dynamicConfigService. getConfig(Boolean , IGNORE_TASK_EVENTS_PROPERTY , false ) >> ignoreTaskEvents
68
+ if (! ignoreTaskEvents) {
69
+ def events = []
70
+ 1 * echoService. recordEvent(_) >> { events << it[0 ]; null }
71
+ events. size() == 1
72
+ events. details. type == [" orca:task:starting" ]
73
+ } else 0 * echoService. recordEvent(_)
74
+
75
+ where :
76
+ ignoreTaskEvents << [true , false ]
66
77
}
67
78
68
79
@Unroll
@@ -75,17 +86,25 @@ class EchoNotifyingStageListenerSpec extends Specification {
75
86
echoListener. afterTask(stage, task)
76
87
77
88
then :
89
+ 1 * dynamicConfigService. getConfig(Boolean , IGNORE_TASK_EVENTS_PROPERTY , false ) >> ignoreTaskEvents
78
90
invocations * echoService. recordEvent(_)
79
91
80
92
where :
81
- invocations | stage | executionStatus | isEnd
82
- 0 | orchestrationStage | RUNNING | false
83
- 1 | orchestrationStage | STOPPED | false
84
- 1 | orchestrationStage | SUCCEEDED | false
85
- 1 | pipelineStage | SUCCEEDED | false
86
- 1 | pipelineStage | SUCCEEDED | true
87
- 1 | pipelineStage | TERMINAL | false
88
- 1 | orchestrationStage | SUCCEEDED | true
93
+ invocations | stage | executionStatus | isEnd | ignoreTaskEvents
94
+ 0 | orchestrationStage | RUNNING | false | false
95
+ 1 | orchestrationStage | STOPPED | false | false
96
+ 1 | orchestrationStage | SUCCEEDED | false | false
97
+ 1 | pipelineStage | SUCCEEDED | false | false
98
+ 1 | pipelineStage | SUCCEEDED | true | false
99
+ 1 | pipelineStage | TERMINAL | false | false
100
+ 1 | orchestrationStage | SUCCEEDED | true | false
101
+ 0 | orchestrationStage | RUNNING | false | true
102
+ 0 | orchestrationStage | STOPPED | false | true
103
+ 0 | orchestrationStage | SUCCEEDED | false | true
104
+ 0 | pipelineStage | SUCCEEDED | false | true
105
+ 0 | pipelineStage | SUCCEEDED | true | true
106
+ 0 | pipelineStage | TERMINAL | false | true
107
+ 0 | orchestrationStage | SUCCEEDED | true | true
89
108
90
109
taskName = " xxx"
91
110
}
@@ -121,6 +140,7 @@ class EchoNotifyingStageListenerSpec extends Specification {
121
140
echoListener. afterTask(stage, task)
122
141
123
142
then :
143
+ 1 * dynamicConfigService. getConfig(Boolean , IGNORE_TASK_EVENTS_PROPERTY , false ) >> false
124
144
1 * dynamicConfigService. getConfig(Boolean , INCLUDE_FULL_EXECUTION_PROPERTY , _) >> fullExecutionToggle
125
145
message. details. source == " orca"
126
146
message. details. application == pipelineStage. execution. application
0 commit comments