/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_remote.py

  • Committer: Jelmer Vernooij
  • Date: 2011-01-19 18:40:15 UTC
  • mfrom: (5622 +trunk)
  • mto: This revision was merged to the branch mainline in revision 5624.
  • Revision ID: jelmer@samba.org-20110119184015-ahycpz0yduideif0
merge bzr.dev.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 Canonical Ltd
 
1
# Copyright (C) 2006-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
57
57
    )
58
58
from bzrlib.repofmt import groupcompress_repo, pack_repo
59
59
from bzrlib.revision import NULL_REVISION
60
 
from bzrlib.smart import medium
 
60
from bzrlib.smart import medium, request
61
61
from bzrlib.smart.client import _SmartClient
62
 
from bzrlib.smart.repository import SmartServerRepositoryGetParentMap
 
62
from bzrlib.smart.repository import (
 
63
    SmartServerRepositoryGetParentMap,
 
64
    SmartServerRepositoryGetStream_1_19,
 
65
    )
63
66
from bzrlib.tests import (
64
 
    condition_isinstance,
65
 
    multiply_tests,
66
67
    test_server,
67
68
    )
68
69
from bzrlib.tests.scenarios import load_tests_apply_scenarios
71
72
    RemoteTransport,
72
73
    RemoteSSHTransport,
73
74
    RemoteTCPTransport,
74
 
)
 
75
    )
75
76
 
76
77
 
77
78
load_tests = load_tests_apply_scenarios
3182
3183
 
3183
3184
    def test_copy_content_into_avoids_revision_history(self):
3184
3185
        local = self.make_branch('local')
3185
 
        remote_backing_tree = self.make_branch_and_tree('remote')
3186
 
        remote_backing_tree.commit("Commit.")
 
3186
        builder = self.make_branch_builder('remote')
 
3187
        builder.build_commit(message="Commit.")
3187
3188
        remote_branch_url = self.smart_server.get_url() + 'remote'
3188
3189
        remote_branch = bzrdir.BzrDir.open(remote_branch_url).open_branch()
3189
3190
        local.repository.fetch(remote_branch.repository)
3190
3191
        self.hpss_calls = []
3191
3192
        remote_branch.copy_content_into(local)
3192
3193
        self.assertFalse('Branch.revision_history' in self.hpss_calls)
 
3194
 
 
3195
    def test_fetch_everything_needs_just_one_call(self):
 
3196
        local = self.make_branch('local')
 
3197
        builder = self.make_branch_builder('remote')
 
3198
        builder.build_commit(message="Commit.")
 
3199
        remote_branch_url = self.smart_server.get_url() + 'remote'
 
3200
        remote_branch = bzrdir.BzrDir.open(remote_branch_url).open_branch()
 
3201
        self.hpss_calls = []
 
3202
        local.repository.fetch(remote_branch.repository,
 
3203
                fetch_spec=graph.EverythingResult(remote_branch.repository))
 
3204
        self.assertEqual(['Repository.get_stream_1.19'], self.hpss_calls)
 
3205
 
 
3206
    def override_verb(self, verb_name, verb):
 
3207
        request_handlers = request.request_handlers
 
3208
        orig_verb = request_handlers.get(verb_name)
 
3209
        request_handlers.register(verb_name, verb, override_existing=True)
 
3210
        self.addCleanup(request_handlers.register, verb_name, orig_verb,
 
3211
                override_existing=True)
 
3212
 
 
3213
    def test_fetch_everything_backwards_compat(self):
 
3214
        """Can fetch with EverythingResult even with pre 2.3 servers.
 
3215
        
 
3216
        Pre-2.3 do not support 'everything' searches with the
 
3217
        Repository.get_stream_1.19 verb.
 
3218
        """
 
3219
        verb_log = []
 
3220
        class OldGetStreamVerb(SmartServerRepositoryGetStream_1_19):
 
3221
            """A version of the Repository.get_stream_1.19 verb patched to
 
3222
            reject 'everything' searches the way 2.2 and earlier do.
 
3223
            """
 
3224
            def recreate_search(self, repository, search_bytes, discard_excess=False):
 
3225
                verb_log.append(search_bytes.split('\n', 1)[0])
 
3226
                if search_bytes == 'everything':
 
3227
                    return (None, request.FailedSmartServerResponse(('BadSearch',)))
 
3228
                return super(OldGetStreamVerb,
 
3229
                        self).recreate_search(repository, search_bytes,
 
3230
                            discard_excess=discard_excess)
 
3231
        self.override_verb('Repository.get_stream_1.19', OldGetStreamVerb)
 
3232
        local = self.make_branch('local')
 
3233
        builder = self.make_branch_builder('remote')
 
3234
        builder.build_commit(message="Commit.")
 
3235
        remote_branch_url = self.smart_server.get_url() + 'remote'
 
3236
        remote_branch = bzrdir.BzrDir.open(remote_branch_url).open_branch()
 
3237
        self.hpss_calls = []
 
3238
        local.repository.fetch(remote_branch.repository,
 
3239
                fetch_spec=graph.EverythingResult(remote_branch.repository))
 
3240
        # make sure the overridden verb was used
 
3241
        self.assertLength(1, verb_log)
 
3242
        # more than one HPSS call is needed, but because it's a VFS callback
 
3243
        # its hard to predict exactly how many.
 
3244
        self.assertTrue(len(self.hpss_calls) > 1)
 
3245