/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: Martin Pool
  • Date: 2010-01-15 07:26:46 UTC
  • mto: This revision was merged to the branch mainline in revision 4974.
  • Revision ID: mbp@sourcefrog.net-20100115072646-y3r8fposq8gtgt5t
Make sure variables used in repr are set early in initialization

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2006-2010 Canonical Ltd
 
1
# Copyright (C) 2006, 2007, 2008, 2009 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
54
54
    )
55
55
from bzrlib.repofmt import groupcompress_repo, pack_repo
56
56
from bzrlib.revision import NULL_REVISION
57
 
from bzrlib.smart import medium
 
57
from bzrlib.smart import server, medium
58
58
from bzrlib.smart.client import _SmartClient
59
59
from bzrlib.smart.repository import SmartServerRepositoryGetParentMap
60
60
from bzrlib.tests import (
61
61
    condition_isinstance,
62
62
    split_suite_by_condition,
63
63
    multiply_tests,
64
 
    test_server,
65
64
    )
66
65
from bzrlib.transport import get_transport
67
66
from bzrlib.transport.memory import MemoryTransport
76
75
        standard_tests, condition_isinstance(BasicRemoteObjectTests))
77
76
    smart_server_version_scenarios = [
78
77
        ('HPSS-v2',
79
 
         {'transport_server': test_server.SmartTCPServer_for_testing_v2_only}),
 
78
            {'transport_server': server.SmartTCPServer_for_testing_v2_only}),
80
79
        ('HPSS-v3',
81
 
         {'transport_server': test_server.SmartTCPServer_for_testing})]
 
80
            {'transport_server': server.SmartTCPServer_for_testing})]
82
81
    return multiply_tests(to_adapt, smart_server_version_scenarios, result)
83
82
 
84
83
 
418
417
        # Calling _remember_remote_is_before again with a lower value works.
419
418
        client_medium._remember_remote_is_before((1, 5))
420
419
        self.assertTrue(client_medium._is_remote_before((1, 5)))
421
 
        # If you call _remember_remote_is_before with a higher value it logs a
422
 
        # warning, and continues to remember the lower value.
423
 
        self.assertNotContainsRe(self.get_log(), '_remember_remote_is_before')
424
 
        client_medium._remember_remote_is_before((1, 9))
425
 
        self.assertContainsRe(self.get_log(), '_remember_remote_is_before')
426
 
        self.assertTrue(client_medium._is_remote_before((1, 5)))
 
420
        # You cannot call _remember_remote_is_before with a larger value.
 
421
        self.assertRaises(
 
422
            AssertionError, client_medium._remember_remote_is_before, (1, 9))
427
423
 
428
424
 
429
425
class TestBzrDirCloningMetaDir(TestRemote):
448
444
            'BzrDir.cloning_metadir', ('quack/', 'False'),
449
445
            'error', ('BranchReference',)),
450
446
        client.add_expected_call(
451
 
            'BzrDir.open_branchV3', ('quack/',),
 
447
            'BzrDir.open_branchV2', ('quack/',),
452
448
            'success', ('ref', self.get_url('referenced'))),
453
449
        a_bzrdir = RemoteBzrDir(transport, remote.RemoteBzrDirFormat(),
454
450
            _client=client)
531
527
        self.assertIsInstance(bd, RemoteBzrDir)
532
528
        self.assertFinished(client)
533
529
 
534
 
    def test_backwards_compat_hpss_v2(self):
535
 
        client, transport = self.make_fake_client_and_transport()
536
 
        # Monkey-patch fake client to simulate real-world behaviour with v2
537
 
        # server: upon first RPC call detect the protocol version, and because
538
 
        # the version is 2 also do _remember_remote_is_before((1, 6)) before
539
 
        # continuing with the RPC.
540
 
        orig_check_call = client._check_call
541
 
        def check_call(method, args):
542
 
            client._medium._protocol_version = 2
543
 
            client._medium._remember_remote_is_before((1, 6))
544
 
            client._check_call = orig_check_call
545
 
            client._check_call(method, args)
546
 
        client._check_call = check_call
547
 
        client.add_expected_call(
548
 
            'BzrDir.open_2.1', ('quack/',), 'unknown', ('BzrDir.open_2.1',))
549
 
        client.add_expected_call(
550
 
            'BzrDir.open', ('quack/',), 'success', ('yes',))
551
 
        bd = RemoteBzrDir(transport, remote.RemoteBzrDirFormat(),
552
 
            _client=client, _force_probe=True)
553
 
        self.assertIsInstance(bd, RemoteBzrDir)
554
 
        self.assertFinished(client)
555
 
 
556
530
 
557
531
class TestBzrDirOpenBranch(TestRemote):
558
532
 
561
535
        self.make_branch('.')
562
536
        a_dir = BzrDir.open(self.get_url('.'))
563
537
        self.reset_smart_call_log()
564
 
        verb = 'BzrDir.open_branchV3'
 
538
        verb = 'BzrDir.open_branchV2'
565
539
        self.disable_verb(verb)
566
540
        format = a_dir.open_branch()
567
541
        call_count = len([call for call in self.hpss_calls if
577
551
        transport = transport.clone('quack')
578
552
        client = FakeClient(transport.base)
579
553
        client.add_expected_call(
580
 
            'BzrDir.open_branchV3', ('quack/',),
 
554
            'BzrDir.open_branchV2', ('quack/',),
581
555
            'success', ('branch', branch_network_name))
582
556
        client.add_expected_call(
583
557
            'BzrDir.find_repositoryV3', ('quack/',),
602
576
            _client=client)
603
577
        self.assertRaises(errors.NotBranchError, bzrdir.open_branch)
604
578
        self.assertEqual(
605
 
            [('call', 'BzrDir.open_branchV3', ('quack/',))],
 
579
            [('call', 'BzrDir.open_branchV2', ('quack/',))],
606
580
            client._calls)
607
581
 
608
582
    def test__get_tree_branch(self):
632
606
        network_name = reference_format.network_name()
633
607
        branch_network_name = self.get_branch_format().network_name()
634
608
        client.add_expected_call(
635
 
            'BzrDir.open_branchV3', ('~hello/',),
 
609
            'BzrDir.open_branchV2', ('~hello/',),
636
610
            'success', ('branch', branch_network_name))
637
611
        client.add_expected_call(
638
612
            'BzrDir.find_repositoryV3', ('~hello/',),
1220
1194
        client = FakeClient(self.get_url())
1221
1195
        branch_network_name = self.get_branch_format().network_name()
1222
1196
        client.add_expected_call(
1223
 
            'BzrDir.open_branchV3', ('stacked/',),
 
1197
            'BzrDir.open_branchV2', ('stacked/',),
1224
1198
            'success', ('branch', branch_network_name))
1225
1199
        client.add_expected_call(
1226
1200
            'BzrDir.find_repositoryV3', ('stacked/',),
1248
1222
            len(branch.repository._real_repository._fallback_repositories))
1249
1223
 
1250
1224
    def test_get_stacked_on_real_branch(self):
1251
 
        base_branch = self.make_branch('base')
1252
 
        stacked_branch = self.make_branch('stacked')
 
1225
        base_branch = self.make_branch('base', format='1.6')
 
1226
        stacked_branch = self.make_branch('stacked', format='1.6')
1253
1227
        stacked_branch.set_stacked_on_url('../base')
1254
1228
        reference_format = self.get_repo_format()
1255
1229
        network_name = reference_format.network_name()
1256
1230
        client = FakeClient(self.get_url())
1257
1231
        branch_network_name = self.get_branch_format().network_name()
1258
1232
        client.add_expected_call(
1259
 
            'BzrDir.open_branchV3', ('stacked/',),
 
1233
            'BzrDir.open_branchV2', ('stacked/',),
1260
1234
            'success', ('branch', branch_network_name))
1261
1235
        client.add_expected_call(
1262
1236
            'BzrDir.find_repositoryV3', ('stacked/',),
1263
 
            'success', ('ok', '', 'yes', 'no', 'yes', network_name))
 
1237
            'success', ('ok', '', 'no', 'no', 'yes', network_name))
1264
1238
        # called twice, once from constructor and then again by us
1265
1239
        client.add_expected_call(
1266
1240
            'Branch.get_stacked_on_url', ('stacked/',),
2034
2008
        self.assertLength(1, self.hpss_calls)
2035
2009
 
2036
2010
    def disableExtraResults(self):
2037
 
        self.overrideAttr(SmartServerRepositoryGetParentMap,
2038
 
                          'no_extra_results', True)
 
2011
        old_flag = SmartServerRepositoryGetParentMap.no_extra_results
 
2012
        SmartServerRepositoryGetParentMap.no_extra_results = True
 
2013
        def reset_values():
 
2014
            SmartServerRepositoryGetParentMap.no_extra_results = old_flag
 
2015
        self.addCleanup(reset_values)
2039
2016
 
2040
2017
    def test_null_cached_missing_and_stop_key(self):
2041
2018
        self.setup_smart_server_with_call_log()
2100
2077
 
2101
2078
    def test_allows_new_revisions(self):
2102
2079
        """get_parent_map's results can be updated by commit."""
2103
 
        smart_server = test_server.SmartTCPServer_for_testing()
 
2080
        smart_server = server.SmartTCPServer_for_testing()
2104
2081
        self.start_server(smart_server)
2105
2082
        self.make_branch('branch')
2106
2083
        branch = Branch.open(smart_server.get_url() + '/branch')
2216
2193
        """
2217
2194
        # Make a repo with a fallback repo, both using a FakeClient.
2218
2195
        format = remote.response_tuple_to_repo_format(
2219
 
            ('yes', 'no', 'yes', self.get_repo_format().network_name()))
 
2196
            ('yes', 'no', 'yes', 'fake-network-name'))
2220
2197
        repo, client = self.setup_fake_client_and_repository('quack')
2221
2198
        repo._format = format
2222
2199
        fallback_repo, ignored = self.setup_fake_client_and_repository(
2223
2200
            'fallback')
2224
2201
        fallback_repo._client = client
2225
 
        fallback_repo._format = format
2226
2202
        repo.add_fallback_repository(fallback_repo)
2227
2203
        # First the client should ask the primary repo
2228
2204
        client.add_expected_call(
2649
2625
    """RemoteRepository.copy_content_into optimizations"""
2650
2626
 
2651
2627
    def test_copy_content_remote_to_local(self):
2652
 
        self.transport_server = test_server.SmartTCPServer_for_testing
 
2628
        self.transport_server = server.SmartTCPServer_for_testing
2653
2629
        src_repo = self.make_repository('repo1')
2654
2630
        src_repo = repository.Repository.open(self.get_url('repo1'))
2655
2631
        # At the moment the tarball-based copy_content_into can't write back
2803
2779
        expected_error = errors.NotBranchError(path=bzrdir.root_transport.base)
2804
2780
        self.assertEqual(expected_error, translated_error)
2805
2781
 
2806
 
    def test_nobranch_one_arg(self):
2807
 
        bzrdir = self.make_bzrdir('')
2808
 
        translated_error = self.translateTuple(
2809
 
            ('nobranch', 'extra detail'), bzrdir=bzrdir)
2810
 
        expected_error = errors.NotBranchError(
2811
 
            path=bzrdir.root_transport.base,
2812
 
            detail='extra detail')
2813
 
        self.assertEqual(expected_error, translated_error)
2814
 
 
2815
2782
    def test_LockContention(self):
2816
2783
        translated_error = self.translateTuple(('LockContention',))
2817
2784
        expected_error = errors.LockContention('(remote lock)')
2968
2935
        stacked_branch = self.make_branch('stacked', format='1.9')
2969
2936
        stacked_branch.set_stacked_on_url('../base')
2970
2937
        # start a server looking at this
2971
 
        smart_server = test_server.SmartTCPServer_for_testing()
 
2938
        smart_server = server.SmartTCPServer_for_testing()
2972
2939
        self.start_server(smart_server)
2973
2940
        remote_bzrdir = BzrDir.open(smart_server.get_url() + '/stacked')
2974
2941
        # can get its branch and repository
3130
3097
        super(TestRemoteBranchEffort, self).setUp()
3131
3098
        # Create a smart server that publishes whatever the backing VFS server
3132
3099
        # does.
3133
 
        self.smart_server = test_server.SmartTCPServer_for_testing()
 
3100
        self.smart_server = server.SmartTCPServer_for_testing()
3134
3101
        self.start_server(self.smart_server, self.get_server())
3135
3102
        # Log all HPSS calls into self.hpss_calls.
3136
3103
        _SmartClient.hooks.install_named_hook(