@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(); }
@Test( enabled = true && !DEBUG, expectedExceptions = IllegalStateException.class, timeOut = NANO_SCHEDULE_MAX_RUNTIME) public void testShutdownExecuteFailure() throws InterruptedException { final NanoScheduler<Integer, Integer, Integer> nanoScheduler = new NanoScheduler<Integer, Integer, Integer>(1, 2); nanoScheduler.shutdown(); nanoScheduler.execute( exampleTest.makeReader(), exampleTest.makeMap(), exampleTest.initReduce(), exampleTest.makeReduce()); }
public static void main(String[] args) { org.apache.log4j.Logger logger = org.apache.log4j.Logger.getRootLogger(); BasicConfigurator.configure(); logger.setLevel(org.apache.log4j.Level.DEBUG); final NanoSchedulerBasicTest test = new NanoSchedulerBasicTest( 1000, Integer.valueOf(args[0]), 0, Integer.valueOf(args[1]), false); final NanoScheduler<Integer, Integer, Integer> nanoScheduler = new NanoScheduler<Integer, Integer, Integer>(test.bufferSize, test.nThreads); nanoScheduler.setDebug(true); final Integer sum = nanoScheduler.execute( test.makeReader(), test.makeMap(), test.initReduce(), test.makeReduce()); System.out.printf("Sum = %d, expected =%d%n", sum, test.expectedResult); nanoScheduler.shutdown(); }