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)
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')
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)
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)
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))
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))
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))
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))
def clicked_event(self, obj): event = fsm.Event('clicked') event.obj_name = obj.props.name self.send(event)
def delete_event(self, obj, gdk): self.send(fsm.Event('delete'))
def on_entry(self): view.sm.send(fsm.Event('main'))
def on_clicked(self, event): if event.obj_name == 'Add new device': self.sm.client.send(fsm.Event('v_add_new_device'))
def on_delete(self, event): self.sm.client.send(fsm.Event('view_delete'))
def test_event_immutability(self): event = fsm.Event('event') self.assertRaises( AttributeError, test_events.test_event_immutability, event)
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)
def test_event_arg_name(self): name = 'my_name' my_event = fsm.Event(name) self.assertEqual(name, my_event.name)
def on_entry(self): view.sm.send(fsm.Event('terminate')) self.sm.do_terminate()
def on_entry(self): event = fsm.Event('set_text') event.text = 'Checking server connection...' view.sm.send(event) fsm.After(0.3, 'done_stage3')
def on_done_create_exc_window(self, event): self.sm.client.send(fsm.Event('done_exception')) return ExceptionState
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')
def on_exit(self): view.sm.send(fsm.Event('purge'))
def on_entry(self): view.sm.send(fsm.Event('splash'))
def connect(self): self.sm.send(fsm.Event('connect'))
def on_entry(self): event = fsm.Event('set_text') event.text = 'Validating configuration...' view.sm.send(event) fsm.After(0.3, 'done_stage2')