@Test(timeout = 350)
	public void testReceiveMultipleDiscardOldest() {
		int noOfMessages = 5;
		int queueSize = 2;
		try {
			consumer = new AbstractMessageConsumer(mockTopic, queueSize,
					MessageDiscardPolicy.DiscardOldest) {
			};
			assertNotNull(mockTopic.getTopicSubscriber());
			HashSet<Message> messages = new HashSet<Message>();

			for (int i = 0; i < noOfMessages; i++) {
				Message msg = new MockMessage("TestMessage" + i);
				// Insert only last few messages
				if (i > noOfMessages - queueSize - 1)
					messages.add(msg);
				mockTopic.getTopicSubscriber().onMessage(msg);
			}
			for (int i = 0; i < noOfMessages; i++) {
				FutureTask<Message> future = getMessageFuture(consumer, 100);
				Message received = future.get(110, TimeUnit.MILLISECONDS);
				// First two messages should expected messages, last two
				if (i < queueSize) {
					assertNotNull("Received message is null ", received);
					assertTrue("Unexpected message found",
							messages.remove(received));
				} else {
					// Rest should be null
					assertNull("Unexpected message found, message not null",
							received);
				}
			}
		} catch (TimeoutException e) {
			fail("Timeout did not happen on receive method");
		} catch (Exception e) {
			logger.error("Error while calling receiving message", e);
			fail("Error while calling onMessage:" + e.getMessage());
		}
	}