public QueuedExecutions(final long capacity) { this.capacity = capacity; this.queuedFlowMap = new ConcurrentHashMap<>(); this.queuedFlowList = new PriorityBlockingQueue<>(10, new ExecutableFlowPriorityComparator()); }
} else { int diff = getPriority(exflow2) - getPriority(exflow1); if (diff == 0) {
} else { int diff = getPriority(exflow2) - getPriority(exflow1); if (diff == 0) {
@Test public void testExplicitlySpecifiedPriorities() throws IOException, InterruptedException { final ExecutableFlow flow1 = createExecutableFlow("exec1", 5, 3, 1); final ExecutableFlow flow2 = createExecutableFlow("exec2", 6, 3, 2); final ExecutableFlow flow3 = createExecutableFlow("exec3", 2, 3, 3); final ExecutionReference dummyRef = new ExecutionReference(0); final BlockingQueue<Pair<ExecutionReference, ExecutableFlow>> queue = new PriorityBlockingQueue<>(10, new ExecutableFlowPriorityComparator()); queue.put(new Pair<>(dummyRef, flow1)); queue.put(new Pair<>(dummyRef, flow2)); queue.put(new Pair<>(dummyRef, flow3)); Assert.assertEquals(flow2, queue.take().getSecond()); Assert.assertEquals(flow1, queue.take().getSecond()); Assert.assertEquals(flow3, queue.take().getSecond()); }
@Test public void testMixedSpecifiedPriorities() throws IOException, InterruptedException { final ExecutableFlow flow1 = createExecutableFlow("exec1", 3, 3, 1); final ExecutableFlow flow2 = createExecutableFlow("exec2", 2, 3, 2); final ExecutableFlow flow3 = createExecutableFlow("exec3", -2, 3, 3); final ExecutionReference dummyRef = new ExecutionReference(0); final BlockingQueue<Pair<ExecutionReference, ExecutableFlow>> queue = new PriorityBlockingQueue<>(10, new ExecutableFlowPriorityComparator()); queue.put(new Pair<>(dummyRef, flow1)); queue.put(new Pair<>(dummyRef, flow2)); queue.put(new Pair<>(dummyRef, flow3)); Assert.assertEquals(flow3, queue.take().getSecond()); Assert.assertEquals(flow1, queue.take().getSecond()); Assert.assertEquals(flow2, queue.take().getSecond()); }
@Test public void testEqualPriorities() throws IOException, InterruptedException { final ExecutableFlow flow1 = createExecutableFlow("exec1", 3, 1, 1); final ExecutableFlow flow2 = createExecutableFlow("exec2", 2, 2, 2); final ExecutableFlow flow3 = createExecutableFlow("exec3", -2, 3, 3); final ExecutableFlow flow4 = createExecutableFlow("exec3", 3, 4, 4); final ExecutionReference dummyRef = new ExecutionReference(0); final BlockingQueue<Pair<ExecutionReference, ExecutableFlow>> queue = new PriorityBlockingQueue<>(10, new ExecutableFlowPriorityComparator()); queue.put(new Pair<>(dummyRef, flow4)); queue.put(new Pair<>(dummyRef, flow1)); queue.put(new Pair<>(dummyRef, flow2)); queue.put(new Pair<>(dummyRef, flow3)); Assert.assertEquals(flow3, queue.take().getSecond()); Assert.assertEquals(flow1, queue.take().getSecond()); Assert.assertEquals(flow4, queue.take().getSecond()); Assert.assertEquals(flow2, queue.take().getSecond()); }
@Test public void testEqualUpdateTimeAndPriority() throws IOException, InterruptedException { final ExecutableFlow flow1 = createExecutableFlow("exec1", 3, 1, 1); final ExecutableFlow flow2 = createExecutableFlow("exec2", 2, 2, 2); final ExecutableFlow flow3 = createExecutableFlow("exec3", -2, 2, 3); final ExecutableFlow flow4 = createExecutableFlow("exec3", 3, 4, 4); final ExecutionReference dummyRef = new ExecutionReference(0); final BlockingQueue<Pair<ExecutionReference, ExecutableFlow>> queue = new PriorityBlockingQueue<>(10, new ExecutableFlowPriorityComparator()); queue.put(new Pair<>(dummyRef, flow4)); queue.put(new Pair<>(dummyRef, flow1)); queue.put(new Pair<>(dummyRef, flow2)); queue.put(new Pair<>(dummyRef, flow3)); Assert.assertEquals(flow3, queue.take().getSecond()); Assert.assertEquals(flow1, queue.take().getSecond()); Assert.assertEquals(flow4, queue.take().getSecond()); Assert.assertEquals(flow2, queue.take().getSecond()); } }
public QueuedExecutions(final long capacity) { this.capacity = capacity; this.queuedFlowMap = new ConcurrentHashMap<>(); this.queuedFlowList = new PriorityBlockingQueue<>(10, new ExecutableFlowPriorityComparator()); }