Browse Source

Merge pull request #9486 from smatvienko-tb/fix/createWeakMapTest

GatewaySessionHandlerTest createWeakMap() test simplified
pull/9558/head
Andrew Shvayka 3 years ago
committed by GitHub
parent
commit
0110f765fb
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 38
      common/transport/mqtt/src/test/java/org/thingsboard/server/transport/mqtt/session/GatewaySessionHandlerTest.java

38
common/transport/mqtt/src/test/java/org/thingsboard/server/transport/mqtt/session/GatewaySessionHandlerTest.java

@ -15,47 +15,21 @@
*/
package org.thingsboard.server.transport.mqtt.session;
import org.junit.Test;
import org.junit.jupiter.api.Test;
import org.springframework.util.ConcurrentReferenceHashMap;
import java.util.WeakHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import static org.awaitility.Awaitility.await;
import static org.junit.Assert.assertTrue;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.BDDMockito.willCallRealMethod;
import static org.mockito.Mockito.mock;
public class GatewaySessionHandlerTest {
@Test
public void givenWeakHashMap_WhenGC_thenMapIsEmpty() {
WeakHashMap<String, Lock> map = new WeakHashMap<>();
String deviceName = new String("device"); //constants are static and doesn't affected by GC, so use new instead
map.put(deviceName, new ReentrantLock());
assertTrue(map.containsKey(deviceName));
deviceName = null;
System.gc();
await().atMost(10, TimeUnit.SECONDS).until(() -> !map.containsKey("device"));
}
@Test
public void givenConcurrentReferenceHashMap_WhenGC_thenMapIsEmpty() {
public void givenGatewaySessionHandler_WhenCreateWeakMap_thenConcurrentReferenceHashMapClass() {
GatewaySessionHandler gsh = mock(GatewaySessionHandler.class);
willCallRealMethod().given(gsh).createWeakMap();
ConcurrentMap<String, Lock> map = gsh.createWeakMap();
map.put("device", new ReentrantLock());
assertTrue(map.containsKey("device"));
System.gc();
await().atMost(10, TimeUnit.SECONDS).until(() -> !map.containsKey("device"));
assertThat(gsh.createWeakMap()).isInstanceOf(ConcurrentReferenceHashMap.class);
}
}
}

Loading…
Cancel
Save