@Override public void run() { if (bind != null) { if (singleResponse.getResult() == SyncResponseResultType.SUCCESS) { bind.getListener().onEventListenersReceived(singleResponse.getListeners()); } else { bind.getListener().onRequestFailed(); } } } });
@Override public void eventListenersResponseReceived(List<EventListenersResponse> response) { for (final EventListenersResponse singleResponse : response) { LOG.debug("Received event listener resolution response: {}", response); final EventListenersRequestBinding bind = eventListenersRequests.remove( singleResponse.getRequestId()); executorContext.getCallbackExecutor().submit(new Runnable() { @Override public void run() { if (bind != null) { if (singleResponse.getResult() == SyncResponseResultType.SUCCESS) { bind.getListener().onEventListenersReceived(singleResponse.getListeners()); } else { bind.getListener().onRequestFailed(); } } } }); } }
@Override public EventListenersResponse build() { try { EventListenersResponse record = new EventListenersResponse(); record.requestId = fieldSetFlags()[0] ? this.requestId : (java.lang.Integer) defaultValue(fields()[0]); record.listeners = fieldSetFlags()[1] ? this.listeners : (java.util.List<java.lang.String>) defaultValue(fields()[1]); record.result = fieldSetFlags()[2] ? this.result : (org.kaaproject.kaa.common.endpoint.gen.SyncResponseResultType) defaultValue(fields()[2]); return record; } catch (Exception e) { throw new org.apache.avro.AvroRuntimeException(e); } } }
@Test public void testEventListenersRequestResponse() throws IOException { KaaClientPropertiesState state = new KaaClientPropertiesState(new FilePersistentStorage(), CommonsBase64.getInstance(), KaaClientPropertiesStateTest.getProperties()); EventTransport transport = Mockito.mock(EventTransport.class); ExecutorContext executorContext = Mockito.mock(ExecutorContext.class); Mockito.when(executorContext.getCallbackExecutor()).thenReturn(Executors.newFixedThreadPool(1)); EventManager eventManager = new DefaultEventManager(state, executorContext, transport); List<String> eventFQNs = new ArrayList<String>(); eventFQNs.add("eventFQN1"); FindEventListenersCallback fetchListener = mock(FindEventListenersCallback.class); int requestIdOk = eventManager.findEventListeners(eventFQNs, fetchListener); int requestIdBad = eventManager.findEventListeners(eventFQNs, fetchListener); verify(transport, atLeast(1)).sync(); List<EventListenersResponse> response = new ArrayList<EventListenersResponse>(); response.add(new EventListenersResponse(requestIdOk, new ArrayList<String>(), SyncResponseResultType.SUCCESS)); response.add(new EventListenersResponse(requestIdBad, new ArrayList<String>(), SyncResponseResultType.FAILURE)); eventManager.eventListenersResponseReceived(response); verify(fetchListener, timeout(1000).times(1)).onEventListenersReceived(anyListOf(String.class)); verify(fetchListener, times(1)).onRequestFailed(); }
private static EventSyncResponse convert(EventServerSync source) { if (source == null) { return null; } EventSyncResponse sync = new EventSyncResponse(); if (source.getEventSequenceNumberResponse() != null) { sync.setEventSequenceNumberResponse(new EventSequenceNumberResponse( source.getEventSequenceNumberResponse().getSeqNum())); } if (source.getEvents() != null) { List<org.kaaproject.kaa.common.endpoint.gen.Event> events = new ArrayList<>( source.getEvents().size()); for (Event event : source.getEvents()) { events.add(convert(event)); } sync.setEvents(events); } if (source.getEventListenersResponses() != null) { List<EventListenersResponse> responses = new ArrayList<>( source.getEventListenersResponses().size()); for (org.kaaproject.kaa.server.sync.EventListenersResponse response : source.getEventListenersResponses()) { responses.add(new EventListenersResponse( response.getRequestId(), response.getListeners(), convert(response.getResult()))); } sync.setEventListenersResponses(responses); } return sync; }
@Test public void onEventResponse() throws Exception { KaaClientState clientState = Mockito.mock(KaaClientState.class); EventManager manager = Mockito.mock(EventManager.class); EventTransport transport = new DefaultEventTransport(clientState); EventSyncResponse response = new EventSyncResponse(); transport.onEventResponse(response); transport.setEventManager(manager); transport.onEventResponse(response); List<Event> events = new ArrayList<>(1); response.setEvents(events); transport.onEventResponse(response); events.add(new Event(5, "eventClassFQN", ByteBuffer.wrap(new byte[]{1, 2, 3}), "source", "target")); transport.onEventResponse(response); List<EventListenersResponse> listeners = new ArrayList<>(1); response.setEventListenersResponses(listeners); transport.onEventResponse(response); listeners.add(new EventListenersResponse()); transport.onEventResponse(response); Mockito.verify(manager, Mockito.times(3)).onGenericEvent(Mockito.eq("eventClassFQN"), Mockito.eq(new byte[]{1, 2, 3}), Mockito.eq("source")); Mockito.verify(manager, Mockito.times(1)).eventListenersResponseReceived(listeners); }