NO-JIRA: Fix build and test errors introduced by: c++: Speed up recurring_timer example.
Make the test driver work for python 2.6. Fix the int/float conversion error on Visual Studio. Correct the timing logic so it runs more reliably. Project: http://git-wip-us.apache.org/repos/asf/qpid-proton/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-proton/commit/c7a56526 Tree: http://git-wip-us.apache.org/repos/asf/qpid-proton/tree/c7a56526 Diff: http://git-wip-us.apache.org/repos/asf/qpid-proton/diff/c7a56526 Branch: refs/heads/go1 Commit: c7a56526f18fd6922a909169b4d52dd541299b49 Parents: 1b9223b Author: Alan Conway <[email protected]> Authored: Thu Nov 12 15:36:15 2015 -0500 Committer: Alan Conway <[email protected]> Committed: Thu Nov 12 15:43:23 2015 -0500 ---------------------------------------------------------------------- examples/cpp/example_test.py | 14 ++++---------- examples/cpp/recurring_timer.cpp | 21 ++++++++++----------- 2 files changed, 14 insertions(+), 21 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/c7a56526/examples/cpp/example_test.py ---------------------------------------------------------------------- diff --git a/examples/cpp/example_test.py b/examples/cpp/example_test.py index bc552ab..51b215e 100644 --- a/examples/cpp/example_test.py +++ b/examples/cpp/example_test.py @@ -224,22 +224,16 @@ map{string(k1):int(42), symbol(k2):boolean(false)} self.assertEqual(expect, execute("encode_decode")) def test_recurring_timer(self): - # Disable valgrind, this test is time-sensitive. - env = {k: v for k,v in os.environ.iteritems() if k != "VALGRIND"} - env, os.environ = os.environ, env + env = copy(os.environ) # Disable valgrind, this test is time-sensitive. + if "VALGRIND" in os.environ: + del os.environ["VALGRIND"] try: expect="""Tick... Tick... Tock... -Tick... -Tock... -Tick... -Tock... -Tick... -Tock... """ self.maxDiff = None - self.assertEqual(expect, execute("recurring_timer", "-t", ".01", "-k", ".001")) + self.assertEqual(expect, execute("recurring_timer", "-t", ".05", "-k", ".01")) finally: os.environ = env # Restore environment http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/c7a56526/examples/cpp/recurring_timer.cpp ---------------------------------------------------------------------- diff --git a/examples/cpp/recurring_timer.cpp b/examples/cpp/recurring_timer.cpp index 37cbfed..7d4b508 100644 --- a/examples/cpp/recurring_timer.cpp +++ b/examples/cpp/recurring_timer.cpp @@ -58,23 +58,22 @@ class recurring : public proton::messaging_handler { } void on_start(proton::event &e) { - if (remaining_msecs <= 0) - return; - proton::task& first_tock = ticktock(e); - // Show a cancel operation. - cancel_task = &first_tock; - e.container().schedule(tick_ms); + // Demonstrate cancel(), we will cancel the first tock on the first recurring::on_timer_task + cancel_task = &ticktock(e); + e.container().schedule(0); } void on_timer_task(proton::event &e) { if (cancel_task) { cancel_task->cancel(); cancel_task = 0; - } - remaining_msecs -= tick_ms * 2; - if (remaining_msecs > 0) { - ticktock(e); e.container().schedule(tick_ms * 4); + } else { + remaining_msecs -= tick_ms * 4; + if (remaining_msecs > 0) { + ticktock(e); + e.container().schedule(tick_ms * 4); + } } } }; @@ -88,7 +87,7 @@ int main(int argc, char **argv) { opts.add_value(tick, 'k', "tick time", "tick time as fraction of second", "TICK"); try { opts.parse(); - recurring recurring_handler(running_time * 1000, tick * 1000); + recurring recurring_handler(int(running_time * 1000), int(tick * 1000)); proton::container(recurring_handler).run(); return 0; } catch (const bad_option& e) { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
