tests/sshprotoext.py
changeset 35976 48a3a9283f09
parent 35938 80a2b8ae42a1
child 36064 5767664d39a5
equal deleted inserted replaced
35975:40d94ea51402 35976:48a3a9283f09
    51         rsp = wireproto.dispatch(self._repo, self, b'between')
    51         rsp = wireproto.dispatch(self._repo, self, b'between')
    52         self._handlers[rsp.__class__](self, rsp)
    52         self._handlers[rsp.__class__](self, rsp)
    53 
    53 
    54         super(prehelloserver, self).serve_forever()
    54         super(prehelloserver, self).serve_forever()
    55 
    55 
       
    56 class upgradev2server(wireprotoserver.sshserver):
       
    57     """Tests behavior for clients that issue upgrade to version 2."""
       
    58     def serve_forever(self):
       
    59         name = wireprotoserver.SSHV2
       
    60         l = self._fin.readline()
       
    61         assert l.startswith(b'upgrade ')
       
    62         token, caps = l[:-1].split(b' ')[1:]
       
    63         assert caps == b'proto=%s' % name
       
    64 
       
    65         # Filter hello and between requests.
       
    66         l = self._fin.readline()
       
    67         assert l == b'hello\n'
       
    68         l = self._fin.readline()
       
    69         assert l == b'between\n'
       
    70         l = self._fin.readline()
       
    71         assert l == 'pairs 81\n'
       
    72         self._fin.read(81)
       
    73 
       
    74         # Send the upgrade response.
       
    75         self._fout.write(b'upgraded %s %s\n' % (token, name))
       
    76         servercaps = wireproto.capabilities(self._repo, self)
       
    77         rsp = b'capabilities: %s' % servercaps
       
    78         self._fout.write(b'%d\n' % len(rsp))
       
    79         self._fout.write(rsp)
       
    80         self._fout.write(b'\n')
       
    81         self._fout.flush()
       
    82 
       
    83         super(upgradev2server, self).serve_forever()
       
    84 
    56 def performhandshake(orig, ui, stdin, stdout, stderr):
    85 def performhandshake(orig, ui, stdin, stdout, stderr):
    57     """Wrapped version of sshpeer._performhandshake to send extra commands."""
    86     """Wrapped version of sshpeer._performhandshake to send extra commands."""
    58     mode = ui.config(b'sshpeer', b'handshake-mode')
    87     mode = ui.config(b'sshpeer', b'handshake-mode')
    59     if mode == b'pre-no-args':
    88     if mode == b'pre-no-args':
    60         ui.debug(b'sending no-args command\n')
    89         ui.debug(b'sending no-args command\n')
    83 
   112 
    84     if servermode == b'banner':
   113     if servermode == b'banner':
    85         wireprotoserver.sshserver = bannerserver
   114         wireprotoserver.sshserver = bannerserver
    86     elif servermode == b'no-hello':
   115     elif servermode == b'no-hello':
    87         wireprotoserver.sshserver = prehelloserver
   116         wireprotoserver.sshserver = prehelloserver
       
   117     elif servermode == b'upgradev2':
       
   118         wireprotoserver.sshserver = upgradev2server
    88     elif servermode:
   119     elif servermode:
    89         raise error.ProgrammingError(b'unknown server mode: %s' % servermode)
   120         raise error.ProgrammingError(b'unknown server mode: %s' % servermode)
    90 
   121 
    91     peermode = ui.config(b'sshpeer', b'mode')
   122     peermode = ui.config(b'sshpeer', b'mode')
    92 
   123