use of org.zalando.nakadi.repository.EventTypeRepository in project nakadi by zalando.
the class EventStreamControllerTest method setup.
@Before
public void setup() throws NakadiException, UnknownHostException, InvalidCursorException {
EVENT_TYPE.setName(TEST_EVENT_TYPE_NAME);
timeline = buildTimelineWithTopic(TEST_TOPIC);
eventTypeRepository = mock(EventTypeRepository.class);
topicRepositoryMock = mock(TopicRepository.class);
adminService = mock(AdminService.class);
authorizationService = mock(AuthorizationService.class);
when(topicRepositoryMock.topicExists(TEST_TOPIC)).thenReturn(true);
eventStreamFactoryMock = mock(EventStreamFactory.class);
eventTypeCache = mock(EventTypeCache.class);
requestMock = mock(HttpServletRequest.class);
when(requestMock.getRemoteAddr()).thenReturn(InetAddress.getLoopbackAddress().getHostAddress());
when(requestMock.getRemotePort()).thenReturn(12345);
responseMock = mock(HttpServletResponse.class);
metricRegistry = new MetricRegistry();
streamMetrics = new MetricRegistry();
final EventConsumer.LowLevelConsumer eventConsumerMock = mock(EventConsumer.LowLevelConsumer.class);
when(topicRepositoryMock.createEventConsumer(eq(KAFKA_CLIENT_ID), any())).thenReturn(eventConsumerMock);
final ClosedConnectionsCrutch crutch = mock(ClosedConnectionsCrutch.class);
when(crutch.listenForConnectionClose(requestMock)).thenReturn(new AtomicBoolean(true));
blacklistService = Mockito.mock(BlacklistService.class);
Mockito.when(blacklistService.isConsumptionBlocked(any(), any())).thenReturn(false);
final ConsumerLimitingService consumerLimitingService = Mockito.mock(ConsumerLimitingService.class);
when(consumerLimitingService.acquireConnectionSlots(any(), any(), any())).thenReturn(ImmutableList.of());
featureToggleService = mock(FeatureToggleService.class);
timelineService = mock(TimelineService.class);
when(timelineService.getTopicRepository((Timeline) any())).thenReturn(topicRepositoryMock);
when(timelineService.getTopicRepository((EventTypeBase) any())).thenReturn(topicRepositoryMock);
when(timelineService.getTopicRepository((Storage) any())).thenReturn(topicRepositoryMock);
when(timelineService.getActiveTimelinesOrdered(any())).thenReturn(Collections.singletonList(timeline));
when(timelineService.getAllTimelinesOrdered(any())).thenReturn(Collections.singletonList(timeline));
authorizationValidator = mock(AuthorizationValidator.class);
eventTypeChangeListener = mock(EventTypeChangeListener.class);
when(eventTypeChangeListener.registerListener(any(), any())).thenReturn(mock(Closeable.class));
controller = new EventStreamController(eventTypeRepository, timelineService, TestUtils.OBJECT_MAPPER, eventStreamFactoryMock, metricRegistry, streamMetrics, crutch, blacklistService, consumerLimitingService, featureToggleService, new CursorConverterImpl(eventTypeCache, timelineService), authorizationValidator, eventTypeChangeListener, null);
settings = mock(SecuritySettings.class);
when(settings.getAuthMode()).thenReturn(OFF);
when(settings.getAdminClientId()).thenReturn("nakadi");
mockMvc = standaloneSetup(controller).setMessageConverters(new StringHttpMessageConverter(), TestUtils.JACKSON_2_HTTP_MESSAGE_CONVERTER).setCustomArgumentResolvers(new ClientResolver(settings, featureToggleService)).build();
}
use of org.zalando.nakadi.repository.EventTypeRepository in project nakadi by zalando.
the class EventTypeCacheTest method testEventTypesPreloaded.
@Test
public void testEventTypesPreloaded() throws Exception {
final EventTypeRepository etRepo = Mockito.mock(EventTypeRepository.class);
final TimelineDbRepository timelineRepository = Mockito.mock(TimelineDbRepository.class);
final ZooKeeperHolder zkHolder = Mockito.mock(ZooKeeperHolder.class);
final TimelineSync timelineSync = Mockito.mock(TimelineSync.class);
final EventType et = TestUtils.buildDefaultEventType();
Mockito.when(etRepo.list()).thenReturn(Collections.singletonList(et));
final Timeline timeline = TestUtils.buildTimeline(et.getName());
final List<Timeline> timelines = Collections.singletonList(timeline);
Mockito.when(timelineRepository.listTimelinesOrdered()).thenReturn(timelines);
Mockito.when(timelineSync.registerTimelineChangeListener(Matchers.eq(et.getName()), Mockito.any())).thenReturn(() -> {
});
final EventTypeCache eventTypeCache = new EventTypeCache(etRepo, timelineRepository, zkHolder, null, timelineSync) {
@Override
public void created(final String name) throws Exception {
// ignore this call, because mocking is too complex
}
};
Assert.assertSame(et, eventTypeCache.getEventType(et.getName()));
Mockito.verify(etRepo, Mockito.times(0)).findByName(Mockito.any());
Mockito.verify(etRepo, Mockito.times(1)).list();
Assert.assertEquals(timelines, eventTypeCache.getTimelinesOrdered(et.getName()));
Mockito.verify(timelineRepository, Mockito.times(0)).listTimelinesOrdered(Mockito.any());
Mockito.verify(timelineRepository, Mockito.times(1)).listTimelinesOrdered();
}
use of org.zalando.nakadi.repository.EventTypeRepository in project nakadi by zalando.
the class EventTypeCache method setupInMemoryEventTypeCache.
private LoadingCache<String, CachedValue> setupInMemoryEventTypeCache(final EventTypeRepository eventTypeRepository, final TimelineDbRepository timelineRepository) {
final CacheLoader<String, CachedValue> loader = new CacheLoader<String, CachedValue>() {
public CachedValue load(final String key) throws Exception {
final EventType eventType = eventTypeRepository.findByName(key);
final List<Timeline> timelines = timelineRepository.listTimelinesOrdered(key);
timelineRegistrations.computeIfAbsent(key, n -> timelineSync.registerTimelineChangeListener(n, (etName) -> eventTypeCache.invalidate(etName)));
return new CachedValue(eventType, EventValidation.forType(eventType), timelines);
}
};
return CacheBuilder.newBuilder().maximumSize(CACHE_MAX_SIZE).build(loader);
}
Aggregations