Rev 5277: Create the ssh host key only once for a given sftp test server. in file:///home/vila/src/bzr/experimental/leaking-tests/
Vincent Ladeuil
v.ladeuil+lp at free.fr
Thu Jul 1 16:14:35 BST 2010
At file:///home/vila/src/bzr/experimental/leaking-tests/
------------------------------------------------------------
revno: 5277
revision-id: v.ladeuil+lp at free.fr-20100701151435-zx8e875m4wgjte8o
parent: v.ladeuil+lp at free.fr-20100701145336-b2801jng3dqi3tyg
committer: Vincent Ladeuil <v.ladeuil+lp at free.fr>
branch nick: sftp-leaks
timestamp: Thu 2010-07-01 17:14:35 +0200
message:
Create the ssh host key only once for a given sftp test server.
* bzrlib/tests/stub_sftp.py:
(TestingSFTPConnectionHandler.setup): Get the host key from the
test case so it's created only once.
(SFTPServer.get_host_key): Create the host key.
(SFTPServerWithoutSSH.get_host_key): No ssh ? No host key.
-------------- next part --------------
=== modified file 'bzrlib/tests/stub_sftp.py'
--- a/bzrlib/tests/stub_sftp.py 2010-06-23 16:05:14 +0000
+++ b/bzrlib/tests/stub_sftp.py 2010-07-01 15:14:35 +0000
@@ -345,14 +345,7 @@
self.wrap_for_latency()
tcs = self.server.test_case_server
ssh_server = paramiko.Transport(self.request)
- # FIXME: The server key file should be created only once, not for each
- # connection -- vila 20100623
- key_file = osutils.pathjoin(tcs._homedir, 'test_rsa.key')
- f = open(key_file, 'w')
- f.write(STUB_SERVER_KEY)
- f.close()
- host_key = paramiko.RSAKey.from_private_key_file(key_file)
- ssh_server.add_server_key(host_key)
+ ssh_server.add_server_key(tcs.get_host_key())
ssh_server.set_subsystem_handler('sftp', paramiko.SFTPServer,
StubSFTPServer, root=tcs._root,
home=tcs._server_homedir)
@@ -442,6 +435,7 @@
self._original_vendor = None
self._vendor = ssh.ParamikoVendor()
self._server_interface = server_interface
+ self._host_key = None
self.logs = []
self.add_latency = 0
self._homedir = None
@@ -462,6 +456,17 @@
self)
return server
+ def get_host_key(self):
+ if self._host_key is None:
+ key_file = osutils.pathjoin(self._homedir, 'test_rsa.key')
+ f = open(key_file, 'w')
+ try:
+ f.write(STUB_SERVER_KEY)
+ finally:
+ f.close()
+ self._host_key = paramiko.RSAKey.from_private_key_file(key_file)
+ return self._host_key
+
def start_server(self, backing_server=None):
# XXX: TODO: make sftpserver back onto backing_server rather than local
# disk.
@@ -523,6 +528,9 @@
self._vendor = ssh.LoopbackVendor()
self.request_handler_class = TestingSFTPWithoutSSHConnectionHandler
+ def get_host_key():
+ return None
+
class SFTPAbsoluteServer(SFTPServerWithoutSSH):
"""A test server for sftp transports, using absolute urls."""
More information about the bazaar-commits
mailing list