| Index: tools/telemetry/telemetry/internal/platform/mac_platform_backend.py
|
| diff --git a/tools/telemetry/telemetry/internal/platform/mac_platform_backend.py b/tools/telemetry/telemetry/internal/platform/mac_platform_backend.py
|
| deleted file mode 100644
|
| index fa7646958f9a98d8f1ee60fe55ffd043fadf8366..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/telemetry/internal/platform/mac_platform_backend.py
|
| +++ /dev/null
|
| @@ -1,180 +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 ctypes
|
| -import os
|
| -import platform
|
| -import subprocess
|
| -import sys
|
| -import time
|
| -
|
| -from telemetry.core import os_version as os_version_module
|
| -from telemetry import decorators
|
| -from telemetry.internal.platform import posix_platform_backend
|
| -from telemetry.internal.platform.power_monitor import powermetrics_power_monitor
|
| -from telemetry.util import process_statistic_timeline_data
|
| -
|
| -try:
|
| - import resource # pylint: disable=import-error
|
| -except ImportError:
|
| - resource = None # Not available on all platforms
|
| -
|
| -
|
| -
|
| -class MacPlatformBackend(posix_platform_backend.PosixPlatformBackend):
|
| - def __init__(self):
|
| - super(MacPlatformBackend, self).__init__()
|
| - self.libproc = None
|
| - self._power_monitor = powermetrics_power_monitor.PowerMetricsPowerMonitor(
|
| - self)
|
| -
|
| - @classmethod
|
| - def IsPlatformBackendForHost(cls):
|
| - return sys.platform == 'darwin'
|
| -
|
| - def IsThermallyThrottled(self):
|
| - raise NotImplementedError()
|
| -
|
| - def HasBeenThermallyThrottled(self):
|
| - raise NotImplementedError()
|
| -
|
| - def _GetIdleWakeupCount(self, pid):
|
| - top_output = self._GetTopOutput(pid, ['idlew'])
|
| -
|
| - # Sometimes top won't return anything here, just ignore such cases -
|
| - # crbug.com/354812 .
|
| - if top_output[-2] != 'IDLEW':
|
| - return process_statistic_timeline_data.IdleWakeupTimelineData(pid, 0)
|
| - # Numbers reported by top may have a '+' appended.
|
| - wakeup_count = int(top_output[-1].strip('+ '))
|
| - return process_statistic_timeline_data.IdleWakeupTimelineData(pid,
|
| - wakeup_count)
|
| -
|
| - def GetCpuStats(self, pid):
|
| - """Returns a dict of cpu statistics for the process represented by |pid|."""
|
| - class ProcTaskInfo(ctypes.Structure):
|
| - """Struct for proc_pidinfo() call."""
|
| - _fields_ = [("pti_virtual_size", ctypes.c_uint64),
|
| - ("pti_resident_size", ctypes.c_uint64),
|
| - ("pti_total_user", ctypes.c_uint64),
|
| - ("pti_total_system", ctypes.c_uint64),
|
| - ("pti_threads_user", ctypes.c_uint64),
|
| - ("pti_threads_system", ctypes.c_uint64),
|
| - ("pti_policy", ctypes.c_int32),
|
| - ("pti_faults", ctypes.c_int32),
|
| - ("pti_pageins", ctypes.c_int32),
|
| - ("pti_cow_faults", ctypes.c_int32),
|
| - ("pti_messages_sent", ctypes.c_int32),
|
| - ("pti_messages_received", ctypes.c_int32),
|
| - ("pti_syscalls_mach", ctypes.c_int32),
|
| - ("pti_syscalls_unix", ctypes.c_int32),
|
| - ("pti_csw", ctypes.c_int32),
|
| - ("pti_threadnum", ctypes.c_int32),
|
| - ("pti_numrunning", ctypes.c_int32),
|
| - ("pti_priority", ctypes.c_int32)]
|
| - PROC_PIDTASKINFO = 4
|
| - def __init__(self):
|
| - self.size = ctypes.sizeof(self)
|
| - super(ProcTaskInfo, self).__init__() # pylint: disable=bad-super-call
|
| -
|
| - proc_info = ProcTaskInfo()
|
| - if not self.libproc:
|
| - self.libproc = ctypes.CDLL(ctypes.util.find_library('libproc'))
|
| - self.libproc.proc_pidinfo(pid, proc_info.PROC_PIDTASKINFO, 0,
|
| - ctypes.byref(proc_info), proc_info.size)
|
| -
|
| - # Convert nanoseconds to seconds.
|
| - cpu_time = (proc_info.pti_total_user / 1000000000.0 +
|
| - proc_info.pti_total_system / 1000000000.0)
|
| - results = {'CpuProcessTime': cpu_time,
|
| - 'ContextSwitches': proc_info.pti_csw}
|
| -
|
| - # top only reports idle wakeup count starting from OS X 10.9.
|
| - if self.GetOSVersionName() >= os_version_module.MAVERICKS:
|
| - results.update({'IdleWakeupCount': self._GetIdleWakeupCount(pid)})
|
| - return results
|
| -
|
| - def GetCpuTimestamp(self):
|
| - """Return current timestamp in seconds."""
|
| - return {'TotalTime': time.time()}
|
| -
|
| - def GetSystemCommitCharge(self):
|
| - vm_stat = self.RunCommand(['vm_stat'])
|
| - for stat in vm_stat.splitlines():
|
| - key, value = stat.split(':')
|
| - if key == 'Pages active':
|
| - pages_active = int(value.strip()[:-1]) # Strip trailing '.'
|
| - return pages_active * resource.getpagesize() / 1024
|
| - return 0
|
| -
|
| - @decorators.Cache
|
| - def GetSystemTotalPhysicalMemory(self):
|
| - return int(self.RunCommand(['sysctl', '-n', 'hw.memsize']))
|
| -
|
| - def PurgeUnpinnedMemory(self):
|
| - # TODO(pliard): Implement this.
|
| - pass
|
| -
|
| - def GetMemoryStats(self, pid):
|
| - rss_vsz = self.GetPsOutput(['rss', 'vsz'], pid)
|
| - if rss_vsz:
|
| - rss, vsz = rss_vsz[0].split()
|
| - return {'VM': 1024 * int(vsz),
|
| - 'WorkingSetSize': 1024 * int(rss)}
|
| - return {}
|
| -
|
| - @decorators.Cache
|
| - def GetArchName(self):
|
| - return platform.machine()
|
| -
|
| - def GetOSName(self):
|
| - return 'mac'
|
| -
|
| - @decorators.Cache
|
| - def GetOSVersionName(self):
|
| - os_version = os.uname()[2]
|
| -
|
| - if os_version.startswith('9.'):
|
| - return os_version_module.LEOPARD
|
| - if os_version.startswith('10.'):
|
| - return os_version_module.SNOWLEOPARD
|
| - if os_version.startswith('11.'):
|
| - return os_version_module.LION
|
| - if os_version.startswith('12.'):
|
| - return os_version_module.MOUNTAINLION
|
| - if os_version.startswith('13.'):
|
| - return os_version_module.MAVERICKS
|
| - if os_version.startswith('14.'):
|
| - return os_version_module.YOSEMITE
|
| - if os_version.startswith('15.'):
|
| - return os_version_module.ELCAPITAN
|
| -
|
| - raise NotImplementedError('Unknown mac version %s.' % os_version)
|
| -
|
| - def CanTakeScreenshot(self):
|
| - return True
|
| -
|
| - def TakeScreenshot(self, file_path):
|
| - return subprocess.call(['screencapture', file_path])
|
| -
|
| - def CanFlushIndividualFilesFromSystemCache(self):
|
| - return False
|
| -
|
| - def FlushEntireSystemCache(self):
|
| - mavericks_or_later = self.GetOSVersionName() >= os_version_module.MAVERICKS
|
| - p = self.LaunchApplication('purge', elevate_privilege=mavericks_or_later)
|
| - p.communicate()
|
| - assert p.returncode == 0, 'Failed to flush system cache'
|
| -
|
| - def CanMonitorPower(self):
|
| - return self._power_monitor.CanMonitorPower()
|
| -
|
| - def CanMeasurePerApplicationPower(self):
|
| - return self._power_monitor.CanMeasurePerApplicationPower()
|
| -
|
| - def StartMonitoringPower(self, browser):
|
| - self._power_monitor.StartMonitoringPower(browser)
|
| -
|
| - def StopMonitoringPower(self):
|
| - return self._power_monitor.StopMonitoringPower()
|
|
|