@@ -2,10 +2,12 @@ package common
2
2
3
3
import (
4
4
"testing"
5
+ "time"
5
6
6
7
apiv1 "github.com/kubeflow/common/pkg/apis/common/v1"
7
8
"github.com/stretchr/testify/assert"
8
9
corev1 "k8s.io/api/core/v1"
10
+ metaV1 "k8s.io/apimachinery/pkg/apis/meta/v1"
9
11
)
10
12
11
13
func TestUpdateJobReplicaStatuses (t * testing.T ) {
@@ -14,13 +16,14 @@ func TestUpdateJobReplicaStatuses(t *testing.T) {
14
16
_ , ok := jobStatus .ReplicaStatuses ["worker" ]
15
17
// assert ReplicaStatus for "worker" exists
16
18
assert .True (t , ok )
17
- setStatusForTest (& jobStatus , "worker" , 2 , 3 , 1 )
18
- assert .Equal (t , jobStatus .ReplicaStatuses ["worker" ].Failed , int32 (2 ))
19
+ setStatusForTest (& jobStatus , "worker" , 2 , 3 , 1 , 1 )
20
+ // terminating pod should count as failed.
21
+ assert .Equal (t , jobStatus .ReplicaStatuses ["worker" ].Failed , int32 (3 ))
19
22
assert .Equal (t , jobStatus .ReplicaStatuses ["worker" ].Succeeded , int32 (3 ))
20
23
assert .Equal (t , jobStatus .ReplicaStatuses ["worker" ].Active , int32 (1 ))
21
24
}
22
25
23
- func setStatusForTest (jobStatus * apiv1.JobStatus , rtype apiv1.ReplicaType , failed , succeeded , active int32 ) {
26
+ func setStatusForTest (jobStatus * apiv1.JobStatus , rtype apiv1.ReplicaType , failed , succeeded , active , terminating int32 ) {
24
27
pod := corev1.Pod {
25
28
Status : corev1.PodStatus {},
26
29
}
@@ -37,4 +40,10 @@ func setStatusForTest(jobStatus *apiv1.JobStatus, rtype apiv1.ReplicaType, faile
37
40
pod .Status .Phase = corev1 .PodRunning
38
41
updateJobReplicaStatuses (jobStatus , rtype , & pod )
39
42
}
43
+ for i = 0 ; i < terminating ; i ++ {
44
+ pod .Status .Phase = corev1 .PodRunning
45
+ deletionTimestamp := metaV1 .NewTime (time .Now ())
46
+ pod .DeletionTimestamp = & deletionTimestamp
47
+ updateJobReplicaStatuses (jobStatus , rtype , & pod )
48
+ }
40
49
}
0 commit comments