Skip to content

Commit 79eabab

Browse files
test: UNIX socket connect
Add test for `tarantool.connect` with UNIX socket. Add TarantoolServer option to start a Tarantool instance which listens to UNIX socket.
1 parent fc81b36 commit 79eabab

File tree

2 files changed

+42
-6
lines changed

2 files changed

+42
-6
lines changed

test/suites/lib/tarantool_server.py

+24-6
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,8 @@ def __new__(cls,
122122
ssl_key_file=None,
123123
ssl_cert_file=None,
124124
ssl_ca_file=None,
125-
ssl_ciphers=None):
125+
ssl_ciphers=None,
126+
create_unix_socket=False):
126127
if os.name == 'nt':
127128
from .remote_tarantool_server import RemoteTarantoolServer
128129
return RemoteTarantoolServer()
@@ -133,12 +134,23 @@ def __init__(self,
133134
ssl_key_file=None,
134135
ssl_cert_file=None,
135136
ssl_ca_file=None,
136-
ssl_ciphers=None):
137+
ssl_ciphers=None,
138+
create_unix_socket=False):
137139
os.popen('ulimit -c unlimited')
138-
self.host = 'localhost'
139-
self.args = {}
140-
self.args['primary'] = find_port()
141-
self.args['admin'] = find_port(self.args['primary'] + 1)
140+
141+
if create_unix_socket:
142+
self.host = None
143+
self.args = {}
144+
self._socket = tempfile.NamedTemporaryFile(suffix='.sock', delete=False)
145+
self.args['primary'] = self._socket.name
146+
self.args['admin'] = find_port()
147+
else:
148+
self.host = 'localhost'
149+
self.args = {}
150+
self._socket = None
151+
self.args['primary'] = find_port()
152+
self.args['admin'] = find_port(self.args['primary'] + 1)
153+
142154
self._admin = self.args['admin']
143155
self.vardir = tempfile.mkdtemp(prefix='var_', dir=os.getcwd())
144156
self.find_exe()
@@ -244,6 +256,12 @@ def clean(self):
244256
if os.path.isdir(self.vardir):
245257
shutil.rmtree(self.vardir)
246258

259+
if os.path.exists(self.args['primary']):
260+
os.remove(self.args['primary'])
261+
262+
if (self._socket is not None) and (not self._socket.file.closed):
263+
self._socket.close()
264+
247265
def __del__(self):
248266
self.stop()
249267
self.clean()

test/suites/test_dml.py

+18
Original file line numberDiff line numberDiff line change
@@ -298,8 +298,26 @@ def test_12_update_fields(self):
298298
[[2, 'help', 7]]
299299
)
300300

301+
def test_13_unix_socket_connect(self):
302+
if sys.platform.startswith("win"):
303+
self.skipTest("Skip UNIX socket tests on Windows since it uses remote server")
304+
305+
self.sock_srv = TarantoolServer(create_unix_socket=True)
306+
self.sock_srv.script = 'test/suites/box.lua'
307+
self.sock_srv.start()
308+
309+
self.sock_con = tarantool.connect(self.sock_srv.host, self.sock_srv.args['primary'])
310+
self.assertEqual(self.sock_con.ping(notime=True), "Success")
311+
301312
@classmethod
302313
def tearDownClass(self):
303314
self.con.close()
304315
self.srv.stop()
305316
self.srv.clean()
317+
318+
if hasattr(self, 'sock_srv'):
319+
self.sock_srv.stop()
320+
self.sock_srv.clean()
321+
322+
if hasattr(self, 'sock_con'):
323+
self.sock_con.close()

0 commit comments

Comments
 (0)