@@ -27,7 +27,9 @@ import (
27
27
"github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1"
28
28
pipelinetest "github.com/tektoncd/pipeline/test/v1alpha1"
29
29
corev1 "k8s.io/api/core/v1"
30
+ v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
30
31
"knative.dev/pkg/apis"
32
+ duckv1beta1 "knative.dev/pkg/apis/duck/v1beta1"
31
33
)
32
34
33
35
const (
@@ -135,3 +137,188 @@ func TestTaskrunLatest_no_run(t *testing.T) {
135
137
expected := "no TaskRuns related to Task task found in namespace ns"
136
138
test .AssertOutput (t , expected , err .Error ())
137
139
}
140
+
141
+ func TestTaskrunLatestForClusterTask_two_run (t * testing.T ) {
142
+ clock := clockwork .NewFakeClock ()
143
+
144
+ var (
145
+ taskCreated = clock .Now ().Add (5 * time .Minute )
146
+
147
+ firstRunCreated = clock .Now ().Add (10 * time .Minute )
148
+ firstRunStarted = firstRunCreated .Add (2 * time .Second )
149
+ firstRunCompleted = firstRunStarted .Add (10 * time .Minute )
150
+
151
+ secondRunCreated = firstRunCreated .Add (1 * time .Minute )
152
+ secondRunStarted = secondRunCreated .Add (2 * time .Second )
153
+ secondRunCompleted = secondRunStarted .Add (5 * time .Minute )
154
+ )
155
+ clustertasks := []* v1alpha1.ClusterTask {
156
+ {
157
+ ObjectMeta : v1.ObjectMeta {
158
+ Name : "task" ,
159
+ CreationTimestamp : v1.Time {Time : taskCreated },
160
+ },
161
+ },
162
+ }
163
+ taskruns := []* v1alpha1.TaskRun {
164
+ {
165
+ ObjectMeta : v1.ObjectMeta {
166
+ Name : "tr-1" ,
167
+ Namespace : "ns" ,
168
+ CreationTimestamp : v1.Time {Time : firstRunCreated },
169
+ Labels : map [string ]string {"tekton.dev/clusterTask" : "task" },
170
+ },
171
+ Spec : v1alpha1.TaskRunSpec {
172
+ TaskRef : & v1alpha1.TaskRef {
173
+ Name : "task" ,
174
+ Kind : v1alpha1 .ClusterTaskKind ,
175
+ },
176
+ },
177
+ Status : v1beta1.TaskRunStatus {
178
+ Status : duckv1beta1.Status {
179
+ Conditions : duckv1beta1.Conditions {
180
+ {
181
+ Status : corev1 .ConditionTrue ,
182
+ Reason : v1beta1 .TaskRunReasonSuccessful .String (),
183
+ },
184
+ },
185
+ },
186
+ TaskRunStatusFields : v1beta1.TaskRunStatusFields {
187
+ StartTime : & v1.Time {Time : firstRunStarted },
188
+ CompletionTime : & v1.Time {Time : firstRunCompleted },
189
+ },
190
+ },
191
+ },
192
+ {
193
+ ObjectMeta : v1.ObjectMeta {
194
+ Name : "tr-2" ,
195
+ Namespace : "ns" ,
196
+ CreationTimestamp : v1.Time {Time : secondRunCompleted },
197
+ Labels : map [string ]string {"tekton.dev/clusterTask" : "task" },
198
+ },
199
+ Spec : v1alpha1.TaskRunSpec {
200
+ TaskRef : & v1alpha1.TaskRef {
201
+ Name : "task" ,
202
+ Kind : v1alpha1 .ClusterTaskKind ,
203
+ },
204
+ },
205
+ Status : v1beta1.TaskRunStatus {
206
+ Status : duckv1beta1.Status {
207
+ Conditions : duckv1beta1.Conditions {
208
+ {
209
+ Status : corev1 .ConditionTrue ,
210
+ Reason : v1beta1 .TaskRunReasonSuccessful .String (),
211
+ },
212
+ },
213
+ },
214
+ TaskRunStatusFields : v1beta1.TaskRunStatusFields {
215
+ StartTime : & v1.Time {Time : secondRunStarted },
216
+ CompletionTime : & v1.Time {Time : secondRunCompleted },
217
+ },
218
+ },
219
+ },
220
+ }
221
+ cs , _ := test .SeedTestData (t , pipelinetest.Data {
222
+ ClusterTasks : clustertasks ,
223
+ TaskRuns : taskruns ,
224
+ })
225
+ cs .Pipeline .Resources = cb .APIResourceList (versionA1 , []string {"clustertask" , "taskrun" })
226
+ tdc := testDynamic.Options {}
227
+ dc , _ := tdc .Client (
228
+ cb .UnstructuredCT (clustertasks [0 ], versionA1 ),
229
+ cb .UnstructuredTR (taskruns [0 ], versionA1 ),
230
+ cb .UnstructuredTR (taskruns [1 ], versionA1 ),
231
+ )
232
+ p := & test.Params {Tekton : cs .Pipeline , Clock : clock , Dynamic : dc }
233
+ client , err := p .Clients ()
234
+ if err != nil {
235
+ t .Errorf ("Unexpected error: %v" , err )
236
+ }
237
+
238
+ lastRun , err := LastRun (client , "task" , "ns" , "ClusterTask" )
239
+ if err != nil {
240
+ t .Errorf ("Unexpected error: %v" , err )
241
+ }
242
+
243
+ test .AssertOutput (t , "tr-2" , lastRun .Name )
244
+ }
245
+
246
+ func TestFilterByRef (t * testing.T ) {
247
+ clock := clockwork .NewFakeClock ()
248
+
249
+ var (
250
+ firstRunCreated = clock .Now ().Add (10 * time .Minute )
251
+ firstRunStarted = firstRunCreated .Add (2 * time .Second )
252
+ firstRunCompleted = firstRunStarted .Add (10 * time .Minute )
253
+
254
+ secondRunCreated = firstRunCreated .Add (1 * time .Minute )
255
+ secondRunStarted = secondRunCreated .Add (2 * time .Second )
256
+ secondRunCompleted = secondRunStarted .Add (5 * time .Minute )
257
+ )
258
+ taskruns := []v1beta1.TaskRun {
259
+ {
260
+ ObjectMeta : v1.ObjectMeta {
261
+ Name : "tr-1" ,
262
+ Namespace : "ns" ,
263
+ CreationTimestamp : v1.Time {Time : firstRunCreated },
264
+ Labels : map [string ]string {"tekton.dev/task" : "task" },
265
+ },
266
+ Spec : v1beta1.TaskRunSpec {
267
+ TaskRef : & v1alpha1.TaskRef {
268
+ Name : "task" ,
269
+ Kind : v1alpha1 .NamespacedTaskKind ,
270
+ },
271
+ },
272
+ Status : v1beta1.TaskRunStatus {
273
+ Status : duckv1beta1.Status {
274
+ Conditions : duckv1beta1.Conditions {
275
+ {
276
+ Status : corev1 .ConditionTrue ,
277
+ Reason : v1beta1 .TaskRunReasonSuccessful .String (),
278
+ },
279
+ },
280
+ },
281
+ TaskRunStatusFields : v1beta1.TaskRunStatusFields {
282
+ StartTime : & v1.Time {Time : firstRunStarted },
283
+ CompletionTime : & v1.Time {Time : firstRunCompleted },
284
+ },
285
+ },
286
+ },
287
+ {
288
+ ObjectMeta : v1.ObjectMeta {
289
+ Name : "tr-2" ,
290
+ Namespace : "ns" ,
291
+ CreationTimestamp : v1.Time {Time : secondRunCompleted },
292
+ Labels : map [string ]string {"tekton.dev/clusterTask" : "task" },
293
+ },
294
+ Spec : v1beta1.TaskRunSpec {
295
+ TaskRef : & v1alpha1.TaskRef {
296
+ Name : "task" ,
297
+ Kind : v1alpha1 .ClusterTaskKind ,
298
+ },
299
+ },
300
+ Status : v1beta1.TaskRunStatus {
301
+ Status : duckv1beta1.Status {
302
+ Conditions : duckv1beta1.Conditions {
303
+ {
304
+ Status : corev1 .ConditionTrue ,
305
+ Reason : v1beta1 .TaskRunReasonSuccessful .String (),
306
+ },
307
+ },
308
+ },
309
+ TaskRunStatusFields : v1beta1.TaskRunStatusFields {
310
+ StartTime : & v1.Time {Time : secondRunStarted },
311
+ CompletionTime : & v1.Time {Time : secondRunCompleted },
312
+ },
313
+ },
314
+ },
315
+ }
316
+
317
+ filteredClusterTask := FilterByRef (taskruns , "ClusterTask" )
318
+
319
+ test .AssertOutput (t , "tr-2" , filteredClusterTask [0 ].Name )
320
+
321
+ filteredTask := FilterByRef (taskruns , "Task" )
322
+
323
+ test .AssertOutput (t , "tr-1" , filteredTask [0 ].Name )
324
+ }
0 commit comments