private void testNanoScheduler(final NanoSchedulerBasicTest test) throws InterruptedException { final SimpleTimer timer = new SimpleTimer().start(); final NanoScheduler<Integer, Integer, Integer> nanoScheduler = test.makeScheduler(); final ProgressCallback callback = new ProgressCallback(); nanoScheduler.setProgressFunction(callback); if (test.bufferSize > -1) Assert.assertEquals(nanoScheduler.getBufferSize(), test.bufferSize, "bufferSize argument"); Assert.assertEquals(nanoScheduler.getnThreads(), test.nThreads, "nThreads argument"); final Integer sum = nanoScheduler.execute( test.makeReader(), test.makeMap(), test.initReduce(), test.makeReduce()); Assert.assertNotNull(sum); Assert.assertEquals( (int) sum, test.expectedResult, "NanoScheduler sum not the same as calculated directly"); Assert.assertTrue( callback.callBacks >= test.nExpectedCallbacks(), "Not enough callbacks detected. Expected at least " + test.nExpectedCallbacks() + " but saw only " + callback.callBacks); nanoScheduler.shutdown(); }