aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/cpp/naming/utils/dns_resolver.py
diff options
context:
space:
mode:
authorGravatar Alexander Polcyn <apolcyn@google.com>2018-04-24 15:11:47 -0700
committerGravatar Alexander Polcyn <apolcyn@google.com>2018-04-24 16:24:43 -0700
commit29fead7d492b3655ea876b1ddcbdf3719a91392d (patch)
treee5771648edbc91730c82c0940d1dbec734302956 /test/cpp/naming/utils/dns_resolver.py
parent2d894a8c3b6bd0a236f14c5630faced4caba0a55 (diff)
Convert c-ares test runner from bash to python, so that it works on
windows
Diffstat (limited to 'test/cpp/naming/utils/dns_resolver.py')
-rwxr-xr-xtest/cpp/naming/utils/dns_resolver.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/test/cpp/naming/utils/dns_resolver.py b/test/cpp/naming/utils/dns_resolver.py
index 6b272444e7..f0d2f7fe93 100755
--- a/test/cpp/naming/utils/dns_resolver.py
+++ b/test/cpp/naming/utils/dns_resolver.py
@@ -16,9 +16,16 @@
"""Makes DNS queries for A records to specified servers"""
import argparse
-import signal
+import threading
+import time
import twisted.internet.task as task
import twisted.names.client as client
+import twisted.internet.reactor as reactor
+
+def exit_after_timeout(timeout):
+ time.sleep(timeout)
+ print('Time limit reached. Forcing exit')
+ reactor.stop()
def main():
argp = argparse.ArgumentParser(description='Make DNS queries for A records')
@@ -31,7 +38,6 @@ def main():
argp.add_argument('-t', '--timeout', default=1, type=int,
help=('Force process exit after this number of seconds.'))
args = argp.parse_args()
- signal.alarm(args.timeout)
def OnResolverResultAvailable(result):
answers, authority, additional = result
for a in answers:
@@ -42,6 +48,10 @@ def main():
deferred_result = resolver.lookupAddress(args.qname)
deferred_result.addCallback(OnResolverResultAvailable)
return deferred_result
+ # We can't use sigalarm on windows, so start a thread.
+ timeout_thread = threading.Thread(target=exit_after_timeout, args=[args.timeout])
+ timeout_thread.setDaemon(True)
+ timeout_thread.start()
task.react(BeginQuery, [args.qname])
if __name__ == '__main__':