@@ -18,11 +18,14 @@ package session
18
18
import (
19
19
"testing"
20
20
21
+ "github.com/aws/amazon-ecs-agent/agent/api/container"
21
22
"github.com/aws/amazon-ecs-agent/agent/api/task"
23
+ "github.com/aws/amazon-ecs-agent/agent/data"
22
24
mock_engine "github.com/aws/amazon-ecs-agent/agent/engine/mocks"
23
25
"github.com/aws/amazon-ecs-agent/ecs-agent/acs/model/ecsacs"
24
26
acssession "github.com/aws/amazon-ecs-agent/ecs-agent/acs/session"
25
27
"github.com/aws/amazon-ecs-agent/ecs-agent/acs/session/testconst"
28
+ apicontainerstatus "github.com/aws/amazon-ecs-agent/ecs-agent/api/container/status"
26
29
apitaskstatus "github.com/aws/amazon-ecs-agent/ecs-agent/api/task/status"
27
30
"github.com/aws/amazon-ecs-agent/ecs-agent/metrics"
28
31
"github.com/aws/amazon-ecs-agent/ecs-agent/wsclient"
@@ -44,7 +47,7 @@ func setupTaskStopVerificationAckTest(t *testing.T) *taskStopVerificationAckTest
44
47
manifestMessageIDAccessor := NewManifestMessageIDAccessor ()
45
48
manifestMessageIDAccessor .SetMessageID (testconst .MessageID )
46
49
taskStopVerificationAckResponder := acssession .NewTaskStopVerificationACKResponder (
47
- NewTaskStopper (taskEngine ),
50
+ NewTaskStopper (taskEngine , data . NewNoopClient () ),
48
51
manifestMessageIDAccessor ,
49
52
metrics .NewNopEntryFactory ())
50
53
@@ -58,9 +61,27 @@ func setupTaskStopVerificationAckTest(t *testing.T) *taskStopVerificationAckTest
58
61
// defaultTasksOnInstance returns a baseline map of tasks that simulates/tracks the tasks on an instance.
59
62
func defaultTasksOnInstance () map [string ]* task.Task {
60
63
return map [string ]* task.Task {
61
- taskARN1 : {Arn : taskARN1 , DesiredStatusUnsafe : apitaskstatus .TaskRunning },
62
- taskARN2 : {Arn : taskARN2 , DesiredStatusUnsafe : apitaskstatus .TaskRunning },
63
- taskARN3 : {Arn : taskARN3 , DesiredStatusUnsafe : apitaskstatus .TaskRunning },
64
+ taskARN1 : {Arn : taskARN1 , DesiredStatusUnsafe : apitaskstatus .TaskRunning ,
65
+ Containers : []* container.Container {
66
+ {
67
+ Name : containerName1 ,
68
+ DesiredStatusUnsafe : apicontainerstatus .ContainerRunning ,
69
+ },
70
+ }},
71
+ taskARN2 : {Arn : taskARN2 , DesiredStatusUnsafe : apitaskstatus .TaskRunning ,
72
+ Containers : []* container.Container {
73
+ {
74
+ Name : containerName2 ,
75
+ DesiredStatusUnsafe : apicontainerstatus .ContainerRunning ,
76
+ },
77
+ }},
78
+ taskARN3 : {Arn : taskARN3 , DesiredStatusUnsafe : apitaskstatus .TaskRunning ,
79
+ Containers : []* container.Container {
80
+ {
81
+ Name : containerName3 ,
82
+ DesiredStatusUnsafe : apicontainerstatus .ContainerRunning ,
83
+ },
84
+ }},
64
85
}
65
86
}
66
87
@@ -99,21 +120,24 @@ func TestTaskStopVerificationAckResponderStopsMultipleTasks(t *testing.T) {
99
120
100
121
tester .taskEngine .EXPECT ().GetTaskByArn (taskARN2 ).Return (tasksOnInstance [taskARN2 ], true )
101
122
tester .taskEngine .EXPECT ().GetTaskByArn (taskARN3 ).Return (tasksOnInstance [taskARN3 ], true )
102
- tester .taskEngine .EXPECT ().AddTask (tasksOnInstance [taskARN2 ]).Do (func (task * task.Task ) {
103
- task .SetDesiredStatus (apitaskstatus .TaskStopped )
104
- })
105
- tester .taskEngine .EXPECT ().AddTask (tasksOnInstance [taskARN3 ]).Do (func (task * task.Task ) {
106
- task .SetDesiredStatus (apitaskstatus .TaskStopped )
107
- })
108
123
109
124
handleTaskStopVerificationAck :=
110
125
tester .taskStopVerificationAckResponder .HandlerFunc ().(func (message * ecsacs.TaskStopVerificationAck ))
111
126
handleTaskStopVerificationAck (taskStopVerificationAck )
112
127
113
- // Only task2 and task3 should be stopped.
128
+ // Only task2 and task3 and their containers should be stopped.
114
129
assert .Equal (t , apitaskstatus .TaskRunning , tasksOnInstance [taskARN1 ].GetDesiredStatus ())
130
+ container1 , ok := tasksOnInstance [taskARN1 ].ContainerByName (containerName1 )
131
+ assert .True (t , ok )
132
+ assert .Equal (t , apicontainerstatus .ContainerRunning , container1 .GetDesiredStatus ())
115
133
assert .Equal (t , apitaskstatus .TaskStopped , tasksOnInstance [taskARN2 ].GetDesiredStatus ())
134
+ container2 , ok := tasksOnInstance [taskARN2 ].ContainerByName (containerName2 )
135
+ assert .True (t , ok )
136
+ assert .Equal (t , apicontainerstatus .ContainerStopped , container2 .GetDesiredStatus ())
116
137
assert .Equal (t , apitaskstatus .TaskStopped , tasksOnInstance [taskARN3 ].GetDesiredStatus ())
138
+ container3 , ok := tasksOnInstance [taskARN3 ].ContainerByName (containerName3 )
139
+ assert .True (t , ok )
140
+ assert .Equal (t , apicontainerstatus .ContainerStopped , container3 .GetDesiredStatus ())
117
141
118
142
}
119
143
@@ -149,22 +173,15 @@ func TestTaskStopVerificationAckResponderStopsAllTasks(t *testing.T) {
149
173
tester .taskEngine .EXPECT ().GetTaskByArn (taskARN1 ).Return (tasksOnInstance [taskARN1 ], true )
150
174
tester .taskEngine .EXPECT ().GetTaskByArn (taskARN2 ).Return (tasksOnInstance [taskARN2 ], true )
151
175
tester .taskEngine .EXPECT ().GetTaskByArn (taskARN3 ).Return (tasksOnInstance [taskARN3 ], true )
152
- tester .taskEngine .EXPECT ().AddTask (tasksOnInstance [taskARN1 ]).Do (func (task * task.Task ) {
153
- task .SetDesiredStatus (apitaskstatus .TaskStopped )
154
- })
155
- tester .taskEngine .EXPECT ().AddTask (tasksOnInstance [taskARN2 ]).Do (func (task * task.Task ) {
156
- task .SetDesiredStatus (apitaskstatus .TaskStopped )
157
- })
158
- tester .taskEngine .EXPECT ().AddTask (tasksOnInstance [taskARN3 ]).Do (func (task * task.Task ) {
159
- task .SetDesiredStatus (apitaskstatus .TaskStopped )
160
- })
161
176
162
177
handleTaskStopVerificationAck :=
163
178
tester .taskStopVerificationAckResponder .HandlerFunc ().(func (message * ecsacs.TaskStopVerificationAck ))
164
179
handleTaskStopVerificationAck (taskStopVerificationAck )
165
180
166
- // All tasks on instance should be stopped.
181
+ // All tasks and containers on instance should be stopped.
167
182
for _ , task := range tasksOnInstance {
168
183
assert .Equal (t , apitaskstatus .TaskStopped , task .GetDesiredStatus ())
184
+ assert .Equal (t , 1 , len (task .Containers ))
185
+ assert .Equal (t , apicontainerstatus .ContainerStopped , task .Containers [0 ].GetDesiredStatus ())
169
186
}
170
187
}
0 commit comments