Update insert method for battery database
1. Add conflict code to ignore the confliction and return -1 when insert fails. 2. Add boolean return value to show whether insert sucessfully 3. Add unit test. We don't write robo test because robolectirc use "update" to shadow "insert" operation, which returns the wrong data. Bug: 77968649 Test: SettingsUnitTest Change-Id: Ibd3b53cdb1796d74ea4a2ca1f067e2b302b939e9
This commit is contained in:
@@ -21,6 +21,8 @@ import static android.support.test.espresso.assertion.ViewAssertions.matches;
|
||||
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
|
||||
import static android.support.test.espresso.matcher.ViewMatchers.withText;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import android.app.Instrumentation;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
@@ -33,6 +35,7 @@ import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
@@ -41,6 +44,8 @@ public class RestrictAppTest {
|
||||
private static final String BATTERY_INTENT = "android.intent.action.POWER_USAGE_SUMMARY";
|
||||
private static final String PACKAGE_SETTINGS = "com.android.settings";
|
||||
private static final String PACKAGE_SYSTEM_UI = "com.android.systemui";
|
||||
private static final int ANOMALY_TYPE =
|
||||
StatsManagerConfig.AnomalyType.EXCESSIVE_WAKELOCK_ALL_SCREEN_OFF;
|
||||
|
||||
private BatteryDatabaseManager mBatteryDatabaseManager;
|
||||
private PackageManager mPackageManager;
|
||||
@@ -58,7 +63,7 @@ public class RestrictAppTest {
|
||||
public void batterySettings_hasOneAnomaly_showAnomaly() throws
|
||||
PackageManager.NameNotFoundException {
|
||||
mBatteryDatabaseManager.insertAnomaly(mPackageManager.getPackageUid(PACKAGE_SETTINGS, 0),
|
||||
PACKAGE_SETTINGS, 1,
|
||||
PACKAGE_SETTINGS, ANOMALY_TYPE,
|
||||
AnomalyDatabaseHelper.State.NEW, System.currentTimeMillis());
|
||||
|
||||
Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
|
||||
@@ -70,10 +75,10 @@ public class RestrictAppTest {
|
||||
public void batterySettings_hasTwoAnomalies_showAnomalies() throws
|
||||
PackageManager.NameNotFoundException {
|
||||
mBatteryDatabaseManager.insertAnomaly(mPackageManager.getPackageUid(PACKAGE_SETTINGS, 0),
|
||||
PACKAGE_SETTINGS, 1,
|
||||
PACKAGE_SETTINGS, ANOMALY_TYPE,
|
||||
AnomalyDatabaseHelper.State.NEW, System.currentTimeMillis());
|
||||
mBatteryDatabaseManager.insertAnomaly(mPackageManager.getPackageUid(PACKAGE_SYSTEM_UI, 0),
|
||||
PACKAGE_SYSTEM_UI, 1,
|
||||
PACKAGE_SYSTEM_UI, ANOMALY_TYPE,
|
||||
AnomalyDatabaseHelper.State.NEW, System.currentTimeMillis());
|
||||
|
||||
Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
|
||||
@@ -95,4 +100,26 @@ public class RestrictAppTest {
|
||||
instrumentation.startActivitySync(new Intent(BATTERY_INTENT));
|
||||
onView(withText("2 apps recently restricted")).check(matches(isDisplayed()));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void insertDuplicateAnomalies_onlyInsertOnce() throws
|
||||
PackageManager.NameNotFoundException {
|
||||
final int uid = mPackageManager.getPackageUid(PACKAGE_SETTINGS, 0);
|
||||
final long now = System.currentTimeMillis();
|
||||
|
||||
// Insert same anomaly twice, it fails at the second time.
|
||||
assertThat(mBatteryDatabaseManager.insertAnomaly(uid, PACKAGE_SETTINGS, ANOMALY_TYPE,
|
||||
AnomalyDatabaseHelper.State.NEW, now)).isTrue();
|
||||
assertThat(mBatteryDatabaseManager.insertAnomaly(uid, PACKAGE_SETTINGS, ANOMALY_TYPE,
|
||||
AnomalyDatabaseHelper.State.NEW, now)).isFalse();
|
||||
|
||||
// In database, only contains one row
|
||||
List<AppInfo> newAppInfos = mBatteryDatabaseManager.queryAllAnomalies(0,
|
||||
AnomalyDatabaseHelper.State.NEW);
|
||||
assertThat(newAppInfos).containsExactly(new AppInfo.Builder()
|
||||
.setUid(uid)
|
||||
.setPackageName(PACKAGE_SETTINGS)
|
||||
.addAnomalyType(ANOMALY_TYPE)
|
||||
.build());
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user