summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMat Wszedybyl <mat@livio.io>2017-07-13 10:09:15 -0400
committerMat Wszedybyl <mat@livio.io>2017-07-13 10:09:15 -0400
commit06dc15974852037b804c049dfad08fbad78dd887 (patch)
tree3106f9e834b4c493b66800f4941a94afb66034cf
parentdf8afceebf6670eee1fea7ee4f834bafaf66cfc3 (diff)
downloadsdl_android-06dc15974852037b804c049dfad08fbad78dd887.tar.gz
Fixed broken Transport Broker Test
-rw-r--r--sdl_android/build.gradle5
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/transport/TransportBrokerTest.java93
-rw-r--r--sdl_android/src/test/java/com/smartdevicelink/transport/TransportBrokerTests.java61
3 files changed, 101 insertions, 58 deletions
diff --git a/sdl_android/build.gradle b/sdl_android/build.gradle
index 433324f05..24238741a 100644
--- a/sdl_android/build.gradle
+++ b/sdl_android/build.gradle
@@ -19,6 +19,11 @@ android {
testCoverageEnabled = true
}
}
+
+ testOptions {
+ unitTests.returnDefaultValues = true
+ }
+
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/transport/TransportBrokerTest.java b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/TransportBrokerTest.java
index 6ddf9b783..7d436d6bd 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/transport/TransportBrokerTest.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/transport/TransportBrokerTest.java
@@ -1,8 +1,10 @@
package com.smartdevicelink.transport;
+import android.annotation.SuppressLint;
import android.bluetooth.BluetoothAdapter;
import android.content.ComponentName;
import android.content.Context;
+import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
@@ -12,6 +14,7 @@ import android.os.Messenger;
import android.os.RemoteException;
import android.support.test.InstrumentationRegistry;
import android.test.AndroidTestCase;
+import android.util.Log;
import com.smartdevicelink.protocol.SdlPacket;
import com.smartdevicelink.test.SdlUnitTestContants;
@@ -30,11 +33,13 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
public class TransportBrokerTest extends AndroidTestCase {
RouterServiceValidator rsvp;
+ TransportBrokerThread brokerThread;
@Rule
public MockitoRule mockitoRule = MockitoJUnit.rule();
@@ -52,26 +57,14 @@ public class TransportBrokerTest extends AndroidTestCase {
Thread.sleep(500);
}catch(Exception e){}
}
-
- public void testStart() throws Exception{
- if (Looper.myLooper() == null) {
- Looper.prepare();
- }
- TransportBroker broker = new TransportBroker(mContext, SdlUnitTestContants.TEST_APP_ID,rsvp.getService());
- if(!DeviceUtil.isEmulator()){ // Cannot perform MBT operations in emulator
- assertTrue(broker.start());
- }
- broker.stop();
- broker.resetSession();
- Field queuedOnTransportConnect = TransportBroker.class.getDeclaredField("queuedOnTransportConnect");
- queuedOnTransportConnect.setAccessible(true);
- TransportType type = (TransportType) queuedOnTransportConnect.get(broker);
-
- assertNull(type);
- assertNull(broker.routerServiceMessenger);
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
}
+
+
public void testOnServiceUnregisteredFromRouterService()throws Exception{
if (Looper.myLooper() == null) {
Looper.prepare();
@@ -132,10 +125,9 @@ public class TransportBrokerTest extends AndroidTestCase {
message.arg1 = TransportConstants.REGISTRATION_RESPONSE_SUCESS;
Bundle bundle = new Bundle();
bundle.putBoolean(TransportConstants.ENABLE_LEGACY_MODE_EXTRA, true);
- bundle.putBoolean(TransportConstants.HARDWARE_CONNECTED, true);
bundle.putInt(TransportConstants.ROUTER_SERVICE_VERSION, 1);
message.setData(bundle);
- TransportBrokerThread brokerThread = new TransportBrokerThread(context, SdlUnitTestContants.TEST_APP_ID, rsvp.getService());
+ brokerThread = new TransportBrokerThread(context, SdlUnitTestContants.TEST_APP_ID, rsvp.getService());
assertNull(brokerThread.broker);
try {
@@ -154,7 +146,7 @@ public class TransportBrokerTest extends AndroidTestCase {
final Message message = new Message();
message.what = TransportConstants.ROUTER_REGISTER_CLIENT_RESPONSE;
message.arg1 = TransportConstants.REGISTRATION_RESPONSE_DENIED_LEGACY_MODE_ENABLED;
- TransportBrokerThread brokerThread = new TransportBrokerThread(context, SdlUnitTestContants.TEST_APP_ID, rsvp.getService());
+ brokerThread = new TransportBrokerThread(context, SdlUnitTestContants.TEST_APP_ID, rsvp.getService());
assertNull(brokerThread.broker);
try {
@@ -172,7 +164,7 @@ public class TransportBrokerTest extends AndroidTestCase {
final Message message = new Message();
message.what = TransportConstants.ROUTER_REGISTER_CLIENT_RESPONSE;
message.arg1 = TransportConstants.REGISTRATION_RESPONSE_DENIED_UNKNOWN;
- TransportBrokerThread brokerThread = new TransportBrokerThread(context, SdlUnitTestContants.TEST_APP_ID, rsvp.getService());
+ brokerThread = new TransportBrokerThread(context, SdlUnitTestContants.TEST_APP_ID, rsvp.getService());
assertNull(brokerThread.broker);
try {
@@ -192,7 +184,7 @@ public class TransportBrokerTest extends AndroidTestCase {
final Message message = new Message();
message.what = TransportConstants.ROUTER_UNREGISTER_CLIENT_RESPONSE;
message.arg1 = TransportConstants.UNREGISTRATION_RESPONSE_SUCESS;
- TransportBrokerThread brokerThread = new TransportBrokerThread(context, SdlUnitTestContants.TEST_APP_ID, rsvp.getService());
+ brokerThread = new TransportBrokerThread(context, SdlUnitTestContants.TEST_APP_ID, rsvp.getService());
assertNull(brokerThread.broker);
try {
@@ -208,7 +200,7 @@ public class TransportBrokerTest extends AndroidTestCase {
final Message message = new Message();
message.what = TransportConstants.ROUTER_UNREGISTER_CLIENT_RESPONSE;
message.arg1 = TransportConstants.UNREGISTRATION_RESPONSE_FAILED_APP_ID_NOT_FOUND;
- TransportBrokerThread brokerThread = new TransportBrokerThread(context, SdlUnitTestContants.TEST_APP_ID, rsvp.getService());
+ brokerThread = new TransportBrokerThread(context, SdlUnitTestContants.TEST_APP_ID, rsvp.getService());
assertNull(brokerThread.broker);
try {
@@ -227,11 +219,10 @@ public class TransportBrokerTest extends AndroidTestCase {
Bundle bundle = new Bundle();
SdlPacket packet = new SdlPacket(1,false,1,1,0,0,0,0,null,0,0);
bundle.putParcelable(TransportConstants.BYTES_TO_SEND_EXTRA_NAME, packet);
- bundle.putBoolean(TransportConstants.HARDWARE_CONNECTED, true);
bundle.putInt(TransportConstants.BYTES_TO_SEND_FLAGS, TransportConstants.BYTES_TO_SEND_FLAG_SDL_PACKET_INCLUDED);
message.setData(bundle);
- TransportBrokerThread brokerThread = new TransportBrokerThread(context, SdlUnitTestContants.TEST_APP_ID, rsvp.getService());
+ brokerThread = new TransportBrokerThread(context, SdlUnitTestContants.TEST_APP_ID, rsvp.getService());
assertNull(brokerThread.broker);
try {
@@ -263,7 +254,7 @@ public class TransportBrokerTest extends AndroidTestCase {
bundle.putBoolean(TransportConstants.HARDWARE_CONNECTED, true);
message.setData(bundle);
- TransportBrokerThread brokerThread = new TransportBrokerThread(context, SdlUnitTestContants.TEST_APP_ID, rsvp.getService());
+ brokerThread = new TransportBrokerThread(context, SdlUnitTestContants.TEST_APP_ID, rsvp.getService());
assertNull(brokerThread.broker);
try {
@@ -359,18 +350,25 @@ public class TransportBrokerTest extends AndroidTestCase {
assertTrue(broker.sendMessageToRouterService(message));
}
-// public void testSendMessageToRouterServiceException() throws Exception{
-// if (Looper.myLooper() == null) {
-// Looper.prepare();
-// }
-// TransportBroker broker = spy(new TransportBroker(mContext, SdlUnitTestContants.TEST_APP_ID,rsvp.getService()));
-// Messenger mockMessenger = mock(Messenger.class);
-// doThrow(RemoteException.class).when(mockMessenger).send(any(Message.class));
-// broker.routerServiceMessenger = mockMessenger;
-// broker.sendMessageToRouterService(null,0);
-//
-// verify(broker, times(5)).sendMessageToRouterService(any(Message.class));
-// }
+ public void testStart() throws Exception{
+ if (Looper.myLooper() == null) {
+ Looper.prepare();
+ }
+ TransportBroker broker = new TransportBroker(mContext, SdlUnitTestContants.TEST_APP_ID,rsvp.getService());
+ if(!DeviceUtil.isEmulator()){ // Cannot perform MBT operations in emulator
+ assertTrue(broker.start());
+ }
+ broker.stop();
+ broker.resetSession();
+
+ Field queuedOnTransportConnect = TransportBroker.class.getDeclaredField("queuedOnTransportConnect");
+ queuedOnTransportConnect.setAccessible(true);
+ TransportType type = (TransportType) queuedOnTransportConnect.get(broker);
+
+ assertNull(type);
+ assertNull(broker.routerServiceMessenger);
+ }
+
public void testRequestNewSession(){
if (Looper.myLooper() == null) {
@@ -394,6 +392,7 @@ public class TransportBrokerTest extends AndroidTestCase {
ArgumentCaptor<Message> argument = ArgumentCaptor.forClass(Message.class);
verify(broker).sendMessageToRouterService(argument.capture());
assertEquals(TransportConstants.ROUTER_REMOVE_SESSION, argument.getValue().what);
+
}
@@ -441,6 +440,24 @@ public class TransportBrokerTest extends AndroidTestCase {
}
+ @SuppressLint("NewApi")
+ public synchronized void cancel(){
+ if(broker!=null){
+ broker.stop();
+ broker = null;
+ }
+ if(threadLooper !=null){
+ if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.JELLY_BEAN_MR2){
+ threadLooper.quitSafely();
+ }else{
+ threadLooper.quit();
+ }
+ threadLooper = null;
+ }
+
+ }
+
+
public ByteArrayMessageAssembler getBufferedPayloadAssembler() throws Exception{
Field bufferedPayloadAssembler = TransportBroker.class.getDeclaredField("bufferedPayloadAssembler");
bufferedPayloadAssembler.setAccessible(true);
diff --git a/sdl_android/src/test/java/com/smartdevicelink/transport/TransportBrokerTests.java b/sdl_android/src/test/java/com/smartdevicelink/transport/TransportBrokerTests.java
index 745289fd5..dfe8943b1 100644
--- a/sdl_android/src/test/java/com/smartdevicelink/transport/TransportBrokerTests.java
+++ b/sdl_android/src/test/java/com/smartdevicelink/transport/TransportBrokerTests.java
@@ -1,16 +1,18 @@
package com.smartdevicelink.transport;
import android.content.Context;
-import android.os.Looper;
import android.os.Message;
import android.os.Messenger;
-import android.os.RemoteException;
+import android.os.TransactionTooLargeException;
import junit.framework.TestCase;
import org.mockito.Mock;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Mockito.doThrow;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
@@ -24,15 +26,10 @@ import static org.mockito.Mockito.verify;
public class TransportBrokerTests extends TestCase{
RouterServiceValidator rsvp;
-
@Mock
Context mMockContext;
- Context context;
-
protected void setUp() throws Exception {
-// context = InstrumentationRegistry.getTargetContext();
-
rsvp = mock(RouterServiceValidator.class);
rsvp.validate();
}
@@ -40,20 +37,44 @@ public class TransportBrokerTests extends TestCase{
public static final String TEST_APP_ID = "123456";
+
+
+ public void testSendMessageToRouterServiceException() throws Exception{
+ TransportBroker broker = spy(new TransportBroker(mMockContext, TEST_APP_ID ,rsvp.getService()));
+// Messenger mockMessenger = mock(Messenger.class, new Answer<Object>() {
+// @Override
+// public Object answer(InvocationOnMock invocation) throws Throwable {
+//// int count = 0;
+//// String methodName = invocation.getMethod().getName();
+//// if (count<1 && methodName=="send") {
+//// count++;
+// throw new TransactionTooLargeException();
+//// } else {
+//// throw new NullPointerException();
+//// }
//
-//
-// public void testSendMessageToRouterServiceException() throws Exception{
-// if (Looper.myLooper() == null) {
-// Looper.prepare();
-// }
-// TransportBroker broker = spy(new TransportBroker(mMockContext, TEST_APP_ID ,rsvp.getService()));
-// Messenger mockMessenger = mock(Messenger.class);
-// doThrow(RemoteException.class).when(mockMessenger).send(any(Message.class));
-// broker.routerServiceMessenger = mockMessenger;
-// broker.sendMessageToRouterService(null,0);
-//
-// verify(broker, times(5)).sendMessageToRouterService(any(Message.class));
-// }
+// }
+// });
+
+ Messenger mockMessenger = mock(Messenger.class);
+ doThrow(TransactionTooLargeException.class).when(mockMessenger).send(any(Message.class));
+ broker.routerServiceMessenger = mockMessenger;
+ Message message = new Message();
+ message.what = TransportConstants.ROUTER_REGISTER_CLIENT;
+ broker.registeredWithRouterService = true;
+ broker.isBound = true;
+
+ boolean result = true;
+ try {
+ result = broker.sendMessageToRouterService(message);
+ } catch(Exception e){
+
+ }
+
+ assertFalse(result);
+ verify(mockMessenger).send(any(Message.class));
+ verify(broker, times(3)).sendMessageToRouterService(any(Message.class), anyInt());
+ }
}