diff --git a/test/lib/tarantool_server.py b/test/lib/tarantool_server.py index 2a00e6ac260228fd5a5d990a71e18192e298b176..2517de932a751cc17218dbe442168d49ceae3cd7 100644 --- a/test/lib/tarantool_server.py +++ b/test/lib/tarantool_server.py @@ -4,18 +4,20 @@ import sys import glob import time import yaml +import errno import shlex import daemon import random import shutil -import difflib import signal import socket +import difflib import filecmp import traceback import subprocess import collections + try: from cStringIO import StringIO except ImportError: @@ -639,14 +641,19 @@ class TarantoolServer(Server): """ self.logfile_pos.seek_from('entering the event loop\n', self.process if not self.gdb else None) - while True: - temp = AdminConnection('localhost', self.conf['admin_port']) - ans = yaml.load(temp.execute('box.info.status'))[0] - if ans in ('primary', 'hot_standby', 'orphan') or ans.startswith('replica'): - return True - else: - raise Exception("Strange output for `box.info.status`: %s" % (ans)) + try: + temp = AdminConnection('localhost', self.conf['admin_port']) + ans = yaml.load(temp.execute('box.info.status'))[0] + if ans in ('primary', 'hot_standby', 'orphan') or ans.startswith('replica'): + return True + else: + raise Exception("Strange output for `box.info.status`: %s" % (ans)) + except socket.error as e: + if e.errno == errno.ECONNREFUSED: + time.sleep(0.1) + continue + raise def wait_until_stopped(self, pid): while True: