mirror of
https://github.com/avatao-content/test-tutorial-framework
synced 2024-11-12 19:47:18 +00:00
Merge pull request #2 from avatao-content/linearfsm
Add LinearFSM example to test project
This commit is contained in:
commit
31a385fced
@ -1,26 +0,0 @@
|
||||
from tfw.fsm_base import FSMBase
|
||||
|
||||
|
||||
class SQLInjectionFSM(FSMBase):
|
||||
states = [
|
||||
'start',
|
||||
'stripped_code',
|
||||
'sql',
|
||||
'commented_code',
|
||||
'sql_with_substitutions',
|
||||
'sql_output',
|
||||
'end',
|
||||
]
|
||||
transitions = [
|
||||
{'trigger': 'webide', 'source': '*', 'dest': 'stripped_code'}, # TODO: delet this
|
||||
{'trigger': 'webide', 'source': 'start', 'dest': 'stripped_code'},
|
||||
{'trigger': 'login', 'source': 'stripped_code', 'dest': 'sql'},
|
||||
{'trigger': 'logger', 'source': 'sql', 'dest': 'commented_code'},
|
||||
{'trigger': 'webide', 'source': 'commented_code', 'dest': 'sql_with_substitutions'},
|
||||
{'trigger': 'logger', 'source': 'sql_with_substitutions', 'dest': 'sql_output'},
|
||||
{'trigger': 'logger', 'source': 'sql_output', 'dest': 'end'},
|
||||
{'trigger': 'reset', 'source': 'end', 'dest': 'start'},
|
||||
]
|
||||
|
||||
def __init__(self):
|
||||
super().__init__('start')
|
26
solvable/src/test_fsm.py
Normal file
26
solvable/src/test_fsm.py
Normal file
@ -0,0 +1,26 @@
|
||||
from tfw import LinearFSM
|
||||
from tfw.networking import MessageSender
|
||||
|
||||
|
||||
class TestFSM(LinearFSM):
|
||||
def __init__(self, number_of_steps):
|
||||
super().__init__(number_of_steps)
|
||||
self.message_sender = MessageSender()
|
||||
|
||||
def on_enter_1(self, event_data):
|
||||
self.state_notify(1)
|
||||
|
||||
def on_enter_2(self, event_data):
|
||||
self.state_notify(2)
|
||||
|
||||
def on_enter_3(self, event_data):
|
||||
self.state_notify(3)
|
||||
|
||||
def on_enter_4(self, event_data):
|
||||
self.state_notify(4)
|
||||
|
||||
def on_enter_5(self, event_data):
|
||||
self.state_notify(5)
|
||||
|
||||
def state_notify(self, state):
|
||||
self.message_sender.send('TestFSM', 'Entered state {}!'.format(state))
|
@ -1,9 +1,11 @@
|
||||
import sys
|
||||
from functools import partial
|
||||
|
||||
import zmq
|
||||
import tornado
|
||||
from tornado.ioloop import IOLoop
|
||||
|
||||
from sql_injection_fsm import SQLInjectionFSM
|
||||
from test_fsm import TestFSM
|
||||
from tfw.networking import TFWServer
|
||||
from tfw.config import TFWENV
|
||||
from tfw.config.logs import logging
|
||||
@ -12,7 +14,9 @@ LOG = logging.getLogger(__name__)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
TFWServer(SQLInjectionFSM).listen(TFWENV.WEB_PORT)
|
||||
# pylint: disable=invalid-name
|
||||
FiveStepTestFSM = partial(TestFSM, 5)
|
||||
TFWServer(FiveStepTestFSM).listen(TFWENV.WEB_PORT)
|
||||
LOG.debug('Python version: %s', sys.version[:5])
|
||||
LOG.debug('Tornado version: %s', tornado.version)
|
||||
LOG.debug('ZeroMQ version: %s', zmq.zmq_version())
|
||||
|
Loading…
Reference in New Issue
Block a user