mirror of
				https://github.com/avatao-content/test-tutorial-framework
				synced 2025-11-04 05:32:55 +00:00 
			
		
		
		
	Merge pull request #2 from avatao-content/linearfsm
Add LinearFSM example to test project
This commit is contained in:
		@@ -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
 | 
					import sys
 | 
				
			||||||
 | 
					from functools import partial
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import zmq
 | 
					import zmq
 | 
				
			||||||
import tornado
 | 
					import tornado
 | 
				
			||||||
from tornado.ioloop import IOLoop
 | 
					from tornado.ioloop import IOLoop
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from sql_injection_fsm import SQLInjectionFSM
 | 
					from test_fsm import TestFSM
 | 
				
			||||||
from tfw.networking import TFWServer
 | 
					from tfw.networking import TFWServer
 | 
				
			||||||
from tfw.config import TFWENV
 | 
					from tfw.config import TFWENV
 | 
				
			||||||
from tfw.config.logs import logging
 | 
					from tfw.config.logs import logging
 | 
				
			||||||
@@ -12,7 +14,9 @@ LOG = logging.getLogger(__name__)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if __name__ == '__main__':
 | 
					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('Python version: %s', sys.version[:5])
 | 
				
			||||||
    LOG.debug('Tornado version: %s', tornado.version)
 | 
					    LOG.debug('Tornado version: %s', tornado.version)
 | 
				
			||||||
    LOG.debug('ZeroMQ version: %s', zmq.zmq_version())
 | 
					    LOG.debug('ZeroMQ version: %s', zmq.zmq_version())
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user