mirror of
				https://github.com/avatao-content/test-tutorial-framework
				synced 2025-11-04 02:52:55 +00:00 
			
		
		
		
	Comply new package structure
This commit is contained in:
		@@ -1,15 +1,15 @@
 | 
			
		||||
import logging
 | 
			
		||||
from ast import literal_eval
 | 
			
		||||
 | 
			
		||||
from tfw.components import MessageSender
 | 
			
		||||
from tfw.builtins import TerminalCommandsEventHandler
 | 
			
		||||
from tfw.components.frontend import MessageSender
 | 
			
		||||
from tfw.components.terminal import TerminalCommandsHandler
 | 
			
		||||
from tfw.main import TFWUplinkConnector
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
LOG = logging.getLogger(__name__)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class CenatorEventHandler:
 | 
			
		||||
class CenatorHandler:
 | 
			
		||||
    keys = ['history.bash']
 | 
			
		||||
 | 
			
		||||
    def handle_event(self, message, server_connector):  # pylint: disable=no-self-use
 | 
			
		||||
@@ -18,7 +18,7 @@ class CenatorEventHandler:
 | 
			
		||||
        MessageSender(server_connector).send('JOHN CENA', f'You\'ve executed "{command}"')
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestCommandsEventHandler(TerminalCommandsEventHandler):
 | 
			
		||||
class TestCommandsHandler(TerminalCommandsHandler):
 | 
			
		||||
    # pylint: disable=unused-argument,attribute-defined-outside-init,no-self-use
 | 
			
		||||
    def command_sendmessage(self, *args):
 | 
			
		||||
        if not args:
 | 
			
		||||
@@ -34,14 +34,13 @@ class TestCommandsEventHandler(TerminalCommandsEventHandler):
 | 
			
		||||
            TFWUplinkConnector().send_message(literal_eval(args[0]))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class MessageFSMStepsEventHandler:
 | 
			
		||||
    def handle_event(self, message, server_connector):  # pylint: disable=no-self-use
 | 
			
		||||
        """
 | 
			
		||||
        When the FSM steps this method is invoked.
 | 
			
		||||
        Receives a 'data' field from an fsm_update message as kwargs.
 | 
			
		||||
        """
 | 
			
		||||
        MessageSender(server_connector).send(
 | 
			
		||||
            'FSM info',
 | 
			
		||||
            f'FSM has stepped from state "{message["last_event"]["from_state"]}" '
 | 
			
		||||
            f'to state "{message["current_state"]}" in response to trigger "{message["last_event"]["trigger"]}"'
 | 
			
		||||
        )
 | 
			
		||||
def messageFSMStepsHandler(message, server_connector):
 | 
			
		||||
    """
 | 
			
		||||
    When the FSM steps this method is invoked.
 | 
			
		||||
    Receives a 'data' field from an fsm_update message as kwargs.
 | 
			
		||||
    """
 | 
			
		||||
    MessageSender(server_connector).send(
 | 
			
		||||
        'FSM info',
 | 
			
		||||
        f'FSM has stepped from state "{message["last_event"]["from_state"]}" '
 | 
			
		||||
        f'to state "{message["current_state"]}" in response to trigger "{message["last_event"]["trigger"]}"'
 | 
			
		||||
    )
 | 
			
		||||
@@ -6,16 +6,17 @@ from tornado.ioloop import IOLoop
 | 
			
		||||
 | 
			
		||||
from tfw.fsm import YamlFSM
 | 
			
		||||
from tfw.event_handlers import FSMAwareEventHandler
 | 
			
		||||
from tfw.builtins import IdeEventHandler, TerminalEventHandler, FrontendEventHandler
 | 
			
		||||
from tfw.builtins import LogMonitoringEventHandler, ProcessManagingEventHandler
 | 
			
		||||
from tfw.builtins import DirectorySnapshottingEventHandler, FSMManagingEventHandler
 | 
			
		||||
from tfw.components.ide import IdeHandler
 | 
			
		||||
from tfw.components.terminal import TerminalHandler
 | 
			
		||||
from tfw.components.frontend import FrontendHandler
 | 
			
		||||
from tfw.components.process_management import ProcessHandler, ProcessLogHandler
 | 
			
		||||
from tfw.components.snapshots import SnapshotHandler
 | 
			
		||||
from tfw.components.fsm import FSMHandler
 | 
			
		||||
from tfw.main import EventHandlerFactory, setup_signal_handlers
 | 
			
		||||
from tfw.logging import Log, Logger, LogFormatter, VerboseLogFormatter
 | 
			
		||||
from tfw.config import TFWENV
 | 
			
		||||
from tao.config import TAOENV
 | 
			
		||||
from tfw.config import TFWENV, TAOENV
 | 
			
		||||
 | 
			
		||||
from custom_event_handlers import MessageFSMStepsEventHandler
 | 
			
		||||
from custom_event_handlers import CenatorEventHandler, TestCommandsEventHandler
 | 
			
		||||
from custom_handlers import CenatorHandler, TestCommandsHandler, messageFSMStepsHandler
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
LOG = logging.getLogger(__name__)
 | 
			
		||||
@@ -31,7 +32,7 @@ def main():
 | 
			
		||||
    eh_factory = EventHandlerFactory()
 | 
			
		||||
    # TFW builtin EventHandlers (required for their respective functionalities)
 | 
			
		||||
    # TFW FSM
 | 
			
		||||
    fsm_eh = eh_factory.build(FSMManagingEventHandler(
 | 
			
		||||
    fsm_eh = eh_factory.build(FSMHandler(
 | 
			
		||||
        fsm_type=partial(
 | 
			
		||||
            YamlFSM,
 | 
			
		||||
            'test_fsm.yml',
 | 
			
		||||
@@ -39,42 +40,50 @@ def main():
 | 
			
		||||
        )
 | 
			
		||||
    ))
 | 
			
		||||
    # Web IDE backend
 | 
			
		||||
    ide_eh = eh_factory.build(IdeEventHandler(
 | 
			
		||||
    ide_eh = eh_factory.build(IdeHandler(
 | 
			
		||||
        allowed_directories=[TFWENV.IDE_WD, TFWENV.WEBSERVICE_DIR],
 | 
			
		||||
        directory=TFWENV.IDE_WD,
 | 
			
		||||
        exclude=['*.pyc']
 | 
			
		||||
    ))
 | 
			
		||||
    # Web shell backend
 | 
			
		||||
    terminal_eh = eh_factory.build(TerminalEventHandler())
 | 
			
		||||
    terminal_eh = eh_factory.build(TerminalHandler(
 | 
			
		||||
        port=TFWENV.TERMINADO_PORT,
 | 
			
		||||
        user=TAOENV.USER,
 | 
			
		||||
        workind_directory=TFWENV.TERMINADO_WD,
 | 
			
		||||
        histfile=TFWENV.HISTFILE
 | 
			
		||||
    ))
 | 
			
		||||
    # Handles 'deploy' button clicks
 | 
			
		||||
    processmanager_eh = eh_factory.build(ProcessManagingEventHandler(
 | 
			
		||||
        log_tail=2000
 | 
			
		||||
    processmanager_eh = eh_factory.build(ProcessHandler(
 | 
			
		||||
        supervisor_uri=TFWENV.SUPERVISOR_HTTP_URI,
 | 
			
		||||
        log_tail=2000,
 | 
			
		||||
    ))
 | 
			
		||||
    # Sends live logs of webservice process to frontend
 | 
			
		||||
    logmonitor_eh = eh_factory.build(LogMonitoringEventHandler(
 | 
			
		||||
    logmonitor_eh = eh_factory.build(ProcessLogHandler(
 | 
			
		||||
        process_name='webservice',
 | 
			
		||||
        supervisor_uri=TFWENV.SUPERVISOR_HTTP_URI,
 | 
			
		||||
        log_tail=2000
 | 
			
		||||
    ))
 | 
			
		||||
    # Manages filesystem snapshots of directories
 | 
			
		||||
    snapshot_eh = eh_factory.build(DirectorySnapshottingEventHandler(
 | 
			
		||||
    snapshot_eh = eh_factory.build(SnapshotHandler(
 | 
			
		||||
        directories=[
 | 
			
		||||
            TFWENV.IDE_WD,
 | 
			
		||||
            TFWENV.WEBSERVICE_DIR
 | 
			
		||||
        ]
 | 
			
		||||
        ],
 | 
			
		||||
        snapshots_dir=TFWENV.SNAPSHOTS_DIR
 | 
			
		||||
    ))
 | 
			
		||||
    # Proxies frontend API calls to frontend
 | 
			
		||||
    frontend_eh = eh_factory.build(FrontendEventHandler())
 | 
			
		||||
    frontend_eh = eh_factory.build(FrontendHandler())
 | 
			
		||||
 | 
			
		||||
    # Replace these with your custom event handlers
 | 
			
		||||
    # Echoes executed commands to messages
 | 
			
		||||
    cenator_eh = eh_factory.build(CenatorEventHandler())
 | 
			
		||||
    cenator_eh = eh_factory.build(CenatorHandler())
 | 
			
		||||
    # Echoes FSM steps
 | 
			
		||||
    message_fsm_steps_eh = eh_factory.build(
 | 
			
		||||
        MessageFSMStepsEventHandler(),
 | 
			
		||||
        messageFSMStepsHandler,
 | 
			
		||||
        event_handler_type=FSMAwareEventHandler
 | 
			
		||||
    )
 | 
			
		||||
    # Catches special commands
 | 
			
		||||
    commands_eh = eh_factory.build(TestCommandsEventHandler(
 | 
			
		||||
    commands_eh = eh_factory.build(TestCommandsHandler(
 | 
			
		||||
        bashrc=f'/home/{TAOENV.USER}/.bashrc'
 | 
			
		||||
    ))
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ from sys import stderr
 | 
			
		||||
 | 
			
		||||
from tornado.ioloop import IOLoop
 | 
			
		||||
 | 
			
		||||
from tfw.builtins import PipeIOEventHandler
 | 
			
		||||
from tfw.components.pipe_io import PipeIOHandler
 | 
			
		||||
from tfw.config import TFWENV
 | 
			
		||||
from tfw.logging import Log, Logger, LogFormatter, VerboseLogFormatter
 | 
			
		||||
from tfw.main import EventHandlerFactory, setup_signal_handlers
 | 
			
		||||
@@ -21,7 +21,7 @@ def main():
 | 
			
		||||
 | 
			
		||||
    eh_factory = EventHandlerFactory()
 | 
			
		||||
 | 
			
		||||
    json_pipe_eh = eh_factory.build(PipeIOEventHandler(
 | 
			
		||||
    json_pipe_eh = eh_factory.build(PipeIOHandler(
 | 
			
		||||
        '/tmp/tfw_send',
 | 
			
		||||
        '/tmp/tfw_recv'
 | 
			
		||||
    ))
 | 
			
		||||
 
 | 
			
		||||
@@ -3,8 +3,8 @@
 | 
			
		||||
from os.path import exists
 | 
			
		||||
 | 
			
		||||
from tfw.fsm import LinearFSM
 | 
			
		||||
from tfw.components import MessageSender
 | 
			
		||||
from tfw.builtins import TFWServerUplinkConnector
 | 
			
		||||
from tfw.components.frontend import MessageSender
 | 
			
		||||
from tfw.main import TFWUplinkConnector
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class TestFSM(LinearFSM):
 | 
			
		||||
@@ -12,7 +12,7 @@ class TestFSM(LinearFSM):
 | 
			
		||||
 | 
			
		||||
    def __init__(self):
 | 
			
		||||
        super().__init__(6)
 | 
			
		||||
        self.uplink = TFWServerUplinkConnector()
 | 
			
		||||
        self.uplink = TFWUplinkConnector()
 | 
			
		||||
        self.message_sender = MessageSender(self.uplink)
 | 
			
		||||
        self.subscribe_predicate('step_3', self.step_3_allowed)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user