summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBretty White <geekman3454@protonmail.com>2018-02-16 09:25:08 -0500
committerBretty White <geekman3454@protonmail.com>2018-02-16 09:25:08 -0500
commit1fb2ff845783a86f46a80759a2dd7df1af5acc3f (patch)
treecbff59c913a0598fe01d1491aec0e09d5f5fe8fd
parenta7e450607346872d6f0d4a42f403879e9a30d348 (diff)
downloadsdl_android-1fb2ff845783a86f46a80759a2dd7df1af5acc3f.tar.gz
finish tests
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/transport/SdlRouterServiceTests.java105
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/transport/SdlRouterService.java2
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;
}
}
}