diff options
| author | 2020-06-01 13:04:24 -0400 | |
|---|---|---|
| committer | 2020-06-10 13:23:29 -0400 | |
| commit | d68d75be59cd6be3bdc35bd0982a9871ab089122 (patch) | |
| tree | dec1e9d468b6cf1994d9f6b784a995de758d599f /packages/SystemUI/tests | |
| parent | 50980050a631c8cab0e52f6805c4be7f40647b33 (diff) | |
Add logs for BroadcastDispatcher
Use SystemUIs internal buffer log.
Test: manual
Test: UserBroadcastDispatcherTest
Bug: 157165818
Change-Id: Iafd467f7e212b4975f0d8e563388187183dcd747
Diffstat (limited to 'packages/SystemUI/tests')
4 files changed, 77 insertions, 5 deletions
diff --git a/packages/SystemUI/tests/src/com/android/systemui/SysuiTestCase.java b/packages/SystemUI/tests/src/com/android/systemui/SysuiTestCase.java index b2c35867e789..aa3f91a22208 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/SysuiTestCase.java +++ b/packages/SystemUI/tests/src/com/android/systemui/SysuiTestCase.java @@ -35,6 +35,7 @@ import com.android.keyguard.KeyguardUpdateMonitor; import com.android.settingslib.bluetooth.LocalBluetoothManager; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.broadcast.FakeBroadcastDispatcher; +import com.android.systemui.broadcast.logging.BroadcastDispatcherLogger; import com.android.systemui.classifier.FalsingManagerFake; import com.android.systemui.dump.DumpManager; import com.android.systemui.plugins.FalsingManager; @@ -73,7 +74,7 @@ public abstract class SysuiTestCase { SystemUIFactory.createFromConfig(mContext); mDependency = new TestableDependency(mContext); mFakeBroadcastDispatcher = new FakeBroadcastDispatcher(mContext, mock(Handler.class), - mock(Looper.class), mock(DumpManager.class)); + mock(Looper.class), mock(DumpManager.class), mock(BroadcastDispatcherLogger.class)); mRealInstrumentation = InstrumentationRegistry.getInstrumentation(); Instrumentation inst = spy(mRealInstrumentation); diff --git a/packages/SystemUI/tests/src/com/android/systemui/broadcast/BroadcastDispatcherTest.kt b/packages/SystemUI/tests/src/com/android/systemui/broadcast/BroadcastDispatcherTest.kt index 3357c5863d46..86ddb209f321 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/broadcast/BroadcastDispatcherTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/broadcast/BroadcastDispatcherTest.kt @@ -27,6 +27,7 @@ import android.test.suitebuilder.annotation.SmallTest import android.testing.AndroidTestingRunner import android.testing.TestableLooper import com.android.systemui.SysuiTestCase +import com.android.systemui.broadcast.logging.BroadcastDispatcherLogger import com.android.systemui.dump.DumpManager import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.time.FakeSystemClock @@ -76,6 +77,8 @@ class BroadcastDispatcherTest : SysuiTestCase() { private lateinit var intentFilterOther: IntentFilter @Mock private lateinit var mockHandler: Handler + @Mock + private lateinit var logger: BroadcastDispatcherLogger private lateinit var executor: Executor @@ -96,6 +99,7 @@ class BroadcastDispatcherTest : SysuiTestCase() { Handler(testableLooper.looper), testableLooper.looper, mock(DumpManager::class.java), + logger, mapOf(0 to mockUBRUser0, 1 to mockUBRUser1)) // These should be valid filters @@ -239,8 +243,9 @@ class BroadcastDispatcherTest : SysuiTestCase() { mainHandler: Handler, bgLooper: Looper, dumpManager: DumpManager, + logger: BroadcastDispatcherLogger, var mockUBRMap: Map<Int, UserBroadcastDispatcher> - ) : BroadcastDispatcher(context, mainHandler, bgLooper, dumpManager) { + ) : BroadcastDispatcher(context, mainHandler, bgLooper, dumpManager, logger) { override fun createUBRForUser(userId: Int): UserBroadcastDispatcher { return mockUBRMap.getOrDefault(userId, mock(UserBroadcastDispatcher::class.java)) } diff --git a/packages/SystemUI/tests/src/com/android/systemui/broadcast/FakeBroadcastDispatcher.kt b/packages/SystemUI/tests/src/com/android/systemui/broadcast/FakeBroadcastDispatcher.kt index 9a5773a7a3b4..6e982e26b8cb 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/broadcast/FakeBroadcastDispatcher.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/broadcast/FakeBroadcastDispatcher.kt @@ -24,6 +24,7 @@ import android.os.UserHandle import android.util.ArraySet import android.util.Log import com.android.systemui.SysuiTestableContext +import com.android.systemui.broadcast.logging.BroadcastDispatcherLogger import com.android.systemui.dump.DumpManager import java.util.concurrent.Executor @@ -31,8 +32,9 @@ class FakeBroadcastDispatcher( context: SysuiTestableContext, handler: Handler, looper: Looper, - dumpManager: DumpManager -) : BroadcastDispatcher(context, handler, looper, dumpManager) { + dumpManager: DumpManager, + logger: BroadcastDispatcherLogger +) : BroadcastDispatcher(context, handler, looper, dumpManager, logger) { private val registeredReceivers = ArraySet<BroadcastReceiver>() diff --git a/packages/SystemUI/tests/src/com/android/systemui/broadcast/UserBroadcastDispatcherTest.kt b/packages/SystemUI/tests/src/com/android/systemui/broadcast/UserBroadcastDispatcherTest.kt index 847e442f1a49..443357694f4d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/broadcast/UserBroadcastDispatcherTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/broadcast/UserBroadcastDispatcherTest.kt @@ -26,6 +26,7 @@ import android.test.suitebuilder.annotation.SmallTest import android.testing.AndroidTestingRunner import android.testing.TestableLooper import com.android.systemui.SysuiTestCase +import com.android.systemui.broadcast.logging.BroadcastDispatcherLogger import com.android.systemui.util.concurrency.FakeExecutor import com.android.systemui.util.time.FakeSystemClock import junit.framework.Assert.assertEquals @@ -40,6 +41,7 @@ import org.mockito.ArgumentMatchers.anyInt import org.mockito.ArgumentMatchers.eq import org.mockito.Captor import org.mockito.Mock +import org.mockito.Mockito import org.mockito.Mockito.anyString import org.mockito.Mockito.atLeastOnce import org.mockito.Mockito.never @@ -62,6 +64,8 @@ class UserBroadcastDispatcherTest : SysuiTestCase() { private val USER_HANDLE = UserHandle.of(USER_ID) fun <T> capture(argumentCaptor: ArgumentCaptor<T>): T = argumentCaptor.capture() + fun <T> any(): T = Mockito.any() + fun <T> eq(v: T) = Mockito.eq(v) ?: v } @Mock @@ -72,6 +76,8 @@ class UserBroadcastDispatcherTest : SysuiTestCase() { private lateinit var mockContext: Context @Mock private lateinit var mPendingResult: BroadcastReceiver.PendingResult + @Mock + private lateinit var logger: BroadcastDispatcherLogger @Captor private lateinit var argumentCaptor: ArgumentCaptor<IntentFilter> @@ -91,7 +97,7 @@ class UserBroadcastDispatcherTest : SysuiTestCase() { fakeExecutor = FakeExecutor(FakeSystemClock()) userBroadcastDispatcher = UserBroadcastDispatcher( - mockContext, USER_ID, testableLooper.looper) + mockContext, USER_ID, testableLooper.looper, logger) userBroadcastDispatcher.pendingResult = mPendingResult } @@ -106,6 +112,13 @@ class UserBroadcastDispatcherTest : SysuiTestCase() { } @Test + fun testNotRegisteredOnStart_logging() { + testableLooper.processAllMessages() + + verify(logger, never()).logContextReceiverRegistered(anyInt(), any()) + } + + @Test fun testSingleReceiverRegistered() { intentFilter = IntentFilter(ACTION_1) @@ -126,6 +139,18 @@ class UserBroadcastDispatcherTest : SysuiTestCase() { } @Test + fun testSingleReceiverRegistered_logging() { + intentFilter = IntentFilter(ACTION_1) + + userBroadcastDispatcher.registerReceiver( + ReceiverData(broadcastReceiver, intentFilter, fakeExecutor, USER_HANDLE)) + testableLooper.processAllMessages() + + verify(logger).logReceiverRegistered(USER_HANDLE.identifier, broadcastReceiver) + verify(logger).logContextReceiverRegistered(eq(USER_HANDLE.identifier), any()) + } + + @Test fun testSingleReceiverUnregistered() { intentFilter = IntentFilter(ACTION_1) @@ -145,6 +170,21 @@ class UserBroadcastDispatcherTest : SysuiTestCase() { } @Test + fun testSingleReceiverUnregistered_logger() { + intentFilter = IntentFilter(ACTION_1) + + userBroadcastDispatcher.registerReceiver( + ReceiverData(broadcastReceiver, intentFilter, fakeExecutor, USER_HANDLE)) + testableLooper.processAllMessages() + + userBroadcastDispatcher.unregisterReceiver(broadcastReceiver) + testableLooper.processAllMessages() + + verify(logger).logReceiverUnregistered(USER_HANDLE.identifier, broadcastReceiver) + verify(logger).logContextReceiverUnregistered(USER_HANDLE.identifier) + } + + @Test fun testFilterHasAllActionsAndCategories_twoReceivers() { intentFilter = IntentFilter(ACTION_1) intentFilterOther = IntentFilter(ACTION_2).apply { @@ -196,6 +236,30 @@ class UserBroadcastDispatcherTest : SysuiTestCase() { } @Test + fun testDispatch_logger() { + intentFilter = IntentFilter(ACTION_1) + intentFilterOther = IntentFilter(ACTION_2) + + userBroadcastDispatcher.registerReceiver( + ReceiverData(broadcastReceiver, intentFilter, fakeExecutor, USER_HANDLE)) + userBroadcastDispatcher.registerReceiver( + ReceiverData(broadcastReceiverOther, intentFilterOther, fakeExecutor, USER_HANDLE)) + + val intent = Intent(ACTION_2) + + userBroadcastDispatcher.onReceive(mockContext, intent) + testableLooper.processAllMessages() + fakeExecutor.runAllReady() + + val captor = ArgumentCaptor.forClass(Int::class.java) + verify(logger) + .logBroadcastReceived(captor.capture(), eq(USER_HANDLE.identifier), eq(intent)) + verify(logger).logBroadcastDispatched(captor.value, ACTION_2, broadcastReceiverOther) + verify(logger, never()) + .logBroadcastDispatched(eq(captor.value), any(), eq(broadcastReceiver)) + } + + @Test fun testDispatchToCorrectReceiver_differentFiltersSameReceiver() { intentFilter = IntentFilter(ACTION_1) intentFilterOther = IntentFilter(ACTION_2) |