~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_smart_request.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2010-09-01 08:02:42 UTC
  • mfrom: (5390.3.3 faster-revert-593560)
  • Revision ID: pqm@pqm.ubuntu.com-20100901080242-esg62ody4frwmy66
(spiv) Avoid repeatedly calling self.target.all_file_ids() in
 InterTree.iter_changes. (Andrew Bennetts)

Show diffs side-by-side

added added

removed removed

Lines of Context:
41
41
        raise errors.NoSuchFile('xyzzy')
42
42
 
43
43
 
44
 
class DoUnexpectedErrorRequest(request.SmartServerRequest):
45
 
    """A request that encounters a generic error in self.do()"""
46
 
 
47
 
    def do(self):
48
 
        dict()[1]
49
 
 
50
 
 
51
44
class ChunkErrorRequest(request.SmartServerRequest):
52
45
    """A request that raises an error from self.do_chunk()."""
53
46
    
118
111
        self.assertEqual(
119
112
            [[transport]] * 3, handler._command.jail_transports_log)
120
113
 
121
 
    def test_all_registered_requests_are_safety_qualified(self):
122
 
        unclassified_requests = []
123
 
        allowed_info = ('read', 'idem', 'mutate', 'semivfs', 'semi', 'stream')
124
 
        for key in request.request_handlers.keys():
125
 
            info = request.request_handlers.get_info(key)
126
 
            if info is None or info not in allowed_info:
127
 
                unclassified_requests.append(key)
128
 
        if unclassified_requests:
129
 
            self.fail('These requests were not categorized as safe/unsafe'
130
 
                      ' to retry: %s'  % (unclassified_requests,))
131
114
 
132
115
 
133
116
class TestSmartRequestHandlerErrorTranslation(TestCase):
166
149
        handler.end_received()
167
150
        self.assertResponseIsTranslatedError(handler)
168
151
 
169
 
    def test_unexpected_error_translation(self):
170
 
        handler = request.SmartServerRequestHandler(
171
 
            None, {'foo': DoUnexpectedErrorRequest}, '/')
172
 
        handler.args_received(('foo',))
173
 
        self.assertEqual(
174
 
            request.FailedSmartServerResponse(('error', 'KeyError', "1")),
175
 
            handler.response)
176
 
 
177
152
 
178
153
class TestRequestHanderErrorTranslation(TestCase):
179
154
    """Tests for bzrlib.smart.request._translate_error."""
197
172
            ('TokenMismatch', 'some-token', 'actual-token'),
198
173
            errors.TokenMismatch('some-token', 'actual-token'))
199
174
 
200
 
    def test_MemoryError(self):
201
 
        self.assertTranslationEqual(("MemoryError",), MemoryError())
202
 
 
203
 
    def test_generic_Exception(self):
204
 
        self.assertTranslationEqual(('error', 'Exception', ""),
205
 
            Exception())
206
 
 
207
 
    def test_generic_BzrError(self):
208
 
        self.assertTranslationEqual(('error', 'BzrError', "some text"),
209
 
            errors.BzrError(msg="some text"))
210
 
 
211
 
    def test_generic_zlib_error(self):
212
 
        from zlib import error
213
 
        msg = "Error -3 while decompressing data: incorrect data check"
214
 
        self.assertTranslationEqual(('error', 'zlib.error', msg),
215
 
            error(msg))
216
 
 
217
175
 
218
176
class TestRequestJail(TestCaseWithMemoryTransport):
219
177
 
250
208
        self.assertRaises(errors.JailBreak, _pre_open_hook, t.clone('..'))
251
209
        # A completely unrelated transport is not allowed
252
210
        self.assertRaises(errors.JailBreak, _pre_open_hook,
253
 
                          transport.get_transport_from_url('http://host/'))
 
211
                          transport.get_transport('http://host/'))
254
212
 
255
213
    def test_open_bzrdir_in_non_main_thread(self):
256
214
        """Opening a bzrdir in a non-main thread should work ok.