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

Commit 63c3200b authored by Daniel Peykov's avatar Daniel Peykov
Browse files

Remove dependence on sync mode from latency tests

Some latency tests required DeviceConfig syncing to be enabled. This is
fixed using TestableDeviceConfig or enabling/disabling syncs where
necessary. This will allow syncs to be disabled by default during
testing to ensure deterministic platform flags.

Bug: 283536230
Test: atest LatencyTrackerTest FakeLatencyTrackerTest
Test: atest SoundTriggerMiddlewareLoggingLatencyTest w/ --disable-device-config-sync
Change-Id: I312e8b284ccbe0ba0f04b9cff5478a717ca564e4
parent 70e1d6aa
Loading
Loading
Loading
Loading
+15 −0
Original line number Original line Diff line number Diff line
@@ -16,14 +16,19 @@


package com.android.internal.util;
package com.android.internal.util;


import static android.provider.DeviceConfig.NAMESPACE_LATENCY_TRACKER;

import static com.android.internal.util.FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_SHOW_VOICE_INTERACTION;
import static com.android.internal.util.FrameworkStatsLog.UIACTION_LATENCY_REPORTED__ACTION__ACTION_SHOW_VOICE_INTERACTION;
import static com.android.internal.util.FrameworkStatsLog.UI_ACTION_LATENCY_REPORTED;
import static com.android.internal.util.FrameworkStatsLog.UI_ACTION_LATENCY_REPORTED;
import static com.android.internal.util.LatencyTracker.ACTION_SHOW_VOICE_INTERACTION;
import static com.android.internal.util.LatencyTracker.ACTION_SHOW_VOICE_INTERACTION;


import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertThat;


import android.provider.DeviceConfig;

import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.ext.junit.runners.AndroidJUnit4;


import org.junit.After;
import org.junit.Before;
import org.junit.Before;
import org.junit.Test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runner.RunWith;
@@ -40,12 +45,22 @@ import java.util.List;
public class FakeLatencyTrackerTest {
public class FakeLatencyTrackerTest {


    private FakeLatencyTracker mFakeLatencyTracker;
    private FakeLatencyTracker mFakeLatencyTracker;
    private int mInitialSyncDisabledMode;


    @Before
    @Before
    public void setUp() throws Exception {
    public void setUp() throws Exception {
        mInitialSyncDisabledMode = DeviceConfig.getSyncDisabledMode();
        DeviceConfig.setSyncDisabledMode(DeviceConfig.SYNC_DISABLED_MODE_NONE);
        mFakeLatencyTracker = FakeLatencyTracker.create();
        mFakeLatencyTracker = FakeLatencyTracker.create();
    }
    }


    @After
    public void tearDown() throws Exception {
        DeviceConfig.setProperties(
                new DeviceConfig.Properties.Builder(NAMESPACE_LATENCY_TRACKER).build());
        DeviceConfig.setSyncDisabledMode(mInitialSyncDisabledMode);
    }

    @Test
    @Test
    public void testForceEnabled() throws Exception {
    public void testForceEnabled() throws Exception {
        mFakeLatencyTracker.logAction(ACTION_SHOW_VOICE_INTERACTION, 1234);
        mFakeLatencyTracker.logAction(ACTION_SHOW_VOICE_INTERACTION, 1234);
+7 −1
Original line number Original line Diff line number Diff line
@@ -58,15 +58,21 @@ public class LatencyTrackerTest {
    // Fake is used because it tests the real logic of LatencyTracker, and it only fakes the
    // Fake is used because it tests the real logic of LatencyTracker, and it only fakes the
    // outcomes (PerfettoTrigger and FrameworkStatsLog).
    // outcomes (PerfettoTrigger and FrameworkStatsLog).
    private FakeLatencyTracker mLatencyTracker;
    private FakeLatencyTracker mLatencyTracker;
    private int mInitialSyncDisabledMode;


    @Before
    @Before
    public void setUp() throws Exception {
    public void setUp() throws Exception {
        mInitialSyncDisabledMode = DeviceConfig.getSyncDisabledMode();
        DeviceConfig.setSyncDisabledMode(DeviceConfig.SYNC_DISABLED_MODE_NONE);
        mLatencyTracker = FakeLatencyTracker.create();
        mLatencyTracker = FakeLatencyTracker.create();
    }
    }


    @After
    @After
    public void tearDown() {
    public void tearDown() throws Exception {
        mLatencyTracker.stopListeningForLatencyTrackerConfigChanges();
        mLatencyTracker.stopListeningForLatencyTrackerConfigChanges();
        DeviceConfig.setProperties(
                new DeviceConfig.Properties.Builder(NAMESPACE_LATENCY_TRACKER).build());
        DeviceConfig.setSyncDisabledMode(mInitialSyncDisabledMode);
    }
    }


    @Test
    @Test
+5 −0
Original line number Original line Diff line number Diff line
@@ -41,9 +41,11 @@ import android.os.RemoteException;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.platform.app.InstrumentationRegistry;


import com.android.internal.util.FakeLatencyTracker;
import com.android.internal.util.FakeLatencyTracker;
import com.android.modules.utils.testing.TestableDeviceConfig.TestableDeviceConfigRule;


import org.junit.After;
import org.junit.After;
import org.junit.Before;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
import org.junit.runners.JUnit4;
@@ -54,6 +56,9 @@ import org.mockito.MockitoAnnotations;
@RunWith(JUnit4.class)
@RunWith(JUnit4.class)
public class SoundTriggerMiddlewareLoggingLatencyTest {
public class SoundTriggerMiddlewareLoggingLatencyTest {


    @Rule
    public TestableDeviceConfigRule mDeviceConfigRule = new TestableDeviceConfigRule();

    private FakeLatencyTracker mLatencyTracker;
    private FakeLatencyTracker mLatencyTracker;
    @Mock
    @Mock
    private BatteryStatsInternal mBatteryStatsInternal;
    private BatteryStatsInternal mBatteryStatsInternal;