"""Author: Changbeom Choi (@cbchoi)Copyright (c) 2014-2020 Handong Global UniversityCopyright (c) 2021-2024 Hanbat National UniversityLicense: MIT. The full license text is available at:https://github.com/eventsim/pyjevsim/blob/main/LICENSESimple GP example using Behavior Models.PEG(process event generator) model generates events periodically.Buffer model stores and forwards Events generated by the PEG.MsgRecv handles the event messages generated by the PEG.Usage:From a terminal in the parent directory, run the following command. pytest -s ./tests/test_behavioral_model.py """importmathimporttimefrompyjevsim.definitionimport*frompyjevsim.system_executorimportSysExecutorfrom.model_msg_recvimportMsgRecvfrom.model_pegimportPEG
[docs]defexecute_simulation(t_resol=1,execution_mode=ExecutionType.V_TIME):# System Executor Initializationse=SysExecutor(t_resol,ex_mode=execution_mode,snapshot_manager=None)se.insert_input_port("start")# Model Creationgen=PEG("Gen")proc=MsgRecv("Proc")# Register Model to Enginese.register_entity(gen)se.register_entity(proc)# Set up relation among modelsse.coupling_relation(se,"start",gen,"start")se.coupling_relation(gen,"process",proc,"recv")# Inject External Event to Enginese.insert_external_event("start",None)for_inrange(3):se.simulate(1)
[docs]deftest_classical_devs(capsys):from.model_classic_pegimportPEGasCPEGse=SysExecutor(1,ex_mode=ExecutionType.V_TIME,snapshot_manager=None)se.insert_input_port("start")# Model Creationgen=CPEG("Gen")proc=MsgRecv("Proc")# Register Model to Enginese.register_entity(gen)se.register_entity(proc)# Set up relation among modelsse.coupling_relation(se,"start",gen,"start")se.coupling_relation(gen,"process",proc,"recv")# Inject External Event to Enginese.insert_external_event("start",None)for_inrange(3):se.simulate(1)captured=capsys.readouterr()assert"classic"incaptured.out