~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_smart.py

  • Committer: Canonical.com Patch Queue Manager
  • Date: 2011-01-13 02:43:21 UTC
  • mfrom: (5582.9.2 funky-chars)
  • Revision ID: pqm@pqm.ubuntu.com-20110113024321-d1ssmy4knbv806zp
(jelmer) Avoid hardcoded list of repository formats that do not support
 funky characters in filenames. (Jelmer Vernooij)

Show diffs side-by-side

added added

removed removed

Lines of Context:
41
41
    repository as smart_repo,
42
42
    packrepository as smart_packrepo,
43
43
    request as smart_req,
44
 
    server,
45
44
    vfs,
46
45
    )
47
46
from bzrlib.tests import test_server
85
84
            backing_transport = tests.TestCaseWithTransport.get_transport(self)
86
85
            self._chroot_server = chroot.ChrootServer(backing_transport)
87
86
            self.start_server(self._chroot_server)
88
 
        t = transport.get_transport_from_url(self._chroot_server.get_url())
 
87
        t = transport.get_transport(self._chroot_server.get_url())
89
88
        if relpath is not None:
90
89
            t = t.clone(relpath)
91
90
        return t
99
98
        # the default or a parameterized class, but rather use the
100
99
        # TestCaseWithTransport infrastructure to set up a smart server and
101
100
        # transport.
102
 
        self.overrideAttr(self, "transport_server", self.make_transport_server)
 
101
        self.transport_server = self.make_transport_server
103
102
 
104
103
    def make_transport_server(self):
105
104
        return test_server.SmartTCPServer_for_testing('-' + self.id())
932
931
        # its repository.
933
932
        self.make_tree_with_two_commits()
934
933
        rev_id_utf8 = u'\xc8'.encode('utf-8')
935
 
        self.tree.branch.set_last_revision_info(0, 'null:')
 
934
        self.tree.branch.set_revision_history([])
936
935
        self.assertEqual(
937
936
            (0, 'null:'), self.tree.branch.last_revision_info())
938
937
        # We can update the branch to a revision that is present in the
1470
1469
            request.execute('stacked', 1, (3, r3)))
1471
1470
 
1472
1471
 
1473
 
class GetStreamTestBase(tests.TestCaseWithMemoryTransport):
 
1472
class TestSmartServerRepositoryGetStream(tests.TestCaseWithMemoryTransport):
1474
1473
 
1475
1474
    def make_two_commit_repo(self):
1476
1475
        tree = self.make_branch_and_memory_tree('.')
1482
1481
        repo = tree.branch.repository
1483
1482
        return repo, r1, r2
1484
1483
 
1485
 
 
1486
 
class TestSmartServerRepositoryGetStream(GetStreamTestBase):
1487
 
 
1488
1484
    def test_ancestry_of(self):
1489
1485
        """The search argument may be a 'ancestry-of' some heads'."""
1490
1486
        backing = self.get_transport()
1511
1507
        stream_bytes = ''.join(response.body_stream)
1512
1508
        self.assertStartsWith(stream_bytes, 'Bazaar pack format 1')
1513
1509
 
1514
 
    def test_search_everything(self):
1515
 
        """A search of 'everything' returns a stream."""
1516
 
        backing = self.get_transport()
1517
 
        request = smart_repo.SmartServerRepositoryGetStream_1_19(backing)
1518
 
        repo, r1, r2 = self.make_two_commit_repo()
1519
 
        serialised_fetch_spec = 'everything'
1520
 
        request.execute('', repo._format.network_name())
1521
 
        response = request.do_body(serialised_fetch_spec)
1522
 
        self.assertEqual(('ok',), response.args)
1523
 
        stream_bytes = ''.join(response.body_stream)
1524
 
        self.assertStartsWith(stream_bytes, 'Bazaar pack format 1')
1525
 
 
1526
1510
 
1527
1511
class TestSmartServerRequestHasRevision(tests.TestCaseWithMemoryTransport):
1528
1512
 
1922
1906
            smart_repo.SmartServerRepositoryGetRevisionGraph)
1923
1907
        self.assertHandlerEqual('Repository.get_stream',
1924
1908
            smart_repo.SmartServerRepositoryGetStream)
1925
 
        self.assertHandlerEqual('Repository.get_stream_1.19',
1926
 
            smart_repo.SmartServerRepositoryGetStream_1_19)
1927
1909
        self.assertHandlerEqual('Repository.has_revision',
1928
1910
            smart_repo.SmartServerRequestHasRevision)
1929
1911
        self.assertHandlerEqual('Repository.insert_stream',
1940
1922
            smart_repo.SmartServerRepositoryUnlock)
1941
1923
        self.assertHandlerEqual('Transport.is_readonly',
1942
1924
            smart_req.SmartServerIsReadonly)
1943
 
 
1944
 
 
1945
 
class SmartTCPServerHookTests(tests.TestCaseWithMemoryTransport):
1946
 
    """Tests for SmartTCPServer hooks."""
1947
 
 
1948
 
    def setUp(self):
1949
 
        super(SmartTCPServerHookTests, self).setUp()
1950
 
        self.server = server.SmartTCPServer(self.get_transport())
1951
 
 
1952
 
    def test_run_server_started_hooks(self):
1953
 
        """Test the server started hooks get fired properly."""
1954
 
        started_calls = []
1955
 
        server.SmartTCPServer.hooks.install_named_hook('server_started',
1956
 
            lambda backing_urls, url: started_calls.append((backing_urls, url)),
1957
 
            None)
1958
 
        started_ex_calls = []
1959
 
        server.SmartTCPServer.hooks.install_named_hook('server_started_ex',
1960
 
            lambda backing_urls, url: started_ex_calls.append((backing_urls, url)),
1961
 
            None)
1962
 
        self.server._sockname = ('example.com', 42)
1963
 
        self.server.run_server_started_hooks()
1964
 
        self.assertEquals(started_calls,
1965
 
            [([self.get_transport().base], 'bzr://example.com:42/')])
1966
 
        self.assertEquals(started_ex_calls,
1967
 
            [([self.get_transport().base], self.server)])
1968
 
 
1969
 
    def test_run_server_started_hooks_ipv6(self):
1970
 
        """Test that socknames can contain 4-tuples."""
1971
 
        self.server._sockname = ('::', 42, 0, 0)
1972
 
        started_calls = []
1973
 
        server.SmartTCPServer.hooks.install_named_hook('server_started',
1974
 
            lambda backing_urls, url: started_calls.append((backing_urls, url)),
1975
 
            None)
1976
 
        self.server.run_server_started_hooks()
1977
 
        self.assertEquals(started_calls,
1978
 
                [([self.get_transport().base], 'bzr://:::42/')])
1979
 
 
1980
 
    def test_run_server_stopped_hooks(self):
1981
 
        """Test the server stopped hooks."""
1982
 
        self.server._sockname = ('example.com', 42)
1983
 
        stopped_calls = []
1984
 
        server.SmartTCPServer.hooks.install_named_hook('server_stopped',
1985
 
            lambda backing_urls, url: stopped_calls.append((backing_urls, url)),
1986
 
            None)
1987
 
        self.server.run_server_stopped_hooks()
1988
 
        self.assertEquals(stopped_calls,
1989
 
            [([self.get_transport().base], 'bzr://example.com:42/')])