Index: trunk/autoquest-httpmonitor-test/src/test/java/de/ugoe/cs/autoquest/httpmonitor/HttpMonitoringProxyTest.java
===================================================================
--- trunk/autoquest-httpmonitor-test/src/test/java/de/ugoe/cs/autoquest/httpmonitor/HttpMonitoringProxyTest.java	(revision 1561)
+++ trunk/autoquest-httpmonitor-test/src/test/java/de/ugoe/cs/autoquest/httpmonitor/HttpMonitoringProxyTest.java	(revision 1563)
@@ -443,4 +443,95 @@
         assertNotNull(exchange.getResponse().getContent().getData());
     }
+    
+    @Test
+    public void test_LargeRequest_Local() throws Exception {
+        proxy = new HttpMonitoringProxy
+            (new String[] { LOG_FILE_DIR, PROXY_PORT + "", "localhost:" + DUMMY_SERVER_PORT,
+                            "local" });
+
+        proxy.init();
+        proxy.start();
+        
+        StringBuffer message = new StringBuffer();
+        StringBuffer expectedResponse = new StringBuffer();
+        
+        for (int i = 0; i < 1000; i++) {
+            message.append(" # " + i + " test request data");
+            expectedResponse.append(" # " + i + " test response data");
+        }
+        
+        String response = sendDummyMessage("POST", message.toString(), expectedResponse.toString());
+        
+        assertEquals(expectedResponse.toString(), response);
+        
+        proxy.stop();
+        proxy = null;
+
+        File logFile = new File(LOG_FILE_DIR + File.separator + "httpmonitor_000.log");
+        
+        assertTrue(logFile.exists());
+        
+        HTTPLogParser parser = new HTTPLogParser();
+
+        parser.parseFile(logFile);
+
+        // check the sequences
+        Collection<List<Event>> sequences = parser.getSequences();
+
+        assertNotNull(sequences);
+
+        Iterator<List<Event>> iterator = sequences.iterator();
+        assertTrue(iterator.hasNext());
+
+        List<Event> sequence = iterator.next();
+        assertFalse(iterator.hasNext());
+
+        assertNotNull(sequence);
+        assertEquals(1, sequence.size());
+
+        assertEvent(sequence.get(0), "POST", message.toString(), expectedResponse.toString());
+    }
+
+    @Test
+    public void test_LargeRequest_Remote() throws Exception {
+        proxy = new HttpMonitoringProxy
+            (new String[] { LOG_FILE_DIR, PROXY_PORT + "",
+                            "localhost:" + DUMMY_SERVER_PORT, "localhost:" + MONITOR_PORT });
+
+        proxy.init();
+        proxy.start();
+        
+        
+        StringBuffer message = new StringBuffer();
+        StringBuffer expectedResponse = new StringBuffer();
+        
+        for (int i = 0; i < 1000; i++) {
+            message.append(" # " + i + " test request data");
+            expectedResponse.append(" # " + i + " test response data");
+        }
+        
+        String response = sendDummyMessage("POST", message.toString(), expectedResponse.toString());
+        
+        assertEquals(expectedResponse.toString(), response);
+        
+        // give the proxy some time to send the copy of the message
+        while(messages.size() < 1) {
+            Thread.sleep(1000);
+        }
+        
+        assertEquals(1, messages.size());
+        
+        JAXBContext jaxbContext = JAXBContext.newInstance(HttpExchange.class.getPackage().getName());
+        Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+        
+        @SuppressWarnings("unchecked")
+        JAXBElement<HttpExchange> jaxObject =
+            (JAXBElement<HttpExchange>) unmarshaller.unmarshal(new StringReader(messages.get(0)));
+        
+        HttpExchange exchange = jaxObject.getValue();
+        
+        assertEquals(message.toString(), exchange.getRequest().getContent().getData());
+        assertEquals(response.toString(), exchange.getResponse().getContent().getData());
+    }
 
     /**
