diff options
author | Bretty White <geekman3454@protonmail.com> | 2018-02-16 09:25:08 -0500 |
---|---|---|
committer | Bretty White <geekman3454@protonmail.com> | 2018-02-16 09:25:08 -0500 |
commit | 1fb2ff845783a86f46a80759a2dd7df1af5acc3f (patch) | |
tree | cbff59c913a0598fe01d1491aec0e09d5f5fe8fd | |
parent | a7e450607346872d6f0d4a42f403879e9a30d348 (diff) | |
download | sdl_android-1fb2ff845783a86f46a80759a2dd7df1af5acc3f.tar.gz |
finish tests
-rw-r--r-- | sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java | 105 | ||||
-rw-r--r-- | sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java | 2 |
2 files changed, 96 insertions, 11 deletions
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java index 0d4a0169a..2dd9a7c36 100644 --- a/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java +++ b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java @@ -154,15 +154,104 @@ public class SdlRouterServiceTests extends AndroidTestCase { * * @see SdlRouterService#sendPacketToRegisteredApp(SdlPacket) */ - public void testRegisterAppExistingSessionID() { + public void testRegisterAppExistingSessionIDDifferntApp() { if (Looper.myLooper() == null) { Looper.prepare(); } - Method method; - try { + // create instance of router service + SdlRouterService sdlRouterService = new SdlRouterService(); + + // We need a registered app for this to work + Message message = Message.obtain(); + SdlRouterService.RegisteredApp app1 = sdlRouterService.new RegisteredApp("12345",message.replyTo); + SdlRouterService.RegisteredApp app2 = sdlRouterService.new RegisteredApp("12344",message.replyTo); + HashMap<String,SdlRouterService.RegisteredApp> registeredApps = new HashMap<>(); + registeredApps.put(app1.getAppId(),app1); + registeredApps.put(app2.getAppId(),app2); + + // set registered apps array + Field raf = sdlRouterService.getClass().getDeclaredField("registeredApps"); + raf.setAccessible(true); + raf.set(sdlRouterService, registeredApps); + + // need a session map too + SparseArray<String> sessionMap = new SparseArray<String>(); + sessionMap.put(1, "12345"); + Field sessionMapField = sdlRouterService.getClass().getDeclaredField("sessionMap"); + sessionMapField.setAccessible(true); + sessionMapField.set(sdlRouterService, sessionMap); + + // set cleaned session map + SparseIntArray testCleanedMap = new SparseIntArray(); + testCleanedMap.put(1, 12345); + Field f = sdlRouterService.getClass().getDeclaredField("cleanedSessionMap"); + f.setAccessible(true); + f.set(sdlRouterService, testCleanedMap); + + // set session hash id map + SparseIntArray testHashIdMap = new SparseIntArray(); + testHashIdMap.put(1, 12344); + Field f2 = sdlRouterService.getClass().getDeclaredField("sessionHashIdMap"); + f2.setAccessible(true); + f2.set(sdlRouterService, testHashIdMap); + + // make sure maps are set and NOT the same + Assert.assertNotNull(raf.get(sdlRouterService)); + Assert.assertNotNull(sessionMapField.get(sdlRouterService)); + Assert.assertNotNull(f.get(sdlRouterService)); + Assert.assertNotNull(f2.get(sdlRouterService)); + Assert.assertNotSame(f.get(sdlRouterService), f2.get(sdlRouterService)); + + // make da RPC + UnregisterAppInterface request = new UnregisterAppInterface(); + request.setCorrelationID(SAMPLE_RPC_CORRELATION_ID); + + // build protocol message + byte[] msgBytes = JsonRPCMarshaller.marshall(request, (byte) version); + pm = new ProtocolMessage(); + pm.setData(msgBytes); + pm.setSessionID((byte) sessionId); + pm.setMessageType(MessageType.RPC); + pm.setSessionType(SessionType.RPC); + pm.setFunctionID(FunctionID.getFunctionId(request.getFunctionName())); + pm.setCorrID(request.getCorrelationID()); + + if (request.getBulkData() != null) { + pm.setBulkData(request.getBulkData()); + } + // binary frame header + byte[] data = new byte[12 + pm.getJsonSize()]; + binFrameHeader = SdlPacketFactory.createBinaryFrameHeader(pm.getRPCType(), pm.getFunctionID(), pm.getCorrID(), pm.getJsonSize()); + System.arraycopy(binFrameHeader.assembleHeaderBytes(), 0, data, 0, 12); + System.arraycopy(pm.getData(), 0, data, 12, pm.getJsonSize()); + + // create packet and invoke sendPacketToRegisteredApp + SdlPacket packet = new SdlPacket(4, false, SdlPacket.FRAME_TYPE_SINGLE, SdlPacket.SERVICE_TYPE_RPC, 0, sessionId, data.length, 123, data); + method = sdlRouterService.getClass().getDeclaredMethod("sendPacketToRegisteredApp", SdlPacket.class); + Boolean success = (Boolean) method.invoke(sdlRouterService, packet); + + // we do not want the UAI packet to be sent. make sure it is dropped + Assert.assertFalse(success); + + } catch (Exception e) { + Assert.fail("Exception in sendPacketToRegisteredApp, " + e); + } + } + /** + * Test sending UAI to an app whose session id is the same as a removed app + * but is indeed the SAME app + * + * @see SdlRouterService#sendPacketToRegisteredApp(SdlPacket) + */ + public void testRegisterAppExistingSessionIDSameApp() { + if (Looper.myLooper() == null) { + Looper.prepare(); + } + Method method; + try { // create instance of router service SdlRouterService sdlRouterService = new SdlRouterService(); @@ -178,7 +267,6 @@ public class SdlRouterServiceTests extends AndroidTestCase { Field raf = sdlRouterService.getClass().getDeclaredField("registeredApps"); raf.setAccessible(true); raf.set(sdlRouterService, registeredApps); - System.out.println(raf.get(sdlRouterService).toString()); // need a session map too SparseArray<String> sessionMap = new SparseArray<String>(); @@ -186,7 +274,6 @@ public class SdlRouterServiceTests extends AndroidTestCase { Field sessionMapField = sdlRouterService.getClass().getDeclaredField("sessionMap"); sessionMapField.setAccessible(true); sessionMapField.set(sdlRouterService, sessionMap); - System.out.println(sessionMapField.get(sdlRouterService).toString()); // set cleaned session map SparseIntArray testCleanedMap = new SparseIntArray(); @@ -203,11 +290,11 @@ public class SdlRouterServiceTests extends AndroidTestCase { f2.set(sdlRouterService, testHashIdMap); // make sure maps are set and NOT the same + Assert.assertNotNull(raf.get(sdlRouterService)); + Assert.assertNotNull(sessionMapField.get(sdlRouterService)); Assert.assertNotNull(f.get(sdlRouterService)); Assert.assertNotNull(f2.get(sdlRouterService)); Assert.assertNotSame(f.get(sdlRouterService), f2.get(sdlRouterService)); - System.out.println(f.get(sdlRouterService).toString()); - System.out.println(f2.get(sdlRouterService).toString()); // make da RPC UnregisterAppInterface request = new UnregisterAppInterface(); @@ -230,7 +317,6 @@ public class SdlRouterServiceTests extends AndroidTestCase { // binary frame header byte[] data = new byte[12 + pm.getJsonSize()]; binFrameHeader = SdlPacketFactory.createBinaryFrameHeader(pm.getRPCType(), pm.getFunctionID(), pm.getCorrID(), pm.getJsonSize()); - System.out.println(binFrameHeader.toString()); System.arraycopy(binFrameHeader.assembleHeaderBytes(), 0, data, 0, 12); System.arraycopy(pm.getData(), 0, data, 12, pm.getJsonSize()); @@ -238,8 +324,9 @@ public class SdlRouterServiceTests extends AndroidTestCase { SdlPacket packet = new SdlPacket(4, false, SdlPacket.FRAME_TYPE_SINGLE, SdlPacket.SERVICE_TYPE_RPC, 0, sessionId, data.length, 123, data); method = sdlRouterService.getClass().getDeclaredMethod("sendPacketToRegisteredApp", SdlPacket.class); Boolean success = (Boolean) method.invoke(sdlRouterService, packet); - System.out.println(success.booleanValue()); + // we do not want the UAI packet to be sent. make sure it is dropped + Assert.assertTrue(success); } catch (Exception e) { Assert.fail("Exception in sendPacketToRegisteredApp, " + e); diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java b/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java index 6550b0043..0e0c7193a 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java +++ b/sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java @@ -1503,8 +1503,6 @@ public class SdlRouterService extends Service{ Log.d(TAG, "same session id for different apps found, dropping packet"); this.cleanedSessionMap.clear(); return false; - } else { - return true; } } } |