44 "bytes"
55 "fmt"
66 "strings"
7+ "sync"
78 "testing"
89 "time"
910
@@ -140,8 +141,8 @@ func waitCluster(t *testing.T) *Cluster {
140141// apiserver-managed ones.
141142// TODO(diegs): do something more scientific, like talking to docker.
142143func waitForCheckpointDeactivation (t * testing.T ) {
143- t .Log ("Waiting 30 seconds for checkpoints to deactivate." )
144- time .Sleep (30 * time .Second )
144+ t .Log ("Waiting 60 seconds for checkpoints to deactivate." )
145+ time .Sleep (60 * time .Second )
145146 successes := 0
146147 if err := retry (20 , 3 * time .Second , func () error {
147148 _ , err := client .Discovery ().ServerVersion ()
@@ -228,15 +229,21 @@ func TestCheckpointerUnscheduleCheckpointer(t *testing.T) {
228229 }
229230
230231 // Disable the kubelet and reboot the masters.
232+ var rebootGroup sync.WaitGroup
231233 for i := range c .Masters {
232- stdout , stderr , err = c .Masters [i ].SSH ("sudo systemctl disable kubelet" )
233- if err != nil {
234- t .Fatalf ("Failed to disable kubelet on master %q: %v\n stdout: %s\n stderr: %s" , c .Masters [i ].Name , err , stdout , stderr )
235- }
236- if err := c .Masters [i ].Reboot (); err != nil {
237- t .Fatalf ("Failed to reboot master: %v" , err )
238- }
234+ rebootGroup .Add (1 )
235+ go func (i int ) {
236+ defer rebootGroup .Done ()
237+ stdout , stderr , err = c .Masters [i ].SSH ("sudo systemctl disable kubelet" )
238+ if err != nil {
239+ t .Fatalf ("Failed to disable kubelet on master %q: %v\n stdout: %s\n stderr: %s" , c .Masters [i ].Name , err , stdout , stderr )
240+ }
241+ if err := c .Masters [i ].Reboot (); err != nil {
242+ t .Fatalf ("Failed to reboot master: %v" , err )
243+ }
244+ }(i )
239245 }
246+ rebootGroup .Wait ()
240247
241248 // Start the worker kubelet.
242249 stdout , stderr , err = c .Workers [0 ].SSH ("sudo systemctl enable kubelet && sudo systemctl start kubelet" )
@@ -253,12 +260,18 @@ func TestCheckpointerUnscheduleCheckpointer(t *testing.T) {
253260 }
254261
255262 // Start the master kubelet.
263+ var enableGroup sync.WaitGroup
256264 for i := range c .Masters {
257- stdout , stderr , err = c .Masters [i ].SSH ("sudo systemctl enable kubelet && sudo systemctl start kubelet" )
258- if err != nil {
259- t .Fatalf ("Failed to start kubelet on master %q: %v\n stdout: %s\n stderr: %s" , c .Masters [i ].Name , err , stdout , stderr )
260- }
265+ enableGroup .Add (1 )
266+ go func (i int ) {
267+ defer enableGroup .Done ()
268+ stdout , stderr , err = c .Masters [i ].SSH ("sudo systemctl enable kubelet && sudo systemctl start kubelet" )
269+ if err != nil {
270+ t .Fatalf ("Failed to start kubelet on master %q: %v\n stdout: %s\n stderr: %s" , c .Masters [i ].Name , err , stdout , stderr )
271+ }
272+ }(i )
261273 }
274+ enableGroup .Wait ()
262275
263276 // Verify that the pod-checkpointer is cleaned up but the daemonset is still running.
264277 if err := verifyPod (c , "pod-checkpointer" , false ); err != nil {
@@ -346,15 +359,21 @@ func TestCheckpointerUnscheduleParent(t *testing.T) {
346359 }
347360
348361 // Disable the kubelet and reboot the masters.
362+ var rebootGroup sync.WaitGroup
349363 for i := range c .Masters {
350- stdout , stderr , err = c .Masters [i ].SSH ("sudo systemctl disable kubelet" )
351- if err != nil {
352- t .Fatalf ("Failed to disable kubelet on master %q: %v\n stdout: %s\n stderr: %s" , c .Masters [i ].Name , err , stdout , stderr )
353- }
354- if err := c .Masters [i ].Reboot (); err != nil {
355- t .Fatalf ("Failed to reboot master: %v" , err )
356- }
364+ rebootGroup .Add (1 )
365+ go func (i int ) {
366+ defer rebootGroup .Done ()
367+ stdout , stderr , err = c .Masters [i ].SSH ("sudo systemctl disable kubelet" )
368+ if err != nil {
369+ t .Fatalf ("Failed to disable kubelet on master %q: %v\n stdout: %s\n stderr: %s" , c .Masters [i ].Name , err , stdout , stderr )
370+ }
371+ if err := c .Masters [i ].Reboot (); err != nil {
372+ t .Fatalf ("Failed to reboot master: %v" , err )
373+ }
374+ }(i )
357375 }
376+ rebootGroup .Wait ()
358377
359378 // Start the worker kubelet.
360379 stdout , stderr , err = c .Workers [0 ].SSH ("sudo systemctl enable kubelet && sudo systemctl start kubelet" )
@@ -371,12 +390,18 @@ func TestCheckpointerUnscheduleParent(t *testing.T) {
371390 }
372391
373392 // Start the master kubelets.
393+ var enableGroup sync.WaitGroup
374394 for i := range c .Masters {
375- stdout , stderr , err = c .Masters [i ].SSH ("sudo systemctl enable kubelet && sudo systemctl start kubelet" )
376- if err != nil {
377- t .Fatalf ("unable to start kubelet on master %q: %v\n stdout: %s\n stderr: %s" , c .Masters [i ].Name , err , stdout , stderr )
378- }
395+ enableGroup .Add (1 )
396+ go func (i int ) {
397+ defer enableGroup .Done ()
398+ stdout , stderr , err = c .Masters [i ].SSH ("sudo systemctl enable kubelet && sudo systemctl start kubelet" )
399+ if err != nil {
400+ t .Fatalf ("unable to start kubelet on master %q: %v\n stdout: %s\n stderr: %s" , c .Masters [i ].Name , err , stdout , stderr )
401+ }
402+ }(i )
379403 }
404+ enableGroup .Wait ()
380405
381406 // Verify that checkpoint is cleaned up and not running, but the pod checkpointer should still be running.
382407 if err := verifyPod (c , "pod-checkpointer" , true ); err != nil {
0 commit comments