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

Side by Side Diff: build/android/pylib/fake_dns.py

Issue 10689132: [android] Upstream / sync most of build/android and build/android/pylib. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « build/android/pylib/debug_info.py ('k') | build/android/pylib/forwarder.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 import android_commands
6 import constants
7 import logging
8 import os
9 import subprocess
10 import time
11
12
13 class FakeDns(object):
14 """Wrapper class for the fake_dns tool."""
15 _FAKE_DNS_PATH = '/data/local/tmp/fake_dns'
16
17 def __init__(self, adb):
18 """
19 Args:
20 adb: the AndroidCommands to use.
21 """
22 self._adb = adb
23 self._fake_dns = None
24 self._original_dns = None
25
26 def _PushAndStartFakeDns(self):
27 """Starts the fake_dns server that replies all name queries 127.0.0.1.
28
29 Returns:
30 subprocess instance connected to the fake_dns process on the device.
31 """
32 self._adb.PushIfNeeded(
33 os.path.join(constants.CHROME_DIR, 'out', 'Release', 'fake_dns'),
34 FakeDns._FAKE_DNS_PATH)
35 return subprocess.Popen(
36 ['adb', '-s', self._adb._adb.GetSerialNumber(),
37 'shell', '%s -D' % FakeDns._FAKE_DNS_PATH])
38
39 def SetUp(self):
40 """Configures the system to point to a DNS server that replies 127.0.0.1.
41
42 This can be used in combination with the forwarder to forward all web
43 traffic to a replay server.
44
45 The TearDown() method will perform all cleanup.
46 """
47 self._adb.RunShellCommand('ip route add 8.8.8.0/24 via 127.0.0.1 dev lo')
48 self._fake_dns = self._PushAndStartFakeDns()
49 self._original_dns = self._adb.RunShellCommand('getprop net.dns1')[0]
50 self._adb.RunShellCommand('setprop net.dns1 127.0.0.1')
51 time.sleep(2) # Time for server to start and the setprop to take effect.
52
53 def TearDown(self):
54 """Shuts down the fake_dns."""
55 if self._fake_dns:
56 if not self._original_dns or self._original_dns == '127.0.0.1':
57 logging.warning('Bad original DNS, falling back to Google DNS.')
58 self._original_dns = '8.8.8.8'
59 self._adb.RunShellCommand('setprop net.dns1 %s' % self._original_dns)
60 self._fake_dns.kill()
61 self._adb.RunShellCommand('ip route del 8.8.8.0/24 via 127.0.0.1 dev lo')
OLDNEW
« no previous file with comments | « build/android/pylib/debug_info.py ('k') | build/android/pylib/forwarder.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698