New file |
| | |
| | | /* |
| | | * 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(); |
| | | } |
| | | } |
| | | } |