
Author: ceki Date: Fri Oct 31 11:07:57 2008 New Revision: 1925 Added: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/testUtil/RandomUtil.java Modified: logback/trunk/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyBasicTest.java logback/trunk/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyFixture.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockSyslogServer.java Log: - use random ports for tests to reduce the probability in LINGERING ports between successive runs Modified: logback/trunk/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyBasicTest.java ============================================================================== --- logback/trunk/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyBasicTest.java (original) +++ logback/trunk/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyBasicTest.java Fri Oct 31 11:07:57 2008 @@ -15,31 +15,34 @@ import ch.qos.logback.access.spi.AccessEvent; import ch.qos.logback.access.spi.Util; import ch.qos.logback.access.testUtil.NotifyingListAppender; +import ch.qos.logback.core.testUtil.RandomUtil; public class JettyBasicTest { - static RequestLogImpl requestLogImpl; - static JettyFixture fixture; + static RequestLogImpl REQYEST_LOG_IMPL; + static JettyFixture JETTY_FIXTURE; + static int RANDOM_SERVER_PORT = RandomUtil.getRandomServerPort(); + @BeforeClass static public void startServer() throws Exception { // System.out.println("*** JettyBasicTest.startServer called"); - requestLogImpl = new RequestLogImpl(); - JettyFixture fixture = new JettyFixture(requestLogImpl); - fixture.start(); + REQYEST_LOG_IMPL = new RequestLogImpl(); + JETTY_FIXTURE = new JettyFixture(REQYEST_LOG_IMPL, RANDOM_SERVER_PORT); + JETTY_FIXTURE.start(); } @AfterClass static public void stopServer() throws Exception { // System.out.println("*** JettyBasicTest.stopServer called"); - if (fixture != null) { - fixture.stop(); + if (JETTY_FIXTURE != null) { + JETTY_FIXTURE.stop(); } } @Test public void getRequest() throws Exception { - URL url = new URL("http://localhost:" + JettyFixture.PORT + "/"); + URL url = new URL("http://localhost:" + RANDOM_SERVER_PORT + "/"); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); @@ -47,14 +50,14 @@ assertEquals("hello world", result); - NotifyingListAppender listAppender = (NotifyingListAppender) requestLogImpl + NotifyingListAppender listAppender = (NotifyingListAppender) REQYEST_LOG_IMPL .getAppender("list"); listAppender.list.clear(); } @Test public void eventGoesToAppenders() throws Exception { - URL url = new URL("http://localhost:" + JettyFixture.PORT + "/"); + URL url = new URL(JETTY_FIXTURE.getUrl()); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setDoInput(true); @@ -62,7 +65,7 @@ assertEquals("hello world", result); - NotifyingListAppender listAppender = (NotifyingListAppender) requestLogImpl + NotifyingListAppender listAppender = (NotifyingListAppender) REQYEST_LOG_IMPL .getAppender("list"); synchronized (listAppender) { listAppender.wait(100); @@ -77,8 +80,7 @@ @Test public void postContentConverter() throws Exception { - // System.out.println("into test"); - URL url = new URL("http://localhost:" + JettyFixture.PORT + "/"); + URL url = new URL(JETTY_FIXTURE.getUrl()); String msg = "test message"; HttpURLConnection connection = (HttpURLConnection) url.openConnection(); @@ -99,7 +101,7 @@ // StatusPrinter.print(requestLogImpl.getStatusManager()); - NotifyingListAppender listAppender = (NotifyingListAppender) requestLogImpl + NotifyingListAppender listAppender = (NotifyingListAppender) REQYEST_LOG_IMPL .getAppender("list"); synchronized (listAppender) { Modified: logback/trunk/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyFixture.java ============================================================================== --- logback/trunk/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyFixture.java (original) +++ logback/trunk/logback-access/src/test/java/ch/qos/logback/access/jetty/JettyFixture.java Fri Oct 31 11:07:57 2008 @@ -26,25 +26,28 @@ public class JettyFixture { RequestLogImpl requestLogImpl; - public static final int PORT = 1234; + private final int port; + Server server; + String url; - public JettyFixture(RequestLogImpl impl) { + public JettyFixture(RequestLogImpl impl, int port) { requestLogImpl = impl; + this.port = port; + url = "http://localhost:" + port + "/"; } public String getName() { return "Jetty Test Setup"; } - Server server; - String url = "http://localhost:" + PORT + "/"; + public String getUrl() { + return url; + } public void start() throws Exception { - // System.out.println("into setUp"); - server = new Server(); Connector connector = new SelectChannelConnector(); - connector.setPort(PORT); + connector.setPort(port); server.setConnectors(new Connector[] { connector }); ContextHandler context = new ContextHandler(); Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java ============================================================================== --- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java (original) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/SyslogAppenderTest.java Fri Oct 31 11:07:57 2008 @@ -24,6 +24,7 @@ import ch.qos.logback.classic.net.mock.MockSyslogServer; import ch.qos.logback.core.joran.spi.JoranException; import ch.qos.logback.core.net.SyslogConstants; +import ch.qos.logback.core.testUtil.RandomUtil; import ch.qos.logback.core.util.StatusPrinter; public class SyslogAppenderTest { @@ -38,8 +39,8 @@ @Test public void basic() throws InterruptedException { - int port = MockSyslogServer.PORT + 1; - + int port = RandomUtil.getRandomServerPort(); + MockSyslogServer mockServer = new MockSyslogServer(1, port); mockServer.start(); // give MockSyslogServer head start @@ -83,7 +84,8 @@ @Test public void tException() throws InterruptedException { - int port = MockSyslogServer.PORT + 2; + int port = RandomUtil.getRandomServerPort(); + MockSyslogServer mockServer = new MockSyslogServer(21, port); mockServer.start(); // give MockSyslogServer head start Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockSyslogServer.java ============================================================================== --- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockSyslogServer.java (original) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/net/mock/MockSyslogServer.java Fri Oct 31 11:07:57 2008 @@ -20,8 +20,6 @@ */ public class MockSyslogServer extends Thread { - public static final int PORT = 14500; - final int loopLen; final int port; Added: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/testUtil/RandomUtil.java ============================================================================== --- (empty file) +++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/testUtil/RandomUtil.java Fri Oct 31 11:07:57 2008 @@ -0,0 +1,24 @@ +/** + * Logback: the generic, reliable, fast and flexible logging framework. + * + * Copyright (C) 2000-2008, QOS.ch + * + * This library is free software, you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation. + */ +package ch.qos.logback.core.testUtil; + +import java.util.Random; + +public class RandomUtil { + + private static Random random = new Random(); + + public static int getRandomServerPort() { + int r = random.nextInt(20000); + // the first 1024 ports are usually reserved for the OS + return r + 1024; + } + +}