2139
2139
request.execute(''))
2142
class TestSmartServerRepositoryWriteGroup(
2143
tests.TestCaseWithMemoryTransport):
2145
def test_start_write_group(self):
2146
backing = self.get_transport()
2147
repo = self.make_repository('.')
2148
lock_token = repo.lock_write().repository_token
2149
self.addCleanup(repo.unlock)
2150
request_class = smart_repo.SmartServerRepositoryStartWriteGroup
2151
request = request_class(backing)
2152
self.assertEqual(smart_req.SuccessfulSmartServerResponse(('ok', [])),
2153
request.execute('', lock_token))
2155
def test_start_write_group_unsuspendable(self):
2156
backing = self.get_transport()
2157
repo = self.make_repository('.', format='knit')
2158
lock_token = repo.lock_write().repository_token
2159
self.addCleanup(repo.unlock)
2160
request_class = smart_repo.SmartServerRepositoryStartWriteGroup
2161
request = request_class(backing)
2163
smart_req.FailedSmartServerResponse(('UnsuspendableWriteGroup',)),
2164
request.execute('', lock_token))
2166
def test_commit_write_group(self):
2167
backing = self.get_transport()
2168
repo = self.make_repository('.')
2169
lock_token = repo.lock_write().repository_token
2170
self.addCleanup(repo.unlock)
2171
repo.start_write_group()
2172
tokens = repo.suspend_write_group()
2173
request_class = smart_repo.SmartServerRepositoryCommitWriteGroup
2174
request = request_class(backing)
2175
self.assertEqual(smart_req.SuccessfulSmartServerResponse(('ok',)),
2176
request.execute('', lock_token, tokens))
2178
def test_abort_write_group(self):
2179
backing = self.get_transport()
2180
repo = self.make_repository('.')
2181
lock_token = repo.lock_write().repository_token
2182
repo.start_write_group()
2183
tokens = repo.suspend_write_group()
2184
self.addCleanup(repo.unlock)
2185
request_class = smart_repo.SmartServerRepositoryAbortWriteGroup
2186
request = request_class(backing)
2187
self.assertEqual(smart_req.SuccessfulSmartServerResponse(('ok',)),
2188
request.execute('', lock_token, tokens))
2190
def test_check_write_group(self):
2191
backing = self.get_transport()
2192
repo = self.make_repository('.')
2193
lock_token = repo.lock_write().repository_token
2194
repo.start_write_group()
2195
tokens = repo.suspend_write_group()
2196
self.addCleanup(repo.unlock)
2197
request_class = smart_repo.SmartServerRepositoryCheckWriteGroup
2198
request = request_class(backing)
2199
self.assertEqual(smart_req.SuccessfulSmartServerResponse(('ok',)),
2200
request.execute('', lock_token, tokens))
2202
def test_check_write_group_invalid(self):
2203
backing = self.get_transport()
2204
repo = self.make_repository('.')
2205
lock_token = repo.lock_write().repository_token
2206
self.addCleanup(repo.unlock)
2207
request_class = smart_repo.SmartServerRepositoryCheckWriteGroup
2208
request = request_class(backing)
2209
self.assertEqual(smart_req.FailedSmartServerResponse(
2210
('UnresumableWriteGroup', ['random'],
2211
'Malformed write group token')),
2212
request.execute('', lock_token, ["random"]))
2142
2215
class TestSmartServerPackRepositoryAutopack(tests.TestCaseWithTransport):
2144
2217
def make_repo_needing_autopacking(self, path='.'):
2306
2379
smart_repo.SmartServerRepositoryTarball)
2307
2380
self.assertHandlerEqual('Repository.unlock',
2308
2381
smart_repo.SmartServerRepositoryUnlock)
2382
self.assertHandlerEqual('Repository.start_write_group',
2383
smart_repo.SmartServerRepositoryStartWriteGroup)
2384
self.assertHandlerEqual('Repository.check_write_group',
2385
smart_repo.SmartServerRepositoryCheckWriteGroup)
2386
self.assertHandlerEqual('Repository.commit_write_group',
2387
smart_repo.SmartServerRepositoryCommitWriteGroup)
2388
self.assertHandlerEqual('Repository.abort_write_group',
2389
smart_repo.SmartServerRepositoryAbortWriteGroup)
2309
2390
self.assertHandlerEqual('VersionedFileRepository.get_serializer_format',
2310
2391
smart_repo.SmartServerRepositoryGetSerializerFormat)
2311
2392
self.assertHandlerEqual('Transport.is_readonly',