Browse Source

Add test to cover case when session is not present when it is reported.

pull/10013/head
Dmytro Skarzhynets 3 years ago
committed by Dmytro Skarzhynets
parent
commit
cc5fba1698
  1. 30
      common/transport/transport-api/src/test/java/org/thingsboard/server/common/transport/service/TransportActivityManagerTest.java

30
common/transport/transport-api/src/test/java/org/thingsboard/server/common/transport/service/TransportActivityManagerTest.java

@ -40,6 +40,8 @@ import java.util.concurrent.ConcurrentMap;
import java.util.stream.Stream;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doCallRealMethod;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
@ -63,6 +65,34 @@ public class TransportActivityManagerTest {
ReflectionTestUtils.setField(transportServiceMock, "sessions", sessions);
}
@Test
void givenFirstActivityForAlreadyRemovedSessionAndFirstEventReportingStrategy_whenOnActivity_thenShouldRecordActivityAndReport() {
// GIVEN
ConcurrentMap<UUID, Object> states = new ConcurrentHashMap<>();
ReflectionTestUtils.setField(transportServiceMock, "states", states);
var strategyMock = mock(ActivityStrategy.class);
when(transportServiceMock.getStrategy()).thenReturn(strategyMock);
when(strategyMock.onActivity()).thenReturn(true);
long activityTime = 123L;
var sessionInfo = TransportProtos.SessionInfoProto.newBuilder()
.setSessionIdMSB(SESSION_ID.getMostSignificantBits())
.setSessionIdLSB(SESSION_ID.getLeastSignificantBits())
.build();
doCallRealMethod().when(transportServiceMock).getLastRecordedTime(SESSION_ID);
doCallRealMethod().when(transportServiceMock).onActivity(SESSION_ID, sessionInfo, activityTime);
// WHEN
transportServiceMock.onActivity(SESSION_ID, sessionInfo, activityTime);
// THEN
assertThat(states).containsKey(SESSION_ID);
assertThat(transportServiceMock.getLastRecordedTime(SESSION_ID)).isEqualTo(activityTime);
verify(transportServiceMock).reportActivity(eq(SESSION_ID), eq(sessionInfo), eq(activityTime), any(ActivityReportCallback.class));
}
@Test
void givenKeyAndTimeToReportAndSessionExists_whenReportingActivity_thenShouldReportActivityWithSubscriptionsAndSessionInfoFromSession() {
// GIVEN

Loading…
Cancel
Save