From 899b14464fc6591010a5893142b470a466598f96 Mon Sep 17 00:00:00 2001 From: Roshan Pius Date: Tue, 1 Aug 2017 16:40:56 -0700 Subject: HalDeviceManager: Get IWifi proxy immediately Try to get IWifi proxy as a part of HalDeviceManager.initialize() directly instead of waiting for the IServiceMAnager callback. When HalDeviceManager.initialize() is invoked: a) If the wifi service is up at that point, we will get the proxy immediately and IServiceManager callback will be ignored. b) If the wifi service is not up at that point, we will get the proxy as a part of the IServiceManager callback. Bug: 64226605 Test: Unit tests Test: TBD: Regression test request. Change-Id: I9160af8ef0479ec1fefddb03ec81172c94d583bb --- .../android/server/wifi/HalDeviceManagerTest.java | 23 +++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) (limited to 'tests') diff --git a/tests/wifitests/src/com/android/server/wifi/HalDeviceManagerTest.java b/tests/wifitests/src/com/android/server/wifi/HalDeviceManagerTest.java index 3e203a666..54c67b222 100644 --- a/tests/wifitests/src/com/android/server/wifi/HalDeviceManagerTest.java +++ b/tests/wifitests/src/com/android/server/wifi/HalDeviceManagerTest.java @@ -163,6 +163,22 @@ public class HalDeviceManagerTest { verifyNoMoreInteractions(mManagerStatusListenerMock); } + /** + * Test the service manager notification coming in after + * {@link HalDeviceManager#initIWifiIfNecessary()} is already invoked as a part of + * {@link HalDeviceManager#initialize()}. + */ + @Test + public void testServiceRegisterationAfterInitialize() throws Exception { + mInOrder = inOrder(mServiceManagerMock, mWifiMock, mManagerStatusListenerMock); + executeAndValidateInitializationSequence(); + + // This should now be ignored since IWifi is already non-null. + mServiceNotificationCaptor.getValue().onRegistration(IWifi.kInterfaceName, "", true); + + verifyNoMoreInteractions(mManagerStatusListenerMock, mWifiMock, mServiceManagerMock); + } + /** * Validate that multiple callback registrations are called and that duplicate ones are * only called once. @@ -221,7 +237,7 @@ public class HalDeviceManagerTest { // verify: service and callback calls mInOrder.verify(mWifiMock).start(); - mInOrder.verify(mManagerStatusListenerMock, times(3)).onStatusChanged(); + mInOrder.verify(mManagerStatusListenerMock, times(2)).onStatusChanged(); verifyNoMoreInteractions(mManagerStatusListenerMock); } @@ -1097,12 +1113,13 @@ public class HalDeviceManagerTest { mInOrder.verify(mServiceManagerMock).registerForNotifications(eq(IWifi.kInterfaceName), eq(""), mServiceNotificationCaptor.capture()); - // act: get the service started (which happens even when service was already up) - mServiceNotificationCaptor.getValue().onRegistration(IWifi.kInterfaceName, "", true); + // The service should already be up at this point. // verify: wifi initialization sequence mInOrder.verify(mWifiMock).linkToDeath(mDeathRecipientCaptor.capture(), anyLong()); mInOrder.verify(mWifiMock).registerEventCallback(mWifiEventCallbackCaptor.capture()); + // verify: onStop called as a part of initialize. + mInOrder.verify(mWifiMock).stop(); collector.checkThat("isReady is true", mDut.isReady(), equalTo(true)); } -- cgit v1.2.3