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

Unified Diff: chrome/test/pyautolib/chromeos/suid_actions.py

Issue 222873002: Remove pyauto tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync Created 6 years, 9 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
« no previous file with comments | « chrome/test/pyautolib/chromeos/power_strip.py ('k') | chrome/test/pyautolib/chromeos_network.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/pyautolib/chromeos/suid_actions.py
===================================================================
--- chrome/test/pyautolib/chromeos/suid_actions.py (revision 261231)
+++ chrome/test/pyautolib/chromeos/suid_actions.py (working copy)
@@ -1,153 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2012 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.
-
-"""Helper script to perform actions as a super-user on ChromeOS.
-
-Needs to be run with superuser privileges, typically using the
-suid_python binary.
-
-Usage:
- sudo python suid_actions.py --action=CleanFlimflamDirs
-"""
-
-import optparse
-import os
-import shutil
-import subprocess
-import sys
-import time
-
-sys.path.append('/usr/local') # to import autotest libs.
-from autotest.cros import constants
-from autotest.cros import cryptohome
-
-TEMP_BACKCHANNEL_FILE = '/tmp/pyauto_network_backchannel_file'
-
-
-class SuidAction(object):
- """Helper to perform some super-user actions on ChromeOS."""
-
- def _ParseArgs(self):
- parser = optparse.OptionParser()
- parser.add_option(
- '-a', '--action', help='Action to perform.')
- self._options = parser.parse_args()[0]
- if not self._options.action:
- raise RuntimeError('No action specified.')
-
- def Run(self):
- self._ParseArgs()
- assert os.geteuid() == 0, 'Needs superuser privileges.'
- handler = getattr(self, self._options.action)
- assert handler and callable(handler), \
- 'No handler for %s' % self._options.action
- handler()
- return 0
-
- ## Actions ##
- def CleanFlimflamDirs(self):
- """Clean the contents of all connection manager (shill/flimflam) profiles.
- """
- flimflam_dirs = ['/home/chronos/user/flimflam',
- '/home/chronos/user/shill',
- '/var/cache/flimflam',
- '/var/cache/shill']
-
- # The stop/start flimflam command should stop/start shill respectivly if
- # enabled.
- os.system('stop flimflam')
- try:
- for flimflam_dir in flimflam_dirs:
- if not os.path.exists(flimflam_dir):
- continue
- for item in os.listdir(flimflam_dir):
- path = os.path.join(flimflam_dir, item)
- if os.path.isdir(path):
- shutil.rmtree(path)
- else:
- os.remove(path)
- finally:
- os.system('start flimflam')
- # TODO(stanleyw): crosbug.com/29421 This method should wait until
- # flimflam/shill is fully initialized and accessible via DBus again.
- # Otherwise, there is a race conditions and subsequent accesses to
- # flimflam/shill may fail. Until this is fixed, waiting for the
- # resolv.conf file to be created is better than nothing.
- begin = time.time()
- while not os.path.exists(constants.RESOLV_CONF_FILE):
- if time.time() - begin > 10:
- raise RuntimeError('Timeout while waiting for flimflam/shill start.')
- time.sleep(.25)
-
- def RemoveAllCryptohomeVaults(self):
- """Remove any existing cryptohome vaults."""
- cryptohome.remove_all_vaults()
-
- def _GetEthInterfaces(self):
- """Returns a list of the eth* interfaces detected by the device."""
- # Assumes ethernet interfaces all have "eth" in the name.
- import pyudev
- return sorted([iface.sys_name for iface in
- pyudev.Context().list_devices(subsystem='net')
- if 'eth' in iface.sys_name])
-
- def _Renameif(self, old_iface, new_iface, mac_address):
- """Renames the interface with mac_address from old_iface to new_iface.
-
- Args:
- old_iface: The name of the interface you want to change.
- new_iface: The name of the interface you want to change to.
- mac_address: The mac address of the interface being changed.
- """
- subprocess.call(['stop', 'flimflam'])
- subprocess.call(['ifconfig', old_iface, 'down'])
- subprocess.call(['nameif', new_iface, mac_address])
- subprocess.call(['ifconfig', new_iface, 'up'])
- subprocess.call(['start', 'flimflam'])
-
- # Check and make sure interfaces have been renamed
- eth_ifaces = self._GetEthInterfaces()
- if new_iface not in eth_ifaces:
- raise RuntimeError('Interface %s was not renamed to %s' %
- (old_iface, new_iface))
- elif old_iface in eth_ifaces:
- raise RuntimeError('Old iface %s is still present' % old_iface)
-
- def SetupBackchannel(self):
- """Renames the connected ethernet interface to eth_test for offline mode
- testing. Does nothing if no connected interface is found.
- """
- # Return the interface with ethernet connected or returns if none found.
- for iface in self._GetEthInterfaces():
- with open('/sys/class/net/%s/operstate' % iface, 'r') as fp:
- if 'up' in fp.read():
- eth_iface = iface
- break
- else:
- return
-
- # Write backup file to be used by TeardownBackchannel to restore the
- # interface names.
- with open(TEMP_BACKCHANNEL_FILE, 'w') as fpw:
- with open('/sys/class/net/%s/address' % eth_iface) as fp:
- mac_address = fp.read().strip()
- fpw.write('%s, %s' % (eth_iface, mac_address))
-
- self._Renameif(eth_iface, 'eth_test', mac_address)
-
- def TeardownBackchannel(self):
- """Restores the eth interface names if SetupBackchannel was called."""
- if not os.path.isfile(TEMP_BACKCHANNEL_FILE):
- return
-
- with open(TEMP_BACKCHANNEL_FILE, 'r') as fp:
- eth_iface, mac_address = fp.read().split(',')
-
- self._Renameif('eth_test', eth_iface, mac_address)
- os.remove(TEMP_BACKCHANNEL_FILE)
-
-
-if __name__ == '__main__':
- sys.exit(SuidAction().Run())
« no previous file with comments | « chrome/test/pyautolib/chromeos/power_strip.py ('k') | chrome/test/pyautolib/chromeos_network.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698