Author: Kirill Bobyrev Date: 2020-11-02T10:55:17+01:00 New Revision: d0beda1b66617cda8a1f54978fca72832496b1fb
URL: https://github.com/llvm/llvm-project/commit/d0beda1b66617cda8a1f54978fca72832496b1fb DIFF: https://github.com/llvm/llvm-project/commit/d0beda1b66617cda8a1f54978fca72832496b1fb.diff LOG: [clangd] Improve remote-index test Introduce a separate thread that will kill `clangd-index-server` after 10 seconds regardless. This helps shut down the test if the server hangs and `stderr.readline()` does not contain inititalizatiton message. It prevents "necessary" waiting delay for the server warm-up and only introduces additional delay if the test fails. It also makes use of `subprocess.Popen.kill()` which is a portable way of handling process shutdown and avoids using signals. Reviewed By: kadircet Differential Revision: https://reviews.llvm.org/D90590 Added: Modified: clang-tools-extra/clangd/test/remote-index/pipeline_helper.py Removed: ################################################################################ diff --git a/clang-tools-extra/clangd/test/remote-index/pipeline_helper.py b/clang-tools-extra/clangd/test/remote-index/pipeline_helper.py index 99380c445be6..d062e29bd8ee 100644 --- a/clang-tools-extra/clangd/test/remote-index/pipeline_helper.py +++ b/clang-tools-extra/clangd/test/remote-index/pipeline_helper.py @@ -14,7 +14,13 @@ from socket import socket import sys import time -import signal +import threading + + +def kill_server_after_delay(server_process): + time.sleep(10) + if server_process.poll() is None: + server_process.kill() def main(): @@ -36,11 +42,17 @@ def main(): ], stderr=subprocess.PIPE) + # This will kill index_server_process if it hangs without printing init + # message. + shutdown_thread = threading.Thread( + target=kill_server_after_delay, args=(index_server_process,)) + shutdown_thread.daemon = True + shutdown_thread.start() + # Wait for the server to warm-up. - time.sleep(4) found_init_message = False - for line in index_server_process.stderr: - if b'Server listening' in line: + while index_server_process.poll() is None: + if b'Server listening' in index_server_process.stderr.readline(): found_init_message = True break @@ -56,7 +68,7 @@ def main(): stdin=in_file) clangd_process.wait() - os.kill(index_server_process.pid, signal.SIGINT) + index_server_process.kill() if __name__ == '__main__': _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits