Esempio n. 1
0
 def on_check_connection(self, event):
     if model.db.instance.status == 'fatal':
         raise Exception('Failed to connect to server: {}'.format(
             model.db.instance.message))
     elif model.db.instance.status == 'connecting':
         event = fsm.Event('set_status')
         event.text = 'Waiting for connection...'
         view.sm.send(event)
         return ActivateServerWait
     elif model.db.instance.status == 'connected':
         event = fsm.Event('set_status')
         event.text = 'Connected'
         view.sm.send(event)
Esempio n. 2
0
 def on_entry(self):
     event = fsm.Event('set_status')
     event.text = 'Connecting to server ({})...'.format(
         model.db.instance.ip_address)
     view.sm.send(event)
     model.db.instance.connect()
     fsm.After(1.0, 'check_connection')
Esempio n. 3
0
    def __call__(self, function):
        event = fsm.Event('done_{}'.format(function.__name__))

        def wrapper(sm):
            function(sm)
            sm.send(event)

        GLib.idle_add(wrapper, self.sm)
Esempio n. 4
0
 def on_exception(self, exc, exc_state, exc_event, msg):
     self.logger.exception(
         'Exception in \'{}\' occurred at \'{}\' on event \'{}\''.format(
             self.name, exc_state.name, exc_event.name))
     event = fsm.Event('exception')
     event.exc = exc
     event.exc_state = exc_state
     event.exc_event = exc_event
     self.send(event)
Esempio n. 5
0
 def test_fsm_missing_transitions(self):
     expected = [
         'StateA1:i',
         'StateA1:x',
         'StateA2:e',
         'StateA2:i'
         ]
     sm = test_simplefsm.SimpleFSM()
     event = fsm.Event('a')
     sm.send(event)
     event = fsm.Event('b')
     sm.send(event)
     sm.do_terminate()
     sm.wait()
     retval = sm.out_seq
     self.assertEqual(
         retval,
         expected,
         '{} is not as expected {}'.format(retval, expected))
Esempio n. 6
0
 def test_hsm_transitions(self):
     event_ids = (
         'a',
         'a',
         'a',
         'a',
         'a',
         'a',
         'a')
     expected = (
         'StateA1:i',
         'StateA1:x',
         'StateA2:e',
         'StateA2:i',
         'StateA2:x',
         'StateA3:e',
         'StateA3:i',
         'StateA3:x',
         'StateA4:e',
         'StateA4:i',
         'StateA4:x',
         'StateA5:e',
         'StateA5:i',
         'StateA5:x',
         'StateA6:e',
         'StateA6:i',
         'StateA6:x',
         'StateA7:e',
         'StateA7:i',
         'StateA7:x',
         'StateA1:e',
         'StateA1:i'
         )
     sm = test_simplefsm.SimpleFSM()
     for event_id in event_ids:
         sm.send(fsm.Event(event_id))
     sm.do_terminate()
     sm.wait()
     retval = sm.out_seq
     self.assertEqual(
         tuple(retval),
         expected,
         '{} is not as expected {}'.format(retval, expected))
Esempio n. 7
0
 def test_fsm_simple_transitions(self):
     expected = [
         'StateA1:i',
         'StateA1:x',
         'StateA2:e',
         'StateA2:i',
         'StateA2:x',
         'StateA3:e',
         'StateA3:i',
         'StateA3:x',
         'StateA4:e',
         'StateA4:i',
         'StateA4:x',
         'StateA5:e',
         'StateA5:i',
         'StateA5:x',
         'StateA6:e',
         'StateA6:i',
         'StateA6:x',
         'StateA7:e',
         'StateA7:i',
         'StateA7:x',
         'StateA1:e',
         'StateA1:i'
         ]
     sm = test_simplefsm.SimpleFSM()
     event = fsm.Event('a')
     for _ in range(7):
         sm.send(event)
     sm.do_terminate()
     sm.wait()
     retval = sm.out_seq
     self.assertEqual(
         retval,
         expected,
         '{} is not as expected {}'.format(retval, expected))
Esempio n. 8
0
 def test_hsm_transitions(self):
     event_ids = (
         'a',
         'a',
         'a',
         'a',
         'a',
         'a',
         'a')
     expected = (
         'StateA:i',
         'StateA:a',
         'StateA:i',
         'StateA:a',
         'StateA:i',
         'StateA:a',
         'StateA:i',
         'StateA:a',
         'StateA:i',
         'StateA:a',
         'StateA:i',
         'StateA:a',
         'StateA:i',
         'StateA:a',
         'StateA:i'
         )
     sm = SimpleHSM()
     for event_id in event_ids:
         sm.send(fsm.Event(event_id))
     sm.do_terminate()
     sm.wait()
     retval = sm.out_seq
     self.assertEqual(
         tuple(retval),
         expected,
         '{} is not as expected {}'.format(retval, expected))
Esempio n. 9
0
 def clicked_event(self, obj):
     event = fsm.Event('clicked')
     event.obj_name = obj.props.name
     self.send(event)
Esempio n. 10
0
 def delete_event(self, obj, gdk):
     self.send(fsm.Event('delete'))
Esempio n. 11
0
 def on_entry(self):
     view.sm.send(fsm.Event('main'))
Esempio n. 12
0
 def on_clicked(self, event):
     if event.obj_name == 'Add new device':
         self.sm.client.send(fsm.Event('v_add_new_device'))
Esempio n. 13
0
 def on_delete(self, event):
     self.sm.client.send(fsm.Event('view_delete'))
Esempio n. 14
0
 def test_event_immutability(self):
     event = fsm.Event('event')
     self.assertRaises(
             AttributeError,
             test_events.test_event_immutability, event)
Esempio n. 15
0
 def test_event_data_set(self):
     event = fsm.Event('event')
     data = 'some data'
     self.assertEqual(
         data,
         test_events.test_event_data_set(event, data).data)
Esempio n. 16
0
 def test_event_arg_name(self):
     name = 'my_name'
     my_event = fsm.Event(name)
     self.assertEqual(name, my_event.name)
Esempio n. 17
0
 def on_entry(self):
     view.sm.send(fsm.Event('terminate'))
     self.sm.do_terminate()
Esempio n. 18
0
 def on_entry(self):
     event = fsm.Event('set_text')
     event.text = 'Checking server connection...'
     view.sm.send(event)
     fsm.After(0.3, 'done_stage3')
Esempio n. 19
0
 def on_done_create_exc_window(self, event):
     self.sm.client.send(fsm.Event('done_exception'))
     return ExceptionState
Esempio n. 20
0
 def on_entry(self):
     event = fsm.Event('show_splash')
     event.title = 'Device manager'
     event.text = 'Loading configuration...'
     view.sm.send(event)
     fsm.After(0.3, 'done_stage1')
Esempio n. 21
0
 def on_exit(self):
     view.sm.send(fsm.Event('purge'))
Esempio n. 22
0
 def on_entry(self):
     view.sm.send(fsm.Event('splash'))
Esempio n. 23
0
 def connect(self):
     self.sm.send(fsm.Event('connect'))
Esempio n. 24
0
 def on_entry(self):
     event = fsm.Event('set_text')
     event.text = 'Validating configuration...'
     view.sm.send(event)
     fsm.After(0.3, 'done_stage2')