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; }
@Override public void onEventResponse(EventSyncResponse response) { if (eventManager != null) { if (!isEventSnSynchronized && response.getEventSequenceNumberResponse() != null) { int lastSn = response.getEventSequenceNumberResponse().getSeqNum(); int expectedSn = lastSn > 0 ? lastSn + 1 : lastSn; if (response.getEvents() != null && !response.getEvents().isEmpty()) { List<Event> events = new ArrayList<>(response.getEvents()); Collections.sort(events, eventSeqNumberComparator); for (Event event : events) { if (response.getEventListenersResponses() != null && !response.getEventListenersResponses().isEmpty()) { eventManager.eventListenersResponseReceived(response.getEventListenersResponses());
@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); }
@Override public EventSyncResponse build() { try { EventSyncResponse record = new EventSyncResponse(); record.eventSequenceNumberResponse = fieldSetFlags()[0] ? this.eventSequenceNumberResponse : (org.kaaproject.kaa.common.endpoint.gen.EventSequenceNumberResponse) defaultValue(fields()[0]); record.eventListenersResponses = fieldSetFlags()[1] ? this.eventListenersResponses : (java.util.List<org.kaaproject.kaa.common.endpoint.gen.EventListenersResponse>) 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); } } }
response.setStatus(SyncResponseResultType.SUCCESS); response.setConfigurationSyncResponse(new ConfigurationSyncResponse(SyncResponseStatus.DELTA, null, null)); response.setEventSyncResponse(new EventSyncResponse()); response.setNotificationSyncResponse(new NotificationSyncResponse(SyncResponseStatus.DELTA, null, null)); response.setProfileSyncResponse(new ProfileSyncResponse(SyncResponseStatus.DELTA));
@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); }
@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++); } }
EventSyncResponse eventResponse1 = new EventSyncResponse( new EventSequenceNumberResponse(lastReceivedSN), null, null);
@Test public void testResponseWithNullTransports() throws Exception { KaaClientState state = Mockito.mock(KaaClientState.class); DefaultOperationDataProcessor operationsDataProcessor = new DefaultOperationDataProcessor(state); SyncResponse response = new SyncResponse(); response.setStatus(SyncResponseResultType.SUCCESS); response.setConfigurationSyncResponse(new ConfigurationSyncResponse(SyncResponseStatus.DELTA, null, null)); response.setEventSyncResponse(new EventSyncResponse()); response.setNotificationSyncResponse(new NotificationSyncResponse(SyncResponseStatus.DELTA, null, null)); response.setProfileSyncResponse(new ProfileSyncResponse(SyncResponseStatus.DELTA)); response.setRedirectSyncResponse(new RedirectSyncResponse(1)); response.setUserSyncResponse(new UserSyncResponse()); LogDeliveryStatus status = new LogDeliveryStatus(REQUEST_ID, SyncResponseResultType.SUCCESS, null); response.setLogSyncResponse(new LogSyncResponse(Collections.singletonList(status))); AvroByteArrayConverter<SyncResponse> converter = new AvroByteArrayConverter<>(SyncResponse.class); operationsDataProcessor.processResponse(converter.toByteArray(response)); }