23
23
package test
24
24
25
25
import (
26
- "fmt"
27
26
"os"
28
27
"path/filepath"
29
- "strings"
30
28
"testing"
31
- "time"
29
+
30
+ "github.com/stretchr/testify/require"
32
31
)
33
32
34
33
// TestDockerClusterSync runs 3 arangodb starters in docker with arangosync enabled.
@@ -37,120 +36,36 @@ func TestDockerClusterSync(t *testing.T) {
37
36
needStarterMode (t , starterModeCluster )
38
37
needEnterprise (t )
39
38
ip := os .Getenv ("IP" )
40
- if ip == "" {
41
- t .Fatal ("IP envvar must be set to IP address of this machine" )
42
- }
43
-
44
- // Create certificates
45
- certs := createSyncCertificates (t , ip , true )
46
-
47
- volID1 := createDockerID ("vol-starter-test-cluster-sync1-" )
48
- createDockerVolume (t , volID1 )
49
- defer removeDockerVolume (t , volID1 )
50
-
51
- volID2 := createDockerID ("vol-starter-test-cluster-sync2-" )
52
- createDockerVolume (t , volID2 )
53
- defer removeDockerVolume (t , volID2 )
54
-
55
- volID3 := createDockerID ("vol-starter-test-cluster-sync3-" )
56
- createDockerVolume (t , volID3 )
57
- defer removeDockerVolume (t , volID3 )
39
+ require .NotEmpty (t , ip , "IP envvar must be set to IP address of this machine" )
58
40
59
41
// Cleanup of left over tests
60
42
removeDockerContainersByLabel (t , "starter-test=true" )
61
43
removeStarterCreatedDockerContainers (t )
62
44
63
- start := time .Now ()
45
+ // Create certificates
46
+ certs := createSyncCertificates (t , ip , true )
64
47
65
- cID1 := createDockerID ("starter-test-cluster-sync1-" )
66
- dockerRun1 := Spawn (t , strings .Join ([]string {
67
- "docker run -i" ,
68
- "--label starter-test=true" ,
69
- "--name=" + cID1 ,
70
- "--rm" ,
71
- createLicenseKeyOption (),
72
- fmt .Sprintf ("-p %d:%d" , basePort , basePort ),
73
- fmt .Sprintf ("-v %s:/data" , volID1 ),
74
- fmt .Sprintf ("-v %s:/certs" , certs .Dir ),
75
- "-v /var/run/docker.sock:/var/run/docker.sock" ,
76
- "arangodb/arangodb-starter" ,
77
- "--docker.container=" + cID1 ,
78
- "--starter.address=$IP" ,
79
- "--server.storage-engine=rocksdb" ,
80
- "--starter.sync" ,
81
- "--sync.server.keyfile=/certs/" + filepath .Base (certs .TLS .DCA .Keyfile ),
82
- "--sync.server.client-cafile=/certs/" + filepath .Base (certs .ClientAuth .CACertificate ),
83
- "--sync.master.jwt-secret=/certs/" + filepath .Base (certs .MasterSecret ),
84
- "--auth.jwt-secret=/certs/" + filepath .Base (certs .ClusterSecret ),
85
- "--sync.monitoring.token=" + syncMonitoringToken ,
86
- createEnvironmentStarterOptions (),
87
- }, " " ))
88
- defer dockerRun1 .Close ()
89
- defer removeDockerContainer (t , cID1 )
48
+ volumeIDs , cleanVolumes := createDockerVolumes (t ,
49
+ "vol-starter-test-cluster-sync1-" ,
50
+ "vol-starter-test-cluster-sync2-" ,
51
+ "vol-starter-test-cluster-sync3-" ,
52
+ )
53
+ defer cleanVolumes ()
90
54
91
- cID2 := createDockerID ("starter-test-cluster-sync2-" )
92
- dockerRun2 := Spawn (t , strings .Join ([]string {
93
- "docker run -i" ,
94
- "--label starter-test=true" ,
95
- "--name=" + cID2 ,
96
- "--rm" ,
97
- createLicenseKeyOption (),
98
- fmt .Sprintf ("-p %d:%d" , basePort + (1 * portIncrement ), basePort ),
99
- fmt .Sprintf ("-v %s:/data" , volID2 ),
100
- fmt .Sprintf ("-v %s:/certs" , certs .Dir ),
101
- "-v /var/run/docker.sock:/var/run/docker.sock" ,
102
- "arangodb/arangodb-starter" ,
103
- "--docker.container=" + cID2 ,
55
+ starterArgs := []string {
104
56
"--starter.address=$IP" ,
105
57
"--server.storage-engine=rocksdb" ,
106
- "--starter.sync" ,
107
- "--sync.server.keyfile=/certs/" + filepath .Base (certs .TLS .DCA .Keyfile ),
108
- "--sync.server.client-cafile=/certs/" + filepath .Base (certs .ClientAuth .CACertificate ),
109
- "--sync.master.jwt-secret=/certs/" + filepath .Base (certs .MasterSecret ),
110
58
"--auth.jwt-secret=/certs/" + filepath .Base (certs .ClusterSecret ),
111
- "--sync.monitoring.token=" + syncMonitoringToken ,
112
- createEnvironmentStarterOptions (),
113
- fmt .Sprintf ("--starter.join=$IP:%d" , basePort ),
114
- }, " " ))
115
- defer dockerRun2 .Close ()
116
- defer removeDockerContainer (t , cID2 )
117
-
118
- cID3 := createDockerID ("starter-test-cluster-sync3-" )
119
- dockerRun3 := Spawn (t , strings .Join ([]string {
120
- "docker run -i" ,
121
- "--label starter-test=true" ,
122
- "--name=" + cID3 ,
123
- "--rm" ,
124
- createLicenseKeyOption (),
125
- fmt .Sprintf ("-p %d:%d" , basePort + (2 * portIncrement ), basePort ),
126
- fmt .Sprintf ("-v %s:/data" , volID3 ),
127
- fmt .Sprintf ("-v %s:/certs" , certs .Dir ),
128
- "-v /var/run/docker.sock:/var/run/docker.sock" ,
129
- "arangodb/arangodb-starter" ,
130
- "--docker.container=" + cID3 ,
131
- "--starter.address=$IP" ,
132
- "--server.storage-engine=rocksdb" ,
133
59
"--starter.sync" ,
134
60
"--sync.server.keyfile=/certs/" + filepath .Base (certs .TLS .DCA .Keyfile ),
135
61
"--sync.server.client-cafile=/certs/" + filepath .Base (certs .ClientAuth .CACertificate ),
136
62
"--sync.master.jwt-secret=/certs/" + filepath .Base (certs .MasterSecret ),
137
- "--auth.jwt-secret=/certs/" + filepath .Base (certs .ClusterSecret ),
138
63
"--sync.monitoring.token=" + syncMonitoringToken ,
139
64
createEnvironmentStarterOptions (),
140
- fmt .Sprintf ("--starter.join=$IP:%d" , basePort ),
141
- }, " " ))
142
- defer dockerRun3 .Close ()
143
- defer removeDockerContainer (t , cID3 )
144
-
145
- if ok := WaitUntilStarterReady (t , whatCluster , 3 , dockerRun1 , dockerRun2 , dockerRun3 ); ok {
146
- t .Logf ("Cluster start took %s" , time .Since (start ))
147
- testClusterWithSync (t , insecureStarterEndpoint (0 * portIncrement ), false )
148
- testClusterWithSync (t , insecureStarterEndpoint (1 * portIncrement ), false )
149
- testClusterWithSync (t , insecureStarterEndpoint (2 * portIncrement ), false )
150
65
}
151
66
152
- waitForCallFunction (t ,
153
- ShutdownStarterCall ( insecureStarterEndpoint ( 0 * portIncrement )),
154
- ShutdownStarterCall ( insecureStarterEndpoint ( 1 * portIncrement )),
155
- ShutdownStarterCall ( insecureStarterEndpoint ( 2 * portIncrement )) )
67
+ procs , cleanup := startClusterInDocker (t , certs . Dir , starterArgs , volumeIDs )
68
+ defer cleanup ()
69
+
70
+ waitForClusterReadinessAndFinish ( t , true , false , procs ... )
156
71
}
0 commit comments