| /* |
| * Copyright 2013 akquinet tech@spree GmbH |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package de.akquinet.devops; |
| |
| import java.io.IOException; |
| import java.io.OutputStream; |
| import java.net.InetAddress; |
| import java.net.Socket; |
| import java.net.UnknownHostException; |
| |
| import junit.framework.Assert; |
| |
| import org.junit.Test; |
| |
| import com.gitblit.Constants; |
| |
| /** |
| * This test checks if it is possible to run two server instances in the same |
| * JVM sequentially |
| * |
| * @author saheba |
| * |
| */ |
| public class LaunchWithUITestConfig { |
| |
| @Test |
| public void testSequentialLaunchOfSeveralInstances() |
| throws InterruptedException { |
| // different ports than in testParallelLaunchOfSeveralInstances to |
| // ensure that both test cases do not affect each others test results |
| int httpPort = 9191, httpsPort = 9292, shutdownPort = 9393; |
| String gitblitPropertiesPath = "src/test/config/test-ui-gitblit.properties", |
| usersPropertiesPath = "src/test/config/test-ui-users.conf"; |
| |
| GitblitRunnable gitblitRunnable = new GitblitRunnable(httpPort, |
| httpsPort, shutdownPort, gitblitPropertiesPath, |
| usersPropertiesPath); |
| Thread serverThread = new Thread(gitblitRunnable); |
| serverThread.start(); |
| Thread.sleep(2000); |
| Assert.assertFalse(gitblitRunnable.isStartFailed()); |
| LaunchWithUITestConfig.shutdownGitBlitServer(shutdownPort); |
| |
| Thread.sleep(5000); |
| |
| GitblitRunnable gitblitRunnable2 = new GitblitRunnable(httpPort, |
| httpsPort, shutdownPort, gitblitPropertiesPath, |
| usersPropertiesPath); |
| Thread serverThread2 = new Thread(gitblitRunnable2); |
| serverThread2.start(); |
| Thread.sleep(2000); |
| Assert.assertFalse(gitblitRunnable2.isStartFailed()); |
| LaunchWithUITestConfig.shutdownGitBlitServer(shutdownPort); |
| } |
| |
| @Test |
| public void testParallelLaunchOfSeveralInstances() |
| throws InterruptedException { |
| // different ports than in testSequentialLaunchOfSeveralInstances to |
| // ensure that both test cases do not affect each others test results |
| int httpPort = 9797, httpsPort = 9898, shutdownPort = 9999; |
| int httpPort2 = 9494, httpsPort2 = 9595, shutdownPort2 = 9696; |
| String gitblitPropertiesPath = "src/test/config/test-ui-gitblit.properties", |
| usersPropertiesPath = "src/test/config/test-ui-users.conf"; |
| |
| GitblitRunnable gitblitRunnable = new GitblitRunnable(httpPort, |
| httpsPort, shutdownPort, gitblitPropertiesPath, |
| usersPropertiesPath); |
| Thread serverThread = new Thread(gitblitRunnable); |
| serverThread.start(); |
| Thread.sleep(2000); |
| Assert.assertFalse(gitblitRunnable.isStartFailed()); |
| |
| GitblitRunnable gitblitRunnable2 = new GitblitRunnable(httpPort2, |
| httpsPort2, shutdownPort2, gitblitPropertiesPath, |
| usersPropertiesPath); |
| Thread serverThread2 = new Thread(gitblitRunnable2); |
| serverThread2.start(); |
| Thread.sleep(2000); |
| Assert.assertFalse(gitblitRunnable2.isStartFailed()); |
| |
| LaunchWithUITestConfig.shutdownGitBlitServer(shutdownPort); |
| LaunchWithUITestConfig.shutdownGitBlitServer(shutdownPort2); |
| } |
| |
| /** |
| * main runs the tests without assert checks. You have to check the console |
| * output manually. |
| * |
| * @param args |
| * @throws InterruptedException |
| */ |
| public static void main(String[] args) throws InterruptedException { |
| new LaunchWithUITestConfig().testSequentialLaunchOfSeveralInstances(); |
| new LaunchWithUITestConfig().testParallelLaunchOfSeveralInstances(); |
| } |
| |
| private static void shutdownGitBlitServer(int shutdownPort) { |
| try { |
| Socket s = new Socket(InetAddress.getByName("127.0.0.1"), |
| shutdownPort); |
| OutputStream out = s.getOutputStream(); |
| System.out.println("Sending Shutdown Request to " + Constants.NAME); |
| out.write("\r\n".getBytes()); |
| out.flush(); |
| s.close(); |
| } catch (UnknownHostException e) { |
| e.printStackTrace(); |
| } catch (IOException e) { |
| e.printStackTrace(); |
| } |
| } |
| } |