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

Unified Diff: tests/local_rietveld.py

Issue 8508015: Create a new depot_tools_testing_lib to move utility modules there (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Renamed to testing_support Created 9 years, 1 month 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 | « tests/gclient_utils_test.py ('k') | tests/owners_unittest.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests/local_rietveld.py
diff --git a/tests/local_rietveld.py b/tests/local_rietveld.py
deleted file mode 100755
index 922a3d1aef0702ce73c4ed9b27ef97845106de91..0000000000000000000000000000000000000000
--- a/tests/local_rietveld.py
+++ /dev/null
@@ -1,153 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2011 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.
-
-"""Setups a local Rietveld instance to test against a live server for
-integration tests.
-
-It makes sure Google AppEngine SDK is found, download Rietveld and Django code
-if necessary and starts the server on a free inbound TCP port.
-"""
-
-import optparse
-import os
-import socket
-import sys
-import time
-
-sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
-import subprocess2
-
-
-class Failure(Exception):
- pass
-
-
-def test_port(port):
- s = socket.socket()
- try:
- return s.connect_ex(('127.0.0.1', port)) == 0
- finally:
- s.close()
-
-
-def find_free_port():
- # Test to find an available port starting at 8080.
- port = 8080
- max_val = (2<<16)
- while test_port(port) and port < max_val:
- port += 1
- if port == max_val:
- raise Failure('Having issues finding an available port')
- return port
-
-
-class LocalRietveld(object):
- """Downloads everything needed to run a local instance of Rietveld."""
-
- def __init__(self, base_dir=None):
- # Paths
- self.base_dir = base_dir
- if not self.base_dir:
- self.base_dir = os.path.dirname(os.path.abspath(__file__))
- # TODO(maruel): This should be in /tmp but that would mean having to fetch
- # everytime. This test is already annoyingly slow.
- self.rietveld = os.path.join(self.base_dir, '_rietveld')
- self.test_server = None
- self.port = None
-
- # Find the GAE SDK
- previous_dir = ''
- self.sdk_path = ''
- base_dir = self.base_dir
- while base_dir != previous_dir:
- previous_dir = base_dir
- self.sdk_path = os.path.join(base_dir, 'google_appengine')
- if not os.path.isfile(os.path.join(self.sdk_path, 'VERSION')):
- base_dir = os.path.dirname(base_dir)
- self.dev_app = os.path.join(self.sdk_path, 'dev_appserver.py')
-
- def install_prerequisites(self):
- # First, verify the Google AppEngine SDK is available.
- if not os.path.isfile(self.dev_app):
- raise Failure(
- 'Install google_appengine sdk in %s or higher up' % self.base_dir)
-
- # Second, checkout rietveld if not available.
- if not os.path.isdir(self.rietveld):
- print('Checking out rietveld...')
- try:
- subprocess2.check_call(
- ['svn', 'co', '-q', 'http://rietveld.googlecode.com/svn/trunk@681',
- self.rietveld])
- except (OSError, subprocess2.CalledProcessError), e:
- raise Failure('Failed to checkout rietveld\n%s' % e)
- else:
- print('Syncing rietveld...')
- try:
- subprocess2.check_call(
- ['svn', 'up', '-q', '-r', '681'], cwd=self.rietveld)
- except (OSError, subprocess2.CalledProcessError), e:
- raise Failure('Failed to sync rietveld\n%s' % e)
-
- def start_server(self, verbose=False):
- self.install_prerequisites()
- self.port = find_free_port()
- if verbose:
- pipe = None
- else:
- pipe = subprocess2.VOID
- cmd = [
- sys.executable,
- self.dev_app,
- '--skip_sdk_update_check',
- '.',
- '--port=%d' % self.port,
- '--datastore_path=' + os.path.join(self.rietveld, 'tmp.db'),
- '-c']
-
- # CHEAP TRICK
- # By default you only want to bind on loopback but I'm testing over a
- # headless computer so it's useful to be able to access the test instance
- # remotely.
- if os.environ.get('GAE_LISTEN_ALL', '') == 'true':
- cmd.extend(('-a', '0.0.0.0'))
-
- self.test_server = subprocess2.Popen(
- cmd, stdout=pipe, stderr=pipe, cwd=self.rietveld)
- # Loop until port 127.0.0.1:port opens or the process dies.
- while not test_port(self.port):
- self.test_server.poll()
- if self.test_server.returncode is not None:
- raise Failure(
- 'Test rietveld instance failed early on port %s' %
- self.port)
- time.sleep(0.01)
-
- def stop_server(self):
- if self.test_server:
- self.test_server.kill()
- self.test_server.wait()
- self.test_server = None
- self.port = None
-
-
-def main():
- parser = optparse.OptionParser()
- parser.add_option('-v', '--verbose', action='store_true')
- options, args = parser.parse_args()
- if args:
- parser.error('Unknown arguments: %s' % ' '.join(args))
- instance = LocalRietveld()
- try:
- instance.start_server(verbose=options.verbose)
- print 'Local rietveld instance started on port %d' % instance.port
- while True:
- time.sleep(0.1)
- finally:
- instance.stop_server()
-
-
-if __name__ == '__main__':
- main()
« no previous file with comments | « tests/gclient_utils_test.py ('k') | tests/owners_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698