@@ -510,6 +510,37 @@ func (s *DockerSwarmSuite) TestApiSwarmNodeUpdate(c *check.C) {
510510 c .Assert (n .Spec .Availability , checker .Equals , swarm .NodeAvailabilityPause )
511511}
512512
513+ func (s * DockerSwarmSuite ) TestApiSwarmNodeRemove (c * check.C ) {
514+ testRequires (c , Network )
515+ d1 := s .AddDaemon (c , true , true )
516+ d2 := s .AddDaemon (c , true , false )
517+ _ = s .AddDaemon (c , true , false )
518+
519+ nodes := d1 .listNodes (c )
520+ c .Assert (len (nodes ), checker .Equals , 3 , check .Commentf ("nodes: %#v" , nodes ))
521+
522+ // Getting the info so we can take the NodeID
523+ d2Info , err := d2 .info ()
524+ c .Assert (err , checker .IsNil )
525+
526+ // forceful removal of d2 should work
527+ d1 .removeNode (c , d2Info .NodeID , true )
528+
529+ nodes = d1 .listNodes (c )
530+ c .Assert (len (nodes ), checker .Equals , 2 , check .Commentf ("nodes: %#v" , nodes ))
531+
532+ // Restart the node that was removed
533+ err = d2 .Restart ()
534+ c .Assert (err , checker .IsNil )
535+
536+ // Give some time for the node to rejoin
537+ time .Sleep (1 * time .Second )
538+
539+ // Make sure the node didn't rejoin
540+ nodes = d1 .listNodes (c )
541+ c .Assert (len (nodes ), checker .Equals , 2 , check .Commentf ("nodes: %#v" , nodes ))
542+ }
543+
513544func (s * DockerSwarmSuite ) TestApiSwarmNodeDrainPause (c * check.C ) {
514545 testRequires (c , Network )
515546 d1 := s .AddDaemon (c , true , true )
0 commit comments