You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kg...@apache.org on 2021/08/30 18:19:45 UTC
[qpid-dispatch] branch main updated: NO-JIRA: replace test use of
sigalarm by reactor timer
This is an automated email from the ASF dual-hosted git repository.
kgiusti pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-dispatch.git
The following commit(s) were added to refs/heads/main by this push:
new db11704 NO-JIRA: replace test use of sigalarm by reactor timer
db11704 is described below
commit db1170421c051e48defd2eee62be21da583021a1
Author: Kenneth Giusti <kg...@apache.org>
AuthorDate: Thu Aug 26 12:59:10 2021 -0400
NO-JIRA: replace test use of sigalarm by reactor timer
This closes #1352
---
tests/system_tests_policy.py | 65 +++++++++++++++++++++++++-------------------
1 file changed, 37 insertions(+), 28 deletions(-)
diff --git a/tests/system_tests_policy.py b/tests/system_tests_policy.py
index d2bc565..362bcb0 100644
--- a/tests/system_tests_policy.py
+++ b/tests/system_tests_policy.py
@@ -21,7 +21,6 @@ import unittest as unittest
import os
import json
import re
-import signal
import sys
import time
@@ -1144,15 +1143,19 @@ class VhostPolicyFromRouterConfig(TestCase):
# Attempt to connect to all allowed target addresses
for target_addr in target_addr_list:
- sender = SenderAddressValidator("%s/%s" % (self.address(), target_addr))
- self.assertFalse(sender.link_error,
- msg="target address must be allowed, but it was not [%s]" % target_addr)
+ sender = SenderAddressValidator("%s/%s" % (self.address(),
+ target_addr))
+ sender.run()
+ self.assertIsNone(sender.link_error,
+ msg="target address must be allowed, but it was not [%s]" % target_addr)
# Attempt to connect to all allowed source addresses
for source_addr in source_addr_list:
- receiver = ReceiverAddressValidator("%s/%s" % (self.address(), source_addr))
- self.assertFalse(receiver.link_error,
- msg="source address must be allowed, but it was not [%s]" % source_addr)
+ receiver = ReceiverAddressValidator("%s/%s" % (self.address(),
+ source_addr))
+ receiver.run()
+ self.assertIsNone(receiver.link_error,
+ msg="source address must be allowed, but it was not [%s]" % source_addr)
def test_vhost_denied_addresses(self):
target_addr_list = ['addr', 'simpleaddress1', 'queue.user']
@@ -1160,15 +1163,19 @@ class VhostPolicyFromRouterConfig(TestCase):
# Attempt to connect to all not allowed target addresses
for target_addr in target_addr_list:
- sender = SenderAddressValidator("%s/%s" % (self.address(), target_addr))
- self.assertTrue(sender.link_error,
- msg="target address must not be allowed, but it was [%s]" % target_addr)
+ sender = SenderAddressValidator("%s/%s" % (self.address(),
+ target_addr))
+ sender.run()
+ self.assertEqual(sender.link_error, "Link open failed",
+ msg="target address must not be allowed, but it was [%s]" % target_addr)
# Attempt to connect to all not allowed source addresses
for source_addr in source_addr_list:
- receiver = ReceiverAddressValidator("%s/%s" % (self.address(), source_addr))
- self.assertTrue(receiver.link_error,
- msg="source address must not be allowed, but it was [%s]" % source_addr)
+ receiver = ReceiverAddressValidator("%s/%s" % (self.address(),
+ source_addr))
+ receiver.run()
+ self.assertEqual(receiver.link_error, "Link open failed",
+ msg="source address must not be allowed, but it was [%s]" % source_addr)
class VhostPolicyConnLimit(TestCase):
@@ -1253,21 +1260,20 @@ class ClientAddressValidator(MessagingHandler):
Base client class used to validate vhost policies through
receiver or clients based on allowed target and source
addresses.
- Implementing classes must provide on_start() implementation
+ Implementing classes must provide start_client() implementation
and create the respective sender or receiver.
"""
- TIMEOUT = 3
-
def __init__(self, url):
super(ClientAddressValidator, self).__init__()
self.url = Url(url)
- self.container = Container(self)
- self.link_error = False
- self.container.run()
- signal.signal(signal.SIGALRM, self.timeout)
- signal.alarm(ClientAddressValidator.TIMEOUT)
+ self.link_error = None
+
+ def on_start(self, event):
+ self.timer = event.reactor.schedule(TIMEOUT, TestTimeout(self))
+ self.container = event.container
+ self.start_client(event)
- def timeout(self, signum, frame):
+ def timeout(self):
"""
In case router crashes or something goes wrong and client
is unable to connect, this method will be invoked and
@@ -1276,7 +1282,7 @@ class ClientAddressValidator(MessagingHandler):
:param frame:
:return:
"""
- self.link_error = True
+ self.link_error = "Timed out waiting for client to connect"
self.container.stop()
def on_link_error(self, event):
@@ -1285,9 +1291,9 @@ class ClientAddressValidator(MessagingHandler):
:param event:
:return:
"""
- self.link_error = True
+ self.link_error = "Link open failed"
event.connection.close()
- signal.alarm(0)
+ self.timer.cancel()
def on_link_opened(self, event):
"""
@@ -1296,7 +1302,10 @@ class ClientAddressValidator(MessagingHandler):
:return:
"""
event.connection.close()
- signal.alarm(0)
+ self.timer.cancel()
+
+ def run(self):
+ Container(self).run()
class ReceiverAddressValidator(ClientAddressValidator):
@@ -1308,7 +1317,7 @@ class ReceiverAddressValidator(ClientAddressValidator):
def __init__(self, url):
super(ReceiverAddressValidator, self).__init__(url)
- def on_start(self, event):
+ def start_client(self, event):
"""
Creates the receiver.
:param event:
@@ -1326,7 +1335,7 @@ class SenderAddressValidator(ClientAddressValidator):
def __init__(self, url):
super(SenderAddressValidator, self).__init__(url)
- def on_start(self, event):
+ def start_client(self, event):
"""
Creates the sender
:param event:
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org