Commit 8062cc3a authored by maruel@chromium.org's avatar maruel@chromium.org

Align local_rietveld.py at +2 like the rest of the code.

No behavior change.

R=dpranke@chromium.org
BUG=
TEST=

Review URL: http://codereview.chromium.org/6757002

git-svn-id: svn://svn.chromium.org/chrome/trunk/tools/depot_tools@79522 0039d316-1c4b-4281-b951-d872f2087c98
parent 03cc6ee9
...@@ -18,130 +18,129 @@ import time ...@@ -18,130 +18,129 @@ import time
class Failure(Exception): class Failure(Exception):
pass pass
def test_port(port): def test_port(port):
s = socket.socket() s = socket.socket()
try: try:
return s.connect_ex(('127.0.0.1', port)) == 0 return s.connect_ex(('127.0.0.1', port)) == 0
finally: finally:
s.close() s.close()
def find_free_port(): def find_free_port():
# Test to find an available port starting at 8080. # Test to find an available port starting at 8080.
port = 8080 port = 8080
max_val = (2<<16) max_val = (2<<16)
while test_port(port) and port < max_val: while test_port(port) and port < max_val:
port += 1 port += 1
if port == max_val: if port == max_val:
raise Failure('Having issues finding an available port') raise Failure('Having issues finding an available port')
return port return port
class LocalRietveld(object): class LocalRietveld(object):
"""Downloads everything needed to run a local instance of Rietveld.""" """Downloads everything needed to run a local instance of Rietveld."""
def __init__(self, base_dir=None): def __init__(self, base_dir=None):
# Paths # Paths
self.base_dir = base_dir self.base_dir = base_dir
if not self.base_dir: if not self.base_dir:
self.base_dir = os.path.dirname(os.path.abspath(__file__)) self.base_dir = os.path.dirname(os.path.abspath(__file__))
self.base_dir = os.path.realpath(os.path.join(self.base_dir, '..')) self.base_dir = os.path.realpath(os.path.join(self.base_dir, '..'))
self.sdk_path = os.path.abspath( self.sdk_path = os.path.abspath(
os.path.join(self.base_dir, '..', '..', 'google_appengine')) os.path.join(self.base_dir, '..', '..', 'google_appengine'))
self.dev_app = os.path.join(self.sdk_path, 'dev_appserver.py') self.dev_app = os.path.join(self.sdk_path, 'dev_appserver.py')
self.rietveld = os.path.join(self.base_dir, 'test', 'rietveld') self.rietveld = os.path.join(self.base_dir, 'test', 'rietveld')
self.test_server = None self.test_server = None
self.port = None self.port = None
# Generate a friendly environment. # Generate a friendly environment.
self.env = os.environ.copy() self.env = os.environ.copy()
self.env['LANGUAGE'] = 'en' self.env['LANGUAGE'] = 'en'
self.out = None
def install_prerequisites(self): self.err = None
# First, verify the Google AppEngine SDK is available.
if not os.path.isfile(self.dev_app): def install_prerequisites(self):
raise Failure('Install google_appengine sdk in %s' % self.sdk_path) # First, verify the Google AppEngine SDK is available.
if not os.path.isfile(self.dev_app):
def call(*args, **kwargs): raise Failure('Install google_appengine sdk in %s' % self.sdk_path)
kwargs['env'] = self.env
x = subprocess.Popen(*args, **kwargs) def call(*args, **kwargs):
x.communicate() kwargs['env'] = self.env
return x.returncode == 0 x = subprocess.Popen(*args, **kwargs)
x.communicate()
# Second, checkout rietveld if not available. return x.returncode == 0
if not os.path.isdir(self.rietveld):
print('Checking out rietveld...') # Second, checkout rietveld if not available.
if not call( if not os.path.isdir(self.rietveld):
['svn', 'co', '-q', print('Checking out rietveld...')
'http://rietveld.googlecode.com/svn/trunk@681', if not call(
self.rietveld]): ['svn', 'co', '-q',
raise Failure('Failed to checkout rietveld') 'http://rietveld.googlecode.com/svn/trunk@681',
else: self.rietveld]):
print('Syncing rietveld...') raise Failure('Failed to checkout rietveld')
if not call(['svn', 'up', '-q', '-r', '681'], cwd=self.rietveld): else:
raise Failure('Failed to checkout rietveld') print('Syncing rietveld...')
if not call(['svn', 'up', '-q', '-r', '681'], cwd=self.rietveld):
def start_server(self, verbose=False): raise Failure('Failed to checkout rietveld')
self.install_prerequisites()
self.port = find_free_port() def start_server(self, verbose=False):
if verbose: self.install_prerequisites()
self.out = None self.port = find_free_port()
self.err = None if verbose:
else: self.out = None
self.out = open(os.devnull, 'w') self.err = None
self.err = open(os.devnull, 'w') else:
output = [] self.out = open(os.devnull, 'w')
cmd = [ self.err = open(os.devnull, 'w')
self.dev_app, cmd = [
'--skip_sdk_update_check', self.dev_app,
'.', '--skip_sdk_update_check',
'--port=%d' % self.port, '.',
'--datastore_path=' + os.path.join(self.rietveld, 'tmp.db'), '--port=%d' % self.port,
'-c'] '--datastore_path=' + os.path.join(self.rietveld, 'tmp.db'),
self.test_server = subprocess.Popen( '-c']
cmd, stdout=self.out, stderr=self.err, env=self.env, self.test_server = subprocess.Popen(
cwd=self.rietveld) cmd, stdout=self.out, stderr=self.err, env=self.env,
# Loop until port 127.0.0.1:port opens or the process dies. cwd=self.rietveld)
while not test_port(self.port): # Loop until port 127.0.0.1:port opens or the process dies.
self.test_server.poll() while not test_port(self.port):
if self.test_server.returncode is not None: self.test_server.poll()
raise Failure( if self.test_server.returncode is not None:
'Test rietveld instance failed early on port %s' % raise Failure(
self.port) 'Test rietveld instance failed early on port %s' %
time.sleep(0.001) self.port)
time.sleep(0.001)
def stop_server(self):
if self.test_server: def stop_server(self):
self.test_server.kill() if self.test_server:
self.test_server = None self.test_server.kill()
self.port = None self.test_server = None
if self.out: self.port = None
self.out.close() if self.out:
self.out = None self.out.close()
if self.err: self.out = None
self.err.close() if self.err:
self.err = None self.err.close()
self.err = None
def main(): def main():
parser = optparse.OptionParser() parser = optparse.OptionParser()
parser.add_option('-v', '--verbose', action='store_true') parser.add_option('-v', '--verbose', action='store_true')
options, args = parser.parse_args() options, args = parser.parse_args()
if args: if args:
parser.error('Unknown arguments: %s' % ' '.join(args)) parser.error('Unknown arguments: %s' % ' '.join(args))
instance = LocalRietveld() instance = LocalRietveld()
try: try:
instance.start_server(verbose=options.verbose) instance.start_server(verbose=options.verbose)
print 'Local rietveld instance started on port %d' % instance.port print 'Local rietveld instance started on port %d' % instance.port
while True: while True:
time.sleep(0.1) time.sleep(0.1)
finally: finally:
instance.stop_server() instance.stop_server()
if __name__ == '__main__': if __name__ == '__main__':
main() main()
# vim: ts=4:sw=4:tw=80:et:
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment