* @throws IntraceException 
	 */
	@Test
	public void canHoldIncompleteRequests() throws IntraceException {
		/**
		 * Request/thread 412, below, is complete.  See the Thread:run?
		 * However, request/thread 413 is incomplete, because there is no line with 413 and Thread:run
		 * This test validates that the events for 413 do not get sent.
		 */
		final String ONE_COMPLETE_AND_ONE_INCOMPLETE = 
			       "[08:36:43.885]:[412]:java.lang.Thread:run: {:682\n"
			     + "[08:36:43.885]:[412]:org.hsqldb.jdbc.jdbcConnection:prepareStatement: Arg: INSERT INTO Event (name, description, date, location) VALUES(?, ?, ?, ?)\n"
			     + "[08:36:43.885]:[412]:java.lang.Thread:run: }:682\n"
			     + "[08:36:43.885]:[413]:org.hsqldb.jdbc.jdbcConnection:prepareStatement: Arg: INSERT INTO Event (name, description, date, location) VALUES(?, ?, ?, ?)\n";
				
		List<ITraceEvent> events = TestUtil.createEvents(ONE_COMPLETE_AND_ONE_INCOMPLETE);
		IRequestSeparator requestSeparator = DefaultFactory.getFactory().getRequestSeparator();
		IncludeThisEventFilterExt methodFilter = new IncludeThisEventFilterExt();
		methodFilter.setFilterCriteria(m_requestCompletionEvent);
		requestSeparator.setRequestStartFilter( new IncludeThisEventFilterExt(this.m_requestStartEvent));
		
		requestSeparator.setRequestCompletionFilter(methodFilter);
		
		//requestSeparator.setRequestCompletionEvent(m_requestCompletionEvent);//Whenever this particular event first, that marks the end of a thread/request.
		
		m_completedRequests.clear();
		ICompletedRequestCallback requestCallback = new ICompletedRequestCallback() {
			
			@Override
			public void requestCompleted(IRequest events) {
				m_completedRequests.add(events);
			}
		};
		requestSeparator.setCompletedRequestCallback(requestCallback);
		
		//Simulate events from the InTrace server agent
		for(ITraceEvent e : events) {
			requestSeparator.add(e);
		}
		//We're expecting one event per request.  Each event will look like this:
		String rawEventText = "[08:36:43.885]:[419]:org.hsqldb.jdbc.jdbcConnection:prepareStatement: Arg: INSERT INTO Event (name, description, date, location) VALUES(?, ?, ?, ?)\n";
		ITraceEvent testEvent = 
				DefaultFactory.getFactory().getEventParser().createEvent(rawEventText, 0);
		IncludeThisEventFilterExt myTestFilter = new IncludeThisEventFilterExt();
		myTestFilter.setFilterCriteria(testEvent);
		
		assertEquals("Added a single complete request along with an event for an incomplete request.  Expecting just a single completed request", 1 , m_completedRequests.size());
		IRequest request = m_completedRequests.get(0);
		assertEquals("Expected one event for the single completed request", 1, request.getEvents().size());
			
		assertTrue("Expected a particular event type, class name and package", 
			myTestFilter.matches(request.getEvents().get(0)));
		assertEquals("Expected one event from a particular thread, but did not find that thread", "412", request.getEvents().get(0).getThreadId());
		assertEquals("Whoops. The RequestSeparator should not evicted one request, because it hadn't completed yet",1,requestSeparator.size());
	}