aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYu Shan <shanyu@google.com>2021-06-10 16:30:16 -0700
committerYu Shan <shanyu@google.com>2021-06-16 13:35:54 -0700
commitbe686b1b77842408654719188aab29d4c19c8e26 (patch)
tree8a1007ce0ecd5a57417acce1dfe13396825457ec
parent1cafde08459594766099c954abc66695f16817a2 (diff)
downloadCar-be686b1b77842408654719188aab29d4c19c8e26.tar.gz
Improve VmsHalServiceTest.
Add test cases to test unexpected return value from VHAL. Test: atest Bug: 190231228 Change-Id: I947861687ee61434247058d218822bf1b59b7715
-rw-r--r--service/src/com/android/car/hal/VmsHalService.java16
-rw-r--r--tests/carservice_unit_test/src/com/android/car/hal/VmsHalServiceTest.java42
2 files changed, 57 insertions, 1 deletions
diff --git a/service/src/com/android/car/hal/VmsHalService.java b/service/src/com/android/car/hal/VmsHalService.java
index de030bfb79..820a86631d 100644
--- a/service/src/com/android/car/hal/VmsHalService.java
+++ b/service/src/com/android/car/hal/VmsHalService.java
@@ -279,7 +279,13 @@ public class VmsHalService extends HalServiceBase {
if (DBG) Slog.d(TAG, "Handling a VMS property change");
for (VehiclePropValue v : values) {
ArrayList<Integer> vec = v.value.int32Values;
- int messageType = vec.get(VmsBaseMessageIntegerValuesIndex.MESSAGE_TYPE);
+ int messageType;
+ try {
+ messageType = vec.get(VmsBaseMessageIntegerValuesIndex.MESSAGE_TYPE);
+ } catch (IndexOutOfBoundsException e) {
+ Slog.e(TAG, "Invalid event, no message type", e);
+ continue;
+ }
if (DBG) Slog.d(TAG, "Received " + VmsMessageType.toString(messageType) + " message");
try {
@@ -412,6 +418,10 @@ public class VmsHalService extends HalServiceBase {
Slog.d(TAG,
"Handling a data event for Layer: " + vmsLayer + " Publisher: " + publisherId);
}
+ if (payload.length == 0) {
+ Slog.e(TAG, "Get 0 length payload while handling data event");
+ return;
+ }
getVmsClient().publishPacket(publisherId, vmsLayer, payload);
}
@@ -506,6 +516,10 @@ public class VmsHalService extends HalServiceBase {
if (DBG) {
Slog.d(TAG, "Handling a publisher id request event");
}
+ if (payload.length == 0) {
+ Slog.e(TAG, "Get 0 length payload while handling data event");
+ return;
+ }
VehiclePropValue vehicleProp = createVmsMessage(VmsMessageType.PUBLISHER_ID_RESPONSE);
diff --git a/tests/carservice_unit_test/src/com/android/car/hal/VmsHalServiceTest.java b/tests/carservice_unit_test/src/com/android/car/hal/VmsHalServiceTest.java
index dadcbadf76..8b47814ed4 100644
--- a/tests/carservice_unit_test/src/com/android/car/hal/VmsHalServiceTest.java
+++ b/tests/carservice_unit_test/src/com/android/car/hal/VmsHalServiceTest.java
@@ -204,6 +204,48 @@ public class VmsHalServiceTest {
}
@Test
+ public void testHandleInvalidEvent() {
+ VehiclePropValue message = new VehiclePropValue();
+ // Invalid message with no message type.
+ message.prop = VehicleProperty.VEHICLE_MAP_SERVICE;
+ message.value.stringValue = "1234";
+
+ sendHalMessage(message);
+ verify(mVmsClient, Mockito.never()).publishPacket(
+ Mockito.anyInt(), Mockito.any(), Mockito.any());
+
+ // Incomplete VmsLayer.
+ message.value.int32Values.add(VmsMessageType.DATA);
+ message.value.int32Values.add(LAYER_TYPE);
+ message.value.int32Values.add(LAYER_SUBTYPE);
+
+ sendHalMessage(message);
+ verify(mVmsClient, Mockito.never()).publishPacket(
+ Mockito.anyInt(), Mockito.any(), Mockito.any());
+
+ // No publisher ID.
+ message.value.int32Values.add(LAYER_VERSION);
+
+ sendHalMessage(message);
+ verify(mVmsClient, Mockito.never()).publishPacket(
+ Mockito.anyInt(), Mockito.any(), Mockito.any());
+
+ // No payload.
+ message.value.int32Values.add(PUBLISHER_ID);
+
+ sendHalMessage(message);
+ verify(mVmsClient, Mockito.never()).publishPacket(
+ Mockito.anyInt(), Mockito.any(), Mockito.any());
+
+ // No payload for publisherID event.
+ message.value.int32Values.set(0, VmsMessageType.PUBLISHER_ID_REQUEST);
+
+ sendHalMessage(message);
+ verify(mVmsClient, Mockito.never()).publishPacket(
+ Mockito.anyInt(), Mockito.any(), Mockito.any());
+ }
+
+ @Test
public void testOnPacketReceivedEvent() throws Exception {
VehiclePropValue message = createHalMessage(
VmsMessageType.DATA, // Message type