Loading core/tests/coretests/src/com/android/internal/os/BatteryStatsImplTest.java +37 −5 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 = Loading core/tests/coretests/src/com/android/internal/os/BluetoothPowerCalculatorTest.java +71 −25 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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") Loading Loading @@ -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); Loading @@ -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); Loading Loading @@ -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); Loading @@ -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); Loading Loading @@ -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); } Loading @@ -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; } } Loading
core/tests/coretests/src/com/android/internal/os/BatteryStatsImplTest.java +37 −5 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 = Loading
core/tests/coretests/src/com/android/internal/os/BluetoothPowerCalculatorTest.java +71 −25 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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") Loading Loading @@ -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); Loading @@ -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); Loading Loading @@ -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); Loading @@ -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); Loading Loading @@ -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); } Loading @@ -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; } }