Add tests for MetricsLogger events.
This makes the MetricsLogger a local, mockable instance, and adds unit test
coverage for GestureLauncherService's interaction with it.
Test: ran tests.
Change-Id: I581c100be7eee4ef6e5d8218d65e694d9bf8e0a5
diff --git a/services/tests/servicestests/src/com/android/server/GestureLauncherServiceTest.java b/services/tests/servicestests/src/com/android/server/GestureLauncherServiceTest.java
index b8dc1e3..9c1f3f5 100644
--- a/services/tests/servicestests/src/com/android/server/GestureLauncherServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/GestureLauncherServiceTest.java
@@ -19,6 +19,8 @@
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.anyInt;
+import static org.mockito.Matchers.eq;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -36,6 +38,8 @@
import android.view.KeyEvent;
import android.util.MutableBoolean;
+import com.android.internal.logging.MetricsLogger;
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.util.test.FakeSettingsProvider;
import com.android.server.LocalServices;
import com.android.server.statusbar.StatusBarManagerInternal;
@@ -68,6 +72,7 @@
private @Mock Context mContext;
private @Mock Resources mResources;
private @Mock StatusBarManagerInternal mStatusBarManagerInternal;
+ private @Mock MetricsLogger mMetricsLogger;
private MockContentResolver mContentResolver;
private GestureLauncherService mGestureLauncherService;
@@ -92,7 +97,7 @@
mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider());
when(mContext.getContentResolver()).thenReturn(mContentResolver);
- mGestureLauncherService = new GestureLauncherService(mContext);
+ mGestureLauncherService = new GestureLauncherService(mContext, mMetricsLogger);
}
@Test
@@ -190,7 +195,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = true;
@@ -198,6 +204,9 @@
outLaunched);
assertFalse(intercepted);
assertFalse(outLaunched.value);
+ verify(mMetricsLogger, never())
+ .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt());
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
@Test
@@ -216,7 +225,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = true;
@@ -224,6 +234,9 @@
outLaunched);
assertFalse(intercepted);
assertFalse(outLaunched.value);
+ verify(mMetricsLogger, never())
+ .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt());
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
@Test
@@ -244,7 +257,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = false;
@@ -254,6 +268,8 @@
assertTrue(outLaunched.value);
verify(mStatusBarManagerInternal).onCameraLaunchGestureDetected(
StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP);
+ verify(mMetricsLogger)
+ .action(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE, (int) interval);
}
@Test
@@ -274,7 +290,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = true;
@@ -282,6 +299,9 @@
outLaunched);
assertFalse(intercepted);
assertFalse(outLaunched.value);
+ verify(mMetricsLogger, never())
+ .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt());
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
@Test
@@ -300,7 +320,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = true;
@@ -308,6 +329,9 @@
outLaunched);
assertFalse(intercepted);
assertFalse(outLaunched.value);
+ verify(mMetricsLogger, never())
+ .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt());
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
@Test
@@ -326,7 +350,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = true;
@@ -334,6 +359,9 @@
outLaunched);
assertFalse(intercepted);
assertFalse(outLaunched.value);
+ verify(mMetricsLogger, never())
+ .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt());
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
@Test
@@ -352,7 +380,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = true;
@@ -360,6 +389,9 @@
outLaunched);
assertFalse(intercepted);
assertFalse(outLaunched.value);
+ verify(mMetricsLogger, never())
+ .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt());
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
@Test
@@ -380,7 +412,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
intercepted = mGestureLauncherService.interceptPowerKeyDown(keyEvent, interactive,
@@ -389,6 +422,9 @@
assertTrue(outLaunched.value);
verify(mStatusBarManagerInternal).onCameraLaunchGestureDetected(
StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP);
+ verify(mMetricsLogger)
+ .action(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE, (int) interval);
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
@Test
@@ -409,7 +445,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS - 1;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = true;
@@ -417,6 +454,9 @@
outLaunched);
assertFalse(intercepted);
assertFalse(outLaunched.value);
+ verify(mMetricsLogger, never())
+ .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt());
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
@Test
@@ -435,7 +475,8 @@
assertFalse(intercepted);
assertFalse(outLaunched.value);
- eventTime += GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS;
+ final long interval = GestureLauncherService.CAMERA_POWER_DOUBLE_TAP_MAX_TIME_MS;
+ eventTime += interval;
keyEvent = new KeyEvent(IGNORED_DOWN_TIME, eventTime, IGNORED_ACTION, IGNORED_CODE,
IGNORED_REPEAT);
outLaunched.value = true;
@@ -443,6 +484,9 @@
outLaunched);
assertFalse(intercepted);
assertFalse(outLaunched.value);
+ verify(mMetricsLogger, never())
+ .action(eq(MetricsEvent.ACTION_DOUBLE_TAP_POWER_CAMERA_GESTURE), anyInt());
+ verify(mMetricsLogger).histogram("power_double_tap_interval", (int) interval);
}
private void withCameraDoubleTapPowerEnableConfigValue(boolean enableConfigValue) {