Massive reworking of messages to make debugging easier along with some code cleaning...
[theonering] / hand_tests / sm.py
1 #!/usr/bin/env python
2
3 import threading
4 import datetime
5 import time
6 import logging
7
8 import gtk
9
10 import sys
11 sys.path.insert(0,"../src")
12 import gvoice.state_machine as state_machine
13
14
15 class _I(object):
16
17         def __init__(self, startTime):
18                 self._startTime = startTime
19
20         def update(self, force = False):
21                 print "%s\t%r: force=%r" % (datetime.datetime.now() - self._startTime, self, force)
22
23
24 def loop(state):
25
26         def actual():
27                 while state[0]:
28                         gtk.main_iteration(block=False)
29                         time.sleep(0.1)
30
31         return actual
32
33
34 def main():
35         logging.basicConfig(level=logging.DEBUG)
36         startTime = datetime.datetime.now()
37
38         state = [True]
39         mainLoop = threading.Thread(target=loop(state))
40         mainLoop.setDaemon(False)
41         mainLoop.start()
42         try:
43                 state_machine.StateMachine._IS_DAEMON = False
44
45                 initial = _I(startTime)
46                 print "Initial:", initial
47                 regular = _I(startTime)
48                 print "Regular:", regular
49
50                 sm = state_machine.StateMachine([initial], [regular])
51                 print "Starting", datetime.datetime.now() - startTime
52                 sm.start()
53                 time.sleep(60.0) # seconds
54                 print "Reseting timers", datetime.datetime.now() - startTime
55                 sm.reset_timers()
56                 time.sleep(60.0) # seconds
57                 print "Switching to IDLE", datetime.datetime.now() - startTime
58                 sm.set_state(state_machine.StateMachine.STATE_IDLE)
59                 time.sleep(10.0) # seconds
60                 print "Stopping", datetime.datetime.now() - startTime
61                 sm.stop()
62         finally:
63                 state[0] = False
64
65
66 if __name__ == "__main__":
67         print state_machine.StateMachine._INITIAL_ACTIVE_PERIOD
68         print state_machine.StateMachine._FINAL_ACTIVE_PERIOD
69         print state_machine.StateMachine._IDLE_PERIOD
70         main()