[Checkins] SVN: zc.zservertracelog/branches/alex-tests/ added test setup and rudimentary tests.
Alex Smith
asmith at zope.com
Wed Aug 27 17:15:34 EDT 2008
Log message for revision 90471:
added test setup and rudimentary tests.
Changed:
U zc.zservertracelog/branches/alex-tests/buildout.cfg
U zc.zservertracelog/branches/alex-tests/setup.py
A zc.zservertracelog/branches/alex-tests/src/zc/zservertracelog/README.txt
U zc.zservertracelog/branches/alex-tests/src/zc/zservertracelog/configure.zcml
A zc.zservertracelog/branches/alex-tests/src/zc/zservertracelog/tests.py
U zc.zservertracelog/branches/alex-tests/src/zc/zservertracelog/tracelog.py
-=-
Modified: zc.zservertracelog/branches/alex-tests/buildout.cfg
===================================================================
--- zc.zservertracelog/branches/alex-tests/buildout.cfg 2008-08-27 21:05:32 UTC (rev 90470)
+++ zc.zservertracelog/branches/alex-tests/buildout.cfg 2008-08-27 21:15:33 UTC (rev 90471)
@@ -1,7 +1,22 @@
[buildout]
develop = .
-parts = instance tracereport
+parts =
+ instance
+ interpreter
+ test
+ tracereport
+[interpreter]
+recipe = zc.recipe.egg
+interpreter = py
+eggs =
+ zc.zservertracelog
+
+[test]
+recipe = zc.recipe.testrunner
+eggs =
+ zc.zservertracelog [test]
+
[zope3]
location =
Modified: zc.zservertracelog/branches/alex-tests/setup.py
===================================================================
--- zc.zservertracelog/branches/alex-tests/setup.py 2008-08-27 21:05:32 UTC (rev 90470)
+++ zc.zservertracelog/branches/alex-tests/setup.py 2008-08-27 21:15:33 UTC (rev 90471)
@@ -31,7 +31,17 @@
packages = find_packages('src'),
namespace_packages = ['zc'],
package_dir = {'': 'src'},
- install_requires = 'setuptools',
+ install_requires = [
+ 'setuptools',
+ 'zope.app.testing',
+ 'zope.testbrowser',
+ 'zope.testing',
+ ],
+ extras_require=dict(
+ test=[
+ 'zope.app.server',
+ 'zope.app.securitypolicy',
+ ]),
include_package_data = True,
zip_safe = False,
entry_points=entry_points,
Added: zc.zservertracelog/branches/alex-tests/src/zc/zservertracelog/README.txt
===================================================================
--- zc.zservertracelog/branches/alex-tests/src/zc/zservertracelog/README.txt (rev 0)
+++ zc.zservertracelog/branches/alex-tests/src/zc/zservertracelog/README.txt 2008-08-27 21:15:33 UTC (rev 90471)
@@ -0,0 +1,60 @@
+==================
+ ZServer TraceLog
+==================
+
+A tracelog is a kind of access log that records several low-level events for
+each request. Each log entry starts with a record type, a request identifier
+and the time. Some log records have additional data.
+
+ >>> import zc.zservertracelog.tracelog
+ >>> import zope.app.appsetup.interfaces
+
+For these examples, we'll add a log handler that outputs to standard out.
+
+ >>> import logging
+ >>> import sys
+ >>> stdout_handler = logging.StreamHandler(sys.stdout)
+
+ >>> logger = logging.getLogger('zc.tracelog')
+ >>> logger.setLevel(logging.INFO)
+ >>> logger.addHandler(stdout_handler)
+
+There is an event handler to log when the Z server starts.
+
+ >>> zc.zservertracelog.tracelog.started(
+ ... zope.app.appsetup.interfaces.ProcessStarting())
+ S 0 2008-08-26T11:55:00
+
+The tracelog machinery is implemented as a WSGI layer, so we'll define a fake
+WSGI application for tracelog to use.
+
+ >>> def faux_application(environ, start_response):
+ ... """Fake WSGI application. Doesn't need to do much!"""
+
+Now, let's create an instance of the tracelog server.
+
+ >>> addr, port = '127.0.0.1', 12345
+
+ >>> trace_server = zc.zservertracelog.tracelog.Server(
+ ... faux_application, None, addr, port)
+
+Let's also define a convenience function for processing requests.
+
+ >>> def invokeRequest(req):
+ ... channel = trace_server.channel_class(trace_server, None, addr)
+ ... channel.received(req)
+
+Process a simple request.
+
+ >>> req1 = """\
+ ... GET / HTTP/1.1
+ ... Host: www.example.com
+ ...
+ ... """
+
+ >>> invokeRequest(req1)
+ B 23423600 2008-08-27T10:54:08 GET /
+ I 23423600 2008-08-27T10:54:08 0
+ C 23423600 2008-08-27T10:54:08
+ A 23423600 2008-08-27T10:54:08 200 ?
+ E 23423600 2008-08-27T10:54:08
Modified: zc.zservertracelog/branches/alex-tests/src/zc/zservertracelog/configure.zcml
===================================================================
--- zc.zservertracelog/branches/alex-tests/src/zc/zservertracelog/configure.zcml 2008-08-27 21:05:32 UTC (rev 90470)
+++ zc.zservertracelog/branches/alex-tests/src/zc/zservertracelog/configure.zcml 2008-08-27 21:15:33 UTC (rev 90471)
@@ -13,4 +13,5 @@
/>
<subscriber handler=".tracelog.started" />
+
</configure>
Added: zc.zservertracelog/branches/alex-tests/src/zc/zservertracelog/tests.py
===================================================================
--- zc.zservertracelog/branches/alex-tests/src/zc/zservertracelog/tests.py (rev 0)
+++ zc.zservertracelog/branches/alex-tests/src/zc/zservertracelog/tests.py 2008-08-27 21:15:33 UTC (rev 90471)
@@ -0,0 +1,42 @@
+##############################################################################
+#
+# Copyright (c) 2008 Zope Corporation. All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Visible Source
+# License, Version 1.0 (ZVSL). A copy of the ZVSL should accompany this
+# distribution.
+#
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""tracelog tests
+"""
+__docformat__ = "reStructuredText"
+
+from zope.testing import doctest
+import re
+import unittest
+import zope.testing.renormalizing
+
+
+checker = zope.testing.renormalizing.RENormalizing([
+ # normalize the channel id and iso8601 timestamp
+ (re.compile(r'-?\d+ \d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}'),
+ '23418928 2008-08-26T10:55:00'),
+ ])
+
+
+def test_suite():
+ return unittest.TestSuite([
+ doctest.DocFileTest(
+ 'README.txt',
+ optionflags=(
+ doctest.NORMALIZE_WHITESPACE
+ | doctest.ELLIPSIS
+ | doctest.INTERPRET_FOOTNOTES),
+ checker=checker,
+ ),
+ ])
Modified: zc.zservertracelog/branches/alex-tests/src/zc/zservertracelog/tracelog.py
===================================================================
--- zc.zservertracelog/branches/alex-tests/src/zc/zservertracelog/tracelog.py 2008-08-27 21:05:32 UTC (rev 90470)
+++ zc.zservertracelog/branches/alex-tests/src/zc/zservertracelog/tracelog.py 2008-08-27 21:15:33 UTC (rev 90471)
@@ -79,8 +79,10 @@
logger.info("E %s %s", id(task.channel), now())
raise
else:
+ accumulated_headers = (
+ getattr(task, 'accumulated_headers', ()) or ())
length = [h.split(': ')[1].strip()
- for h in getattr(task, 'accumulated_headers', ())
+ for h in accumulated_headers
if h.lower().startswith('content-length: ')]
if length:
length = length[0]
More information about the Checkins
mailing list