~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: 2009-03-16 06:51:36 UTC
  • mfrom: (4144.3.5 simplify-interrepo-stack)
  • Revision ID: pqm@pqm.ubuntu.com-20090316065136-1g3udxbvvlgtsbup
(andrew) Add RPC that can insert a stream into older (i.e. lockable)
        repository formats.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1114
1114
 
1115
1115
class TestSmartServerRepositoryLockWrite(tests.TestCaseWithMemoryTransport):
1116
1116
 
1117
 
    def setUp(self):
1118
 
        tests.TestCaseWithMemoryTransport.setUp(self)
1119
 
 
1120
1117
    def test_lock_write_on_unlocked_repo(self):
1121
1118
        backing = self.get_transport()
1122
1119
        request = smart.repository.SmartServerRepositoryLockWrite(backing)
1149
1146
        self.assertEqual('LockFailed', response.args[0])
1150
1147
 
1151
1148
 
 
1149
class TestInsertStreamBase(tests.TestCaseWithMemoryTransport):
 
1150
 
 
1151
    def make_empty_byte_stream(self, repo):
 
1152
        byte_stream = smart.repository._stream_to_byte_stream([], repo._format)
 
1153
        return ''.join(byte_stream)
 
1154
 
 
1155
 
 
1156
class TestSmartServerRepositoryInsertStream(TestInsertStreamBase):
 
1157
 
 
1158
    def test_insert_stream_empty(self):
 
1159
        backing = self.get_transport()
 
1160
        request = smart.repository.SmartServerRepositoryInsertStream(backing)
 
1161
        repository = self.make_repository('.')
 
1162
        response = request.execute('', '')
 
1163
        self.assertEqual(None, response)
 
1164
        response = request.do_chunk(self.make_empty_byte_stream(repository))
 
1165
        self.assertEqual(None, response)
 
1166
        response = request.do_end()
 
1167
        self.assertEqual(SmartServerResponse(('ok', )), response)
 
1168
        
 
1169
 
 
1170
class TestSmartServerRepositoryInsertStreamLocked(TestInsertStreamBase):
 
1171
 
 
1172
    def test_insert_stream_empty(self):
 
1173
        backing = self.get_transport()
 
1174
        request = smart.repository.SmartServerRepositoryInsertStreamLocked(
 
1175
            backing)
 
1176
        repository = self.make_repository('.', format='knit')
 
1177
        lock_token = repository.lock_write()
 
1178
        response = request.execute('', '', lock_token)
 
1179
        self.assertEqual(None, response)
 
1180
        response = request.do_chunk(self.make_empty_byte_stream(repository))
 
1181
        self.assertEqual(None, response)
 
1182
        response = request.do_end()
 
1183
        self.assertEqual(SmartServerResponse(('ok', )), response)
 
1184
        repository.unlock()
 
1185
 
 
1186
    def test_insert_stream_with_wrong_lock_token(self):
 
1187
        backing = self.get_transport()
 
1188
        request = smart.repository.SmartServerRepositoryInsertStreamLocked(
 
1189
            backing)
 
1190
        repository = self.make_repository('.', format='knit')
 
1191
        lock_token = repository.lock_write()
 
1192
        self.assertRaises(
 
1193
            errors.TokenMismatch, request.execute, '', '', 'wrong-token')
 
1194
        repository.unlock()
 
1195
 
 
1196
 
1152
1197
class TestSmartServerRepositoryUnlock(tests.TestCaseWithMemoryTransport):
1153
1198
 
1154
1199
    def setUp(self):
1339
1384
                'Repository.get_revision_graph'),
1340
1385
            smart.repository.SmartServerRepositoryGetRevisionGraph)
1341
1386
        self.assertEqual(
 
1387
            smart.request.request_handlers.get('Repository.get_stream'),
 
1388
            smart.repository.SmartServerRepositoryGetStream)
 
1389
        self.assertEqual(
1342
1390
            smart.request.request_handlers.get('Repository.has_revision'),
1343
1391
            smart.repository.SmartServerRequestHasRevision)
1344
1392
        self.assertEqual(
 
1393
            smart.request.request_handlers.get('Repository.insert_stream'),
 
1394
            smart.repository.SmartServerRepositoryInsertStream)
 
1395
        self.assertEqual(
 
1396
            smart.request.request_handlers.get('Repository.insert_stream_locked'),
 
1397
            smart.repository.SmartServerRepositoryInsertStreamLocked)
 
1398
        self.assertEqual(
1345
1399
            smart.request.request_handlers.get('Repository.is_shared'),
1346
1400
            smart.repository.SmartServerRepositoryIsShared)
1347
1401
        self.assertEqual(
1348
1402
            smart.request.request_handlers.get('Repository.lock_write'),
1349
1403
            smart.repository.SmartServerRepositoryLockWrite)
1350
1404
        self.assertEqual(
1351
 
            smart.request.request_handlers.get('Repository.get_stream'),
1352
 
            smart.repository.SmartServerRepositoryGetStream)
1353
 
        self.assertEqual(
1354
1405
            smart.request.request_handlers.get('Repository.tarball'),
1355
1406
            smart.repository.SmartServerRepositoryTarball)
1356
1407
        self.assertEqual(