From e12c670bceb08413f797ecd643675a4a80dac824 Mon Sep 17 00:00:00 2001 From: Greg Hudson Date: Wed, 4 Mar 2020 17:18:51 -0500 Subject: [PATCH] Use two queues for concurrent t_otp.py daemons t_otp.py occasionally fails during the #8708 regression test, reading a true answer instead of the expected false answer during the first verify() call. Most likely the daemons are writing their answers to the shared queue out of order. Use a separate queue for the second daemon to ensure correct correlation of results. (cherry picked from commit c03f67eefec05db19e84e889fab7c25904929633) --- src/tests/t_otp.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/tests/t_otp.py b/src/tests/t_otp.py index cba871a0f..c3b820a41 100755 --- a/src/tests/t_otp.py +++ b/src/tests/t_otp.py @@ -256,16 +256,17 @@ verify(daemon, queue, True, realm.user_princ, 'accept') ## tokens configured, with the first rejecting and the second ## accepting. With the bug, the KDC incorrectly rejects the request ## and then performs invalid memory accesses, most likely crashing. +queue2 = Queue() daemon1 = UDPRadiusDaemon(args=(server_addr, secret_file, 'accept1', queue)) -daemon2 = UnixRadiusDaemon(args=(socket_file, None, 'accept2', queue)) +daemon2 = UnixRadiusDaemon(args=(socket_file, None, 'accept2', queue2)) daemon1.start() queue.get() daemon2.start() -queue.get() +queue2.get() oconf = '[' + otpconfig_1('udp') + ', ' + otpconfig_1('unix') + ']' realm.run([kadminl, 'setstr', realm.user_princ, 'otp', oconf]) realm.kinit(realm.user_princ, 'accept2', flags=flags) verify(daemon1, queue, False, realm.user_princ.split('@')[0], 'accept2') -verify(daemon2, queue, True, realm.user_princ, 'accept2') +verify(daemon2, queue2, True, realm.user_princ, 'accept2') success('OTP tests')