@Test( enabled = true && !DEBUG, dataProvider = "NanoSchedulerBasicTest", dependsOnMethods = "testMultiThreadedNanoScheduler", timeOut = NANO_SCHEDULE_MAX_RUNTIME) public void testNanoSchedulerInLoop(final NanoSchedulerBasicTest test) throws InterruptedException { if (test.bufferSize > 1) { logger.warn("Running " + test); final NanoScheduler<Integer, Integer, Integer> nanoScheduler = test.makeScheduler(); // test reusing the scheduler for (int i = 0; i < 10; i++) { 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"); } nanoScheduler.shutdown(); } }
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(); }
private void executeTestErrorThrowingInput( final int nElementsBeforeError, final Throwable ex, final NanoSchedulerBasicTest test, final boolean addDelays) { logger.warn( "executeTestErrorThrowingInput " + nElementsBeforeError + " ex=" + ex + " test=" + test + " addInputDelays=" + addDelays); final NanoScheduler<Integer, Integer, Integer> nanoScheduler = test.makeScheduler(); nanoScheduler.execute( new ErrorThrowingIterator(nElementsBeforeError, ex, addDelays), test.makeMap(), test.initReduce(), test.makeReduce()); }