Index: tools/perf/metrics/webrtc_stats_unittest.py |
diff --git a/tools/perf/metrics/webrtc_stats_unittest.py b/tools/perf/metrics/webrtc_stats_unittest.py |
deleted file mode 100644 |
index b6f3488566e4d21f92786377a8124e4f15ab3e58..0000000000000000000000000000000000000000 |
--- a/tools/perf/metrics/webrtc_stats_unittest.py |
+++ /dev/null |
@@ -1,178 +0,0 @@ |
-# Copyright 2013 The Chromium Authors. All rights reserved. |
-# Use of this source code is governed by a BSD-style license that can be |
-# found in the LICENSE file. |
- |
-import unittest |
- |
-from telemetry.testing import simple_mock |
- |
-from metrics import webrtc_stats |
- |
- |
-SAMPLE_JSON = ''' |
-[[ |
- [ |
- { |
- "googFrameHeightInput":"480", |
- "googFrameWidthInput":"640", |
- "googFrameRateSent": "23", |
- "packetsLost":"-1", |
- "googRtt":"19", |
- "packetsSent":"1", |
- "bytesSent":"0" |
- }, |
- { |
- "audioInputLevel":"2048", |
- "googRtt":"20", |
- "googCodecName":"opus", |
- "packetsSent":"4", |
- "bytesSent":"0" |
- } |
- ], |
- [ |
- { |
- "googFrameHeightInput":"480", |
- "googFrameWidthInput":"640", |
- "googFrameRateSent": "21", |
- "packetsLost":"-1", |
- "googRtt":"18", |
- "packetsSent":"8", |
- "bytesSent":"6291" |
- }, |
- { |
- "audioInputLevel":"1878", |
- "googRtt":"17", |
- "googCodecName":"opus", |
- "packetsSent":"16", |
- "bytesSent":"634" |
- } |
- ], |
- [ |
- { |
- "googAvailableSendBandwidth":"30000", |
- "googAvailableRecvBandwidth":"12345", |
- "googTargetEncBitrate":"10000" |
- } |
- ] |
-], |
-[ |
- [ |
- { |
- "googFrameRateReceived": "23", |
- "googDecodeMs":"0", |
- "packetsReceived":"8", |
- "googRenderDelayMs":"10", |
- "googMaxDecodeMs":"0", |
- "googRtt":"100" |
- } |
- ], |
- [ |
- { |
- "googFrameRateReceived": "23", |
- "googDecodeMs":"14", |
- "packetsReceived":"1234", |
- "googRenderDelayMs":"102", |
- "googMaxDecodeMs":"150", |
- "googRtt":"101" |
- } |
- ], |
- [ |
- { |
- "googAvailableSendBandwidth":"40000", |
- "googAvailableRecvBandwidth":"22345", |
- "googTargetEncBitrate":"20000" |
- } |
- ] |
-]] |
-''' |
- |
- |
-class FakeResults(object): |
- |
- def __init__(self, current_page): |
- self._received_values = [] |
- self._current_page = current_page |
- |
- @property |
- def received_values(self): |
- return self._received_values |
- |
- @property |
- def current_page(self): |
- return self._current_page |
- |
- def AddValue(self, value): |
- self._received_values.append(value) |
- |
- |
-class WebRtcStatsUnittest(unittest.TestCase): |
- |
- def _RunMetricOnJson(self, json_to_return, stats_metric): |
- tab = simple_mock.MockObject() |
- page = simple_mock.MockObject() |
- |
- stats_metric.Start(page, tab) |
- |
- tab.ExpectCall('EvaluateJavaScript', |
- simple_mock.DONT_CARE).WillReturn(json_to_return) |
- stats_metric.Stop(page, tab) |
- |
- page.url = simple_mock.MockObject() |
- results = FakeResults(page) |
- stats_metric.AddResults(tab, results) |
- return results |
- |
- def testExtractsValuesAsTimeSeries(self): |
- stats_metric = webrtc_stats.WebRtcStatisticsMetric() |
- results = self._RunMetricOnJson(SAMPLE_JSON, stats_metric) |
- |
- self.assertTrue(results.received_values, |
- 'Expected values for googDecodeMs and others, got none.') |
- self.assertEqual(results.received_values[1].name, |
- 'peer_connection_0_audio_goog_rtt') |
- self.assertEqual(results.received_values[1].values, |
- [20.0, 17.0]) |
- self.assertEqual(results.received_values[7].name, |
- 'peer_connection_1_video_goog_rtt') |
- self.assertEqual(results.received_values[7].values, |
- [100.0, 101.0]) |
- |
- def testExtractsInterestingMetricsOnly(self): |
- stats_metric = webrtc_stats.WebRtcStatisticsMetric() |
- results = self._RunMetricOnJson(SAMPLE_JSON, stats_metric) |
- |
- self.assertTrue(len(results.received_values) > 0) |
- self.assertIn('peer_connection_0', results.received_values[0].name, |
- 'The result should be a ListOfScalarValues instance with ' |
- 'a name <peer connection id>_<statistic>.') |
- all_names = [value.name for value in results.received_values] |
- self.assertIn('peer_connection_0_audio_goog_rtt', all_names) |
- self.assertNotIn('peer_connection_1_audio_goog_rtt', all_names, |
- 'Peer connection 1 does not have a goog-rtt in ' |
- 'the JSON above, unlike peer connection 0 which does.') |
- self.assertIn('peer_connection_0_video_goog_rtt', all_names) |
- self.assertIn('peer_connection_1_video_goog_rtt', all_names) |
- # The audio_audio is intentional since the code distinguishes audio reports |
- # from video reports (even though audio_input_level is quite obvious). |
- self.assertNotIn('peer_connection_0_audio_audio_input_level', all_names, |
- 'Input level is in the JSON for both connections but ' |
- 'should not be reported since it is not interesting.') |
- self.assertNotIn('peer_connection_1_audio_audio_input_level', all_names) |
- |
- def testExtractsParticularMetricsOnlyIfSpecified(self): |
- only_goog_rtt_and_max_decode = ['googRtt', 'googMaxDecodeMs'] |
- stats_metric = webrtc_stats.WebRtcStatisticsMetric( |
- particular_metrics=only_goog_rtt_and_max_decode) |
- results = self._RunMetricOnJson(SAMPLE_JSON, stats_metric) |
- |
- received_names = [value.name for value in results.received_values] |
- expected_names = ['peer_connection_0_audio_goog_rtt', |
- 'peer_connection_0_video_goog_rtt', |
- 'peer_connection_1_video_goog_max_decode_ms', |
- 'peer_connection_1_video_goog_rtt'] |
- self.assertEqual(expected_names, received_names) |
- |
- def testReturnsIfJsonIsEmpty(self): |
- stats_metric = webrtc_stats.WebRtcStatisticsMetric() |
- results = self._RunMetricOnJson('[]', stats_metric) |
- self.assertFalse(results.received_values) |