Package com.linkedin.databus.core.util.RateMonitor

Examples of com.linkedin.databus.core.util.RateMonitor.MockRateMonitor


  private void run_with_mock_timer(GoldenGateEventProducer gg)
  throws NoSuchFieldException,IllegalAccessException
  {
    RateControl rc = gg.getRateControl();

    MockRateMonitor mrm = new MockRateMonitor("mock");
    mrm.setNanoTime(0L);
    mrm.start();

    Field field = rc.getClass().getDeclaredField("_ra");
    field.setAccessible(true);
    field.set(rc, mrm);
  }
View Full Code Here


    // 2 events/sec, with duration for 1 sec
    RateControl rc = new RateControl(4,5);
    Assert.assertEquals(true, rc.isEnabled());

    long curTime = 0L;
    MockRateMonitor mrm = new MockRateMonitor("mock");
    mrm.setNanoTime(curTime);
    mrm.start();

    Field field = rc.getClass().getDeclaredField("_ra");
    field.setAccessible(true);
    field.set(rc, mrm);

    // Current time = 10ns. No event is in so far.
    curTime = 10L;
    mrm.setNanoTime(curTime);
    Assert.assertEquals(false, rc.checkExpired());
    Assert.assertEquals(false, rc.checkRateExceeded());

    // Event #1. Accept the event, but sleep until 0.25secs
    long tc = rc.incrementEventCount();
    Assert.assertEquals(tc, 1);
    Assert.assertEquals(false, rc.checkExpired());
    Assert.assertEquals(false, rc.checkRateExceeded());

    // Set Current time as ( 0.5s - 10ns ). Rate has been met
    curTime = (DbusConstants.NUM_NSECS_IN_SEC/2) - 10L;
    mrm.setNanoTime(curTime);
    Assert.assertEquals(false, rc.checkExpired());
    Assert.assertEquals(false, rc.checkRateExceeded());
    tc = rc.incrementEventCount();
    Assert.assertEquals(tc, 2);
   
    // Set Current time as ( 0.5s ). Rate has been met
    curTime = (DbusConstants.NUM_NSECS_IN_SEC/2);
    mrm.setNanoTime(curTime);
    Assert.assertEquals(false, rc.checkExpired());
    Assert.assertEquals(false, rc.checkRateExceeded());

    // Rate has fallen below accepted threshold
    curTime = (DbusConstants.NUM_NSECS_IN_SEC/2) + 10L;
    mrm.setNanoTime(curTime);
    Assert.assertEquals(false, rc.checkExpired());
    Assert.assertEquals(false, rc.checkRateExceeded());

    // Event #3
    tc = rc.incrementEventCount();
View Full Code Here

  @Test
  public void testIncrementEventCount() throws Exception
  {
    RateControl rc = new RateControl(2,1);
    MockRateMonitor mrm = new MockRateMonitor("mock");
    mrm.setNanoTime(0L);
    mrm.start();

    Field field = rc.getClass().getDeclaredField("_ra");
    field.setAccessible(true);
    field.set(rc, mrm);

    // #events=1, #time=2ns. Event accepted, rate exceeded
    long expWakeupTime = DbusConstants.NUM_NSECS_IN_SEC /2;
    long tc = rc.incrementEventCount();
    Assert.assertEquals(tc, 1L);
    Assert.assertEquals(rc.getNumSleeps(),1);
    Assert.assertEquals(mrm.getNanoTime(),expWakeupTime);

    // #events=1, #time=0.5s + 1. Event accepted, rate not exceeded
    long curTime = expWakeupTime + 1;
    mrm.setNanoTime(curTime);
    tc = rc.incrementEventCount();
    Assert.assertEquals(tc, 2L);
    Assert.assertEquals(rc.getNumSleeps(),2);
   
    // it is DbusConstants.NUM_NSECS_IN_SEC+1, instead of DbusConstants.NUM_NSECS_IN_SEC because of approximating sleeps to a ms
    Assert.assertEquals(DbusConstants.NUM_NSECS_IN_SEC+1, mrm.getNanoTime());
  }
View Full Code Here

    Assert.assertEquals(expired, rc2.checkExpired());

    RateControl rc = new RateControl(10,1);
    Assert.assertEquals(true, rc.isEnabled());
    long curTime = 0L;
    MockRateMonitor mrm = new MockRateMonitor("mock");
    mrm.setNanoTime(curTime);
    mrm.start();
    Field field2 = rc.getClass().getDeclaredField("_ra");
    field2.setAccessible(true);
    field2.set(rc, mrm);
     
    curTime = (1L * DbusConstants.NUM_NSECS_IN_SEC) - 10;
    mrm.setNanoTime(curTime);
    Assert.assertEquals(rc.checkExpired(), false);

    curTime = (1L * DbusConstants.NUM_NSECS_IN_SEC);
    mrm.setNanoTime(curTime);
    Assert.assertEquals(rc.checkExpired(), true);

    curTime = (1L * DbusConstants.NUM_NSECS_IN_SEC) + 10;
    mrm.setNanoTime(curTime);
    Assert.assertEquals(rc.checkExpired(), true);
  }
View Full Code Here

  public void testRateExceeded() throws Exception
  {
    RateControl rc = new RateControl(10,1);
    Assert.assertEquals(true, rc.isEnabled());
    long curTime = 0L;
    MockRateMonitor mrm = new MockRateMonitor("mock");
    mrm.setNanoTime(curTime);
    mrm.start();

    Field field = rc.getClass().getDeclaredField("_ra");
    field.setAccessible(true);
    field.set(rc, mrm);
     
    curTime = (1L * DbusConstants.NUM_NSECS_IN_SEC) - 10 ;
    mrm.ticks(10L);
    mrm.setNanoTime(curTime);
    Assert.assertEquals(true, rc.checkRateExceeded());

    curTime = (1L * DbusConstants.NUM_NSECS_IN_SEC);
    mrm.setNanoTime(curTime);
    Assert.assertEquals(false, rc.checkRateExceeded());

    curTime = (1L * DbusConstants.NUM_NSECS_IN_SEC);
    mrm.setNanoTime(curTime);
    Assert.assertEquals(false, rc.checkRateExceeded());

    return;
  }
View Full Code Here

  public void testComputeSleepDuration() throws Exception
  {
    RateControl rc = new RateControl(10,1);
    Assert.assertEquals(true, rc.isEnabled());
    long curTime = 0L;
    MockRateMonitor mrm = new MockRateMonitor("mock");
    mrm.setNanoTime(curTime);
    mrm.start();

    Field field = rc.getClass().getDeclaredField("_ra");
    field.setAccessible(true);
    field.set(rc, mrm);
   
    curTime = (1L * DbusConstants.NUM_NSECS_IN_SEC) - 10 ;
    mrm.ticks(10L);
    mrm.setNanoTime(curTime);
    Assert.assertEquals(10, rc.computeSleepDuration());

    curTime = (1L * DbusConstants.NUM_NSECS_IN_SEC) ;
    mrm.setNanoTime(curTime);
    Assert.assertEquals(0, rc.computeSleepDuration());

    curTime = (1L * DbusConstants.NUM_NSECS_IN_SEC) + 10 ;
    mrm.setNanoTime(curTime);
    Assert.assertEquals(0, rc.computeSleepDuration());

    return;
  }
View Full Code Here

TOP

Related Classes of com.linkedin.databus.core.util.RateMonitor.MockRateMonitor

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.