Пример #1
0
  @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();
    }
  }
Пример #2
0
 @Test(enabled = true && !DEBUG, timeOut = NANO_SCHEDULE_MAX_RUNTIME)
 public void testShutdown() throws InterruptedException {
   final NanoScheduler<Integer, Integer, Integer> nanoScheduler =
       new NanoScheduler<Integer, Integer, Integer>(1, 2);
   Assert.assertFalse(nanoScheduler.isShutdown(), "scheduler should be alive");
   nanoScheduler.shutdown();
   Assert.assertTrue(nanoScheduler.isShutdown(), "scheduler should be dead");
 }
Пример #3
0
    public NanoScheduler<Integer, Integer, Integer> makeScheduler() {
      final NanoScheduler<Integer, Integer, Integer> nano;
      if (bufferSize == -1) nano = new NanoScheduler<Integer, Integer, Integer>(nThreads);
      else nano = new NanoScheduler<Integer, Integer, Integer>(bufferSize, nThreads);

      nano.setDebug(debug);
      return nano;
    }
Пример #4
0
 @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());
 }
Пример #5
0
  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();
  }
Пример #6
0
 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());
 }
Пример #7
0
  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();
  }