/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_smart_transport.py

  • Committer: John Arbash Meinel
  • Date: 2009-12-10 17:16:19 UTC
  • mfrom: (4884 +trunk)
  • mto: This revision was merged to the branch mainline in revision 4889.
  • Revision ID: john@arbash-meinel.com-20091210171619-ehdcxjbl8afhq9g1
Bring in bzr.dev 4884

Show diffs side-by-side

added added

removed removed

Lines of Context:
657
657
        # wire-to-wire, using the whole stack, with a UTF-8 filename.
658
658
        transport = memory.MemoryTransport('memory:///')
659
659
        utf8_filename = u'testfile\N{INTERROBANG}'.encode('utf-8')
 
660
        # VFS requests use filenames, not raw UTF-8.
 
661
        hpss_path = urlutils.escape(utf8_filename)
660
662
        transport.put_bytes(utf8_filename, 'contents\nof\nfile\n')
661
 
        to_server = StringIO('get\001' + utf8_filename + '\n')
 
663
        to_server = StringIO('get\001' + hpss_path + '\n')
662
664
        from_server = StringIO()
663
665
        server = medium.SmartServerPipeStreamMedium(
664
666
            to_server, from_server, transport)
732
734
        client_sock.sendall(rest_of_request_bytes)
733
735
        server._serve_one_request(server_protocol)
734
736
        server_sock.close()
735
 
        self.assertEqual(expected_response, client_sock.recv(50),
 
737
        self.assertEqual(expected_response, osutils.recv_all(client_sock, 50),
736
738
                         "Not a version 2 response to 'hello' request.")
737
739
        self.assertEqual('', client_sock.recv(1))
738
740
 
993
995
 
994
996
        :param readonly: Create a readonly server.
995
997
        """
 
998
        # NB: Tests using this fall into two categories: tests of the server,
 
999
        # tests wanting a server. The latter should be updated to use
 
1000
        # self.vfs_transport_factory etc.
996
1001
        if not backing_transport:
997
 
            self.backing_transport = memory.MemoryTransport()
 
1002
            mem_server = memory.MemoryServer()
 
1003
            mem_server.setUp()
 
1004
            self.addCleanup(mem_server.tearDown)
 
1005
            self.permit_url(mem_server.get_url())
 
1006
            self.backing_transport = get_transport(mem_server.get_url())
998
1007
        else:
999
1008
            self.backing_transport = backing_transport
1000
1009
        if readonly:
1004
1013
        self.server.start_background_thread('-' + self.id())
1005
1014
        self.transport = remote.RemoteTCPTransport(self.server.get_url())
1006
1015
        self.addCleanup(self.tearDownServer)
 
1016
        self.permit_url(self.server.get_url())
1007
1017
 
1008
1018
    def tearDownServer(self):
1009
1019
        if getattr(self, 'transport', None):
1248
1258
 
1249
1259
    def test_hello(self):
1250
1260
        handler = self.build_handler(None)
1251
 
        handler.dispatch_command('hello', ())
 
1261
        handler.args_received(('hello',))
1252
1262
        self.assertEqual(('ok', '2'), handler.response.args)
1253
1263
        self.assertEqual(None, handler.response.body)
1254
1264
 
1268
1278
        """The response for a read-only error is ('ReadOnlyError')."""
1269
1279
        handler = self.build_handler(self.get_readonly_transport())
1270
1280
        # send a mkdir for foo, with no explicit mode - should fail.
1271
 
        handler.dispatch_command('mkdir', ('foo', ''))
 
1281
        handler.args_received(('mkdir', 'foo', ''))
1272
1282
        # and the failure should be an explicit ReadOnlyError
1273
1283
        self.assertEqual(("ReadOnlyError", ), handler.response.args)
1274
1284
        # XXX: TODO: test that other TransportNotPossible errors are
1279
1289
    def test_hello_has_finished_body_on_dispatch(self):
1280
1290
        """The 'hello' command should set finished_reading."""
1281
1291
        handler = self.build_handler(None)
1282
 
        handler.dispatch_command('hello', ())
 
1292
        handler.args_received(('hello',))
1283
1293
        self.assertTrue(handler.finished_reading)
1284
1294
        self.assertNotEqual(None, handler.response)
1285
1295
 
1286
1296
    def test_put_bytes_non_atomic(self):
1287
1297
        """'put_...' should set finished_reading after reading the bytes."""
1288
1298
        handler = self.build_handler(self.get_transport())
1289
 
        handler.dispatch_command('put_non_atomic', ('a-file', '', 'F', ''))
 
1299
        handler.args_received(('put_non_atomic', 'a-file', '', 'F', ''))
1290
1300
        self.assertFalse(handler.finished_reading)
1291
1301
        handler.accept_body('1234')
1292
1302
        self.assertFalse(handler.finished_reading)
1300
1310
        """'readv' should set finished_reading after reading offsets."""
1301
1311
        self.build_tree(['a-file'])
1302
1312
        handler = self.build_handler(self.get_readonly_transport())
1303
 
        handler.dispatch_command('readv', ('a-file', ))
 
1313
        handler.args_received(('readv', 'a-file'))
1304
1314
        self.assertFalse(handler.finished_reading)
1305
1315
        handler.accept_body('2,')
1306
1316
        self.assertFalse(handler.finished_reading)
1315
1325
        """'readv' when a short read occurs sets the response appropriately."""
1316
1326
        self.build_tree(['a-file'])
1317
1327
        handler = self.build_handler(self.get_readonly_transport())
1318
 
        handler.dispatch_command('readv', ('a-file', ))
 
1328
        handler.args_received(('readv', 'a-file'))
1319
1329
        # read beyond the end of the file.
1320
1330
        handler.accept_body('100,1')
1321
1331
        handler.end_of_body()
2542
2552
        self.calls.append(('end_received',))
2543
2553
        self.finished_reading = True
2544
2554
 
2545
 
    def dispatch_command(self, cmd, args):
2546
 
        self.calls.append(('dispatch_command', cmd, args))
 
2555
    def args_received(self, args):
 
2556
        self.calls.append(('args_received', args))
2547
2557
 
2548
2558
    def accept_body(self, bytes):
2549
2559
        self.calls.append(('accept_body', bytes))