Skip to content

Commit 2fe180c

Browse files
Merge pull request #7 from jonbinney/fix-port-all-filters-test
Fix race condition in tests
2 parents e02d296 + 5ea368f commit 2fe180c

File tree

2 files changed

+18
-10
lines changed

2 files changed

+18
-10
lines changed

test/test_polygon_filter.test.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,14 @@ def test_polygon_filter(self):
3737
node.start_subscriber()
3838
node.publish_laser_scan()
3939

40-
msgs_received_flag = node._msg_event_object.wait(timeout=10.0)
41-
assert msgs_received_flag, "Did not receive msgs !"
40+
publish_rate = node.create_rate(5)
41+
for _ in range(10):
42+
if node._msg_event_object.isSet():
43+
break
44+
node.publish_laser_scan()
45+
publish_rate.sleep()
46+
47+
assert node._msg_event_object.isSet(), "Did not receive msgs !"
4248
expected_scan_ranges = [1.0, 1.0, 1.0, 1.0, float("nan"), float("nan"), float("nan"), 1, 1, 1, 1]
4349
for scan_range, expected_scan_range in zip(node._received_message.ranges, expected_scan_ranges):
4450
if math.isnan(expected_scan_range) or math.isnan(scan_range):

test/test_speckle_filter.test.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import pytest
1919
import rclpy
2020
from rclpy.node import Node
21-
from rclpy.qos import QoSProfile, QoSDurabilityPolicy
2221
from sensor_msgs.msg import LaserScan
2322

2423

@@ -50,12 +49,16 @@ def test_speckle_filter(self):
5049
node = TestFixture()
5150
self.assertTrue(node.wait_for_subscribers(10))
5251
node.start_subscribers()
53-
node.publish_laser_scan()
5452

55-
dist_msgs_received_flag = node.dist_msg_event_object.wait(timeout=10.0)
56-
eucl_msgs_received_flag = node.eucl_msg_event_object.wait(timeout=10.0)
57-
assert dist_msgs_received_flag, "Did not receive distance msgs !"
58-
assert eucl_msgs_received_flag, "Did not receive euclidean msgs !"
53+
publish_rate = node.create_rate(5)
54+
for _ in range(10):
55+
if node.dist_msg_event_object.isSet() and node.eucl_msg_event_object.isSet():
56+
break
57+
node.publish_laser_scan()
58+
publish_rate.sleep()
59+
60+
assert node.dist_msg_event_object.isSet(), "Did not receive distance msgs !"
61+
assert node.eucl_msg_event_object.isSet(), "Did not receive euclidean msgs !"
5962

6063
expected_scan_ranges = [1, 1, 1, 1, float("nan"), 1, 1, 1, 1, 1, 1]
6164
for scan_range, expected_scan_range in zip(node.msg_dist.ranges, expected_scan_ranges):
@@ -92,8 +95,7 @@ def __init__(self):
9295
super().__init__("test_speckle_filter_distance")
9396
self.dist_msg_event_object = Event()
9497
self.eucl_msg_event_object = Event()
95-
qos = QoSProfile(depth=1, durability=QoSDurabilityPolicy.TRANSIENT_LOCAL)
96-
self.publisher = self.create_publisher(LaserScan, "scan", qos_profile=qos)
98+
self.publisher = self.create_publisher(LaserScan, "scan", 10)
9799

98100
def wait_for_subscribers(self, timeout):
99101
timer_period = 0.1

0 commit comments

Comments
 (0)