THRIFT-3688 Fix socket bind failure detection of cross test
Client: Test
Patch: Nobuaki Sukegawa
This closes #905
diff --git a/test/crossrunner/run.py b/test/crossrunner/run.py
index 2c212e0..3f9aaa4 100644
--- a/test/crossrunner/run.py
+++ b/test/crossrunner/run.py
@@ -172,29 +172,30 @@
with sv.start():
if test.socket in ('domain', 'abstract'):
time.sleep(0.1)
+ port_ok = True
else:
- if not ensure_socket_open(sv.proc, port, test.delay):
- break
- connect_retry_count = 0
- max_connect_retry = 3
- connect_retry_wait = 0.5
- while True:
- if sv.proc.poll() is not None:
- logger.info('not starting client because server process is absent')
- break
- logger.debug('Starting client')
- cl.start(test.timeout)
- logger.debug('Waiting client')
- cl.wait()
- if not cl.report.maybe_false_positive() or connect_retry_count >= max_connect_retry:
- if connect_retry_count > 0 and connect_retry_count < max_connect_retry:
- logger.warn('[%s]: Connected after %d retry (%.2f sec each)' % (test.server.name, connect_retry_count, connect_retry_wait))
- # Wait for 50ms to see if server does not die at the end.
- time.sleep(0.05)
- break
- logger.debug('Server may not be ready, waiting %.2f second...' % connect_retry_wait)
- time.sleep(connect_retry_wait)
- connect_retry_count += 1
+ port_ok = ensure_socket_open(sv.proc, port, test.delay)
+ if port_ok:
+ connect_retry_count = 0
+ max_connect_retry = 3
+ connect_retry_wait = 0.5
+ while True:
+ if sv.proc.poll() is not None:
+ logger.info('not starting client because server process is absent')
+ break
+ logger.debug('Starting client')
+ cl.start(test.timeout)
+ logger.debug('Waiting client')
+ cl.wait()
+ if not cl.report.maybe_false_positive() or connect_retry_count >= max_connect_retry:
+ if connect_retry_count > 0 and connect_retry_count < max_connect_retry:
+ logger.warn('[%s]: Connected after %d retry (%.2f sec each)' % (test.server.name, connect_retry_count, connect_retry_wait))
+ # Wait for 50ms to see if server does not die at the end.
+ time.sleep(0.05)
+ break
+ logger.debug('Server may not be ready, waiting %.2f second...' % connect_retry_wait)
+ time.sleep(connect_retry_wait)
+ connect_retry_count += 1
if sv.report.maybe_false_positive() and bind_retry_count < max_bind_retry:
logger.warn('[%s]: Detected socket bind failure, retrying...', test.server.name)