use of com.oath.cyclops.async.adapters.Queue in project bender by Nextdoor.
the class ConditionalOperationTest method testSingleConditionNoMatch.
@Test
public void testSingleConditionNoMatch() {
/*
* Setup the pipeline of operation processors
*/
List<Pair<FilterOperation, List<OperationProcessor>>> conditions = new ArrayList<Pair<FilterOperation, List<OperationProcessor>>>();
List<OperationProcessor> case1Ops = new ArrayList<OperationProcessor>();
DummyAppendOperationFactory pos = new DummyAppendOperationFactory();
DummyAppendOperationConfig posConf = new DummyAppendOperationConfig();
posConf.setAppendStr("+");
pos.setConf(posConf);
case1Ops.add(new OperationProcessor(pos));
FilterOperation filter = new BasicFilterOperation(false);
conditions.add(new ImmutablePair<FilterOperation, List<OperationProcessor>>(filter, case1Ops));
ConditionalOperation op = new ConditionalOperation(conditions, false);
/*
* Create thread that supplies input events
*/
Queue<InternalEvent> inputQueue = new Queue<InternalEvent>();
supply(2, inputQueue);
/*
* Process
*/
Stream<InternalEvent> input = inputQueue.stream();
Stream<InternalEvent> output = op.getOutputStream(input);
List<String> actual = output.map(m -> {
return m.getEventObj().getPayload().toString();
}).collect(Collectors.toList());
List<String> expected = Arrays.asList("0", "1");
assertEquals(2, actual.size());
assertTrue(expected.containsAll(actual));
}
use of com.oath.cyclops.async.adapters.Queue in project bender by Nextdoor.
the class ConditionalOperationTest method testTwoConditions.
@Test
public void testTwoConditions() {
List<Pair<FilterOperation, List<OperationProcessor>>> conditions = new ArrayList<Pair<FilterOperation, List<OperationProcessor>>>();
/*
* Case 1
*/
List<OperationProcessor> case1Ops = new ArrayList<OperationProcessor>();
DummyAppendOperationFactory pos = new DummyAppendOperationFactory();
DummyAppendOperationConfig posConf = new DummyAppendOperationConfig();
posConf.setAppendStr("+");
pos.setConf(posConf);
case1Ops.add(new OperationProcessor(pos));
FilterOperation case1Filter = new BasicFilterOperation(false);
conditions.add(new ImmutablePair<FilterOperation, List<OperationProcessor>>(case1Filter, case1Ops));
/*
* Case 2
*/
List<OperationProcessor> case2Ops = new ArrayList<OperationProcessor>();
DummyAppendOperationFactory neg = new DummyAppendOperationFactory();
DummyAppendOperationConfig negConf = new DummyAppendOperationConfig();
negConf.setAppendStr("-");
neg.setConf(negConf);
case2Ops.add(new OperationProcessor(neg));
FilterOperation case2Filter = new BasicFilterOperation(true);
conditions.add(new ImmutablePair<FilterOperation, List<OperationProcessor>>(case2Filter, case2Ops));
ConditionalOperation op = new ConditionalOperation(conditions, false);
/*
* Create thread that supplies input events
*/
Queue<InternalEvent> inputQueue = new Queue<InternalEvent>();
supply(2, inputQueue);
/*
* Process
*/
Stream<InternalEvent> input = inputQueue.stream();
Stream<InternalEvent> output = op.getOutputStream(input);
List<String> actual = output.map(m -> {
return m.getEventObj().getPayload().toString();
}).collect(Collectors.toList());
List<String> expected = Arrays.asList("0-", "1-");
assertEquals(2, actual.size());
assertTrue(expected.containsAll(actual));
}
use of com.oath.cyclops.async.adapters.Queue in project bender by Nextdoor.
the class ForkOperationFactoryTest method getEvents.
private Iterator<DummyEvent> getEvents(int count) {
Queue<DummyEvent> q = new Queue<DummyEvent>();
Iterator<DummyEvent> dummyEvents = q.stream().iterator();
for (int i = 0; i < count; i++) {
q.offer(new DummyEvent("" + i, 0));
}
q.close();
return dummyEvents;
}
use of com.oath.cyclops.async.adapters.Queue in project bender by Nextdoor.
the class ConditionalOperationFactoryTest method getEvents.
private Iterator<DummyEvent> getEvents(int count) {
Queue<DummyEvent> q = new Queue<DummyEvent>();
Iterator<DummyEvent> dummyEvents = q.stream().iterator();
for (int i = 0; i < count; i++) {
q.offer(new DummyEvent("" + i, 0));
}
q.close();
return dummyEvents;
}
use of com.oath.cyclops.async.adapters.Queue in project bender by Nextdoor.
the class ForkOperationTest method testTwoForksSlow.
@Test
public void testTwoForksSlow() {
/*
* Setup the pipeline of operation processors
*/
List<List<OperationProcessor>> forks = new ArrayList<List<OperationProcessor>>();
List<OperationProcessor> fork1 = new ArrayList<OperationProcessor>();
fork1.add(new OperationProcessor(new DummyThrottleOperationFactory()));
forks.add(fork1);
List<OperationProcessor> fork2 = new ArrayList<OperationProcessor>();
fork2.add(new OperationProcessor(new DummyOperationFactory()));
forks.add(fork2);
ForkOperation op = new ForkOperation(forks);
/*
* Create thread that supplies input events
*/
Queue<InternalEvent> inputQueue = new Queue<InternalEvent>();
supply(1000, inputQueue);
/*
* Process
*/
Stream<InternalEvent> input = inputQueue.stream();
Stream<InternalEvent> output = op.getOutputStream(input);
List<String> actual = output.map(InternalEvent::getEventString).collect(Collectors.toList());
assertEquals(2000, actual.size());
}
Aggregations