diff --git a/test/suites/lib/tarantool_server.py b/test/suites/lib/tarantool_server.py index d11ef623..8fcc72fc 100644 --- a/test/suites/lib/tarantool_server.py +++ b/test/suites/lib/tarantool_server.py @@ -122,7 +122,8 @@ def __new__(cls, ssl_key_file=None, ssl_cert_file=None, ssl_ca_file=None, - ssl_ciphers=None): + ssl_ciphers=None, + create_unix_socket=False): if os.name == 'nt': from .remote_tarantool_server import RemoteTarantoolServer return RemoteTarantoolServer() @@ -133,12 +134,23 @@ def __init__(self, ssl_key_file=None, ssl_cert_file=None, ssl_ca_file=None, - ssl_ciphers=None): + ssl_ciphers=None, + create_unix_socket=False): os.popen('ulimit -c unlimited') - self.host = 'localhost' - self.args = {} - self.args['primary'] = find_port() - self.args['admin'] = find_port(self.args['primary'] + 1) + + if create_unix_socket: + self.host = None + self.args = {} + self._socket = tempfile.NamedTemporaryFile(suffix='.sock', delete=False) + self.args['primary'] = self._socket.name + self.args['admin'] = find_port() + else: + self.host = 'localhost' + self.args = {} + self._socket = None + self.args['primary'] = find_port() + self.args['admin'] = find_port(self.args['primary'] + 1) + self._admin = self.args['admin'] self.vardir = tempfile.mkdtemp(prefix='var_', dir=os.getcwd()) self.find_exe() @@ -244,6 +256,12 @@ def clean(self): if os.path.isdir(self.vardir): shutil.rmtree(self.vardir) + if os.path.exists(self.args['primary']): + os.remove(self.args['primary']) + + if (self._socket is not None) and (not self._socket.file.closed): + self._socket.close() + def __del__(self): self.stop() self.clean() diff --git a/test/suites/test_dml.py b/test/suites/test_dml.py index 6c7808f6..95ff1c18 100644 --- a/test/suites/test_dml.py +++ b/test/suites/test_dml.py @@ -298,8 +298,26 @@ def test_12_update_fields(self): [[2, 'help', 7]] ) + def test_13_unix_socket_connect(self): + if sys.platform.startswith("win"): + self.skipTest("Skip UNIX socket tests on Windows since it uses remote server") + + self.sock_srv = TarantoolServer(create_unix_socket=True) + self.sock_srv.script = 'test/suites/box.lua' + self.sock_srv.start() + + self.sock_con = tarantool.connect(self.sock_srv.host, self.sock_srv.args['primary']) + self.assertEqual(self.sock_con.ping(notime=True), "Success") + @classmethod def tearDownClass(self): self.con.close() self.srv.stop() self.srv.clean() + + if hasattr(self, 'sock_srv'): + self.sock_srv.stop() + self.sock_srv.clean() + + if hasattr(self, 'sock_con'): + self.sock_con.close()