github.com/vvnotw/moby@v1.13.1/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  }