@@ -136,6 +136,29 @@ func waitCluster(t *testing.T) *Cluster {
136136 return c
137137}
138138
139+ // waitForCheckpointDeactivation waits for checkpointed pods to be replaced by the
140+ // apiserver-managed ones.
141+ // TODO(diegs): do something more scientific, like talking to docker.
142+ func waitForCheckpointDeactivation (t * testing.T ) {
143+ t .Log ("Waiting 30 seconds for checkpoints to deactivate." )
144+ time .Sleep (30 * time .Second )
145+ successes := 0
146+ if err := retry (20 , 3 * time .Second , func () error {
147+ _ , err := client .Discovery ().ServerVersion ()
148+ if err != nil {
149+ successes = 0
150+ return fmt .Errorf ("request failed, starting over: %v" , err )
151+ }
152+ successes ++
153+ if successes < 5 {
154+ return fmt .Errorf ("request success %d of %d" , successes , 5 )
155+ }
156+ return nil
157+ }); err != nil {
158+ t .Fatalf ("non-checkpoint apiserver did not come back: %v" , err )
159+ }
160+ }
161+
139162// 1. Schedule a pod checkpointer on worker node.
140163// 2. Schedule a test pod on worker node.
141164// 3. Reboot the worker without starting the kubelet.
@@ -250,6 +273,8 @@ func TestCheckpointerUnscheduleCheckpointer(t *testing.T) {
250273 if err := verifyCheckpoint (c , testNS , "nginx-daemonset" , false , false ); err != nil {
251274 t .Fatalf ("Failed to verifyCheckpoint: %s" , err )
252275 }
276+
277+ waitForCheckpointDeactivation (t )
253278}
254279
255280// 1. Schedule a pod checkpointer on worker node.
@@ -366,5 +391,6 @@ func TestCheckpointerUnscheduleParent(t *testing.T) {
366391 if err := verifyCheckpoint (c , testNS , "nginx-daemonset" , false , false ); err != nil {
367392 t .Fatalf ("verifyCheckpoint: %s" , err )
368393 }
369- return
394+
395+ waitForCheckpointDeactivation (t )
370396}
0 commit comments