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

	// Checks the correct behaviour of the pipeline in push mode, for
	// a processor of arity greater than 1
	Stopwatch sw = new Stopwatch();
	ExecutorService ex = Executors.newCachedThreadPool();
	SlowPassthrough spt = new SlowPassthrough(2, 100);
	PushPipeline pp = new PushPipeline(spt, ex);
	QueueSink qs = new QueueSink(2);
	Queue<Object> queue = qs.getQueue(0);
	Pushable p0 = pp.getPushableInput(0);
	Pushable p1 = pp.getPushableInput(1);
	Connector.connect(pp, qs);
	sw.start();
	for (int i = 0; i < 5; i++)
	{
		p0.push(i);
		p1.push(2 * i);
	}
	sw.stop();
	// Time to push 5 events smaller than a single blocking
	// call to push
	assertTrue(sw.getDuration() < 200);
	Stopwatch.sleep(400);
	// 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());
}