##// END OF EJS Templates
wireproto: mark SSHv2 as a version 1 transport...
wireproto: mark SSHv2 as a version 1 transport The version component is used for filtering/routing wire protocol commands to their proper handler. The actual version 2 of the wire protocol commands will use a different encoding of responses. We already have tests using the version 2 SSH transport and version 2 of the wire protocol commands won't be implemented atomically. This commit marks the SSHv2 transport as version 1 so it will still invoke the version 1 commands. Once the commands are all implemented in version 2, we can restore its proper behavior. Some tests had to be disabled as a result of this change. Differential Revision: https://phab.mercurial-scm.org/D2981

File last commit:

r36819:66de4555 default
r37310:27527d8c default
Show More
test-wireproto.py
95 lines | 2.2 KiB | text/x-python | PythonLexer
/ tests / test-wireproto.py
Pulkit Goyal
py3: make test-wireproto use print_function
r28675 from __future__ import absolute_import, print_function
Gregory Szorc
tests: use absolulte_import in test-wireproto.py
r27301
timeless
py3: use multi-line import in test-wireproto.py...
r28860 from mercurial import (
Gregory Szorc
wireproto: introduce type for raw byte responses (API)...
r36091 error,
Pulkit Goyal
py3: port tests/test-wireproto.py to Python 3...
r36573 pycompat,
Augie Fackler
tests: fix test-wireproto.py to work around serverrepo() not having a ui...
r36962 ui as uimod,
timeless
pycompat: switch to util.stringio for py3 compat
r28861 util,
timeless
py3: use multi-line import in test-wireproto.py...
r28860 wireproto,
Gregory Szorc
wireproto: introduce type for raw byte responses (API)...
r36091 wireprototypes,
timeless
py3: use multi-line import in test-wireproto.py...
r28860 )
timeless
pycompat: switch to util.stringio for py3 compat
r28861 stringio = util.stringio
Thomas Arendsen Hein
test-wireprotocol.py: rename to test-wireproto.py for consistency...
r14765
class proto(object):
def __init__(self, args):
self.args = args
def getargs(self, spec):
args = self.args
Pulkit Goyal
py3: port tests/test-wireproto.py to Python 3...
r36573 args.setdefault(b'*', {})
Thomas Arendsen Hein
test-wireprotocol.py: rename to test-wireproto.py for consistency...
r14765 names = spec.split()
return [args[n] for n in names]
Gregory Szorc
wireproto: formalize permissions checking as part of protocol interface...
r36819 def checkperm(self, perm):
pass
Peter Arrenbrecht
peer: introduce real peer classes...
r17192 class clientpeer(wireproto.wirepeer):
Augie Fackler
tests: fix test-wireproto.py to work around serverrepo() not having a ui...
r36962 def __init__(self, serverrepo, ui):
Thomas Arendsen Hein
test-wireprotocol.py: rename to test-wireproto.py for consistency...
r14765 self.serverrepo = serverrepo
Augie Fackler
tests: fix test-wireproto.py to work around serverrepo() not having a ui...
r36962 self._ui = ui
Augie Fackler
batching: migrate basic noop batching into peer.peer...
r25912
Gregory Szorc
wireproto: use new peer interface...
r33805 @property
def ui(self):
Augie Fackler
tests: fix test-wireproto.py to work around serverrepo() not having a ui...
r36962 return self._ui
Gregory Szorc
wireproto: use new peer interface...
r33805
def url(self):
Pulkit Goyal
py3: port tests/test-wireproto.py to Python 3...
r36573 return b'test'
Gregory Szorc
wireproto: use new peer interface...
r33805
def local(self):
return None
def peer(self):
return self
def canpush(self):
return True
def close(self):
pass
def capabilities(self):
Pulkit Goyal
py3: port tests/test-wireproto.py to Python 3...
r36573 return [b'batch']
Augie Fackler
batching: migrate basic noop batching into peer.peer...
r25912
Thomas Arendsen Hein
test-wireprotocol.py: rename to test-wireproto.py for consistency...
r14765 def _call(self, cmd, **args):
Pulkit Goyal
py3: port tests/test-wireproto.py to Python 3...
r36573 args = pycompat.byteskwargs(args)
Gregory Szorc
wireproto: introduce type for raw byte responses (API)...
r36091 res = wireproto.dispatch(self.serverrepo, proto(args), cmd)
if isinstance(res, wireprototypes.bytesresponse):
return res.data
elif isinstance(res, bytes):
return res
else:
raise error.Abort('dummy client does not support response type')
Thomas Arendsen Hein
test-wireprotocol.py: rename to test-wireproto.py for consistency...
r14765
Augie Fackler
wireproto: make iterbatcher behave streamily over http(s)...
r28438 def _callstream(self, cmd, **args):
timeless
pycompat: switch to util.stringio for py3 compat
r28861 return stringio(self._call(cmd, **args))
Augie Fackler
wireproto: make iterbatcher behave streamily over http(s)...
r28438
Thomas Arendsen Hein
test-wireprotocol.py: rename to test-wireproto.py for consistency...
r14765 @wireproto.batchable
def greet(self, name):
f = wireproto.future()
Pulkit Goyal
py3: port tests/test-wireproto.py to Python 3...
r36573 yield {b'name': mangle(name)}, f
Thomas Arendsen Hein
test-wireprotocol.py: rename to test-wireproto.py for consistency...
r14765 yield unmangle(f.value)
class serverrepo(object):
def greet(self, name):
Pulkit Goyal
py3: port tests/test-wireproto.py to Python 3...
r36573 return b"Hello, " + name
Thomas Arendsen Hein
test-wireprotocol.py: rename to test-wireproto.py for consistency...
r14765
Pierre-Yves David
clfilter: make localpeer use a repo with "unserved" filter...
r18278 def filtered(self, name):
return self
Thomas Arendsen Hein
test-wireprotocol.py: rename to test-wireproto.py for consistency...
r14765 def mangle(s):
Pulkit Goyal
py3: port tests/test-wireproto.py to Python 3...
r36573 return b''.join(pycompat.bytechr(ord(c) + 1) for c in pycompat.bytestr(s))
Thomas Arendsen Hein
test-wireprotocol.py: rename to test-wireproto.py for consistency...
r14765 def unmangle(s):
Pulkit Goyal
py3: port tests/test-wireproto.py to Python 3...
r36573 return b''.join(pycompat.bytechr(ord(c) - 1) for c in pycompat.bytestr(s))
Thomas Arendsen Hein
test-wireprotocol.py: rename to test-wireproto.py for consistency...
r14765
def greet(repo, proto, name):
return mangle(repo.greet(unmangle(name)))
Pulkit Goyal
py3: port tests/test-wireproto.py to Python 3...
r36573 wireproto.commands[b'greet'] = (greet, b'name',)
Thomas Arendsen Hein
test-wireprotocol.py: rename to test-wireproto.py for consistency...
r14765
srv = serverrepo()
Augie Fackler
tests: fix test-wireproto.py to work around serverrepo() not having a ui...
r36962 clt = clientpeer(srv, uimod.ui())
Thomas Arendsen Hein
test-wireprotocol.py: rename to test-wireproto.py for consistency...
r14765
Pulkit Goyal
py3: port tests/test-wireproto.py to Python 3...
r36573 print(clt.greet(b"Foobar"))
Gregory Szorc
peer: remove non iterating batcher (API)...
r33762 b = clt.iterbatch()
Pulkit Goyal
py3: port tests/test-wireproto.py to Python 3...
r36573 list(map(b.greet, (b'Fo, =;:<o', b'Bar')))
Thomas Arendsen Hein
test-wireprotocol.py: rename to test-wireproto.py for consistency...
r14765 b.submit()
Gregory Szorc
peer: remove non iterating batcher (API)...
r33762 print([r for r in b.results()])