~loggerhead-team/loggerhead/trunk-rich

« back to all changes in this revision

Viewing changes to __init__.py

  • Committer: John Arbash Meinel
  • Date: 2011-02-10 00:23:33 UTC
  • mto: This revision was merged to the branch mainline in revision 426.
  • Revision ID: john@arbash-meinel.com-20110210002333-sv5ibj14iwjrun86
Full integration test.

We set the blocking timeout low, and the Worker request to one tenth
of that. Otherwise the workers are blocked waiting for more work
while the ActionScript is trying to join against the threads.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright 2009 Canonical Ltd
 
1
# Copyright 2009, 2010, 2011 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
26
26
 
27
27
"""Loggerhead web viewer for Bazaar branches.
28
28
 
29
 
This provides a new option "--http" to the "bzr serve" command, that 
 
29
This provides a new option "--http" to the "bzr serve" command, that
30
30
starts a web server to browse the contents of a branch.
31
31
"""
32
32
 
33
 
version_info = (1, 17, 0)
 
33
from info import (
 
34
    bzr_plugin_version as version_info,
 
35
    bzr_compatible_versions,
 
36
    )
34
37
 
35
38
if __name__ == 'bzrlib.plugins.loggerhead':
36
39
    import bzrlib
37
40
    from bzrlib.api import require_any_api
 
41
    from bzrlib import commands
38
42
 
39
 
    require_any_api(bzrlib, [
40
 
        (1, 13, 0), (1, 15, 0), (1, 16, 0), (1, 17, 0), (1, 18, 0),
41
 
        (2, 0, 0), (2, 1, 0)])
 
43
    require_any_api(bzrlib, bzr_compatible_versions)
42
44
 
43
45
    # NB: Normally plugins should lazily load almost everything, but this
44
46
    # seems reasonable to have in-line here: bzrlib.commands and options are
58
60
    HELP = ('Loggerhead, a web-based code viewer and server. (default port: %d)' %
59
61
            (DEFAULT_PORT,))
60
62
 
61
 
    def serve_http(transport, host=None, port=None, inet=None):
62
 
        from paste.httpexceptions import HTTPExceptionHandler
63
 
        from paste.httpserver import serve
64
 
 
 
63
    def setup_logging(config):
 
64
        import logging
 
65
        import sys
 
66
 
 
67
        logger = logging.getLogger('loggerhead')
 
68
        handler = logging.StreamHandler(sys.stderr)
 
69
        handler.setLevel(logging.DEBUG)
 
70
        logger.addHandler(handler)
 
71
        logging.getLogger('simpleTAL').addHandler(handler)
 
72
        logging.getLogger('simpleTALES').addHandler(handler)
 
73
 
 
74
 
 
75
    def _ensure_loggerhead_path():
 
76
        """Ensure that you can 'import loggerhead' and get the root."""
65
77
        # loggerhead internal code will try to 'import loggerhead', so
66
78
        # let's put it on the path if we can't find it in the existing path
67
79
        try:
68
 
            import loggerhead
 
80
            import loggerhead.apps.transport
69
81
        except ImportError:
70
82
            import os.path, sys
71
83
            sys.path.append(os.path.dirname(__file__))
72
84
 
 
85
    def serve_http(transport, host=None, port=None, inet=None):
 
86
        from paste.httpexceptions import HTTPExceptionHandler
 
87
        from paste.httpserver import serve
 
88
 
 
89
        _ensure_loggerhead_path()
 
90
 
73
91
        from loggerhead.apps.transport import BranchesFromTransportRoot
74
92
        from loggerhead.config import LoggerheadConfig
75
93
 
81
99
        if not transport.is_readonly():
82
100
            argv.insert(0, '--allow-writes')
83
101
        config = LoggerheadConfig(argv)
 
102
        setup_logging(config)
84
103
        app = BranchesFromTransportRoot(transport.base, config)
85
104
        app = HTTPExceptionHandler(app)
86
105
        serve(app, host=host, port=port)
89
108
        transport_server_registry.register('http', serve_http, help=HELP)
90
109
    else:
91
110
        import bzrlib.builtins
92
 
        from bzrlib.commands import get_cmd_object, register_command
93
111
        from bzrlib.option import Option
94
112
 
95
 
        _original_command = get_cmd_object('serve')
 
113
        _original_command = commands.get_cmd_object('serve')
96
114
 
97
115
        class cmd_serve(bzrlib.builtins.cmd_serve):
98
116
            __doc__ = _original_command.__doc__
119
137
                else:
120
138
                    super(cmd_serve, self).run(*args, **kw)
121
139
 
122
 
        register_command(cmd_serve)
 
140
        commands.register_command(cmd_serve)
 
141
 
 
142
    class cmd_load_test_loggerhead(commands.Command):
 
143
        """Run a load test against a live loggerhead instance.
 
144
        """
 
145
 
 
146
        def run(self):
 
147
            from bzrlib.plugins.loggerhead.loggerhead import load_test
 
148
            load_test.run()
 
149
 
 
150
    def load_tests(standard_tests, module, loader):
 
151
        _ensure_loggerhead_path()
 
152
        standard_tests.addTests(loader.loadTestsFromModuleNames(
 
153
            ['bzrlib.plugins.loggerhead.loggerhead.tests']))
 
154
        return standard_tests