github.com/nullne/docker@v1.13.0-rc1/integration-cli/docker_api_service_update_test.go (about) 1 // +build !windows 2 3 package main 4 5 import ( 6 "github.com/docker/docker/api/types/swarm" 7 "github.com/docker/docker/pkg/integration/checker" 8 "github.com/go-check/check" 9 ) 10 11 func setPortConfig(portConfig []swarm.PortConfig) serviceConstructor { 12 return func(s *swarm.Service) { 13 if s.Spec.EndpointSpec == nil { 14 s.Spec.EndpointSpec = &swarm.EndpointSpec{} 15 } 16 s.Spec.EndpointSpec.Ports = portConfig 17 } 18 } 19 20 func (s *DockerSwarmSuite) TestAPIServiceUpdatePort(c *check.C) { 21 d := s.AddDaemon(c, true, true) 22 23 // Create a service with a port mapping of 8080:8081. 24 portConfig := []swarm.PortConfig{{TargetPort: 8081, PublishedPort: 8080}} 25 serviceID := d.createService(c, simpleTestService, setInstances(1), setPortConfig(portConfig)) 26 waitAndAssert(c, defaultReconciliationTimeout, d.checkActiveContainerCount, checker.Equals, 1) 27 28 // Update the service: changed the port mapping from 8080:8081 to 8082:8083. 29 updatedPortConfig := []swarm.PortConfig{{TargetPort: 8083, PublishedPort: 8082}} 30 remoteService := d.getService(c, serviceID) 31 d.updateService(c, remoteService, setPortConfig(updatedPortConfig)) 32 33 // Inspect the service and verify port mapping. 34 updatedService := d.getService(c, serviceID) 35 c.Assert(updatedService.Spec.EndpointSpec, check.NotNil) 36 c.Assert(len(updatedService.Spec.EndpointSpec.Ports), check.Equals, 1) 37 c.Assert(updatedService.Spec.EndpointSpec.Ports[0].TargetPort, check.Equals, uint32(8083)) 38 c.Assert(updatedService.Spec.EndpointSpec.Ports[0].PublishedPort, check.Equals, uint32(8082)) 39 }