@@ -149,6 +149,140 @@ func TestDockerClusterDifferentLogDir(t *testing.T) {
149149 ShutdownStarter (t , insecureStarterEndpoint (1 * portIncrement ))
150150 ShutdownStarter (t , insecureStarterEndpoint (2 * portIncrement ))
151151
152+ check := func (rootDir string , expectedFileCount int ) {
153+ files , err := getRecursiveLogFiles (rootDir )
154+ if err != nil {
155+ t .Errorf ("Failed to get log files in %s: %v" , rootDir , err )
156+ } else if len (files ) != expectedFileCount {
157+ t .Errorf ("Expected %d log files in %s, got %d (%v)" , expectedFileCount , rootDir , len (files ), files )
158+ }
159+ }
160+ check (masterLogDir , 3 + 1 ) // +1 == arangodb.log (starter log)
161+ check (slave1LogDir , 3 + 1 )
162+ check (slave2LogDir , 3 + 1 )
163+ }
164+
165+ // TestDockerClusterDifferentLogDirNoLog2File runs 3 arangodb starters in docker with a custom log dir without writing
166+ // starter log to file.
167+ func TestDockerClusterDifferentLogDirNoLog2File (t * testing.T ) {
168+ needTestMode (t , testModeDocker )
169+ needStarterMode (t , starterModeCluster )
170+ if os .Getenv ("IP" ) == "" {
171+ t .Fatal ("IP envvar must be set to IP address of this machine" )
172+ }
173+ /*
174+ docker volume create arangodb1
175+ docker run -i --name=adb1 --rm -p 8528:8528 \
176+ -v arangodb1:/data \
177+ -v /var/run/docker.sock:/var/run/docker.sock \
178+ -v something:something \
179+ arangodb/arangodb-starter \
180+ --docker.container=adb1 \
181+ --starter.address=$IP
182+ --log.dir=something
183+ */
184+ volID1 := createDockerID ("vol-starter-test-cluster-default1-" )
185+ createDockerVolume (t , volID1 )
186+ defer removeDockerVolume (t , volID1 )
187+
188+ volID2 := createDockerID ("vol-starter-test-cluster-default2-" )
189+ createDockerVolume (t , volID2 )
190+ defer removeDockerVolume (t , volID2 )
191+
192+ volID3 := createDockerID ("vol-starter-test-cluster-default3-" )
193+ createDockerVolume (t , volID3 )
194+ defer removeDockerVolume (t , volID3 )
195+
196+ logDir , err := ioutil .TempDir ("" , "" )
197+ if err != nil {
198+ t .Fatalf ("TempDir failed: %v" , err )
199+ }
200+
201+ // Cleanup of left over tests
202+ removeDockerContainersByLabel (t , "starter-test=true" )
203+ removeStarterCreatedDockerContainers (t )
204+
205+ start := time .Now ()
206+
207+ masterLogDir := filepath .Join (logDir , "master" )
208+ cID1 := createDockerID ("starter-test-cluster-default1-" )
209+ dockerRun1 := Spawn (t , strings .Join ([]string {
210+ "docker run -i" ,
211+ "--label starter-test=true" ,
212+ "--name=" + cID1 ,
213+ "--rm" ,
214+ fmt .Sprintf ("-p %d:%d" , basePort , basePort ),
215+ fmt .Sprintf ("-v %s:/data" , volID1 ),
216+ fmt .Sprintf ("-v %s:%s" , masterLogDir , masterLogDir ),
217+ "-v /var/run/docker.sock:/var/run/docker.sock" ,
218+ "arangodb/arangodb-starter" ,
219+ "--docker.container=" + cID1 ,
220+ "--starter.address=$IP" ,
221+ "--log.file=false" ,
222+ "--log.dir=" + masterLogDir ,
223+ createEnvironmentStarterOptions (),
224+ }, " " ))
225+ defer dockerRun1 .Close ()
226+ defer removeDockerContainer (t , cID1 )
227+
228+ slave1LogDir := filepath .Join (logDir , "slave1" )
229+ cID2 := createDockerID ("starter-test-cluster-default2-" )
230+ dockerRun2 := Spawn (t , strings .Join ([]string {
231+ "docker run -i" ,
232+ "--label starter-test=true" ,
233+ "--name=" + cID2 ,
234+ "--rm" ,
235+ fmt .Sprintf ("-p %d:%d" , basePort + (1 * portIncrement ), basePort ),
236+ fmt .Sprintf ("-v %s:/data" , volID2 ),
237+ fmt .Sprintf ("-v %s:%s" , slave1LogDir , slave1LogDir ),
238+ "-v /var/run/docker.sock:/var/run/docker.sock" ,
239+ "arangodb/arangodb-starter" ,
240+ "--docker.container=" + cID2 ,
241+ "--starter.address=$IP" ,
242+ "--log.file=false" ,
243+ "--log.dir=" + slave1LogDir ,
244+ createEnvironmentStarterOptions (),
245+ fmt .Sprintf ("--starter.join=$IP:%d" , basePort ),
246+ }, " " ))
247+ defer dockerRun2 .Close ()
248+ defer removeDockerContainer (t , cID2 )
249+
250+ slave2LogDir := filepath .Join (logDir , "slave2" )
251+ cID3 := createDockerID ("starter-test-cluster-default3-" )
252+ dockerRun3 := Spawn (t , strings .Join ([]string {
253+ "docker run -i" ,
254+ "--label starter-test=true" ,
255+ "--name=" + cID3 ,
256+ "--rm" ,
257+ fmt .Sprintf ("-p %d:%d" , basePort + (2 * portIncrement ), basePort ),
258+ fmt .Sprintf ("-v %s:/data" , volID3 ),
259+ fmt .Sprintf ("-v %s:%s" , slave2LogDir , slave2LogDir ),
260+ "-v /var/run/docker.sock:/var/run/docker.sock" ,
261+ "arangodb/arangodb-starter" ,
262+ "--docker.container=" + cID3 ,
263+ "--starter.address=$IP" ,
264+ "--log.file=false" ,
265+ "--log.dir=" + slave2LogDir ,
266+ createEnvironmentStarterOptions (),
267+ fmt .Sprintf ("--starter.join=$IP:%d" , basePort ),
268+ }, " " ))
269+ defer dockerRun3 .Close ()
270+ defer removeDockerContainer (t , cID3 )
271+
272+ if ok := WaitUntilStarterReady (t , whatCluster , 3 , dockerRun1 , dockerRun2 , dockerRun3 ); ok {
273+ t .Logf ("Cluster start took %s" , time .Since (start ))
274+ testCluster (t , insecureStarterEndpoint (0 * portIncrement ), false )
275+ testCluster (t , insecureStarterEndpoint (1 * portIncrement ), false )
276+ testCluster (t , insecureStarterEndpoint (2 * portIncrement ), false )
277+ }
278+
279+ if isVerbose {
280+ t .Log ("Waiting for termination" )
281+ }
282+ ShutdownStarter (t , insecureStarterEndpoint (0 * portIncrement ))
283+ ShutdownStarter (t , insecureStarterEndpoint (1 * portIncrement ))
284+ ShutdownStarter (t , insecureStarterEndpoint (2 * portIncrement ))
285+
152286 check := func (rootDir string , expectedFileCount int ) {
153287 files , err := getRecursiveLogFiles (rootDir )
154288 if err != nil {
0 commit comments