Skip to content

Commit 2dd9387

Browse files
authored
Fixing flaky tests (#71)
* Modes observer test node now correctly reacting to SIGINT * Fixed timing in launchtests #70 Signed-off-by: Nordmann Arne (CR/ADT3) <arne.nordmann@de.bosch.com>
1 parent eeabfcb commit 2dd9387

8 files changed

Lines changed: 38 additions & 60 deletions

system_modes/test/launchtest/manager_and_monitor.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from time import sleep
2+
13
from lifecycle_msgs.srv import ChangeState
24
from rcl_interfaces.msg import SetParametersResult
35

@@ -85,19 +87,15 @@ def main(args=None):
8587
lc.configure_system()
8688
executor.spin_once(timeout_sec=1)
8789
executor.spin_once(timeout_sec=1)
88-
executor.spin_once(timeout_sec=1)
89-
executor.spin_once(timeout_sec=1)
90+
sleep(2) # give the system some time to converge
9091

9192
lc.activate_system()
9293
executor.spin_once(timeout_sec=1)
9394
executor.spin_once(timeout_sec=1)
9495
executor.spin_once(timeout_sec=1)
95-
executor.spin_once(timeout_sec=1)
96-
executor.spin_once(timeout_sec=1)
97-
executor.spin_once(timeout_sec=1)
96+
sleep(2) # give the system some time to converge
9897

9998
lc.change_mode('CC')
100-
10199
executor.spin()
102100
finally:
103101
executor.shutdown()

system_modes/test/launchtest/modes_observer.launch.py.in

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,11 @@ def generate_test_description():
1818

1919
modelfile = '@MODELFILE@'
2020

21-
modes_observer = ExecuteProcess(
22-
cmd=[
23-
"ros2",
24-
"run",
25-
"system_modes",
26-
"modes_observer_test_node"],
27-
name='modes_observer_test_node',
28-
emulate_tty=True,
29-
output='screen')
21+
modes_observer = launch_ros.actions.Node(
22+
package='system_modes',
23+
executable='modes_observer_test_node',
24+
emulate_tty=True,
25+
output='screen')
3026

3127
mode_manager = launch.actions.IncludeLaunchDescription(
3228
launch.launch_description_sources.PythonLaunchDescriptionSource(
@@ -39,9 +35,7 @@ def generate_test_description():
3935
"@PYTHON_EXECUTABLE@",
4036
"@TEST_NODES@"
4137
],
42-
name='test_nodes',
43-
emulate_tty=True,
44-
output='screen')
38+
name='test_nodes',)
4539

4640
launch_description = LaunchDescription()
4741
launch_description.add_action(modes_observer)

system_modes/test/launchtest/modes_observer.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -117,23 +117,15 @@ def main(args=None):
117117
lc.configure_system()
118118
executor.spin_once(timeout_sec=1)
119119
executor.spin_once(timeout_sec=1)
120-
executor.spin_once(timeout_sec=1)
121-
executor.spin_once(timeout_sec=1)
122-
executor.spin_once(timeout_sec=1)
123-
executor.spin_once(timeout_sec=1)
124-
executor.spin_once(timeout_sec=1)
120+
sleep(2) # give the system some time to converge
125121

126122
lc.activate_system()
127123
executor.spin_once(timeout_sec=1)
128124
executor.spin_once(timeout_sec=1)
129125
executor.spin_once(timeout_sec=1)
130-
executor.spin_once(timeout_sec=1)
131-
executor.spin_once(timeout_sec=1)
132-
executor.spin_once(timeout_sec=1)
133-
executor.spin_once(timeout_sec=1)
126+
sleep(2) # give the system some time to converge
134127

135128
lc.change_mode('CC')
136-
137129
executor.spin()
138130
finally:
139131
executor.shutdown()

system_modes/test/launchtest/redundant_mode_changes.py

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
1+
from time import sleep
2+
13
from lifecycle_msgs.srv import ChangeState
24
from rcl_interfaces.msg import SetParametersResult
35

46
import rclpy
7+
58
from rclpy.executors import MultiThreadedExecutor
69
from rclpy.node import Node
710
from rclpy.parameter import Parameter
@@ -102,33 +105,28 @@ def main(args=None):
102105
lc.configure_system()
103106
executor.spin_once(timeout_sec=1)
104107
executor.spin_once(timeout_sec=1)
105-
executor.spin_once(timeout_sec=1)
106-
executor.spin_once(timeout_sec=1)
108+
sleep(2)
107109

108110
lc.activate_system()
109111
executor.spin_once(timeout_sec=1)
110112
executor.spin_once(timeout_sec=1)
111113
executor.spin_once(timeout_sec=1)
112-
executor.spin_once(timeout_sec=1)
113-
executor.spin_once(timeout_sec=1)
114-
executor.spin_once(timeout_sec=1)
114+
sleep(2) # give the system some time to converge
115115

116116
lc.change_A_mode('AA')
117117
executor.spin_once(timeout_sec=1)
118118
executor.spin_once(timeout_sec=1)
119119
executor.spin_once(timeout_sec=1)
120120
executor.spin_once(timeout_sec=1)
121-
lc.change_A_mode('AA') # redundant, should be ignored
122-
executor.spin_once(timeout_sec=1)
123-
executor.spin_once(timeout_sec=1)
124-
executor.spin_once(timeout_sec=1)
125-
executor.spin_once(timeout_sec=1)
126-
lc.change_A_mode('BB')
127-
executor.spin_once(timeout_sec=1)
128121
executor.spin_once(timeout_sec=1)
122+
sleep(3) # give the system some time to converge
123+
124+
lc.change_A_mode('AA') # this is the tested aspect: call redundant, should be ignored
129125
executor.spin_once(timeout_sec=1)
130126
executor.spin_once(timeout_sec=1)
127+
sleep(2) # give the system some time to converge
131128

129+
lc.change_A_mode('BB')
132130
executor.spin()
133131
finally:
134132
executor.shutdown()
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
Transition [AB]:configure
2-
Transition [AB]:activate
1+
Transition [AB]
32
Parameter callback #0 A:foo:0.2
43
Parameter callback #1 A:foo:0.3

system_modes/test/launchtest/two_independent_hierarchies.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from time import sleep
2+
13
from lifecycle_msgs.srv import ChangeState
24
from rcl_interfaces.msg import SetParametersResult
35

@@ -89,27 +91,26 @@ def main(args=None):
8991
try:
9092
lc.configure_system()
9193
executor.spin_once(timeout_sec=1)
92-
lc2.configure_system()
93-
executor.spin_once(timeout_sec=1)
9494
executor.spin_once(timeout_sec=1)
95+
lc2.configure_system()
9596
executor.spin_once(timeout_sec=1)
9697
executor.spin_once(timeout_sec=1)
98+
sleep(2) # give the system some time to converge
9799

98100
lc.activate_system()
99101
executor.spin_once(timeout_sec=1)
100-
lc2.activate_system()
101-
executor.spin_once(timeout_sec=1)
102102
executor.spin_once(timeout_sec=1)
103103
executor.spin_once(timeout_sec=1)
104+
lc2.activate_system()
104105
executor.spin_once(timeout_sec=1)
105106
executor.spin_once(timeout_sec=1)
106107
executor.spin_once(timeout_sec=1)
108+
sleep(2) # give the system some time to converge
107109

108110
lc.change_mode('CC')
109111
executor.spin_once(timeout_sec=1)
110-
lc2.change_mode('DD')
111112
executor.spin_once(timeout_sec=1)
112-
113+
lc2.change_mode('DD')
113114
executor.spin()
114115
finally:
115116
executor.shutdown()

system_modes/test/launchtest/two_lifecycle_nodes.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from time import sleep
2+
13
from lifecycle_msgs.srv import ChangeState
24
from rcl_interfaces.msg import SetParametersResult
35

@@ -85,19 +87,15 @@ def main(args=None):
8587
lc.configure_system()
8688
executor.spin_once(timeout_sec=1)
8789
executor.spin_once(timeout_sec=1)
88-
executor.spin_once(timeout_sec=1)
89-
executor.spin_once(timeout_sec=1)
90+
sleep(2) # give the system some time to converge
9091

9192
lc.activate_system()
9293
executor.spin_once(timeout_sec=1)
9394
executor.spin_once(timeout_sec=1)
9495
executor.spin_once(timeout_sec=1)
95-
executor.spin_once(timeout_sec=1)
96-
executor.spin_once(timeout_sec=1)
97-
executor.spin_once(timeout_sec=1)
96+
sleep(2) # give the system some time to converge
9897

9998
lc.change_mode('CC')
100-
10199
executor.spin()
102100
finally:
103101
executor.shutdown()

system_modes/test/launchtest/two_mixed_nodes.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from time import sleep
2+
13
from lifecycle_msgs.srv import ChangeState
24
from rcl_interfaces.msg import SetParametersResult
35

@@ -103,19 +105,15 @@ def main(args=None):
103105
lc.configure_system()
104106
executor.spin_once(timeout_sec=1)
105107
executor.spin_once(timeout_sec=1)
106-
executor.spin_once(timeout_sec=1)
107-
executor.spin_once(timeout_sec=1)
108+
sleep(2) # give the system some time to converge
108109

109110
lc.activate_system()
110111
executor.spin_once(timeout_sec=1)
111112
executor.spin_once(timeout_sec=1)
112113
executor.spin_once(timeout_sec=1)
113-
executor.spin_once(timeout_sec=1)
114-
executor.spin_once(timeout_sec=1)
115-
executor.spin_once(timeout_sec=1)
114+
sleep(2) # give the system some time to converge
116115

117116
lc.change_mode('CC')
118-
119117
executor.spin()
120118
finally:
121119
executor.shutdown()

0 commit comments

Comments
 (0)