package com.kurento.tool.rom.test; import java.lang.ref.WeakReference; import java.util.concurrent.ConcurrentMap; import org.junit.Assert; import org.junit.Test; import com.google.common.collect.MapMaker; import com.kurento.tool.rom.client.RemoteObject; import com.kurento.tool.rom.client.RomClientObjectManager; public class RomClientWeakRemoteObjects { @Test public void testWeakReference() throws Exception { WeakReference<Object> weakReference = new WeakReference<>(new Object()); if (null == weakReference.get()) { Assert.fail("Reference should NOT be null"); } try { @SuppressWarnings("unused") Object[] ignored = new Object[(int) Runtime.getRuntime() .maxMemory()]; } catch (Throwable e) { // Ignore OME } if (null != weakReference.get()) { Assert.fail("Reference should be null"); } } @Test public void testWeakRefsMap() throws Exception { ConcurrentMap<String, Object> objects = new MapMaker().weakValues() .makeMap(); objects.put("xxx", new Object()); if (null == objects.get("xxx")) { Assert.fail("Reference should NOT be null"); } try { @SuppressWarnings("unused") Object[] ignored = new Object[(int) Runtime.getRuntime() .maxMemory()]; } catch (Throwable e) { // Ignore OME } if (null != objects.get("xxx")) { Assert.fail("Reference should be null"); } } @Test public void testRomClientObjectManager() { RomClientObjectManager manager = new RomClientObjectManager(null); new RemoteObject("xxx", null, null, manager); if (null == manager.getRemoteObject("xxx")) { Assert.fail("Reference should NOT be null"); } try { @SuppressWarnings("unused") Object[] ignored = new Object[(int) Runtime.getRuntime() .maxMemory()]; } catch (Throwable e) { // Ignore OME } if (null != manager.getRemoteObject("xxx")) { Assert.fail("Reference should be null"); } } @Test public void testRomClientObjectManager2() { RomClientObjectManager manager = new RomClientObjectManager(null); RemoteObject obj = new RemoteObject("xxx", null, null, manager); if (obj != manager.getRemoteObject("xxx")) { Assert.fail("Reference should be equals to inserted remote object"); } obj = null; try { @SuppressWarnings("unused") Object[] ignored = new Object[(int) Runtime.getRuntime() .maxMemory()]; } catch (Throwable e) { // Ignore OME } if (null != manager.getRemoteObject("xxx")) { Assert.fail("Reference should be null"); } } }