You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ph...@apache.org on 2013/01/11 18:12:40 UTC
svn commit: r1432162 - /qpid/proton/trunk/tests/proton_tests/ssl.py
Author: philharveyonline
Date: Fri Jan 11 17:12:40 2013
New Revision: 1432162
URL: http://svn.apache.org/viewvc?rev=1432162&view=rev
Log:
PROTON-197: changed SslTest pump method to respect leftovers and reinstated test_ssl_with_small_buffer.
Modified:
qpid/proton/trunk/tests/proton_tests/ssl.py
Modified: qpid/proton/trunk/tests/proton_tests/ssl.py
URL: http://svn.apache.org/viewvc/qpid/proton/trunk/tests/proton_tests/ssl.py?rev=1432162&r1=1432161&r2=1432162&view=diff
==============================================================================
--- qpid/proton/trunk/tests/proton_tests/ssl.py (original)
+++ qpid/proton/trunk/tests/proton_tests/ssl.py Fri Jan 11 17:12:40 2013
@@ -54,15 +54,35 @@ class SslTest(common.Test):
except SSLUnavailable, e:
raise Skipped(e)
- def _pump(self, ssl1, ssl2):
+ def _pump(self, ssl_client, ssl_server, buffer_size=1024):
""" Allow two SslTestConnections to transfer data until done.
"""
+ out_client_leftover_by_server = ""
+ out_server_leftover_by_client = ""
+ i = 0
+
while True:
- out1 = ssl1.transport.output(1024)
- out2 = ssl2.transport.output(1024)
- if out1: ssl2.transport.input(out1)
- if out2: ssl1.transport.input(out2)
- if not out1 and not out2: break
+ out_client = out_client_leftover_by_server + (ssl_client.transport.output(buffer_size) or "")
+ out_server = out_server_leftover_by_client + (ssl_server.transport.output(buffer_size) or "")
+
+ if out_client:
+ number_server_consumed = ssl_server.transport.input(out_client)
+ if number_server_consumed is None:
+ # special None return value means input is closed so discard the leftovers
+ out_client_leftover_by_server = ""
+ else:
+ out_client_leftover_by_server = out_client[number_server_consumed:]
+
+ if out_server:
+ number_client_consumed = ssl_client.transport.input(out_server)
+ if number_client_consumed is None:
+ # special None return value means input is closed so discard the leftovers
+ out_server_leftover_by_client = ""
+ else:
+ out_server_leftover_by_client = out_server[number_client_consumed:]
+
+ if not out_client and not out_server: break
+ i = i + 1
def _testpath(self, file):
""" Set the full path to the certificate,keyfile, etc. for the test.
@@ -108,6 +128,28 @@ class SslTest(common.Test):
server.connection.close()
self._pump( client, server )
+ def test_ssl_with_small_buffer(self):
+ self.server_domain.set_credentials(self._testpath("server-certificate.pem"),
+ self._testpath("server-private-key.pem"),
+ "server-password")
+ self.client_domain.set_trusted_ca_db(self._testpath("ca-certificate.pem"))
+ self.client_domain.set_peer_authentication( SSLDomain.VERIFY_PEER )
+
+ server = SslTest.SslTestConnection( self.server_domain )
+ client = SslTest.SslTestConnection( self.client_domain )
+
+ client.connection.open()
+ server.connection.open()
+
+ small_buffer_size = 1
+ self._pump( client, server, small_buffer_size )
+
+ assert client.ssl.protocol_name() is not None
+ client.connection.close()
+ server.connection.close()
+ self._pump( client, server )
+
+
def test_server_certificate(self):
""" Test that anonymous clients can still connect to a server that has
a certificate configured.
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org