MediaMetrics: improve API coverage
Fix: 183239947
Fix: 184396557
Fix: 183240314
Fix: 183240275
Fix: 183240276
Fix: 183240126
Test: atest android.media.metrics.cts.MediaMetricsAtomTests
Change-Id: I849beed2483f746e9486d3cea0f7797b2c030f1c
diff --git a/hostsidetests/media/app/MediaMetricsTest/src/android/media/metrics/cts/MediaMetricsAtomHostSideTests.java b/hostsidetests/media/app/MediaMetricsTest/src/android/media/metrics/cts/MediaMetricsAtomHostSideTests.java
index 442386d..cc2f21c 100644
--- a/hostsidetests/media/app/MediaMetricsTest/src/android/media/metrics/cts/MediaMetricsAtomHostSideTests.java
+++ b/hostsidetests/media/app/MediaMetricsTest/src/android/media/metrics/cts/MediaMetricsAtomHostSideTests.java
@@ -91,6 +91,52 @@
}
@Test
+ public void testTrackChangeEvent_audio() throws Exception {
+ Context context = InstrumentationRegistry.getContext();
+ MediaMetricsManager manager = context.getSystemService(MediaMetricsManager.class);
+ PlaybackSession s = manager.createPlaybackSession();
+ TrackChangeEvent e =
+ new TrackChangeEvent.Builder(TrackChangeEvent.TRACK_TYPE_AUDIO)
+ .setTimeSinceCreatedMillis(37278L)
+ .setTrackState(TrackChangeEvent.TRACK_STATE_OFF)
+ .setTrackChangeReason(TrackChangeEvent.TRACK_CHANGE_REASON_INITIAL)
+ .setContainerMimeType("audio/foo")
+ .setSampleMimeType("audio/avc")
+ .setCodecName("codec_2")
+ .setBitrate(1025)
+ .setLanguage("EN")
+ .setLanguageRegion("US")
+ .setAudioSampleRate(89)
+ .setChannelCount(3)
+ .build();
+ s.reportTrackChangeEvent(e);
+ }
+
+ @Test
+ public void testTrackChangeEvent_video() throws Exception {
+ Context context = InstrumentationRegistry.getContext();
+ MediaMetricsManager manager = context.getSystemService(MediaMetricsManager.class);
+ PlaybackSession s = manager.createPlaybackSession();
+ TrackChangeEvent e =
+ new TrackChangeEvent.Builder(TrackChangeEvent.TRACK_TYPE_VIDEO)
+ .setTimeSinceCreatedMillis(37278L)
+ .setTrackState(TrackChangeEvent.TRACK_STATE_OFF)
+ .setTrackChangeReason(TrackChangeEvent.TRACK_CHANGE_REASON_INITIAL)
+ .setContainerMimeType("video/foo")
+ .setSampleMimeType("video/mpeg")
+ .setCodecName("codec_3")
+ .setBitrate(1025)
+ .setLanguage("EN")
+ .setLanguageRegion("US")
+ .setHeight(1080)
+ .setWidth(1440)
+ .setVideoFrameRate(60)
+ .setMetricsBundle(new Bundle())
+ .build();
+ s.reportTrackChangeEvent(e);
+ }
+
+ @Test
public void testNetworkEvent() throws Exception {
Context context = InstrumentationRegistry.getContext();
MediaMetricsManager manager = context.getSystemService(MediaMetricsManager.class);
@@ -127,6 +173,7 @@
.setNetworkTransferDurationMillis(6000)
.setDrmSessionId(new byte[] {2, 3, 3, 10})
.setMetricsBundle(new Bundle())
+ .addExperimentId(123)
.build();
s.reportPlaybackMetrics(e);
}
@@ -135,23 +182,25 @@
public void testSessionId() throws Exception {
Context context = InstrumentationRegistry.getContext();
MediaMetricsManager manager = context.getSystemService(MediaMetricsManager.class);
- PlaybackSession s = manager.createPlaybackSession();
- LogSessionId idObj = s.getSessionId();
- assertThat(idObj).isNotEqualTo(null);
- assertThat(idObj.getStringId().length()).isGreaterThan(0);
+ try(PlaybackSession s = manager.createPlaybackSession()) {
+ LogSessionId idObj = s.getSessionId();
+ assertThat(idObj).isNotEqualTo(null);
+ assertThat(idObj.getStringId().length()).isGreaterThan(0);
+ }
}
@Test
public void testRecordingSession() throws Exception {
Context context = InstrumentationRegistry.getContext();
MediaMetricsManager manager = context.getSystemService(MediaMetricsManager.class);
- RecordingSession s = manager.createRecordingSession();
- assertThat(s).isNotEqualTo(null);
- LogSessionId idObj = s.getSessionId();
- assertThat(idObj).isNotEqualTo(null);
- assertThat(idObj.getStringId().length()).isGreaterThan(0);
+ try(RecordingSession s = manager.createRecordingSession()) {
+ assertThat(s).isNotEqualTo(null);
+ LogSessionId idObj = s.getSessionId();
+ assertThat(idObj).isNotEqualTo(null);
+ assertThat(idObj.getStringId().length()).isGreaterThan(0);
+ }
}
/**
diff --git a/hostsidetests/media/src/android/media/metrics/cts/MediaMetricsAtomTests.java b/hostsidetests/media/src/android/media/metrics/cts/MediaMetricsAtomTests.java
index defde84..9e12ed6 100644
--- a/hostsidetests/media/src/android/media/metrics/cts/MediaMetricsAtomTests.java
+++ b/hostsidetests/media/src/android/media/metrics/cts/MediaMetricsAtomTests.java
@@ -141,6 +141,69 @@
assertThat(result.getLanguageRegion()).isEqualTo("US");
}
+ public void testTrackChangeEvent_audio() throws Exception {
+ ConfigUtils.uploadConfigForPushedAtom(getDevice(), TEST_PKG,
+ AtomsProto.Atom.MEDIA_PLAYBACK_TRACK_CHANGED_FIELD_NUMBER);
+ DeviceUtils.runDeviceTests(
+ getDevice(),
+ TEST_PKG,
+ "android.media.metrics.cts.MediaMetricsAtomHostSideTests",
+ "testTrackChangeEvent_audio");
+ Thread.sleep(AtomTestUtils.WAIT_TIME_LONG);
+
+ List<StatsLog.EventMetricData> data = ReportUtils.getEventMetricDataList(getDevice());
+
+ assertThat(data.size()).isEqualTo(1);
+ assertThat(data.get(0).getAtom().hasMediaPlaybackTrackChanged()).isTrue();
+ AtomsProto.MediaPlaybackTrackChanged result =
+ data.get(0).getAtom().getMediaPlaybackTrackChanged();
+
+ assertThat(result.getTimeSincePlaybackCreatedMillis()).isEqualTo(37278L);
+ assertThat(result.getState().toString()).isEqualTo("OFF");
+ assertThat(result.getReason().toString()).isEqualTo("REASON_INITIAL");
+ assertThat(result.getContainerMimeType()).isEqualTo("audio/foo");
+ assertThat(result.getSampleMimeType()).isEqualTo("audio/avc");
+ assertThat(result.getCodecName()).isEqualTo("codec_2");
+ assertThat(result.getBitrate()).isEqualTo(1025);
+ assertThat(result.getType().toString()).isEqualTo("AUDIO");
+ assertThat(result.getLanguage()).isEqualTo("EN");
+ assertThat(result.getLanguageRegion()).isEqualTo("US");
+ assertThat(result.getSampleRate()).isEqualTo(89);
+ assertThat(result.getChannelCount()).isEqualTo(3);
+ }
+
+ public void testTrackChangeEvent_video() throws Exception {
+ ConfigUtils.uploadConfigForPushedAtom(getDevice(), TEST_PKG,
+ AtomsProto.Atom.MEDIA_PLAYBACK_TRACK_CHANGED_FIELD_NUMBER);
+ DeviceUtils.runDeviceTests(
+ getDevice(),
+ TEST_PKG,
+ "android.media.metrics.cts.MediaMetricsAtomHostSideTests",
+ "testTrackChangeEvent_video");
+ Thread.sleep(AtomTestUtils.WAIT_TIME_LONG);
+
+ List<StatsLog.EventMetricData> data = ReportUtils.getEventMetricDataList(getDevice());
+
+ assertThat(data.size()).isEqualTo(1);
+ assertThat(data.get(0).getAtom().hasMediaPlaybackTrackChanged()).isTrue();
+ AtomsProto.MediaPlaybackTrackChanged result =
+ data.get(0).getAtom().getMediaPlaybackTrackChanged();
+
+ assertThat(result.getTimeSincePlaybackCreatedMillis()).isEqualTo(37278L);
+ assertThat(result.getState().toString()).isEqualTo("OFF");
+ assertThat(result.getReason().toString()).isEqualTo("REASON_INITIAL");
+ assertThat(result.getContainerMimeType()).isEqualTo("video/foo");
+ assertThat(result.getSampleMimeType()).isEqualTo("video/mpeg");
+ assertThat(result.getCodecName()).isEqualTo("codec_3");
+ assertThat(result.getBitrate()).isEqualTo(1025);
+ assertThat(result.getType().toString()).isEqualTo("VIDEO");
+ assertThat(result.getLanguage()).isEqualTo("EN");
+ assertThat(result.getLanguageRegion()).isEqualTo("US");
+ assertThat(result.getHeight()).isEqualTo(1080);
+ assertThat(result.getWidth()).isEqualTo(1440);
+ assertThat(result.getVideoFrameRate()).isEqualTo(60);
+ }
+
public void testNetworkEvent() throws Exception {
ConfigUtils.uploadConfigForPushedAtom(getDevice(), TEST_PKG,
AtomsProto.Atom.MEDIA_NETWORK_INFO_CHANGED_FIELD_NUMBER);
@@ -195,6 +258,8 @@
assertThat(result.getNetworkBytesRead()).isEqualTo(102400);
assertThat(result.getLocalBytesRead()).isEqualTo(2000);
assertThat(result.getNetworkTransferDurationMillis()).isEqualTo(6000);
+ // TODO: fix missing experiment ID impl
+ assertThat(result.getExperimentIds()).isNotEqualTo(null);
// TODO: needs Base64 decoders to verify the data
assertThat(result.getDrmSessionId()).isNotEqualTo(null);
}