Skip to content

Commit 29d8ef1

Browse files
Merge branch 'master' into feat/excludeExecutionForDisabledPipelines
2 parents f6b526e + b2399f8 commit 29d8ef1

File tree

2 files changed

+42
-19
lines changed

2 files changed

+42
-19
lines changed

orca-echo/src/main/groovy/com/netflix/spinnaker/orca/echo/spring/EchoNotifyingStageListener.groovy

+5-2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ import static com.netflix.spinnaker.orca.api.pipeline.models.ExecutionType.ORCHE
4141
@Slf4j
4242
class EchoNotifyingStageListener implements StageListener {
4343
public static final String INCLUDE_FULL_EXECUTION_PROPERTY = "echo.events.includeFullExecution"
44+
public static final String IGNORE_TASK_EVENTS_PROPERTY = "echo.events.ignoreTaskEvents"
4445
private final EchoService echoService
4546
private final ContextParameterProcessor contextParameterProcessor
4647
private final DynamicConfigService dynamicConfigService
@@ -56,7 +57,9 @@ class EchoNotifyingStageListener implements StageListener {
5657

5758
@Override
5859
void beforeTask(StageExecution stage, TaskExecution task) {
59-
recordEvent('task', 'starting', stage, task)
60+
if (!dynamicConfigService.getConfig(Boolean, IGNORE_TASK_EVENTS_PROPERTY, false)) {
61+
recordEvent('task', 'starting', stage, task)
62+
}
6063
}
6164

6265
@Override
@@ -69,7 +72,7 @@ class EchoNotifyingStageListener implements StageListener {
6972
void afterTask(StageExecution stage,
7073
TaskExecution task) {
7174
ExecutionStatus status = task.getStatus()
72-
if (status == RUNNING) {
75+
if (dynamicConfigService.getConfig(Boolean, IGNORE_TASK_EVENTS_PROPERTY, false) || status == RUNNING) {
7376
return
7477
}
7578

orca-echo/src/test/groovy/com/netflix/spinnaker/orca/echo/spring/EchoNotifyingStageListenerSpec.groovy

+37-17
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,18 @@ package com.netflix.spinnaker.orca.echo.spring
22

33
import com.netflix.spinnaker.kork.dynamicconfig.DynamicConfigService
44
import com.netflix.spinnaker.orca.echo.EchoService
5-
import com.netflix.spinnaker.orca.listeners.Persister
65
import com.netflix.spinnaker.orca.pipeline.model.PipelineExecutionImpl
76
import com.netflix.spinnaker.orca.pipeline.model.StageExecutionImpl
87
import com.netflix.spinnaker.orca.pipeline.model.TaskExecutionImpl
9-
import com.netflix.spinnaker.orca.pipeline.persistence.ExecutionRepository
108
import com.netflix.spinnaker.orca.pipeline.util.ContextParameterProcessor
119
import spock.lang.Shared
1210
import spock.lang.Specification
1311
import spock.lang.Subject
1412
import spock.lang.Unroll
1513
import static com.netflix.spinnaker.orca.api.pipeline.models.ExecutionStatus.*
1614
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+
1717

1818
class EchoNotifyingStageListenerSpec extends Specification {
1919

@@ -30,6 +30,7 @@ class EchoNotifyingStageListenerSpec extends Specification {
3030
@Shared
3131
def orchestrationStage = new StageExecutionImpl(PipelineExecutionImpl.newOrchestration("orca"), "test")
3232

33+
@Unroll
3334
def "triggers an event when a task step starts"() {
3435
given:
3536
def task = new TaskExecutionImpl(status: NOT_STARTED)
@@ -38,7 +39,12 @@ class EchoNotifyingStageListenerSpec extends Specification {
3839
echoListener.beforeTask(pipelineStage, task)
3940

4041
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]
4248
}
4349

4450
def "triggers an event when a stage starts"() {
@@ -49,20 +55,25 @@ class EchoNotifyingStageListenerSpec extends Specification {
4955
1 * echoService.recordEvent({ event -> event.details.type == "orca:stage:starting" })
5056
}
5157

58+
@Unroll
5259
def "triggers an event when a task starts"() {
5360
given:
5461
def task = new TaskExecutionImpl(stageStart: false)
5562

56-
and:
57-
def events = []
58-
echoService.recordEvent(_) >> { events << it[0]; null }
59-
6063
when:
6164
echoListener.beforeTask(pipelineStage, task)
6265

6366
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]
6677
}
6778

6879
@Unroll
@@ -75,17 +86,25 @@ class EchoNotifyingStageListenerSpec extends Specification {
7586
echoListener.afterTask(stage, task)
7687

7788
then:
89+
1 * dynamicConfigService.getConfig(Boolean, IGNORE_TASK_EVENTS_PROPERTY, false) >> ignoreTaskEvents
7890
invocations * echoService.recordEvent(_)
7991

8092
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
89108

90109
taskName = "xxx"
91110
}
@@ -121,6 +140,7 @@ class EchoNotifyingStageListenerSpec extends Specification {
121140
echoListener.afterTask(stage, task)
122141

123142
then:
143+
1 * dynamicConfigService.getConfig(Boolean, IGNORE_TASK_EVENTS_PROPERTY, false) >> false
124144
1 * dynamicConfigService.getConfig(Boolean, INCLUDE_FULL_EXECUTION_PROPERTY, _) >> fullExecutionToggle
125145
message.details.source == "orca"
126146
message.details.application == pipelineStage.execution.application

0 commit comments

Comments
 (0)