mirror of https://github.com/mchr3k/org.intrace
124 lines
5.3 KiB
Java
124 lines
5.3 KiB
Java
package org.intracetest.agent;
|
|
|
|
import static org.junit.Assert.assertEquals;
|
|
|
|
import java.util.concurrent.Delayed;
|
|
|
|
import org.intrace.output.BatchScheduler;
|
|
import org.intrace.output.IBatchSchedulerConfig;
|
|
import org.junit.Test;
|
|
|
|
public class DelayQueueBatchTest {
|
|
|
|
@Test
|
|
public void canCalculateDepartureTimes_currentInterval() {
|
|
|
|
final int INTERVAL = 250; // I N T E R V A L =======> Z E R O t o 2 4 9
|
|
final int DEPARTURE_TIME_MILLIS = INTERVAL;
|
|
IBatchSchedulerConfig config1 = new IBatchSchedulerConfig() {
|
|
@Override
|
|
public int getDrainInterval() {return INTERVAL;}
|
|
@Override
|
|
public int getDrainIntervalMultiplier() { return 1; }
|
|
};
|
|
|
|
//First milli of the interval
|
|
BatchScheduler batchScheduler = new BatchScheduler(0L, config1);
|
|
assertEquals("Departure time was not calculated correctcly", DEPARTURE_TIME_MILLIS, batchScheduler.getDepartureTimeMillis() );
|
|
|
|
//Last milli of the interval
|
|
batchScheduler = new BatchScheduler( (INTERVAL-1), config1);
|
|
assertEquals("Departure time was not calculated correctcly", DEPARTURE_TIME_MILLIS, batchScheduler.getDepartureTimeMillis() );
|
|
|
|
//First milli of subsequent interval
|
|
batchScheduler = new BatchScheduler( INTERVAL, config1);
|
|
assertEquals("Departure time was not calculated correctcly", 2*DEPARTURE_TIME_MILLIS, batchScheduler.getDepartureTimeMillis() );
|
|
|
|
}
|
|
@Test
|
|
public void canCalculateDepartureTimes_subsequentInterval() {
|
|
|
|
final int INTERVAL = 250; // I N T E R V A L =======> Z E R O t o 2 4 9
|
|
final int DEPARTURE = INTERVAL;
|
|
final int MULTIPLIER = 2;
|
|
IBatchSchedulerConfig config1 = new IBatchSchedulerConfig() {
|
|
@Override
|
|
public int getDrainInterval() {return INTERVAL;}
|
|
@Override
|
|
public int getDrainIntervalMultiplier() { return MULTIPLIER; }
|
|
};
|
|
|
|
BatchScheduler batchScheduler = new BatchScheduler(0L, config1);
|
|
assertEquals("Departure time was not calculated correctcly", MULTIPLIER*DEPARTURE, batchScheduler.getDepartureTimeMillis() );
|
|
|
|
batchScheduler = new BatchScheduler( (INTERVAL-1), config1);
|
|
assertEquals("Departure time was not calculated correctcly", MULTIPLIER*DEPARTURE, batchScheduler.getDepartureTimeMillis() );
|
|
|
|
batchScheduler = new BatchScheduler( INTERVAL, config1);
|
|
assertEquals("Departure time was not calculated correctcly", MULTIPLIER*DEPARTURE+INTERVAL, batchScheduler.getDepartureTimeMillis() );
|
|
|
|
}
|
|
|
|
IBatchSchedulerConfig config2 = new IBatchSchedulerConfig() {
|
|
@Override
|
|
public int getDrainInterval() {return 1000;}
|
|
@Override
|
|
public int getDrainIntervalMultiplier() { return 2; }
|
|
};
|
|
/**
|
|
* First num goes in one batch, 2nd two numbers go in the subsequent batch.
|
|
*/
|
|
@Test
|
|
public void canCalculateSubsequentBatchedDepartureTimes() {
|
|
BatchScheduler batchScheduler = new BatchScheduler(2352819999L, this.config2);
|
|
assertEquals("Departure time was not calculated correctcly", 2352821000L, batchScheduler.getDepartureTimeMillis() );
|
|
batchScheduler = new BatchScheduler(2352820000L, this.config2);
|
|
assertEquals("Departure time was not calculated correctcly", 2352822000L, batchScheduler.getDepartureTimeMillis() );
|
|
batchScheduler = new BatchScheduler(2352820001L, this.config2);
|
|
assertEquals("Departure time was not calculated correctcly", 2352822000L, batchScheduler.getDepartureTimeMillis() );
|
|
|
|
}
|
|
|
|
@Test
|
|
public void canCalculateBatchedDepartureTimes() {
|
|
BatchScheduler batchScheduler = new BatchScheduler(899079228, this.config2);
|
|
assertEquals("Departure time was not calculated correctcly", 899081000L, batchScheduler.getDepartureTimeMillis() );
|
|
batchScheduler = new BatchScheduler(899079473L, this.config2);
|
|
assertEquals("Departure time was not calculated correctcly", 899081000L, batchScheduler.getDepartureTimeMillis() );
|
|
batchScheduler = new BatchScheduler(2293479377L, this.config2);
|
|
assertEquals("Departure time was not calculated correctcly", 2293481000L, batchScheduler.getDepartureTimeMillis() );
|
|
batchScheduler = new BatchScheduler(902521357L, this.config2);
|
|
assertEquals("Departure time was not calculated correctcly", 902523000L, batchScheduler.getDepartureTimeMillis() );
|
|
batchScheduler = new BatchScheduler(902756592L, this.config2);
|
|
assertEquals("Departure time was not calculated correctcly", 902758000L, batchScheduler.getDepartureTimeMillis() );
|
|
batchScheduler = new BatchScheduler(2294063215L, this.config2);
|
|
assertEquals("Departure time was not calculated correctcly", 2294065000L, batchScheduler.getDepartureTimeMillis() );
|
|
|
|
}
|
|
/**
|
|
* First num goes in one batch, 2nd two numbers go in the subsequent batch.
|
|
*
|
|
|
|
|
|
|
|
*/
|
|
@Test
|
|
public void canCalculateSubsequentBatchedDepartureTimes_smallerInterval() {
|
|
IBatchSchedulerConfig config1 = new IBatchSchedulerConfig() {
|
|
@Override
|
|
public int getDrainInterval() {return 250;}
|
|
@Override
|
|
public int getDrainIntervalMultiplier() { return 2; }
|
|
};
|
|
|
|
BatchScheduler batchScheduler = new BatchScheduler(2352819999L, config1);
|
|
assertEquals("Departure time was not calculated correctcly", 2352820250L, batchScheduler.getDepartureTimeMillis() );
|
|
batchScheduler = new BatchScheduler(2352820000L, config1);
|
|
assertEquals("Departure time was not calculated correctcly", 2352820500L, batchScheduler.getDepartureTimeMillis() );
|
|
batchScheduler = new BatchScheduler(2352820001L, config1);
|
|
assertEquals("Departure time was not calculated correctcly", 2352820500L, batchScheduler.getDepartureTimeMillis() );
|
|
|
|
}
|
|
|
|
}
|