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

Side by Side Diff: tools/telemetry/telemetry/core/backends/android_rndis.py

Issue 99713002: Factor out a system_properties interface for interacting with getprop/setprop. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Use shlex.split() Created 7 years 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 import logging 4 import logging
5 import os 5 import os
6 import re 6 import re
7 import socket 7 import socket
8 import struct 8 import struct
9 import subprocess 9 import subprocess
10 import sys 10 import sys
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 if not line.startswith(' '): 106 if not line.startswith(' '):
107 interface_name = line.split()[1].strip(':') 107 interface_name = line.split()[1].strip(':')
108 elif ether_address in line: 108 elif ether_address in line:
109 return interface_name 109 return interface_name
110 110
111 def _WriteProtectedFile(self, path, contents): 111 def _WriteProtectedFile(self, path, contents):
112 subprocess.check_call( 112 subprocess.check_call(
113 ['sudo', 'bash', '-c', 'echo -e "%s" > %s' % (contents, path)]) 113 ['sudo', 'bash', '-c', 'echo -e "%s" > %s' % (contents, path)])
114 114
115 def _DisableRndis(self): 115 def _DisableRndis(self):
116 self._adb.RunShellCommand('setprop sys.usb.config adb') 116 self._adb.system_properties['sys.usb.config'] = 'adb'
117 self._WaitForDevice() 117 self._WaitForDevice()
118 118
119 def _EnableRndis(self): 119 def _EnableRndis(self):
120 """Enables the RNDIS network interface.""" 120 """Enables the RNDIS network interface."""
121 script_prefix = '/data/local/tmp/rndis' 121 script_prefix = '/data/local/tmp/rndis'
122 # This could be accomplished via "svc usb setFunction rndis" but only on 122 # This could be accomplished via "svc usb setFunction rndis" but only on
123 # devices which have the "USB tethering" feature. 123 # devices which have the "USB tethering" feature.
124 # Also, on some devices, it's necessary to go through "none" function. 124 # Also, on some devices, it's necessary to go through "none" function.
125 script = """ 125 script = """
126 trap '' HUP 126 trap '' HUP
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 force = True 319 force = True
320 raise Exception('No connectivity, giving up.') 320 raise Exception('No connectivity, giving up.')
321 321
322 def _GetCurrentDns(self): 322 def _GetCurrentDns(self):
323 """Returns current gateway, dns1, and dns2.""" 323 """Returns current gateway, dns1, and dns2."""
324 routes = self._adb.RunShellCommand('cat /proc/net/route')[1:] 324 routes = self._adb.RunShellCommand('cat /proc/net/route')[1:]
325 routes = [route.split() for route in routes] 325 routes = [route.split() for route in routes]
326 default_routes = [route[0] for route in routes if route[1] == '00000000'] 326 default_routes = [route[0] for route in routes if route[1] == '00000000']
327 return ( 327 return (
328 default_routes[0] if default_routes else None, 328 default_routes[0] if default_routes else None,
329 self._adb.RunShellCommand('getprop net.dns1')[0], 329 self._adb.system_properties['net.dns1'],
330 self._adb.RunShellCommand('getprop net.dns2')[0], 330 self._adb.system_properties['net.dns2'],
331 ) 331 )
332 332
333 def _OverrideDns(self, iface, dns1, dns2): 333 def _OverrideDns(self, iface, dns1, dns2):
334 """Overrides device's DNS configuration. 334 """Overrides device's DNS configuration.
335 335
336 Args: 336 Args:
337 iface: name of the network interface to make default 337 iface: name of the network interface to make default
338 dns1, dns2: nameserver IP addresses 338 dns1, dns2: nameserver IP addresses
339 """ 339 """
340 if not iface: 340 if not iface:
341 return # If there is no route, then nobody cares about DNS. 341 return # If there is no route, then nobody cares about DNS.
342 # DNS proxy in older versions of Android is configured via properties. 342 # DNS proxy in older versions of Android is configured via properties.
343 # TODO(szym): run via su -c if necessary. 343 # TODO(szym): run via su -c if necessary.
344 self._adb.RunShellCommand('setprop net.dns1 ' + dns1) 344 self._adb.system_properties['net.dns1'] = dns1
345 self._adb.RunShellCommand('setprop net.dns2 ' + dns2) 345 self._adb.system_properties['net.dns2'] = dns2
346 dnschange = self._adb.RunShellCommand('getprop net.dnschange')[0] 346 dnschange = self._adb.system_properties['net.dnschange']
347 if dnschange: 347 if dnschange:
348 self._adb.RunShellCommand('setprop net.dnschange %s' % 348 self._adb.system_properties['net.dnschange'] = int(dnschange) + 1
349 (int(dnschange) + 1))
350 # Since commit 8b47b3601f82f299bb8c135af0639b72b67230e6 to frameworks/base 349 # Since commit 8b47b3601f82f299bb8c135af0639b72b67230e6 to frameworks/base
351 # the net.dns1 properties have been replaced with explicit commands for netd 350 # the net.dns1 properties have been replaced with explicit commands for netd
352 self._adb.RunShellCommand('ndc netd resolver setifdns %s %s %s' % 351 self._adb.RunShellCommand('ndc netd resolver setifdns %s %s %s' %
353 (iface, dns1, dns2)) 352 (iface, dns1, dns2))
354 # TODO(szym): if we know the package UID, we could setifaceforuidrange 353 # TODO(szym): if we know the package UID, we could setifaceforuidrange
355 self._adb.RunShellCommand('ndc netd resolver setdefaultif %s' % iface) 354 self._adb.RunShellCommand('ndc netd resolver setdefaultif %s' % iface)
356 355
357 @property 356 @property
358 def host_ip(self): 357 def host_ip(self):
359 return self._host_ip 358 return self._host_ip
360 359
361 @property 360 @property
362 def url(self): 361 def url(self):
363 # localhost and domains which resolve on the host's private network will not 362 # localhost and domains which resolve on the host's private network will not
364 # be resolved by the DNS proxy to the HTTP proxy. 363 # be resolved by the DNS proxy to the HTTP proxy.
365 return 'http://%s:%d' % (self._host_ip, self._host_port) 364 return 'http://%s:%d' % (self._host_ip, self._host_port)
366 365
367 def Close(self): 366 def Close(self):
368 self._OverrideDns(*self._original_dns) 367 self._OverrideDns(*self._original_dns)
369 self._DisableRndis() 368 self._DisableRndis()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698