Browse code

refactored network integration tests to make use of swarm.CreateService

Signed-off-by: Arash Deshmeh <adeshmeh@ca.ibm.com>

Arash Deshmeh authored on 2018/04/06 06:26:29
Showing 3 changed files
... ...
@@ -136,6 +136,21 @@ func ServiceWithName(name string) ServiceSpecOpt {
136 136
 	}
137 137
 }
138 138
 
139
+// ServiceWithNetwork sets the network of the service
140
+func ServiceWithNetwork(network string) ServiceSpecOpt {
141
+	return func(spec *swarmtypes.ServiceSpec) {
142
+		spec.TaskTemplate.Networks = append(spec.TaskTemplate.Networks,
143
+			swarmtypes.NetworkAttachmentConfig{Target: network})
144
+	}
145
+}
146
+
147
+// ServiceWithEndpoint sets the Endpoint of the service
148
+func ServiceWithEndpoint(endpoint *swarmtypes.EndpointSpec) ServiceSpecOpt {
149
+	return func(spec *swarmtypes.ServiceSpec) {
150
+		spec.EndpointSpec = endpoint
151
+	}
152
+}
153
+
139 154
 // GetRunningTasks gets the list of running tasks for a service
140 155
 func GetRunningTasks(t *testing.T, d *daemon.Daemon, serviceID string) []swarmtypes.Task {
141 156
 	t.Helper()
... ...
@@ -35,16 +35,13 @@ func TestInspectNetwork(t *testing.T) {
35 35
 
36 36
 	var instances uint64 = 4
37 37
 	serviceName := "TestService"
38
-	// FIXME(vdemeester) consolidate with swarm.CreateService
39
-	serviceSpec := swarmServiceSpec(serviceName, instances)
40
-	serviceSpec.TaskTemplate.Networks = append(serviceSpec.TaskTemplate.Networks, swarmtypes.NetworkAttachmentConfig{Target: overlayName})
41 38
 
42
-	serviceResp, err := client.ServiceCreate(context.Background(), serviceSpec, types.ServiceCreateOptions{
43
-		QueryRegistry: false,
44
-	})
45
-	assert.NilError(t, err)
39
+	serviceID := swarm.CreateService(t, d,
40
+		swarm.ServiceWithReplicas(instances),
41
+		swarm.ServiceWithName(serviceName),
42
+		swarm.ServiceWithNetwork(overlayName),
43
+	)
46 44
 
47
-	serviceID := serviceResp.ID
48 45
 	poll.WaitOn(t, serviceRunningTasksCount(client, serviceID, instances), swarm.ServicePoll)
49 46
 
50 47
 	_, _, err = client.ServiceInspectWithRaw(context.Background(), serviceID, types.ServiceInspectOptions{})
... ...
@@ -78,12 +75,12 @@ func TestInspectNetwork(t *testing.T) {
78 78
 	poll.WaitOn(t, serviceIsRemoved(client, serviceID), swarm.ServicePoll)
79 79
 	poll.WaitOn(t, noTasks(client), swarm.ServicePoll)
80 80
 
81
-	serviceResp, err = client.ServiceCreate(context.Background(), serviceSpec, types.ServiceCreateOptions{
82
-		QueryRegistry: false,
83
-	})
84
-	assert.NilError(t, err)
81
+	serviceID2 := swarm.CreateService(t, d,
82
+		swarm.ServiceWithReplicas(instances),
83
+		swarm.ServiceWithName(serviceName),
84
+		swarm.ServiceWithNetwork(overlayName),
85
+	)
85 86
 
86
-	serviceID2 := serviceResp.ID
87 87
 	poll.WaitOn(t, serviceRunningTasksCount(client, serviceID2, instances), swarm.ServicePoll)
88 88
 
89 89
 	err = client.ServiceRemove(context.Background(), serviceID2)
... ...
@@ -98,25 +95,6 @@ func TestInspectNetwork(t *testing.T) {
98 98
 	poll.WaitOn(t, networkIsRemoved(client, overlayID), poll.WithTimeout(1*time.Minute), poll.WithDelay(10*time.Second))
99 99
 }
100 100
 
101
-func swarmServiceSpec(name string, replicas uint64) swarmtypes.ServiceSpec {
102
-	return swarmtypes.ServiceSpec{
103
-		Annotations: swarmtypes.Annotations{
104
-			Name: name,
105
-		},
106
-		TaskTemplate: swarmtypes.TaskSpec{
107
-			ContainerSpec: &swarmtypes.ContainerSpec{
108
-				Image:   "busybox:latest",
109
-				Command: []string{"/bin/top"},
110
-			},
111
-		},
112
-		Mode: swarmtypes.ServiceMode{
113
-			Replicated: &swarmtypes.ReplicatedService{
114
-				Replicas: &replicas,
115
-			},
116
-		},
117
-	}
118
-}
119
-
120 101
 func serviceRunningTasksCount(client client.ServiceAPIClient, serviceID string, instances uint64) func(log poll.LogT) poll.Result {
121 102
 	return func(log poll.LogT) poll.Result {
122 103
 		filter := filters.NewArgs()
... ...
@@ -23,18 +23,16 @@ func TestServiceWithPredefinedNetwork(t *testing.T) {
23 23
 	hostName := "host"
24 24
 	var instances uint64 = 1
25 25
 	serviceName := "TestService"
26
-	serviceSpec := swarmServiceSpec(serviceName, instances)
27
-	serviceSpec.TaskTemplate.Networks = append(serviceSpec.TaskTemplate.Networks, swarmtypes.NetworkAttachmentConfig{Target: hostName})
28 26
 
29
-	serviceResp, err := client.ServiceCreate(context.Background(), serviceSpec, types.ServiceCreateOptions{
30
-		QueryRegistry: false,
31
-	})
32
-	assert.NilError(t, err)
27
+	serviceID := swarm.CreateService(t, d,
28
+		swarm.ServiceWithReplicas(instances),
29
+		swarm.ServiceWithName(serviceName),
30
+		swarm.ServiceWithNetwork(hostName),
31
+	)
33 32
 
34
-	serviceID := serviceResp.ID
35 33
 	poll.WaitOn(t, serviceRunningCount(client, serviceID, instances), swarm.ServicePoll)
36 34
 
37
-	_, _, err = client.ServiceInspectWithRaw(context.Background(), serviceID, types.ServiceInspectOptions{})
35
+	_, _, err := client.ServiceInspectWithRaw(context.Background(), serviceID, types.ServiceInspectOptions{})
38 36
 	assert.NilError(t, err)
39 37
 
40 38
 	err = client.ServiceRemove(context.Background(), serviceID)
... ...
@@ -53,26 +51,24 @@ func TestServiceRemoveKeepsIngressNetwork(t *testing.T) {
53 53
 	poll.WaitOn(t, swarmIngressReady(client), swarm.NetworkPoll)
54 54
 
55 55
 	var instances uint64 = 1
56
-	serviceSpec := swarmServiceSpec(t.Name()+"-service", instances)
57
-	serviceSpec.EndpointSpec = &swarmtypes.EndpointSpec{
58
-		Ports: []swarmtypes.PortConfig{
59
-			{
60
-				Protocol:    swarmtypes.PortConfigProtocolTCP,
61
-				TargetPort:  80,
62
-				PublishMode: swarmtypes.PortConfigPublishModeIngress,
63
-			},
64
-		},
65
-	}
66 56
 
67
-	serviceResp, err := client.ServiceCreate(context.Background(), serviceSpec, types.ServiceCreateOptions{
68
-		QueryRegistry: false,
69
-	})
70
-	assert.NilError(t, err)
57
+	serviceID := swarm.CreateService(t, d,
58
+		swarm.ServiceWithReplicas(instances),
59
+		swarm.ServiceWithName(t.Name()+"-service"),
60
+		swarm.ServiceWithEndpoint(&swarmtypes.EndpointSpec{
61
+			Ports: []swarmtypes.PortConfig{
62
+				{
63
+					Protocol:    swarmtypes.PortConfigProtocolTCP,
64
+					TargetPort:  80,
65
+					PublishMode: swarmtypes.PortConfigPublishModeIngress,
66
+				},
67
+			},
68
+		}),
69
+	)
71 70
 
72
-	serviceID := serviceResp.ID
73 71
 	poll.WaitOn(t, serviceRunningCount(client, serviceID, instances), swarm.ServicePoll)
74 72
 
75
-	_, _, err = client.ServiceInspectWithRaw(context.Background(), serviceID, types.ServiceInspectOptions{})
73
+	_, _, err := client.ServiceInspectWithRaw(context.Background(), serviceID, types.ServiceInspectOptions{})
76 74
 	assert.NilError(t, err)
77 75
 
78 76
 	err = client.ServiceRemove(context.Background(), serviceID)