[logback-dev] svn commit: r1902 - in logback/trunk/logback-access/src/test/java/ch/qos/logback/access: jetty testUtil
noreply.ceki at qos.ch
noreply.ceki at qos.ch
Wed Oct 29 15:12:39 CET 2008
Author: ceki
Date: Wed Oct 29 15:12:39 2008
New Revision: 1902
Added:
logback/trunk/logback-access/src/test/java/ch/qos/logback/access/testUtil/
logback/trunk/logback-access/src/test/java/ch/qos/logback/access/testUtil/NotifyingListAppender.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
Log:
reduce the probability of JettyBasicTest failing
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 Wed Oct 29 15:12:39 2008
@@ -1,6 +1,7 @@
package ch.qos.logback.access.jetty;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
@@ -13,69 +14,76 @@
import ch.qos.logback.access.spi.AccessEvent;
import ch.qos.logback.access.spi.Util;
-import ch.qos.logback.core.read.ListAppender;
+import ch.qos.logback.access.testUtil.NotifyingListAppender;
-public class JettyBasicTest {
+public class JettyBasicTest {
static RequestLogImpl requestLogImpl;
static JettyFixture fixture;
-
+
@BeforeClass
static public void startServer() throws Exception {
- //System.out.println("*** JettyBasicTest.startServer called");
+ // System.out.println("*** JettyBasicTest.startServer called");
requestLogImpl = new RequestLogImpl();
JettyFixture fixture = new JettyFixture(requestLogImpl);
fixture.start();
}
-
+
@AfterClass
- static public void stopServer() throws Exception {
- //System.out.println("*** JettyBasicTest.stopServer called");
- if(fixture != null) {
+ static public void stopServer() throws Exception {
+ // System.out.println("*** JettyBasicTest.stopServer called");
+ if (fixture != null) {
fixture.stop();
}
}
-
+
@Test
- public void teztGetRequest() throws Exception {
- URL url = new URL("http://localhost:"+ JettyFixture.PORT + "/");
+ public void getRequest() throws Exception {
+ URL url = new URL("http://localhost:" + JettyFixture.PORT + "/");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
String result = Util.readToString(connection.getInputStream());
- assertEquals("hello world", result);
+ assertEquals("hello world", result);
- ListAppender appender = (ListAppender) requestLogImpl.getAppender("list");
- appender.list.clear();
+ NotifyingListAppender listAppender = (NotifyingListAppender) requestLogImpl
+ .getAppender("list");
+ listAppender.list.clear();
}
@Test
- public void teztEventGoesToAppenders() throws Exception {
- URL url = new URL("http://localhost:"+ JettyFixture.PORT + "/");
+ public void eventGoesToAppenders() throws Exception {
+ URL url = new URL("http://localhost:" + JettyFixture.PORT + "/");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setDoInput(true);
String result = Util.readToString(connection.getInputStream());
assertEquals("hello world", result);
- //Thread.sleep(100);
- ListAppender appender = (ListAppender) requestLogImpl.getAppender("list");
- assertTrue(appender.list.size()>0);
- AccessEvent event = (AccessEvent) appender.list.get(0);
+
+ NotifyingListAppender listAppender = (NotifyingListAppender) requestLogImpl
+ .getAppender("list");
+ synchronized (listAppender) {
+ listAppender.wait(100);
+ }
+
+ assertTrue(listAppender.list.size() > 0);
+ AccessEvent event = (AccessEvent) listAppender.list.get(0);
assertEquals("127.0.0.1", event.getRemoteHost());
assertEquals("localhost", event.getServerName());
- appender.list.clear();
+ listAppender.list.clear();
}
@Test
- public void teztPostContentConverter() throws Exception {
- //System.out.println("into test");
- URL url = new URL("http://localhost:"+ JettyFixture.PORT + "/");
+ public void postContentConverter() throws Exception {
+ // System.out.println("into test");
+ URL url = new URL("http://localhost:" + JettyFixture.PORT + "/");
String msg = "test message";
-
+
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
- //this line is necessary to make the stream aware of when the message is over.
+ // this line is necessary to make the stream aware of when the message is
+ // over.
connection.setFixedLengthStreamingMode(msg.getBytes().length);
((HttpURLConnection) connection).setRequestMethod("POST");
connection.setDoOutput(true);
@@ -83,7 +91,6 @@
connection.setUseCaches(false);
connection.setRequestProperty("Content-Type", "text/plain");
-
PrintWriter output = new PrintWriter(new OutputStreamWriter(connection
.getOutputStream()));
output.print(msg);
@@ -92,12 +99,16 @@
// StatusPrinter.print(requestLogImpl.getStatusManager());
- ListAppender listAppender = (ListAppender) requestLogImpl
+ NotifyingListAppender listAppender = (NotifyingListAppender) requestLogImpl
.getAppender("list");
- Thread.sleep(100);
+
+ synchronized (listAppender) {
+ listAppender.wait(100);
+ }
+
@SuppressWarnings("unused")
AccessEvent event = (AccessEvent) listAppender.list.get(0);
-
+
// we should test the contents of the requests
// assertEquals(msg, event.getRequestContent());
}
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 Wed Oct 29 15:12:39 2008
@@ -20,8 +20,8 @@
import ch.qos.logback.access.PatternLayout;
import ch.qos.logback.access.spi.AccessEvent;
+import ch.qos.logback.access.testUtil.NotifyingListAppender;
import ch.qos.logback.core.ConsoleAppender;
-import ch.qos.logback.core.read.ListAppender;
public class JettyFixture {
RequestLogImpl requestLogImpl;
@@ -76,7 +76,7 @@
private void buildContext() {
- ListAppender<AccessEvent> appender = new ListAppender<AccessEvent>();
+ NotifyingListAppender appender = new NotifyingListAppender();
appender.setContext(requestLogImpl);
appender.setName("list");
appender.start();
Added: logback/trunk/logback-access/src/test/java/ch/qos/logback/access/testUtil/NotifyingListAppender.java
==============================================================================
--- (empty file)
+++ logback/trunk/logback-access/src/test/java/ch/qos/logback/access/testUtil/NotifyingListAppender.java Wed Oct 29 15:12:39 2008
@@ -0,0 +1,28 @@
+/**
+ * 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.access.testUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import ch.qos.logback.access.spi.AccessEvent;
+import ch.qos.logback.core.AppenderBase;
+
+public class NotifyingListAppender extends AppenderBase<AccessEvent> {
+
+ public List<AccessEvent> list = new ArrayList<AccessEvent>();
+
+ protected void append(AccessEvent e) {
+ list.add(e);
+ synchronized (this) {
+ this.notify();
+ }
+ }
+}
More information about the logback-dev
mailing list