@Test(timeout=10000)
public void pushTest1()
{

	Stopwatch sw = new Stopwatch();
	ExecutorService ex = Executors.newCachedThreadPool();
	SlowPassthrough spt = new SlowPassthrough(1, 200);
	PushPipeline pp = new PushPipeline(spt, ex);
	QueueSink qs = new QueueSink();
	Queue<Object> queue = qs.getQueue();
	Pushable p = pp.getPushableInput();
	Connector.connect(pp, qs);
	sw.start();
	for (int i = 0; i < 5; i++)
	{
		p.push(i);
	}
	sw.stop();
	// Time to push 5 events smaller than a single blocking
	// call to push
	assertTrue(sw.getDuration() < 200);
	Stopwatch.sleep(300);
	// After more than 200 ms, all 5 instances are done, proof that
	// they all waited in parallel
	assertQueueSize(5, 5, queue);
	assertEquals(0, queue.remove());
	assertEquals(1, queue.remove());
	assertEquals(2, queue.remove());
	assertEquals(3, queue.remove());
	assertEquals(4, queue.remove());
}