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]

Reply via email to