@Override public EventSyncRequest createEventRequest(Integer requestId) { if (eventManager != null) { EventSyncRequest request = new EventSyncRequest(); LOG.debug("Going to send {} event{}", events.size(), (events.size() == 1 ? "" : "s")); // NOSONAR request.setEvents(events); pendingEvents.put(requestId, eventsSet); request.setEventSequenceNumberRequest(null); } else { request.setEventSequenceNumberRequest(new EventSequenceNumberRequest()); LOG.trace("Sending event sequence number request: " + "restored_sn = {}", startEventSn);
private static EventClientSync convert(EventSyncRequest source) { if (source == null) { return null; } EventClientSync sync = new EventClientSync(); sync.setSeqNumberRequest(source.getEventSequenceNumberRequest() != null); if (source.getEvents() != null) { List<Event> events = new ArrayList<Event>(source.getEvents().size()); for (org.kaaproject.kaa.common.endpoint.gen.Event event : source.getEvents()) { events.add(convert(event)); } sync.setEvents(events); } if (source.getEventListenersRequests() != null) { List<EventListenersRequest> requests = new ArrayList<>( source.getEventListenersRequests().size()); for (org.kaaproject.kaa.common.endpoint.gen.EventListenersRequest request : source.getEventListenersRequests()) { requests.add(new EventListenersRequest( request.getRequestId(), request.getEventClassFQNs())); } sync.setEventListenersRequests(requests); } return sync; }
@Override public void fillEventListenersSyncRequest(EventSyncRequest request) { if (!eventListenersRequests.isEmpty()) { LOG.debug("There are {} unresolved eventListenersResolution request{}", eventListenersRequests.size(), (eventListenersRequests.size() == 1 ? "" : "s")); // NOSONAR List<EventListenersRequest> requests = new ArrayList<EventListenersRequest>(); for (Map.Entry<Integer, EventListenersRequestBinding> entry : eventListenersRequests .entrySet()) { if (!entry.getValue().isSent()) { requests.add(entry.getValue().getRequest()); entry.getValue().setSent(Boolean.TRUE); } } request.setEventListenersRequests(requests); } }
EventManager eventManager = new DefaultEventManager(state, executorContext, transport); EventSyncRequest request = new EventSyncRequest(); eventManager.produceEvent("kaa.test.event.SomeEvent", new byte[0], "theTarget"); eventManager.fillEventListenersSyncRequest(request); request.setEvents(eventManager.pollPendingEvents()); assertNotNull(request.getEvents()); assertEquals(1, request.getEvents().size()); assertEquals("kaa.test.event.SomeEvent", request.getEvents().get(0).getEventClassFQN()); assertEquals("theTarget", request.getEvents().get(0).getTarget()); assertArrayEquals(new byte[0], request.getEvents().get(0).getEventData().array()); request = new EventSyncRequest(); List<String> eventFQNs = new ArrayList<String>(); eventFQNs.add("eventFQN1"); assertNotNull(request.getEventListenersRequests()); assertEquals(2, request.getEventListenersRequests().size()); assertArrayEquals(eventFQNs.toArray(), request.getEventListenersRequests().get(0).getEventClassFQNs().toArray());
@Test public void testEventSequenceNumberSyncRequest() { KaaClientState clientState = Mockito.mock(KaaClientState.class); List<Event> events = Arrays.asList(new Event(1, null, null, null, null)); EventManager manager = Mockito.mock(EventManager.class); Mockito.when(manager.pollPendingEvents()).thenReturn(events); EventTransport transport = new DefaultEventTransport(clientState); transport.setEventManager(manager); int requestId = 1; EventSyncRequest eventRequest1 = transport.createEventRequest(requestId++); Assert.assertTrue(eventRequest1.getEventSequenceNumberRequest() != null); Assert.assertTrue(eventRequest1.getEvents() == null); EventSyncRequest eventRequest2 = transport.createEventRequest(requestId++); Assert.assertTrue(eventRequest2.getEventSequenceNumberRequest() != null); Assert.assertTrue(eventRequest2.getEvents() == null); }
@Override public EventSyncRequest build() { try { EventSyncRequest record = new EventSyncRequest(); record.eventSequenceNumberRequest = fieldSetFlags()[0] ? this.eventSequenceNumberRequest : (org.kaaproject.kaa.common.endpoint.gen.EventSequenceNumberRequest) defaultValue(fields()[0]); record.eventListenersRequests = fieldSetFlags()[1] ? this.eventListenersRequests : (java.util.List<org.kaaproject.kaa.common.endpoint.gen.EventListenersRequest>) defaultValue(fields()[1]); record.events = fieldSetFlags()[2] ? this.events : (java.util.List<org.kaaproject.kaa.common.endpoint.gen.Event>) defaultValue(fields()[2]); return record; } catch (Exception e) { throw new org.apache.avro.AvroRuntimeException(e); } } }
@Test public void testCreateRequest() { KaaClientState clientState = Mockito.mock(KaaClientState.class); EventManager manager = Mockito.mock(EventManager.class); Event event1 = new Event(); event1.setSeqNum(1); Event event2 = new Event(); event2.setSeqNum(2); Mockito.when(manager.pollPendingEvents()).thenReturn(Arrays.asList(event1, event2)); EventTransport transport = new DefaultEventTransport(clientState); transport.createEventRequest(1); transport.setEventManager(manager); transport.createEventRequest(2); transport.onEventResponse(new EventSyncResponse(new EventSequenceNumberResponse(0), null, null)); Mockito.verify(manager, Mockito.times(1)).fillEventListenersSyncRequest(Mockito.any(EventSyncRequest.class)); transport.createEventRequest(3); EventSyncRequest request = transport.createEventRequest(4); Assert.assertEquals(2, request.getEvents().size()); }
@Test public void testSychronizedSN() { int restoredEventSN = 10; int lastEventSN = restoredEventSN - 1; KaaClientState clientState = Mockito.mock(KaaClientState.class); Mockito.when(clientState.getEventSeqNum()).thenReturn(restoredEventSN); List<Event> events = Arrays.asList(new Event(restoredEventSN++, null, null, null, null) , new Event(restoredEventSN++, null, null, null, null) , new Event(restoredEventSN++, null, null, null, null)); EventManager manager = Mockito.mock(EventManager.class); Mockito.when(manager.pollPendingEvents()).thenReturn(events); EventTransport transport = new DefaultEventTransport(clientState); transport.setEventManager(manager); int requestId = 1; transport.createEventRequest(requestId++); EventSyncResponse eventResponse = new EventSyncResponse( new EventSequenceNumberResponse(lastEventSN), null, null); transport.onEventResponse(eventResponse); EventSyncRequest eventRequest2 = transport.createEventRequest(requestId); Assert.assertTrue(eventRequest2.getEventSequenceNumberRequest() == null); Assert.assertTrue(eventRequest2.getEvents().size() == events.size()); int expectedEventSN = lastEventSN + 1; for (Event e : eventRequest2.getEvents()) { Assert.assertTrue(e.getSeqNum() == expectedEventSN++); } }
case EVENT: if (isDownDirection) { request.setEventSyncRequest(new EventSyncRequest()); } else if (eventTransport != null) { request.setEventSyncRequest(
@Test public void testRemoveByResponseId() { KaaClientState clientState = Mockito.mock(KaaClientState.class); EventManager manager = Mockito.mock(EventManager.class); Mockito.when(manager.pollPendingEvents()).thenReturn(Arrays.asList(new Event(), new Event())); EventTransport transport = new DefaultEventTransport(clientState); transport.createEventRequest(1); transport.setEventManager(manager); transport.createEventRequest(2); transport.onEventResponse(new EventSyncResponse(new EventSequenceNumberResponse(0), null, null)); transport.createEventRequest(3); transport.onSyncResposeIdReceived(3); EventSyncRequest request = transport.createEventRequest(4); Assert.assertTrue(request.getEvents().size() == 1); }
Assert.assertTrue(eventRequest2.getEventSequenceNumberRequest() == null); Assert.assertTrue(eventRequest2.getEvents().size() == events1.size()); for (Event e : eventRequest2.getEvents()) { Assert.assertEquals(synchronizedSN++, e.getSeqNum().intValue()); Assert.assertTrue(eventRequest4.getEvents().get(0).getSeqNum() == synchronizedSN);