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; }
@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); }
Assert.assertTrue(eventRequest2.getEventSequenceNumberRequest() == null); Assert.assertTrue(eventRequest2.getEvents().size() == events1.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++); } }