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

Side by Side Diff: net/tools/testserver/testserver.py

Issue 9302024: Add client for background testing of HTTP pipelining. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 10 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
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """This is a simple HTTP/FTP/SYNC/TCP/UDP/ server used for testing Chrome. 6 """This is a simple HTTP/FTP/SYNC/TCP/UDP/ server used for testing Chrome.
7 7
8 It supports several test URLs, as specified by the handlers in TestPageHandler. 8 It supports several test URLs, as specified by the handlers in TestPageHandler.
9 By default, it listens on an ephemeral port and sends the port number back to 9 By default, it listens on an ephemeral port and sends the port number back to
10 the originating process over a pipe. The originating process can specify an 10 the originating process over a pipe. The originating process can specify an
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 put_handlers): 291 put_handlers):
292 self._connect_handlers = connect_handlers 292 self._connect_handlers = connect_handlers
293 self._get_handlers = get_handlers 293 self._get_handlers = get_handlers
294 self._head_handlers = head_handlers 294 self._head_handlers = head_handlers
295 self._post_handlers = post_handlers 295 self._post_handlers = post_handlers
296 self._put_handlers = put_handlers 296 self._put_handlers = put_handlers
297 BaseHTTPServer.BaseHTTPRequestHandler.__init__( 297 BaseHTTPServer.BaseHTTPRequestHandler.__init__(
298 self, request, client_address, socket_server) 298 self, request, client_address, socket_server)
299 299
300 def log_request(self, *args, **kwargs): 300 def log_request(self, *args, **kwargs):
301 print '%s %s %s' % (self.path, args, kwargs)
mmenke 2012/02/01 19:08:07 You only added this for your own debugging, right?
James Simonsen 2012/02/07 00:01:37 Oops. Yeah.
301 # Disable request logging to declutter test log output. 302 # Disable request logging to declutter test log output.
302 pass 303 pass
303 304
304 def _ShouldHandleRequest(self, handler_name): 305 def _ShouldHandleRequest(self, handler_name):
305 """Determines if the path can be handled by the handler. 306 """Determines if the path can be handled by the handler.
306 307
307 We consider a handler valid if the path begins with the 308 We consider a handler valid if the path begins with the
308 handler name. It can optionally be followed by "?*", "/*". 309 handler name. It can optionally be followed by "?*", "/*".
309 """ 310 """
310 311
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
371 self.AuthDigestHandler, 372 self.AuthDigestHandler,
372 self.SlowServerHandler, 373 self.SlowServerHandler,
373 self.ChunkedServerHandler, 374 self.ChunkedServerHandler,
374 self.ContentTypeHandler, 375 self.ContentTypeHandler,
375 self.NoContentHandler, 376 self.NoContentHandler,
376 self.ServerRedirectHandler, 377 self.ServerRedirectHandler,
377 self.ClientRedirectHandler, 378 self.ClientRedirectHandler,
378 self.MultipartHandler, 379 self.MultipartHandler,
379 self.MultipartSlowHandler, 380 self.MultipartSlowHandler,
380 self.GetSSLSessionCacheHandler, 381 self.GetSSLSessionCacheHandler,
382 self.CloseSocketHandler,
381 self.DefaultResponseHandler] 383 self.DefaultResponseHandler]
382 post_handlers = [ 384 post_handlers = [
383 self.EchoTitleHandler, 385 self.EchoTitleHandler,
384 self.EchoHandler, 386 self.EchoHandler,
385 self.DeviceManagementHandler, 387 self.DeviceManagementHandler,
386 self.PostOnlyFileHandler] + get_handlers 388 self.PostOnlyFileHandler] + get_handlers
387 put_handlers = [ 389 put_handlers = [
388 self.EchoTitleHandler, 390 self.EchoTitleHandler,
389 self.EchoHandler] + get_handlers 391 self.EchoHandler] + get_handlers
390 head_handlers = [ 392 head_handlers = [
(...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after
919 if not self.path.startswith(prefix): 921 if not self.path.startswith(prefix):
920 return False 922 return False
921 self.ReadRequestBody() 923 self.ReadRequestBody()
922 return self._FileHandlerHelper(prefix) 924 return self._FileHandlerHelper(prefix)
923 925
924 def _FileHandlerHelper(self, prefix): 926 def _FileHandlerHelper(self, prefix):
925 _, _, url_path, _, query, _ = urlparse.urlparse(self.path) 927 _, _, url_path, _, query, _ = urlparse.urlparse(self.path)
926 sub_path = url_path[len(prefix):] 928 sub_path = url_path[len(prefix):]
927 entries = sub_path.split('/') 929 entries = sub_path.split('/')
928 file_path = os.path.join(self.server.data_dir, *entries) 930 file_path = os.path.join(self.server.data_dir, *entries)
931 print 'file_path %s' % file_path
mmenke 2012/02/01 19:08:07 This was just for your own debugging, right?
James Simonsen 2012/02/07 00:01:37 Done.
929 if os.path.isdir(file_path): 932 if os.path.isdir(file_path):
930 file_path = os.path.join(file_path, 'index.html') 933 file_path = os.path.join(file_path, 'index.html')
931 934
932 if not os.path.isfile(file_path): 935 if not os.path.isfile(file_path):
933 print "File not found " + sub_path + " full path:" + file_path 936 print "File not found " + sub_path + " full path:" + file_path
934 self.send_error(404) 937 self.send_error(404)
935 return True 938 return True
936 939
937 f = open(file_path, "rb") 940 f = open(file_path, "rb")
938 data = f.read() 941 data = f.read()
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after
1420 self.send_header('Content-Type', 'text/plain') 1423 self.send_header('Content-Type', 'text/plain')
1421 self.end_headers() 1424 self.end_headers()
1422 try: 1425 try:
1423 for (action, sessionID) in self.server.session_cache.log: 1426 for (action, sessionID) in self.server.session_cache.log:
1424 self.wfile.write('%s\t%s\n' % (action, sessionID.encode('hex'))) 1427 self.wfile.write('%s\t%s\n' % (action, sessionID.encode('hex')))
1425 except AttributeError, e: 1428 except AttributeError, e:
1426 self.wfile.write('Pass --https-record-resume in order to use' + 1429 self.wfile.write('Pass --https-record-resume in order to use' +
1427 ' this request') 1430 ' this request')
1428 return True 1431 return True
1429 1432
1433 def CloseSocketHandler(self):
1434 """Closes the socket without sending anything."""
1435
1436 if not self._ShouldHandleRequest('/close-socket'):
1437 return False
1438
1439 self.wfile.close()
1440 return True
1441
1430 def DefaultResponseHandler(self): 1442 def DefaultResponseHandler(self):
1431 """This is the catch-all response handler for requests that aren't handled 1443 """This is the catch-all response handler for requests that aren't handled
1432 by one of the special handlers above. 1444 by one of the special handlers above.
1433 Note that we specify the content-length as without it the https connection 1445 Note that we specify the content-length as without it the https connection
1434 is not closed properly (and the browser keeps expecting data).""" 1446 is not closed properly (and the browser keeps expecting data)."""
1435 1447
1436 contents = "Default response given for path: " + self.path 1448 contents = "Default response given for path: " + self.path
1437 self.send_response(200) 1449 self.send_response(200)
1438 self.send_header('Content-Type', 'text/html') 1450 self.send_header('Content-Type', 'text/html')
1439 self.send_header('Content-Length', len(contents)) 1451 self.send_header('Content-Length', len(contents))
(...skipping 565 matching lines...) Expand 10 before | Expand all | Expand 10 after
2005 'random key if none is specified on the command ' 2017 'random key if none is specified on the command '
2006 'line.') 2018 'line.')
2007 option_parser.add_option('', '--policy-user', default='user@example.com', 2019 option_parser.add_option('', '--policy-user', default='user@example.com',
2008 dest='policy_user', 2020 dest='policy_user',
2009 help='Specify the user name the server should ' 2021 help='Specify the user name the server should '
2010 'report back to the client as the user owning the ' 2022 'report back to the client as the user owning the '
2011 'token used for making the policy request.') 2023 'token used for making the policy request.')
2012 options, args = option_parser.parse_args() 2024 options, args = option_parser.parse_args()
2013 2025
2014 sys.exit(main(options, args)) 2026 sys.exit(main(options, args))
OLDNEW
« chrome/test/base/run_all_unittests.cc ('K') | « net/base/net_error_list.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698