@@ -103,6 +103,113 @@ func TestDockerResilientSingleDefault(t *testing.T) {
103103 defer dockerRun2 .Close ()
104104 defer removeDockerContainer (t , cID2 )
105105
106+ cID3 := createDockerID ("starter-test-resilientsingle-default3-" )
107+ dockerRun3 := Spawn (t , strings .Join ([]string {
108+ "docker run -i" ,
109+ "--label starter-test=true" ,
110+ "--name=" + cID3 ,
111+ "--rm" ,
112+ fmt .Sprintf ("-p %d:%d" , basePort + 10 , basePort ),
113+ fmt .Sprintf ("-v %s:/data" , volID3 ),
114+ "-v /var/run/docker.sock:/var/run/docker.sock" ,
115+ "arangodb/arangodb-starter" ,
116+ "--docker.container=" + cID3 ,
117+ "--starter.address=$IP" ,
118+ "--starter.mode=resilientsingle" ,
119+ createEnvironmentStarterOptions (),
120+ fmt .Sprintf ("--starter.join=$IP:%d" , basePort ),
121+ }, " " ))
122+ defer dockerRun3 .Close ()
123+ defer removeDockerContainer (t , cID3 )
124+
125+ if ok := WaitUntilStarterReady (t , whatResilientSingle , dockerRun1 , dockerRun2 , dockerRun3 ); ok {
126+ t .Logf ("ResilientSingle start took %s" , time .Since (start ))
127+ testResilientSingle (t , insecureStarterEndpoint (0 ), false , false )
128+ testResilientSingle (t , insecureStarterEndpoint (5 ), false , false )
129+ testResilientSingle (t , insecureStarterEndpoint (10 ), false , false )
130+ }
131+
132+ if isVerbose {
133+ t .Log ("Waiting for termination" )
134+ }
135+ ShutdownStarter (t , insecureStarterEndpoint (0 ))
136+ ShutdownStarter (t , insecureStarterEndpoint (5 ))
137+ ShutdownStarter (t , insecureStarterEndpoint (10 ))
138+ }
139+
140+ // TestDockerResilientSingle2Instance runs 3 arangodb starters in docker with mode=resilientsingle
141+ // and only 2 servers should start a single server instance.
142+ func TestDockerResilientSingle2Instance (t * testing.T ) {
143+ needTestMode (t , testModeDocker )
144+ needStarterMode (t , starterModeResilientSingle )
145+ if os .Getenv ("IP" ) == "" {
146+ t .Fatal ("IP envvar must be set to IP address of this machine" )
147+ }
148+ /*
149+ docker volume create arangodb1
150+ docker run -i --name=adb1 --rm -p 8528:8528 \
151+ -v arangodb1:/data \
152+ -v /var/run/docker.sock:/var/run/docker.sock \
153+ arangodb/arangodb-starter \
154+ --docker.container=adb1 \
155+ --starter.address=$IP \
156+ --starter.mode=resilientsingle
157+ */
158+ volID1 := createDockerID ("vol-starter-test-resilientsingle-default1-" )
159+ createDockerVolume (t , volID1 )
160+ defer removeDockerVolume (t , volID1 )
161+
162+ volID2 := createDockerID ("vol-starter-test-resilientsingle-default2-" )
163+ createDockerVolume (t , volID2 )
164+ defer removeDockerVolume (t , volID2 )
165+
166+ volID3 := createDockerID ("vol-starter-test-resilientsingle-default3-" )
167+ createDockerVolume (t , volID3 )
168+ defer removeDockerVolume (t , volID3 )
169+
170+ // Cleanup of left over tests
171+ removeDockerContainersByLabel (t , "starter-test=true" )
172+ removeStarterCreatedDockerContainers (t )
173+
174+ start := time .Now ()
175+
176+ cID1 := createDockerID ("starter-test-resilientsingle-default1-" )
177+ dockerRun1 := Spawn (t , strings .Join ([]string {
178+ "docker run -i" ,
179+ "--label starter-test=true" ,
180+ "--name=" + cID1 ,
181+ "--rm" ,
182+ fmt .Sprintf ("-p %d:%d" , basePort , basePort ),
183+ fmt .Sprintf ("-v %s:/data" , volID1 ),
184+ "-v /var/run/docker.sock:/var/run/docker.sock" ,
185+ "arangodb/arangodb-starter" ,
186+ "--docker.container=" + cID1 ,
187+ "--starter.address=$IP" ,
188+ "--starter.mode=resilientsingle" ,
189+ createEnvironmentStarterOptions (),
190+ }, " " ))
191+ defer dockerRun1 .Close ()
192+ defer removeDockerContainer (t , cID1 )
193+
194+ cID2 := createDockerID ("starter-test-resilientsingle-default2-" )
195+ dockerRun2 := Spawn (t , strings .Join ([]string {
196+ "docker run -i" ,
197+ "--label starter-test=true" ,
198+ "--name=" + cID2 ,
199+ "--rm" ,
200+ fmt .Sprintf ("-p %d:%d" , basePort + 5 , basePort ),
201+ fmt .Sprintf ("-v %s:/data" , volID2 ),
202+ "-v /var/run/docker.sock:/var/run/docker.sock" ,
203+ "arangodb/arangodb-starter" ,
204+ "--docker.container=" + cID2 ,
205+ "--starter.address=$IP" ,
206+ "--starter.mode=resilientsingle" ,
207+ createEnvironmentStarterOptions (),
208+ fmt .Sprintf ("--starter.join=$IP:%d" , basePort ),
209+ }, " " ))
210+ defer dockerRun2 .Close ()
211+ defer removeDockerContainer (t , cID2 )
212+
106213 cID3 := createDockerID ("starter-test-resilientsingle-default3-" )
107214 dockerRun3 := Spawn (t , strings .Join ([]string {
108215 "docker run -i" ,
0 commit comments