Adding support for coroutines for async ops through trampolines
[theonering] / hand_tests / sm.py
index f3c1e3b..2d3b614 100755 (executable)
@@ -3,6 +3,7 @@
 import threading
 import datetime
 import time
+import logging
 
 import gtk
 
@@ -31,6 +32,7 @@ def loop(state):
 
 
 def main():
+       logging.basicConfig(level=logging.DEBUG)
        startTime = datetime.datetime.now()
 
        state = [True]
@@ -40,12 +42,26 @@ def main():
        try:
                state_machine.StateMachine._IS_DAEMON = False
 
-               initial = _I(startTime)
-               print "Initial:", initial
                regular = _I(startTime)
                print "Regular:", regular
 
-               sm = state_machine.StateMachine([initial], [regular])
+               sm = state_machine.UpdateStateMachine([regular])
+               sm.set_state_strategy(
+                       state_machine.StateMachine.STATE_DND,
+                       state_machine.NopStateStrategy(),
+               )
+               sm.set_state_strategy(
+                       state_machine.StateMachine.STATE_IDLE,
+                       state_machine.ConstantStateStrategy(state_machine.to_milliseconds(seconds=30)),
+               )
+               sm.set_state_strategy(
+                       state_machine.StateMachine.STATE_ACTIVE,
+                       state_machine.GeometricStateStrategy(
+                               state_machine.to_milliseconds(seconds=3),
+                               state_machine.to_milliseconds(seconds=3),
+                               state_machine.to_milliseconds(seconds=20),
+                       ),
+               )
                print "Starting", datetime.datetime.now() - startTime
                sm.start()
                time.sleep(60.0) # seconds
@@ -62,7 +78,4 @@ def main():
 
 
 if __name__ == "__main__":
-       print state_machine.StateMachine._INITIAL_ACTIVE_PERIOD
-       print state_machine.StateMachine._FINAL_ACTIVE_PERIOD
-       print state_machine.StateMachine._IDLE_PERIOD
        main()