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

Unified Diff: tools/telemetry/telemetry/internal/platform/profiler/tcpdump_profiler.py

Issue 1647513002: Delete tools/telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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/internal/platform/profiler/tcpdump_profiler.py
diff --git a/tools/telemetry/telemetry/internal/platform/profiler/tcpdump_profiler.py b/tools/telemetry/telemetry/internal/platform/profiler/tcpdump_profiler.py
deleted file mode 100644
index b9039b4909881b265dc88a302b2315ae5330361b..0000000000000000000000000000000000000000
--- a/tools/telemetry/telemetry/internal/platform/profiler/tcpdump_profiler.py
+++ /dev/null
@@ -1,130 +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 logging
-import os
-import signal
-import subprocess
-import sys
-import tempfile
-
-from telemetry.internal.platform import profiler
-from telemetry.internal.platform.profiler import android_prebuilt_profiler_helper
-
-_TCP_DUMP_BASE_OPTS = ['-i', 'any', '-p', '-s', '0', '-w']
-
-
-class _TCPDumpProfilerAndroid(object):
- """An internal class to collect TCP dumps on android.
-
- This profiler uses pre-built binaries from AOSP.
- See more details in prebuilt/android/README.txt.
- """
-
- _DEVICE_DUMP_FILE = '/sdcard/tcpdump_profiles/capture.pcap'
-
- def __init__(self, device, output_path):
- self._device = device
- self._output_path = output_path
- self._device.RunShellCommand('mkdir -p ' +
- os.path.dirname(self._DEVICE_DUMP_FILE))
- self._proc = subprocess.Popen(
- ['adb', '-s', self._device.adb.GetDeviceSerial(),
- 'shell', android_prebuilt_profiler_helper.GetDevicePath('tcpdump')] +
- _TCP_DUMP_BASE_OPTS +
- [self._DEVICE_DUMP_FILE])
-
- def CollectProfile(self):
- tcpdump_pid = self._device.GetPids('tcpdump')
- if not tcpdump_pid or not 'tcpdump' in tcpdump_pid:
- raise Exception('Unable to find TCPDump. Check your device is rooted '
- 'and tcpdump is installed at ' +
- android_prebuilt_profiler_helper.GetDevicePath('tcpdump'))
- if len(tcpdump_pid['tcpdump']) > 1:
- raise Exception(
- 'At most one instance of process tcpdump expected but found pids: '
- '%s' % tcpdump_pid)
- tcpdump_pid = int(tcpdump_pid['tcpdump'][0])
- self._device.RunShellCommand('kill -term ' + tcpdump_pid)
- self._proc.terminate()
- host_dump = os.path.join(self._output_path,
- os.path.basename(self._DEVICE_DUMP_FILE))
- try:
- self._device.PullFile(self._DEVICE_DUMP_FILE, host_dump)
- except:
- logging.exception('New exception caused by DeviceUtils conversion')
- raise
- print 'TCP dump available at: %s ' % host_dump
- print 'Use Wireshark to open it.'
- return host_dump
-
-
-class _TCPDumpProfilerLinux(object):
- """An internal class to collect TCP dumps on linux desktop."""
-
- _DUMP_FILE = 'capture.pcap'
-
- def __init__(self, output_path):
- if not os.path.exists(output_path):
- os.makedirs(output_path)
- self._dump_file = os.path.join(output_path, self._DUMP_FILE)
- self._tmp_output_file = tempfile.NamedTemporaryFile('w', 0)
- try:
- self._proc = subprocess.Popen(
- ['tcpdump'] + _TCP_DUMP_BASE_OPTS + [self._dump_file],
- stdout=self._tmp_output_file, stderr=subprocess.STDOUT)
- except OSError as e:
- raise Exception('Unable to execute TCPDump, please check your '
- 'installation. ' + str(e))
-
- def CollectProfile(self):
- self._proc.send_signal(signal.SIGINT)
- exit_code = self._proc.wait()
- try:
- if exit_code:
- raise Exception(
- 'tcpdump failed with exit code %d. Output:\n%s' %
- (exit_code, self._GetStdOut()))
- finally:
- self._tmp_output_file.close()
- print 'TCP dump available at: ', self._dump_file
- print 'Use Wireshark to open it.'
- return self._dump_file
-
- def _GetStdOut(self):
- self._tmp_output_file.flush()
- try:
- with open(self._tmp_output_file.name) as f:
- return f.read()
- except IOError:
- return ''
-
-
-class TCPDumpProfiler(profiler.Profiler):
- """A Factory to instantiate the platform-specific profiler."""
- def __init__(self, browser_backend, platform_backend, output_path, state):
- super(TCPDumpProfiler, self).__init__(
- browser_backend, platform_backend, output_path, state)
- if platform_backend.GetOSName() == 'android':
- android_prebuilt_profiler_helper.InstallOnDevice(
- browser_backend.device, 'tcpdump')
- self._platform_profiler = _TCPDumpProfilerAndroid(
- browser_backend.device, output_path)
- else:
- self._platform_profiler = _TCPDumpProfilerLinux(output_path)
-
- @classmethod
- def name(cls):
- return 'tcpdump'
-
- @classmethod
- def is_supported(cls, browser_type):
- if browser_type.startswith('cros'):
- return False
- if sys.platform.startswith('linux'):
- return True
- return browser_type.startswith('android')
-
- def CollectProfile(self):
- return self._platform_profiler.CollectProfile()

Powered by Google App Engine
This is Rietveld 408576698