BFD tests have the code like the following.
# wait for a while to stablize everything.
for i in `seq 0 9`; do ovs-appctl time/warp 500; done
They no longer work as intended because BFD code is run in a
separate monitor thread these days. The loop merely "warp"
the time by 5000. The monitor thread should have been woken
at least once, but it's far from "wait for a while to stablize
everything."
This commit mitigates the problem by sleeping a little in the
appctl handler. This is not ideal but makes BFD tests success
on my environment.
Signed-off-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
Signed-off-by: Ben Pfaff <blp@nicira.com>
timespec_add(&monotonic_clock.warp, &monotonic_clock.warp, &ts);
ovs_mutex_unlock(&monotonic_clock.mutex);
seq_change(timewarp_seq);
+ poll(NULL, 0, 10); /* give threads (eg. monitor) some chances to run */
unixctl_command_reply(conn, "warped");
}