THRIFT-3614 Improve logging of test_sslsocket.py

Suppress server exception log for expected connection failures
Client: Test (Python)
Patch: Nobuaki Sukegawa

This closes #866
diff --git a/lib/py/test/test_sslsocket.py b/lib/py/test/test_sslsocket.py
index 259945f..93d34d0 100644
--- a/lib/py/test/test_sslsocket.py
+++ b/lib/py/test/test_sslsocket.py
@@ -17,6 +17,7 @@
 # under the License.
 #
 
+import inspect
 import logging
 import os
 import platform
@@ -47,7 +48,7 @@
 
 
 class ServerAcceptor(threading.Thread):
-    def __init__(self, server):
+    def __init__(self, server, expect_failure=False):
         super(ServerAcceptor, self).__init__()
         self.daemon = True
         self._server = server
@@ -56,6 +57,10 @@
         self._port_bound = threading.Event()
         self._client = None
         self._client_accepted = threading.Event()
+        self._expect_failure = expect_failure
+        frame = inspect.stack(3)[2]
+        self.name = frame[3]
+        del frame
 
     def run(self):
         self._server.listen()
@@ -72,6 +77,10 @@
 
         try:
             self._client = self._server.accept()
+        except Exception:
+            logging.exception('error on server side (%s):' % self.name)
+            if not self._expect_failure:
+                raise
         finally:
             self._client_accepted.set()
 
@@ -108,14 +117,14 @@
         return TSSLServerSocket(port=0, **kwargs)
 
     @contextmanager
-    def _connectable_client(self, server, path=None, **client_kwargs):
-        acc = ServerAcceptor(server)
+    def _connectable_client(self, server, expect_failure=False, path=None, **client_kwargs):
+        acc = ServerAcceptor(server, expect_failure)
         try:
             acc.start()
             acc.await_listening()
 
             host, port = ('localhost', acc.port) if path is None else (None, None)
-            client = TSSLSocket(host, port, path, **client_kwargs)
+            client = TSSLSocket(host, port, unix_socket=path, **client_kwargs)
             yield acc, client
         finally:
             if acc.client:
@@ -123,9 +132,9 @@
             server.close()
 
     def _assert_connection_failure(self, server, path=None, **client_args):
-        with self._connectable_client(server, path=path, **client_args) as (acc, client):
+        logging.disable(logging.CRITICAL)
+        with self._connectable_client(server, True, path=path, **client_args) as (acc, client):
             try:
-                logging.disable(logging.CRITICAL)
                 # We need to wait for a connection failure, but not too long.  20ms is a tunable
                 # compromise between test speed and stability
                 client.setTimeout(20)