From 0d5b3c6d7a4463ba6972507d38300f70cbf87c16 Mon Sep 17 00:00:00 2001 From: Chris Dent Date: Tue, 9 Feb 2016 21:10:23 +0000 Subject: [PATCH] Replace eventlet-based raw socket client with requests There's no discernable reason why we need to use a raw eventlet-based client TestWSGIServerWithSSL to confirm that a wsgi server is listening correctly and returning the expected response, especially since using eventlet leads to unreliable i/o on the socket unless there is an explicit yield before asserting the value of the response. So requests is used to query the servers and verify the response. Change-Id: I00c1c1e93eb7c66c3370434db4e3e6c00087f8aa Closes-Bug: #1543766 (cherry picked from commit d754a830861fb55b047e7b4d43ba7f485fc120dd) --- nova/tests/unit/test_wsgi.py | 35 +++++++++++++---------------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/nova/tests/unit/test_wsgi.py b/nova/tests/unit/test_wsgi.py index ef0d90289561..2c9d0217bcc1 100644 --- a/nova/tests/unit/test_wsgi.py +++ b/nova/tests/unit/test_wsgi.py @@ -244,14 +244,10 @@ class TestWSGIServerWithSSL(test.NoDBTestCase): fake_ssl_server.start() self.assertNotEqual(0, fake_ssl_server.port) - cli = eventlet.connect(("localhost", fake_ssl_server.port)) - cli = eventlet.wrap_ssl(cli, - ca_certs=os.path.join(SSL_CERT_DIR, 'ca.crt')) - - cli.write('POST / HTTP/1.1\r\nHost: localhost\r\n' - 'Connection: close\r\nContent-length:4\r\n\r\nPING') - response = cli.read(8192) - self.assertEqual(response[-4:], "PONG") + response = requests.post( + 'https://127.0.0.1:%s/' % fake_ssl_server.port, + verify=os.path.join(SSL_CERT_DIR, 'ca.crt'), data='PING') + self.assertEqual(response.text, 'PONG') fake_ssl_server.stop() fake_ssl_server.wait() @@ -272,24 +268,19 @@ class TestWSGIServerWithSSL(test.NoDBTestCase): fake_server.start() self.assertNotEqual(0, fake_server.port) - cli = eventlet.connect(("localhost", fake_ssl_server.port)) - cli = eventlet.wrap_ssl(cli, - ca_certs=os.path.join(SSL_CERT_DIR, 'ca.crt')) + response = requests.post( + 'https://127.0.0.1:%s/' % fake_ssl_server.port, + verify=os.path.join(SSL_CERT_DIR, 'ca.crt'), data='PING') + self.assertEqual(response.text, 'PONG') - cli.write('POST / HTTP/1.1\r\nHost: localhost\r\n' - 'Connection: close\r\nContent-length:4\r\n\r\nPING') - response = cli.read(8192) - self.assertEqual(response[-4:], "PONG") - - cli = eventlet.connect(("localhost", fake_server.port)) - - cli.sendall('POST / HTTP/1.1\r\nHost: localhost\r\n' - 'Connection: close\r\nContent-length:4\r\n\r\nPING') - response = cli.recv(8192) - self.assertEqual(response[-4:], "PONG") + response = requests.post('http://127.0.0.1:%s/' % fake_server.port, + data='PING') + self.assertEqual(response.text, 'PONG') fake_ssl_server.stop() fake_ssl_server.wait() + fake_server.stop() + fake_server.wait() @testtools.skipIf(not utils.is_linux(), 'SO_REUSEADDR behaves differently' ' on OSX and BSD, see bugs '