Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(117)

Unified Diff: tools/telemetry/telemetry/core/platform/desktop_platform_backend.py

Issue 20766003: [Telemetry] Add the ability to flush the system file cache to platform. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Simpler Android support Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/core/platform/desktop_platform_backend.py
diff --git a/tools/telemetry/telemetry/core/platform/desktop_platform_backend.py b/tools/telemetry/telemetry/core/platform/desktop_platform_backend.py
new file mode 100644
index 0000000000000000000000000000000000000000..103aff65510155e1b7316d150b3ea0623db86956
--- /dev/null
+++ b/tools/telemetry/telemetry/core/platform/desktop_platform_backend.py
@@ -0,0 +1,51 @@
+# Copyright (c) 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 os
+import subprocess
+
+from telemetry.core import util
+from telemetry.core.platform import platform_backend
+
+
+class DesktopPlatformBackend(platform_backend.PlatformBackend):
+
+ # This is an abstract class. It is OK to have abstract methods.
+ # pylint: disable=W0223
+
+ def GetFlushUtilityName(self):
+ return NotImplementedError()
+
+ def _FindNewestFlushUtility(self):
+ flush_command = None
+ flush_command_mtime = 0
+
+ chrome_root = util.GetChromiumSrcDir()
+ for build_type, build_dir in util.BuildDirectoryIterator():
+ candidate = os.path.join(chrome_root, build_dir, build_type,
+ self.GetFlushUtilityName())
+ if os.access(candidate, os.X_OK):
+ candidate_mtime = os.stat(candidate).st_mtime
+ if candidate_mtime > flush_command_mtime:
+ flush_command = candidate
+ flush_command_mtime = candidate_mtime
+
+ return flush_command
+
+ def FlushSystemCacheForDirectory(self, directory, ignoring=None):
+ assert directory and os.path.exists(directory), \
+ 'Target directory %s must exist' % directory
+ flush_command = self._FindNewestFlushUtility()
+ assert flush_command, \
+ 'You must build %s first' % self.GetFlushUtilityName()
+
+ args = [flush_command, '--recurse']
+ directory_contents = os.listdir(directory)
+ for item in directory_contents:
+ if item not in ignoring:
+ args.append(os.path.join(directory, item))
+
+ p = subprocess.Popen(args)
+ p.wait()
+ assert p.returncode == 0, 'Failed to flush system cache'

Powered by Google App Engine
This is Rietveld 408576698