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

Unified Diff: build/android/lighttpd_server.py

Issue 2392643003: Removes files from //build that we don't need (Closed)
Patch Set: Created 4 years, 2 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 | « build/android/jinja_template.gypi ('k') | build/android/lint/OWNERS » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: build/android/lighttpd_server.py
diff --git a/build/android/lighttpd_server.py b/build/android/lighttpd_server.py
deleted file mode 100755
index a5195ac815e7611c6da7717b83dede635cfc6221..0000000000000000000000000000000000000000
--- a/build/android/lighttpd_server.py
+++ /dev/null
@@ -1,256 +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.
-
-"""Provides a convenient wrapper for spawning a test lighttpd instance.
-
-Usage:
- lighttpd_server PATH_TO_DOC_ROOT
-"""
-
-import codecs
-import contextlib
-import httplib
-import os
-import random
-import shutil
-import socket
-import subprocess
-import sys
-import tempfile
-import time
-
-from pylib import constants
-from pylib import pexpect
-
-class LighttpdServer(object):
- """Wraps lighttpd server, providing robust startup.
-
- Args:
- document_root: Path to root of this server's hosted files.
- port: TCP port on the _host_ machine that the server will listen on. If
- ommitted it will attempt to use 9000, or if unavailable it will find
- a free port from 8001 - 8999.
- lighttpd_path, lighttpd_module_path: Optional paths to lighttpd binaries.
- base_config_path: If supplied this file will replace the built-in default
- lighttpd config file.
- extra_config_contents: If specified, this string will be appended to the
- base config (default built-in, or from base_config_path).
- config_path, error_log, access_log: Optional paths where the class should
- place temprary files for this session.
- """
-
- def __init__(self, document_root, port=None,
- lighttpd_path=None, lighttpd_module_path=None,
- base_config_path=None, extra_config_contents=None,
- config_path=None, error_log=None, access_log=None):
- self.temp_dir = tempfile.mkdtemp(prefix='lighttpd_for_chrome_android')
- self.document_root = os.path.abspath(document_root)
- self.fixed_port = port
- self.port = port or constants.LIGHTTPD_DEFAULT_PORT
- self.server_tag = 'LightTPD ' + str(random.randint(111111, 999999))
- self.lighttpd_path = lighttpd_path or '/usr/sbin/lighttpd'
- self.lighttpd_module_path = lighttpd_module_path or '/usr/lib/lighttpd'
- self.base_config_path = base_config_path
- self.extra_config_contents = extra_config_contents
- self.config_path = config_path or self._Mktmp('config')
- self.error_log = error_log or self._Mktmp('error_log')
- self.access_log = access_log or self._Mktmp('access_log')
- self.pid_file = self._Mktmp('pid_file')
- self.process = None
-
- def _Mktmp(self, name):
- return os.path.join(self.temp_dir, name)
-
- @staticmethod
- def _GetRandomPort():
- # The ports of test server is arranged in constants.py.
- return random.randint(constants.LIGHTTPD_RANDOM_PORT_FIRST,
- constants.LIGHTTPD_RANDOM_PORT_LAST)
-
- def StartupHttpServer(self):
- """Starts up a http server with specified document root and port."""
- # If we want a specific port, make sure no one else is listening on it.
- if self.fixed_port:
- self._KillProcessListeningOnPort(self.fixed_port)
- while True:
- if self.base_config_path:
- # Read the config
- with codecs.open(self.base_config_path, 'r', 'utf-8') as f:
- config_contents = f.read()
- else:
- config_contents = self._GetDefaultBaseConfig()
- if self.extra_config_contents:
- config_contents += self.extra_config_contents
- # Write out the config, filling in placeholders from the members of |self|
- with codecs.open(self.config_path, 'w', 'utf-8') as f:
- f.write(config_contents % self.__dict__)
- if (not os.path.exists(self.lighttpd_path) or
- not os.access(self.lighttpd_path, os.X_OK)):
- raise EnvironmentError(
- 'Could not find lighttpd at %s.\n'
- 'It may need to be installed (e.g. sudo apt-get install lighttpd)'
- % self.lighttpd_path)
- self.process = pexpect.spawn(self.lighttpd_path,
- ['-D', '-f', self.config_path,
- '-m', self.lighttpd_module_path],
- cwd=self.temp_dir)
- client_error, server_error = self._TestServerConnection()
- if not client_error:
- assert int(open(self.pid_file, 'r').read()) == self.process.pid
- break
- self.process.close()
-
- if self.fixed_port or not 'in use' in server_error:
- print 'Client error:', client_error
- print 'Server error:', server_error
- return False
- self.port = self._GetRandomPort()
- return True
-
- def ShutdownHttpServer(self):
- """Shuts down our lighttpd processes."""
- if self.process:
- self.process.terminate()
- shutil.rmtree(self.temp_dir, ignore_errors=True)
-
- def _TestServerConnection(self):
- # Wait for server to start
- server_msg = ''
- for timeout in xrange(1, 5):
- client_error = None
- try:
- with contextlib.closing(httplib.HTTPConnection(
- '127.0.0.1', self.port, timeout=timeout)) as http:
- http.set_debuglevel(timeout > 3)
- http.request('HEAD', '/')
- r = http.getresponse()
- r.read()
- if (r.status == 200 and r.reason == 'OK' and
- r.getheader('Server') == self.server_tag):
- return (None, server_msg)
- client_error = ('Bad response: %s %s version %s\n ' %
- (r.status, r.reason, r.version) +
- '\n '.join([': '.join(h) for h in r.getheaders()]))
- except (httplib.HTTPException, socket.error) as client_error:
- pass # Probably too quick connecting: try again
- # Check for server startup error messages
- ix = self.process.expect([pexpect.TIMEOUT, pexpect.EOF, '.+'],
- timeout=timeout)
- if ix == 2: # stdout spew from the server
- server_msg += self.process.match.group(0)
- elif ix == 1: # EOF -- server has quit so giveup.
- client_error = client_error or 'Server exited'
- break
- return (client_error or 'Timeout', server_msg)
-
- @staticmethod
- def _KillProcessListeningOnPort(port):
- """Checks if there is a process listening on port number |port| and
- terminates it if found.
-
- Args:
- port: Port number to check.
- """
- if subprocess.call(['fuser', '-kv', '%d/tcp' % port]) == 0:
- # Give the process some time to terminate and check that it is gone.
- time.sleep(2)
- assert subprocess.call(['fuser', '-v', '%d/tcp' % port]) != 0, \
- 'Unable to kill process listening on port %d.' % port
-
- @staticmethod
- def _GetDefaultBaseConfig():
- return """server.tag = "%(server_tag)s"
-server.modules = ( "mod_access",
- "mod_accesslog",
- "mod_alias",
- "mod_cgi",
- "mod_rewrite" )
-
-# default document root required
-#server.document-root = "."
-
-# files to check for if .../ is requested
-index-file.names = ( "index.php", "index.pl", "index.cgi",
- "index.html", "index.htm", "default.htm" )
-# mimetype mapping
-mimetype.assign = (
- ".gif" => "image/gif",
- ".jpg" => "image/jpeg",
- ".jpeg" => "image/jpeg",
- ".png" => "image/png",
- ".svg" => "image/svg+xml",
- ".css" => "text/css",
- ".html" => "text/html",
- ".htm" => "text/html",
- ".xhtml" => "application/xhtml+xml",
- ".xhtmlmp" => "application/vnd.wap.xhtml+xml",
- ".js" => "application/x-javascript",
- ".log" => "text/plain",
- ".conf" => "text/plain",
- ".text" => "text/plain",
- ".txt" => "text/plain",
- ".dtd" => "text/xml",
- ".xml" => "text/xml",
- ".manifest" => "text/cache-manifest",
- )
-
-# Use the "Content-Type" extended attribute to obtain mime type if possible
-mimetype.use-xattr = "enable"
-
-##
-# which extensions should not be handle via static-file transfer
-#
-# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
-static-file.exclude-extensions = ( ".php", ".pl", ".cgi" )
-
-server.bind = "127.0.0.1"
-server.port = %(port)s
-
-## virtual directory listings
-dir-listing.activate = "enable"
-#dir-listing.encoding = "iso-8859-2"
-#dir-listing.external-css = "style/oldstyle.css"
-
-## enable debugging
-#debug.log-request-header = "enable"
-#debug.log-response-header = "enable"
-#debug.log-request-handling = "enable"
-#debug.log-file-not-found = "enable"
-
-#### SSL engine
-#ssl.engine = "enable"
-#ssl.pemfile = "server.pem"
-
-# Autogenerated test-specific config follows.
-
-cgi.assign = ( ".cgi" => "/usr/bin/env",
- ".pl" => "/usr/bin/env",
- ".asis" => "/bin/cat",
- ".php" => "/usr/bin/php-cgi" )
-
-server.errorlog = "%(error_log)s"
-accesslog.filename = "%(access_log)s"
-server.upload-dirs = ( "/tmp" )
-server.pid-file = "%(pid_file)s"
-server.document-root = "%(document_root)s"
-
-"""
-
-
-def main(argv):
- server = LighttpdServer(*argv[1:])
- try:
- if server.StartupHttpServer():
- raw_input('Server running at http://127.0.0.1:%s -'
- ' press Enter to exit it.' % server.port)
- else:
- print 'Server exit code:', server.process.exitstatus
- finally:
- server.ShutdownHttpServer()
-
-
-if __name__ == '__main__':
- sys.exit(main(sys.argv))
« no previous file with comments | « build/android/jinja_template.gypi ('k') | build/android/lint/OWNERS » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698