github.com/vieux/docker@v0.6.3-0.20161004191708-e097c2a938c7/cli/command/service/inspect_test.go (about)

     1  package service
     2  
     3  import (
     4  	"bytes"
     5  	"strings"
     6  	"testing"
     7  	"time"
     8  
     9  	"github.com/docker/docker/api/types/swarm"
    10  	"github.com/docker/docker/cli/command/formatter"
    11  )
    12  
    13  func TestPrettyPrintWithNoUpdateConfig(t *testing.T) {
    14  	b := new(bytes.Buffer)
    15  
    16  	endpointSpec := &swarm.EndpointSpec{
    17  		Mode: "vip",
    18  		Ports: []swarm.PortConfig{
    19  			{
    20  				Protocol:   swarm.PortConfigProtocolTCP,
    21  				TargetPort: 5000,
    22  			},
    23  		},
    24  	}
    25  
    26  	two := uint64(2)
    27  
    28  	s := swarm.Service{
    29  		ID: "de179gar9d0o7ltdybungplod",
    30  		Meta: swarm.Meta{
    31  			Version:   swarm.Version{Index: 315},
    32  			CreatedAt: time.Now(),
    33  			UpdatedAt: time.Now(),
    34  		},
    35  		Spec: swarm.ServiceSpec{
    36  			Annotations: swarm.Annotations{
    37  				Name:   "my_service",
    38  				Labels: map[string]string{"com.label": "foo"},
    39  			},
    40  			TaskTemplate: swarm.TaskSpec{
    41  				ContainerSpec: swarm.ContainerSpec{
    42  					Image: "foo/bar@sha256:this_is_a_test",
    43  				},
    44  			},
    45  			Mode: swarm.ServiceMode{
    46  				Replicated: &swarm.ReplicatedService{
    47  					Replicas: &two,
    48  				},
    49  			},
    50  			UpdateConfig: nil,
    51  			Networks: []swarm.NetworkAttachmentConfig{
    52  				{
    53  					Target:  "5vpyomhb6ievnk0i0o60gcnei",
    54  					Aliases: []string{"web"},
    55  				},
    56  			},
    57  			EndpointSpec: endpointSpec,
    58  		},
    59  		Endpoint: swarm.Endpoint{
    60  			Spec: *endpointSpec,
    61  			Ports: []swarm.PortConfig{
    62  				{
    63  					Protocol:      swarm.PortConfigProtocolTCP,
    64  					TargetPort:    5000,
    65  					PublishedPort: 30000,
    66  				},
    67  			},
    68  			VirtualIPs: []swarm.EndpointVirtualIP{
    69  				{
    70  					NetworkID: "6o4107cj2jx9tihgb0jyts6pj",
    71  					Addr:      "10.255.0.4/16",
    72  				},
    73  			},
    74  		},
    75  		UpdateStatus: swarm.UpdateStatus{
    76  			StartedAt:   time.Now(),
    77  			CompletedAt: time.Now(),
    78  		},
    79  	}
    80  
    81  	ctx := formatter.Context{
    82  		Output: b,
    83  		Format: formatter.NewServiceFormat("pretty"),
    84  	}
    85  
    86  	err := formatter.ServiceInspectWrite(ctx, []string{"de179gar9d0o7ltdybungplod"}, func(ref string) (interface{}, []byte, error) {
    87  		return s, nil, nil
    88  	})
    89  	if err != nil {
    90  		t.Fatal(err)
    91  	}
    92  
    93  	if strings.Contains(b.String(), "UpdateStatus") {
    94  		t.Fatal("Pretty print failed before parsing UpdateStatus")
    95  	}
    96  }