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 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 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)
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)
# cur_surface = int(match.group(1), 16) # except Exception: # logging.error('Failed to parse current surface from ' + match.group(1)) # else: # logging.warning('Failed to call SurfaceFlinger surface ' + results[0]) # return { # 'page_flip_count': cur_surface, # 'timestamp': datetime.datetime.now(), # } from pylib.android_commands import AndroidCommands from pylib.perf.surface_stats_collector import SurfaceStatsCollector if __name__ == '__main__': resultList = [] adb = AndroidCommands("emulator-5554") collector = SurfaceStatsCollector(adb) collector.DisableWarningAboutEmptyData() collector.Start() for i in range(50): #循环50次,主要方便自己的实现,其他实现方法请另行实现; time.sleep(0.3) results = collector.SampleResults() if not results or not results[0].value: pass else: print(results[0].value) resultList.append(int(results[0].value)) collector.Stop() print(resultList) # a = resultList[3:-3] # print(a)