Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 544cfa0e authored by Caitlin Shkuratov's avatar Caitlin Shkuratov
Browse files

Add helpers for TableLogBuffer + TableLogBufferFactory for tests.

1) Adds Kosmos.tableLogBufferFactory and uses it in tests.
2) Adds a helper method to create real TableLogBuffers with just a name
   and either a Kosmos instance or a SystemClock instance.

Bug: 360832989
Flag: TEST_ONLY
Test: atest TableLogBufferFactoryTest LogDiffsForTableTest
FullMobileConnectionRepositoryTest (+ other tests)

Change-Id: I1ebd119c15b018dc74f0200369f693cff0676732
parent d2c910b4
Loading
Loading
Loading
Loading
+3 −17
Original line number Original line Diff line number Diff line
@@ -75,7 +75,7 @@ import com.android.systemui.kosmos.testScope
import com.android.systemui.log.FaceAuthenticationLogger
import com.android.systemui.log.FaceAuthenticationLogger
import com.android.systemui.log.SessionTracker
import com.android.systemui.log.SessionTracker
import com.android.systemui.log.logcatLogBuffer
import com.android.systemui.log.logcatLogBuffer
import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.log.table.logcatTableLogBuffer
import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAsleepForTest
import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAsleepForTest
import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest
import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest
import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.power.domain.interactor.powerInteractor
@@ -90,7 +90,6 @@ import com.android.systemui.util.mockito.KotlinArgumentCaptor
import com.android.systemui.util.mockito.captureMany
import com.android.systemui.util.mockito.captureMany
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertThat
import java.io.PrintWriter
import java.io.PrintWriter
import java.io.StringWriter
import java.io.StringWriter
@@ -199,21 +198,8 @@ class DeviceEntryFaceAuthRepositoryTest : SysuiTestCase() {
        fmOverride: FaceManager? = faceManager,
        fmOverride: FaceManager? = faceManager,
        bypassControllerOverride: KeyguardBypassController? = bypassController
        bypassControllerOverride: KeyguardBypassController? = bypassController
    ): DeviceEntryFaceAuthRepositoryImpl {
    ): DeviceEntryFaceAuthRepositoryImpl {
        val systemClock = FakeSystemClock()
        val faceAuthBuffer = logcatTableLogBuffer(kosmos, "face auth")
        val faceAuthBuffer =
        val faceDetectBuffer = logcatTableLogBuffer(kosmos, "face detect")
            TableLogBuffer(
                10,
                "face auth",
                systemClock,
                mock(),
            )
        val faceDetectBuffer =
            TableLogBuffer(
                10,
                "face detect",
                systemClock,
                mock(),
            )


        return DeviceEntryFaceAuthRepositoryImpl(
        return DeviceEntryFaceAuthRepositoryImpl(
            mContext,
            mContext,
+2 −2
Original line number Original line Diff line number Diff line
@@ -19,8 +19,8 @@ package com.android.systemui.log.table
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.log.LogcatEchoTrackerAlways
import com.android.systemui.log.table.TableChange.Companion.IS_INITIAL_PREFIX
import com.android.systemui.log.table.TableChange.Companion.IS_INITIAL_PREFIX
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.time.FakeSystemClock
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertThat
import java.io.PrintWriter
import java.io.PrintWriter
@@ -57,7 +57,7 @@ class LogDiffsForTableTest : SysuiTestCase() {
                MAX_SIZE,
                MAX_SIZE,
                BUFFER_NAME,
                BUFFER_NAME,
                systemClock,
                systemClock,
                mock(),
                LogcatEchoTrackerAlways(),
            )
            )
    }
    }


+3 −1
Original line number Original line Diff line number Diff line
@@ -20,6 +20,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.dump.DumpManager
import com.android.systemui.dump.DumpManager
import com.android.systemui.log.LogcatEchoTrackerAlways
import com.android.systemui.util.time.FakeSystemClock
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertThat
import org.junit.Test
import org.junit.Test
@@ -31,7 +32,8 @@ import org.mockito.kotlin.mock
class TableLogBufferFactoryTest : SysuiTestCase() {
class TableLogBufferFactoryTest : SysuiTestCase() {
    private val dumpManager: DumpManager = mock()
    private val dumpManager: DumpManager = mock()
    private val systemClock = FakeSystemClock()
    private val systemClock = FakeSystemClock()
    private val underTest = TableLogBufferFactory(dumpManager, systemClock, mock())
    private val underTest =
        TableLogBufferFactory(dumpManager, systemClock, LogcatEchoTrackerAlways())


    @Test
    @Test
    fun create_alwaysCreatesNewInstance() {
    fun create_alwaysCreatesNewInstance() {
+5 −6
Original line number Original line Diff line number Diff line
@@ -27,7 +27,7 @@ import com.android.systemui.demomode.DemoMode
import com.android.systemui.demomode.DemoModeController
import com.android.systemui.demomode.DemoModeController
import com.android.systemui.dump.DumpManager
import com.android.systemui.dump.DumpManager
import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.log.table.TableLogBuffer
import com.android.systemui.log.table.TableLogBufferFactory
import com.android.systemui.log.table.tableLogBufferFactory
import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository
import com.android.systemui.statusbar.pipeline.airplane.data.repository.FakeAirplaneModeRepository
import com.android.systemui.statusbar.pipeline.mobile.data.MobileInputLogger
import com.android.systemui.statusbar.pipeline.mobile.data.MobileInputLogger
import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel
import com.android.systemui.statusbar.pipeline.mobile.data.model.SubscriptionModel
@@ -42,11 +42,11 @@ import com.android.systemui.statusbar.pipeline.shared.data.repository.Connectivi
import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository
import com.android.systemui.statusbar.pipeline.shared.data.repository.FakeConnectivityRepository
import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepository
import com.android.systemui.statusbar.pipeline.wifi.data.repository.FakeWifiRepository
import com.android.systemui.statusbar.pipeline.wifi.data.repository.demo.DemoModeWifiDataSource
import com.android.systemui.statusbar.pipeline.wifi.data.repository.demo.DemoModeWifiDataSource
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.kotlinArgumentCaptor
import com.android.systemui.util.mockito.kotlinArgumentCaptor
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Dispatchers
@@ -74,12 +74,13 @@ import org.mockito.MockitoAnnotations
@SmallTest
@SmallTest
@RunWith(AndroidJUnit4::class)
@RunWith(AndroidJUnit4::class)
class MobileRepositorySwitcherTest : SysuiTestCase() {
class MobileRepositorySwitcherTest : SysuiTestCase() {
    private val kosmos = testKosmos()

    private lateinit var underTest: MobileRepositorySwitcher
    private lateinit var underTest: MobileRepositorySwitcher
    private lateinit var realRepo: MobileConnectionsRepositoryImpl
    private lateinit var realRepo: MobileConnectionsRepositoryImpl
    private lateinit var demoRepo: DemoMobileConnectionsRepository
    private lateinit var demoRepo: DemoMobileConnectionsRepository
    private lateinit var mobileDataSource: DemoModeMobileConnectionDataSource
    private lateinit var mobileDataSource: DemoModeMobileConnectionDataSource
    private lateinit var wifiDataSource: DemoModeWifiDataSource
    private lateinit var wifiDataSource: DemoModeWifiDataSource
    private lateinit var logFactory: TableLogBufferFactory
    private lateinit var wifiRepository: FakeWifiRepository
    private lateinit var wifiRepository: FakeWifiRepository
    private lateinit var connectivityRepository: ConnectivityRepository
    private lateinit var connectivityRepository: ConnectivityRepository


@@ -100,8 +101,6 @@ class MobileRepositorySwitcherTest : SysuiTestCase() {
    fun setUp() {
    fun setUp() {
        MockitoAnnotations.initMocks(this)
        MockitoAnnotations.initMocks(this)


        logFactory = TableLogBufferFactory(dumpManager, FakeSystemClock(), mock())

        // Never start in demo mode
        // Never start in demo mode
        whenever(demoModeController.isInDemoMode).thenReturn(false)
        whenever(demoModeController.isInDemoMode).thenReturn(false)


@@ -144,7 +143,7 @@ class MobileRepositorySwitcherTest : SysuiTestCase() {
                wifiDataSource = wifiDataSource,
                wifiDataSource = wifiDataSource,
                scope = scope,
                scope = scope,
                context = context,
                context = context,
                logFactory = logFactory,
                logFactory = kosmos.tableLogBufferFactory,
            )
            )


        underTest =
        underTest =
+4 −10
Original line number Original line Diff line number Diff line
@@ -23,16 +23,16 @@ import androidx.test.filters.SmallTest
import com.android.settingslib.SignalIcon
import com.android.settingslib.SignalIcon
import com.android.settingslib.mobile.TelephonyIcons
import com.android.settingslib.mobile.TelephonyIcons
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.log.table.TableLogBufferFactory
import com.android.systemui.log.table.tableLogBufferFactory
import com.android.systemui.statusbar.pipeline.mobile.data.model.DataConnectionState
import com.android.systemui.statusbar.pipeline.mobile.data.model.DataConnectionState
import com.android.systemui.statusbar.pipeline.mobile.data.model.NetworkNameModel
import com.android.systemui.statusbar.pipeline.mobile.data.model.NetworkNameModel
import com.android.systemui.statusbar.pipeline.mobile.data.repository.demo.model.FakeNetworkEventModel
import com.android.systemui.statusbar.pipeline.mobile.data.repository.demo.model.FakeNetworkEventModel
import com.android.systemui.statusbar.pipeline.shared.data.model.toMobileDataActivityModel
import com.android.systemui.statusbar.pipeline.shared.data.model.toMobileDataActivityModel
import com.android.systemui.statusbar.pipeline.wifi.data.repository.demo.DemoModeWifiDataSource
import com.android.systemui.statusbar.pipeline.wifi.data.repository.demo.DemoModeWifiDataSource
import com.android.systemui.statusbar.pipeline.wifi.data.repository.demo.model.FakeWifiEventModel
import com.android.systemui.statusbar.pipeline.wifi.data.repository.demo.model.FakeWifiEventModel
import com.android.systemui.testKosmos
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.mockito.whenever
import com.android.systemui.util.time.FakeSystemClock
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.Job
import kotlinx.coroutines.Job
@@ -59,17 +59,11 @@ import platform.test.runner.parameterized.Parameters
@RunWith(ParameterizedAndroidJunit4::class)
@RunWith(ParameterizedAndroidJunit4::class)
internal class DemoMobileConnectionParameterizedTest(private val testCase: TestCase) :
internal class DemoMobileConnectionParameterizedTest(private val testCase: TestCase) :
    SysuiTestCase() {
    SysuiTestCase() {
    private val kosmos = testKosmos()


    private val testDispatcher = UnconfinedTestDispatcher()
    private val testDispatcher = UnconfinedTestDispatcher()
    private val testScope = TestScope(testDispatcher)
    private val testScope = TestScope(testDispatcher)


    private val logFactory =
        TableLogBufferFactory(
            mock(),
            FakeSystemClock(),
            mock(),
        )

    private val fakeNetworkEventFlow = MutableStateFlow<FakeNetworkEventModel?>(null)
    private val fakeNetworkEventFlow = MutableStateFlow<FakeNetworkEventModel?>(null)
    private val fakeWifiEventFlow = MutableStateFlow<FakeWifiEventModel?>(null)
    private val fakeWifiEventFlow = MutableStateFlow<FakeWifiEventModel?>(null)


@@ -96,7 +90,7 @@ internal class DemoMobileConnectionParameterizedTest(private val testCase: TestC
                wifiDataSource = mockWifiDataSource,
                wifiDataSource = mockWifiDataSource,
                scope = testScope.backgroundScope,
                scope = testScope.backgroundScope,
                context = context,
                context = context,
                logFactory = logFactory,
                logFactory = kosmos.tableLogBufferFactory,
            )
            )


        connectionsRepo.startProcessingCommands()
        connectionsRepo.startProcessingCommands()
Loading