use of io.pravega.controller.eventProcessor.EventProcessorGroupConfig in project pravega by pravega.
the class EventProcessorTest method testEventProcessorWriter.
@Test(timeout = 10000)
public void testEventProcessorWriter() throws ReinitializationRequiredException, CheckpointStoreException {
int initialCount = 1;
String systemName = "testSystem";
String readerGroupName = "testReaderGroup";
int[] input = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
EventStreamWriterMock<TestEvent> writer = new EventStreamWriterMock<>();
CheckpointStore checkpointStore = CheckpointStoreFactory.createInMemoryStore();
CheckpointConfig checkpointConfig = CheckpointConfig.builder().type(CheckpointConfig.Type.None).build();
EventProcessorGroupConfig config = EventProcessorGroupConfigImpl.builder().eventProcessorCount(1).readerGroupName(READER_GROUP).streamName(STREAM_NAME).checkpointConfig(checkpointConfig).build();
createEventProcessorGroupConfig(initialCount);
EventProcessorSystemImpl system = createMockSystem(systemName, PROCESS, SCOPE, createEventReaders(1, input), writer, readerGroupName);
EventProcessorConfig<TestEvent> eventProcessorConfig = EventProcessorConfig.<TestEvent>builder().supplier(() -> new StartWritingEventProcessor(false, input)).serializer(new JavaSerializer<>()).decider((Throwable e) -> ExceptionHandler.Directive.Stop).config(config).build();
// Create EventProcessorGroup.
EventProcessorGroupImpl<TestEvent> group = (EventProcessorGroupImpl<TestEvent>) system.createEventProcessorGroup(eventProcessorConfig, checkpointStore);
// Await until it is ready.
group.awaitRunning();
// By now, the events have been written to the Mock EventStreamWriter.
Integer[] writerList = writer.getEventList().stream().map(TestEvent::getNumber).collect(Collectors.toList()).toArray(new Integer[input.length]);
// Validate that events are correctly written.
Assert.assertArrayEquals(input, ArrayUtils.toPrimitive(writerList));
}
use of io.pravega.controller.eventProcessor.EventProcessorGroupConfig in project pravega by pravega.
the class EventProcessorTest method testInitialize.
@Test(timeout = 10000)
public void testInitialize() throws ReinitializationRequiredException, CheckpointStoreException {
String systemName = "testSystem";
String readerGroupName = "testReaderGroup";
EventStreamWriterMock<TestEvent> writer = new EventStreamWriterMock<>();
int[] input = { 1, 2, 3, 4, 5 };
CheckpointStore checkpointStore = CheckpointStoreFactory.createInMemoryStore();
CheckpointConfig checkpointConfig = CheckpointConfig.builder().type(CheckpointConfig.Type.None).build();
EventProcessorGroupConfig config = EventProcessorGroupConfigImpl.builder().eventProcessorCount(3).readerGroupName(READER_GROUP).streamName(STREAM_NAME).checkpointConfig(checkpointConfig).build();
createEventProcessorGroupConfig(3);
EventProcessorSystemImpl system = createMockSystem(systemName, PROCESS, SCOPE, createEventReaders(3, input), writer, readerGroupName);
EventProcessorConfig<TestEvent> eventProcessorConfig = EventProcessorConfig.<TestEvent>builder().supplier(() -> new StartWritingEventProcessor(false, input)).serializer(new JavaSerializer<>()).decider((Throwable e) -> ExceptionHandler.Directive.Stop).config(config).build();
// Create EventProcessorGroup.
EventProcessorGroupImpl<TestEvent> group = (EventProcessorGroupImpl<TestEvent>) system.createEventProcessorGroup(eventProcessorConfig, checkpointStore);
// test idempotent initialize
group.initialize();
group.initialize();
// Await until it is ready.
group.awaitRunning();
group.initialize();
assertEquals(3, group.getEventProcessorMap().values().size());
}
use of io.pravega.controller.eventProcessor.EventProcessorGroupConfig in project pravega by pravega.
the class ControllerEventProcessors method initialize.
private void initialize() throws Exception {
// region Create commit event processor
EventProcessorGroupConfig commitReadersConfig = EventProcessorGroupConfigImpl.builder().streamName(config.getCommitStreamName()).readerGroupName(config.getCommitReaderGroupName()).eventProcessorCount(config.getCommitReaderGroupSize()).checkpointConfig(config.getCommitCheckpointConfig()).build();
EventProcessorConfig<CommitEvent> commitConfig = EventProcessorConfig.<CommitEvent>builder().config(commitReadersConfig).decider(ExceptionHandler.DEFAULT_EXCEPTION_HANDLER).serializer(COMMIT_EVENT_SERIALIZER).supplier(() -> this.commitEventProcessor).build();
log.info("Creating commit event processors");
Retry.indefinitelyWithExpBackoff(DELAY, MULTIPLIER, MAX_DELAY, e -> log.warn("Error creating commit event processor group", e)).run(() -> {
commitEventProcessors = system.createEventProcessorGroup(commitConfig, checkpointStore);
return null;
});
// endregion
// region Create abort event processor
EventProcessorGroupConfig abortReadersConfig = EventProcessorGroupConfigImpl.builder().streamName(config.getAbortStreamName()).readerGroupName(config.getAbortReaderGroupName()).eventProcessorCount(config.getAbortReaderGroupSize()).checkpointConfig(config.getAbortCheckpointConfig()).build();
EventProcessorConfig<AbortEvent> abortConfig = EventProcessorConfig.<AbortEvent>builder().config(abortReadersConfig).decider(ExceptionHandler.DEFAULT_EXCEPTION_HANDLER).serializer(ABORT_EVENT_SERIALIZER).supplier(() -> new ConcurrentEventProcessor<>(abortRequestHandler, executor)).build();
log.info("Creating abort event processors");
Retry.indefinitelyWithExpBackoff(DELAY, MULTIPLIER, MAX_DELAY, e -> log.warn("Error creating commit event processor group", e)).run(() -> {
abortEventProcessors = system.createEventProcessorGroup(abortConfig, checkpointStore);
return null;
});
// endregion
// region Create request event processor
EventProcessorGroupConfig requestReadersConfig = EventProcessorGroupConfigImpl.builder().streamName(config.getRequestStreamName()).readerGroupName(config.getRequestReaderGroupName()).eventProcessorCount(1).checkpointConfig(config.getRequestStreamCheckpointConfig()).build();
EventProcessorConfig<ControllerEvent> requestConfig = EventProcessorConfig.builder().config(requestReadersConfig).decider(ExceptionHandler.DEFAULT_EXCEPTION_HANDLER).serializer(CONTROLLER_EVENT_SERIALIZER).supplier(() -> new ConcurrentEventProcessor<>(streamRequestHandler, executor)).build();
log.info("Creating request event processors");
Retry.indefinitelyWithExpBackoff(DELAY, MULTIPLIER, MAX_DELAY, e -> log.warn("Error creating request event processor group", e)).run(() -> {
requestEventProcessors = system.createEventProcessorGroup(requestConfig, checkpointStore);
return null;
});
// endregion
log.info("Awaiting start of commit event processors");
commitEventProcessors.awaitRunning();
log.info("Awaiting start of abort event processors");
abortEventProcessors.awaitRunning();
log.info("Awaiting start of request event processors");
requestEventProcessors.awaitRunning();
}
Aggregations