|
80 | 80 | choices=['on', 'off'], |
81 | 81 | help='Explicitly enable/disable shared memory transport. (Defaults: Fast DDS default settings)', |
82 | 82 | required=False |
83 | | - ) |
| 83 | + ) |
| 84 | + parser.add_argument( |
| 85 | + '--number_of_subscribers', |
| 86 | + help='Number of subscribers', |
| 87 | + required=False, |
| 88 | + default='1', |
| 89 | + ) |
84 | 90 |
|
85 | 91 | # Parse arguments |
86 | 92 | args = parser.parse_args() |
|
103 | 109 | ) |
104 | 110 | exit(1) # Exit with error |
105 | 111 |
|
| 112 | + # Check that subscribers is positive |
| 113 | + if str.isdigit(args.number_of_subscribers) and int(args.number_of_subscribers) > 0: |
| 114 | + number_of_subscribers = str(args.number_of_subscribers) |
| 115 | + else: |
| 116 | + print( |
| 117 | + '"number_of_subscribers" must be a positive integer, NOT {}'.format( |
| 118 | + args.number_of_subscribers |
| 119 | + ) |
| 120 | + ) |
| 121 | + exit(1) # Exit with error |
| 122 | + |
106 | 123 | # Demands files options |
107 | 124 | demands_options = [] |
108 | 125 | if args.demands_file: |
|
199 | 216 | 'publisher', |
200 | 217 | '--samples', |
201 | 218 | samples, |
| 219 | + '--subscribers', |
| 220 | + number_of_subscribers, |
202 | 221 | '--export_raw_data', |
203 | 222 | ] |
204 | 223 | # Base of test command for subscriber agent |
|
246 | 265 |
|
247 | 266 | # Spawn processes |
248 | 267 | publisher = subprocess.Popen(pub_command) |
249 | | - subscriber = subprocess.Popen(sub_command) |
| 268 | + subscribers = [] |
| 269 | + for _ in range(int(number_of_subscribers)): |
| 270 | + subscribers.append(subprocess.Popen(sub_command)) |
250 | 271 | # Wait until finish |
251 | | - subscriber.communicate() |
252 | | - publisher.communicate() |
| 272 | + for subscriber in subscribers: |
| 273 | + subscriber.communicate() |
| 274 | + if subscriber.returncode != 0: |
| 275 | + exit(subscriber.returncode) |
253 | 276 |
|
254 | | - if subscriber.returncode != 0: |
255 | | - exit(subscriber.returncode) |
256 | | - elif publisher.returncode != 0: |
| 277 | + publisher.communicate() |
| 278 | + if publisher.returncode != 0: |
257 | 279 | exit(publisher.returncode) |
258 | 280 | else: |
259 | 281 | # Base of test command to execute |
|
0 commit comments