Merge "Implement general projection curve support for UsageGraph." into oc-dr1-dev
diff --git a/src/com/android/settings/fuelgauge/anomaly/AnomalyLoader.java b/src/com/android/settings/fuelgauge/anomaly/AnomalyLoader.java
index b182a03..264c390 100644
--- a/src/com/android/settings/fuelgauge/anomaly/AnomalyLoader.java
+++ b/src/com/android/settings/fuelgauge/anomaly/AnomalyLoader.java
@@ -17,12 +17,14 @@
package com.android.settings.fuelgauge.anomaly;
import android.content.Context;
+import android.content.pm.PackageManager;
import android.os.BatteryStats;
import android.os.Bundle;
import android.os.UserManager;
import android.support.annotation.VisibleForTesting;
import com.android.internal.os.BatteryStatsHelper;
+import com.android.settings.Utils;
import com.android.settings.utils.AsyncLoader;
import java.util.ArrayList;
@@ -33,6 +35,7 @@
* an empty list if there is no anomaly.
*/
public class AnomalyLoader extends AsyncLoader<List<Anomaly>> {
+ private static final boolean USE_FAKE_DATA = false;
private BatteryStatsHelper mBatteryStatsHelper;
private String mPackageName;
private UserManager mUserManager;
@@ -56,7 +59,6 @@
*
* This constructor will create {@link BatteryStatsHelper} in background thread.
*
- * @param context
* @param packageName if set, only finds anomalies for this package. If {@code null},
* detects all anomalies of this type.
*/
@@ -81,6 +83,9 @@
@Override
public List<Anomaly> loadInBackground() {
+ if (USE_FAKE_DATA) {
+ return generateFakeData();
+ }
if (mBatteryStatsHelper == null) {
mBatteryStatsHelper = new BatteryStatsHelper(getContext());
mBatteryStatsHelper.create((Bundle) null);
@@ -99,4 +104,31 @@
return anomalies;
}
+ @VisibleForTesting
+ List<Anomaly> generateFakeData() {
+ final List<Anomaly> anomalies = new ArrayList<>();
+ final Context context = getContext();
+ try {
+ final String packageName = "com.android.settings";
+ final CharSequence displayName = "Settings";
+ final int uid = context.getPackageManager().getPackageUid(packageName, 0);
+
+ anomalies.add(new Anomaly.Builder()
+ .setUid(uid)
+ .setType(Anomaly.AnomalyType.WAKE_LOCK)
+ .setPackageName(packageName)
+ .setDisplayName(displayName)
+ .build());
+ anomalies.add(new Anomaly.Builder()
+ .setUid(uid)
+ .setType(Anomaly.AnomalyType.WAKEUP_ALARM)
+ .setPackageName(packageName)
+ .setDisplayName(displayName)
+ .build());
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ return anomalies;
+ }
+
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/anomaly/AnomalyLoaderTest.java b/tests/robotests/src/com/android/settings/fuelgauge/anomaly/AnomalyLoaderTest.java
index 1ca29a1..6f4b1bc 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/anomaly/AnomalyLoaderTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/anomaly/AnomalyLoaderTest.java
@@ -20,11 +20,13 @@
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import android.content.Context;
+import android.content.pm.PackageManager;
import android.os.UserManager;
import com.android.internal.os.BatteryStatsHelper;
@@ -48,6 +50,9 @@
@RunWith(SettingsRobolectricTestRunner.class)
@Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION)
public class AnomalyLoaderTest {
+ private static final String PACKAGE_NAME = "com.android.settings";
+ private static final CharSequence DISPLAY_NAME = "Settings";
+ private static final int UID = 0;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private Context mContext;
@Mock
@@ -67,12 +72,13 @@
private AnomalyLoader mAnomalyLoader;
@Before
- public void setUp() {
+ public void setUp() throws PackageManager.NameNotFoundException {
MockitoAnnotations.initMocks(this);
FakeFeatureFactory.setupForTest(mContext);
doReturn(true).when(mAnomalyDetectionPolicy).isAnomalyDetectorEnabled(anyInt());
doReturn(mUserManager).when(mContext).getSystemService(Context.USER_SERVICE);
+ when(mContext.getPackageManager().getPackageUid(anyString(), anyInt())).thenReturn(UID);
mWakeLockAnomalies = new ArrayList<>();
mWakeLockAnomaly = createAnomaly(Anomaly.AnomalyType.WAKE_LOCK);
@@ -105,6 +111,16 @@
private Anomaly createAnomaly(@Anomaly.AnomalyType int type) {
return new Anomaly.Builder()
.setType(type)
+ .setUid(UID)
+ .setPackageName(PACKAGE_NAME)
+ .setDisplayName(DISPLAY_NAME)
.build();
}
+
+ @Test
+ public void testGenerateFakeData() {
+ List<Anomaly> anomalies = mAnomalyLoader.generateFakeData();
+
+ assertThat(anomalies).containsExactly(mWakeLockAnomaly, mWakeupAlarmAnomaly);
+ }
}
diff --git a/tests/robotests/src/com/android/settings/fuelgauge/anomaly/checker/WakeLockAnomalyDetectorTest.java b/tests/robotests/src/com/android/settings/fuelgauge/anomaly/checker/WakeLockAnomalyDetectorTest.java
index 2996e4d..cab612e 100644
--- a/tests/robotests/src/com/android/settings/fuelgauge/anomaly/checker/WakeLockAnomalyDetectorTest.java
+++ b/tests/robotests/src/com/android/settings/fuelgauge/anomaly/checker/WakeLockAnomalyDetectorTest.java
@@ -171,7 +171,7 @@
}
@Test
- public void testDetectAnomalies_containsTargetpackage_detectIt() {
+ public void testDetectAnomalies_containsTargetPackage_detectIt() {
doReturn(TARGET_UID).when(mBatteryUtils).getPackageUid(TARGET_PACKAGE_NAME);
final Anomaly targetAnomaly = new Anomaly.Builder()
.setUid(TARGET_UID)