tests/sshprotoext.py
changeset 35976 48a3a9283f09
parent 35938 80a2b8ae42a1
child 36064 5767664d39a5
--- a/tests/sshprotoext.py	Tue Feb 06 10:51:15 2018 -0800
+++ b/tests/sshprotoext.py	Tue Feb 06 11:08:36 2018 -0800
@@ -53,6 +53,35 @@
 
         super(prehelloserver, self).serve_forever()
 
+class upgradev2server(wireprotoserver.sshserver):
+    """Tests behavior for clients that issue upgrade to version 2."""
+    def serve_forever(self):
+        name = wireprotoserver.SSHV2
+        l = self._fin.readline()
+        assert l.startswith(b'upgrade ')
+        token, caps = l[:-1].split(b' ')[1:]
+        assert caps == b'proto=%s' % name
+
+        # Filter hello and between requests.
+        l = self._fin.readline()
+        assert l == b'hello\n'
+        l = self._fin.readline()
+        assert l == b'between\n'
+        l = self._fin.readline()
+        assert l == 'pairs 81\n'
+        self._fin.read(81)
+
+        # Send the upgrade response.
+        self._fout.write(b'upgraded %s %s\n' % (token, name))
+        servercaps = wireproto.capabilities(self._repo, self)
+        rsp = b'capabilities: %s' % servercaps
+        self._fout.write(b'%d\n' % len(rsp))
+        self._fout.write(rsp)
+        self._fout.write(b'\n')
+        self._fout.flush()
+
+        super(upgradev2server, self).serve_forever()
+
 def performhandshake(orig, ui, stdin, stdout, stderr):
     """Wrapped version of sshpeer._performhandshake to send extra commands."""
     mode = ui.config(b'sshpeer', b'handshake-mode')
@@ -85,6 +114,8 @@
         wireprotoserver.sshserver = bannerserver
     elif servermode == b'no-hello':
         wireprotoserver.sshserver = prehelloserver
+    elif servermode == b'upgradev2':
+        wireprotoserver.sshserver = upgradev2server
     elif servermode:
         raise error.ProgrammingError(b'unknown server mode: %s' % servermode)