# 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. """Unittests for SurfaceStatsCollector.""" # pylint: disable=W0212 import unittest from pylib.perf.surface_stats_collector import SurfaceStatsCollector class TestSurfaceStatsCollector(unittest.TestCase): @staticmethod def _CreateUniformTimestamps(base, num, delta): return [base + i * delta for i in range(1, num + 1)] @staticmethod def _CreateDictionaryFromResults(results): dictionary = {} for result in results: dictionary[result.name] = result return dictionary def setUp(self): self.refresh_period = 0.1 def testOneFrameDelta(self): timestamps = self._CreateUniformTimestamps(0, 10, self.refresh_period) results = self._CreateDictionaryFromResults( SurfaceStatsCollector._CalculateResults( self.refresh_period, timestamps, '')) self.assertEquals(results['avg_surface_fps'].value, int(round(1 / self.refresh_period))) self.assertEquals(results['jank_count'].value, 0) self.assertEquals(results['max_frame_delay'].value, 1) self.assertEquals(len(results['frame_lengths'].value), len(timestamps) - 1) def testAllFramesTooShort(self): timestamps = self._CreateUniformTimestamps(0, 10, self.refresh_period / 100) self.assertRaises(Exception, SurfaceStatsCollector._CalculateResults, [self.refresh_period, timestamps, '']) def testSomeFramesTooShort(self): timestamps = self._CreateUniformTimestamps(0, 5, self.refresh_period) # The following timestamps should be skipped. timestamps += self._CreateUniformTimestamps(timestamps[4], 5, self.refresh_period / 100) timestamps += self._CreateUniformTimestamps(timestamps[4], 5, self.refresh_period) results = self._CreateDictionaryFromResults( SurfaceStatsCollector._CalculateResults( self.refresh_period, timestamps, '')) self.assertEquals(len(results['frame_lengths'].value), 9) if __name__ == '__main__': unittest.main()