Observing a failure mode of the "satellite preemptive" test. Application keeps getting polled, and the following happens:
1) check whether the next queued packet should be repeated now. Not ready, so set the wait time to repeat time.
2) check whether the next queued packet should be repeated now. ready, so:
parse the packet, copy the data frame that needs repeating to the repeated stream data queue.
nothing else to repeat in the packet, so decide to remove one packet worth of pacing tokens
continue in line, but there are not enough pacing token, so don't send anything.
3) wait for the pacing tokens to arrive, and repeat step 2
These means 1 or 2 round of simulation per packet waiting in the queue, without ever sending anything. This actually caused the test to fail, because there were many packets blocked in the queue.
The obvious fix to just not consume pacing tokens when not repeating packets breaks other tests.
Observing a failure mode of the "satellite preemptive" test. Application keeps getting polled, and the following happens:
1) check whether the next queued packet should be repeated now. Not ready, so set the wait time to repeat time.
2) check whether the next queued packet should be repeated now. ready, so:
3) wait for the pacing tokens to arrive, and repeat step 2
These means 1 or 2 round of simulation per packet waiting in the queue, without ever sending anything. This actually caused the test to fail, because there were many packets blocked in the queue.
The obvious fix to just not consume pacing tokens when not repeating packets breaks other tests.