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

Commit 577319e1 authored by Etienne Ruffieux's avatar Etienne Ruffieux
Browse files

Remove BT hidden APIs calls from power tests

Tag: #feature
Bug: 218404688
Test: atest
Change-Id: If23435e550535401c796a2c4c7df00bb7a6e9073
parent b1101d1a
Loading
Loading
Loading
Loading
+37 −5
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import android.bluetooth.BluetoothActivityEnergyInfo;
import android.bluetooth.UidTraffic;
import android.os.BatteryStats;
import android.os.BluetoothBatteryStats;
import android.os.Parcel;
import android.os.WakeLockStats;
import android.os.WorkSource;
import android.util.SparseArray;
@@ -583,11 +584,42 @@ public class BatteryStatsImplTest {
        mBatteryStatsImpl.noteBluetoothScanStoppedFromSourceLocked(ws, true, 9000, 9000);
        mBatteryStatsImpl.noteBluetoothScanResultsFromSourceLocked(ws, 42, 9000, 9000);

        BluetoothActivityEnergyInfo info = new BluetoothActivityEnergyInfo(1000,
                BluetoothActivityEnergyInfo.BT_STACK_STATE_STATE_ACTIVE, 9000, 8000, 12000, 0);
        info.setUidTraffic(ImmutableList.of(
                new UidTraffic(10042, 3000, 4000),
                new UidTraffic(10043, 5000, 8000)));


        final Parcel uidTrafficParcel1 = Parcel.obtain();
        final Parcel uidTrafficParcel2 = Parcel.obtain();

        uidTrafficParcel1.writeInt(10042);
        uidTrafficParcel1.writeLong(3000);
        uidTrafficParcel1.writeLong(4000);
        uidTrafficParcel1.setDataPosition(0);
        uidTrafficParcel2.writeInt(10043);
        uidTrafficParcel2.writeLong(5000);
        uidTrafficParcel2.writeLong(8000);
        uidTrafficParcel2.setDataPosition(0);

        List<UidTraffic> uidTrafficList = ImmutableList.of(
                UidTraffic.CREATOR.createFromParcel(uidTrafficParcel1),
                UidTraffic.CREATOR.createFromParcel(uidTrafficParcel2));

        final Parcel btActivityEnergyInfoParcel = Parcel.obtain();
        btActivityEnergyInfoParcel.writeLong(1000);
        btActivityEnergyInfoParcel.writeInt(
                BluetoothActivityEnergyInfo.BT_STACK_STATE_STATE_ACTIVE);
        btActivityEnergyInfoParcel.writeLong(9000);
        btActivityEnergyInfoParcel.writeLong(8000);
        btActivityEnergyInfoParcel.writeLong(12000);
        btActivityEnergyInfoParcel.writeLong(0);
        btActivityEnergyInfoParcel.writeTypedList(uidTrafficList);
        btActivityEnergyInfoParcel.setDataPosition(0);

        BluetoothActivityEnergyInfo info = BluetoothActivityEnergyInfo.CREATOR
                .createFromParcel(btActivityEnergyInfoParcel);

        uidTrafficParcel1.recycle();
        uidTrafficParcel2.recycle();
        btActivityEnergyInfoParcel.recycle();

        mBatteryStatsImpl.updateBluetoothStateLocked(info, -1, 1000, 1000);

        BluetoothBatteryStats stats =
+71 −25
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.bluetooth.UidTraffic;
import android.os.BatteryConsumer;
import android.os.BatteryStats;
import android.os.BatteryUsageStatsQuery;
import android.os.Parcel;
import android.os.Process;
import android.os.UidBatteryConsumer;
import android.os.WorkSource;
@@ -37,6 +38,8 @@ import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;

import java.util.List;

@RunWith(AndroidJUnit4.class)
@SmallTest
@SuppressWarnings("GuardedBy")
@@ -90,11 +93,13 @@ public class BluetoothPowerCalculatorTest {
        uid.setProcessStateForTest(
                BatteryStats.Uid.PROCESS_STATE_FOREGROUND, 1000);

        BluetoothActivityEnergyInfo info1 = new BluetoothActivityEnergyInfo(2000,
                BluetoothActivityEnergyInfo.BT_STACK_STATE_STATE_ACTIVE, 1000, 2000, 3000, 4000);
        info1.setUidTraffic(ImmutableList.of(
                new UidTraffic(Process.BLUETOOTH_UID, 1000, 2000),
                new UidTraffic(APP_UID, 3000, 4000)));

        List<UidTraffic> trafficList1 = ImmutableList.of(
                createUidTraffic(Process.BLUETOOTH_UID, 1000, 2000),
                createUidTraffic(APP_UID, 3000, 4000));
        BluetoothActivityEnergyInfo info1 = createBtEnergyInfo(2000,
                BluetoothActivityEnergyInfo.BT_STACK_STATE_STATE_ACTIVE, 1000, 2000, 3000, 4000,
                trafficList1);

        batteryStats.updateBluetoothStateLocked(info1,
                0/*1_000_000*/, 2000, 2000);
@@ -102,11 +107,14 @@ public class BluetoothPowerCalculatorTest {
        uid.setProcessStateForTest(
                BatteryStats.Uid.PROCESS_STATE_BACKGROUND, 3000);

        BluetoothActivityEnergyInfo info2 = new BluetoothActivityEnergyInfo(4000,
                BluetoothActivityEnergyInfo.BT_STACK_STATE_STATE_ACTIVE, 5000, 6000, 7000, 8000);
        info2.setUidTraffic(ImmutableList.of(
                new UidTraffic(Process.BLUETOOTH_UID, 5000, 6000),
                new UidTraffic(APP_UID, 7000, 8000)));

        List<UidTraffic> trafficList2 = ImmutableList.of(
                createUidTraffic(Process.BLUETOOTH_UID, 5000, 6000),
                createUidTraffic(APP_UID, 7000, 8000));
        BluetoothActivityEnergyInfo info2 = createBtEnergyInfo(4000,
                BluetoothActivityEnergyInfo.BT_STACK_STATE_STATE_ACTIVE, 5000, 6000, 7000, 8000,
                trafficList2);


        batteryStats.updateBluetoothStateLocked(info2,
                0 /*5_000_000 */, 4000, 4000);
@@ -202,11 +210,14 @@ public class BluetoothPowerCalculatorTest {
        uid.setProcessStateForTest(
                BatteryStats.Uid.PROCESS_STATE_FOREGROUND, 1000);

        BluetoothActivityEnergyInfo info1 = new BluetoothActivityEnergyInfo(2000,
                BluetoothActivityEnergyInfo.BT_STACK_STATE_STATE_ACTIVE, 1000, 2000, 3000, 4000);
        info1.setUidTraffic(ImmutableList.of(
                new UidTraffic(Process.BLUETOOTH_UID, 1000, 2000),
                new UidTraffic(APP_UID, 3000, 4000)));

        List<UidTraffic> trafficList1 = ImmutableList.of(
                createUidTraffic(Process.BLUETOOTH_UID, 1000, 2000),
                createUidTraffic(APP_UID, 3000, 4000));
        BluetoothActivityEnergyInfo info1 = createBtEnergyInfo(2000,
                BluetoothActivityEnergyInfo.BT_STACK_STATE_STATE_ACTIVE, 1000, 2000, 3000, 4000,
                trafficList1);


        batteryStats.updateBluetoothStateLocked(info1,
                1_000_000, 2000, 2000);
@@ -214,11 +225,13 @@ public class BluetoothPowerCalculatorTest {
        uid.setProcessStateForTest(
                BatteryStats.Uid.PROCESS_STATE_BACKGROUND, 3000);

        BluetoothActivityEnergyInfo info2 = new BluetoothActivityEnergyInfo(4000,
                BluetoothActivityEnergyInfo.BT_STACK_STATE_STATE_ACTIVE, 5000, 6000, 7000, 8000);
        info2.setUidTraffic(ImmutableList.of(
                new UidTraffic(Process.BLUETOOTH_UID, 5000, 6000),
                new UidTraffic(APP_UID, 7000, 8000)));
        List<UidTraffic> trafficList2 = ImmutableList.of(
                createUidTraffic(Process.BLUETOOTH_UID, 5000, 6000),
                createUidTraffic(APP_UID, 7000, 8000));
        BluetoothActivityEnergyInfo info2 = createBtEnergyInfo(4000,
                BluetoothActivityEnergyInfo.BT_STACK_STATE_STATE_ACTIVE, 5000, 6000, 7000, 8000,
                trafficList2);


        batteryStats.updateBluetoothStateLocked(info2,
                5_000_000, 4000, 4000);
@@ -280,12 +293,15 @@ public class BluetoothPowerCalculatorTest {
    }

    private void setupBluetoothEnergyInfo(long reportedEnergyUc, long consumedEnergyUc) {
        final BluetoothActivityEnergyInfo info = new BluetoothActivityEnergyInfo(1000,
        List<UidTraffic> trafficList = ImmutableList.of(
                createUidTraffic(Process.BLUETOOTH_UID, 1000, 2000),
                createUidTraffic(APP_UID, 3000, 4000));


        final BluetoothActivityEnergyInfo info = createBtEnergyInfo(1000,
                BluetoothActivityEnergyInfo.BT_STACK_STATE_STATE_ACTIVE, 7000, 5000, 0,
                reportedEnergyUc);
        info.setUidTraffic(ImmutableList.of(
                new UidTraffic(Process.BLUETOOTH_UID, 1000, 2000),
                new UidTraffic(APP_UID, 3000, 4000)));
                reportedEnergyUc, trafficList);

        mStatsRule.getBatteryStats().updateBluetoothStateLocked(info,
                consumedEnergyUc, 1000, 1000);
    }
@@ -304,4 +320,34 @@ public class BluetoothPowerCalculatorTest {
                BatteryConsumer.POWER_COMPONENT_BLUETOOTH);
        assertThat(usageDurationMillis).isEqualTo(durationMs);
    }

    private UidTraffic createUidTraffic(int uid, long traffic1, long traffic2) {
        final Parcel uidTrafficParcel = Parcel.obtain();
        uidTrafficParcel.writeInt(uid);
        uidTrafficParcel.writeLong(traffic1);
        uidTrafficParcel.writeLong(traffic2);
        uidTrafficParcel.setDataPosition(0);

        UidTraffic traffic = UidTraffic.CREATOR.createFromParcel(uidTrafficParcel);
        uidTrafficParcel.recycle();
        return traffic;
    }

    private BluetoothActivityEnergyInfo createBtEnergyInfo(long timestamp, int stackState,
            long txTime, long rxTime, long idleTime, long energyUsed, List<UidTraffic> traffic) {
        final Parcel btActivityEnergyInfoParcel = Parcel.obtain();
        btActivityEnergyInfoParcel.writeLong(timestamp);
        btActivityEnergyInfoParcel.writeInt(stackState);
        btActivityEnergyInfoParcel.writeLong(txTime);
        btActivityEnergyInfoParcel.writeLong(rxTime);
        btActivityEnergyInfoParcel.writeLong(idleTime);
        btActivityEnergyInfoParcel.writeLong(energyUsed);
        btActivityEnergyInfoParcel.writeTypedList(traffic);
        btActivityEnergyInfoParcel.setDataPosition(0);

        BluetoothActivityEnergyInfo info = BluetoothActivityEnergyInfo.CREATOR
                .createFromParcel(btActivityEnergyInfoParcel);
        btActivityEnergyInfoParcel.recycle();
        return info;
    }
}