31
31
from bzrlib import bzrdir, errors, pack, smart, tests
32
from bzrlib.smart.request import SmartServerResponse
32
from bzrlib.smart.request import (
33
FailedSmartServerResponse,
35
SuccessfulSmartServerResponse,
33
37
import bzrlib.smart.bzrdir
34
38
import bzrlib.smart.branch
35
39
import bzrlib.smart.repository
821
class TestSmartServerRepositoryStreamRevisionsChunked(tests.TestCaseWithTransport):
823
def test_fetch_revisions(self):
824
backing = self.get_transport()
825
request = smart.repository.SmartServerRepositoryStreamRevisionsChunked(
827
tree = self.make_branch_and_memory_tree('.')
830
rev_id1_utf8 = u'\xc8'.encode('utf-8')
831
rev_id2_utf8 = u'\xc9'.encode('utf-8')
832
tree.commit('1st commit', rev_id=rev_id1_utf8)
833
tree.commit('2nd commit', rev_id=rev_id2_utf8)
836
response = request.execute(backing.local_abspath(''))
837
self.assertEqual(None, response)
838
response = request.do_body("%s\n%s\n1" % (rev_id2_utf8, rev_id1_utf8))
839
self.assertEqual(('ok',), response.args)
840
from cStringIO import StringIO
841
parser = pack.ContainerPushParser()
843
for stream_bytes in response.body_stream:
844
parser.accept_bytes(stream_bytes)
845
for [name], record_bytes in parser.read_pending_records():
847
# The bytes should be a valid bencoded string.
848
bencode.bdecode(record_bytes)
849
# XXX: assert that the bencoded knit records have the right
852
def test_no_such_revision_error(self):
853
backing = self.get_transport()
854
request = smart.repository.SmartServerRepositoryStreamRevisionsChunked(
856
repo = self.make_repository('.')
857
rev_id1_utf8 = u'\xc8'.encode('utf-8')
858
response = request.execute(backing.local_abspath(''))
859
self.assertEqual(None, response)
860
response = request.do_body("%s\n\n1" % (rev_id1_utf8,))
862
FailedSmartServerResponse(('NoSuchRevision', )),
817
866
class TestSmartServerIsReadonly(tests.TestCaseWithTransport):
819
868
def test_is_readonly_no(self):
867
916
smart.request.request_handlers.get('Repository.gather_stats'),
868
917
smart.repository.SmartServerRepositoryGatherStats)
869
918
self.assertEqual(
919
smart.request.request_handlers.get('Repository.get_parent_map'),
920
smart.repository.SmartServerRepositoryGetParentMap)
870
922
smart.request.request_handlers.get(
871
923
'Repository.get_revision_graph'),
872
924
smart.repository.SmartServerRepositoryGetRevisionGraph)
880
932
smart.request.request_handlers.get('Repository.lock_write'),
881
933
smart.repository.SmartServerRepositoryLockWrite)
882
934
self.assertEqual(
883
smart.request.request_handlers.get(
884
'Repository.stream_knit_data_for_revisions'),
885
smart.repository.SmartServerRepositoryStreamKnitDataForRevisions)
887
935
smart.request.request_handlers.get('Repository.tarball'),
888
936
smart.repository.SmartServerRepositoryTarball)
889
937
self.assertEqual(