def pytest_funcarg__sim(request): if request.param == 'default': return Simulation.Simulation() elif request.param == 'step': return SimulationStep.SimulationStep() elif request.param == 'trace': return SimulationTrace.SimulationTrace() elif request.param == 'rt': return SimulationRT.SimulationRT() elif request.param.startswith('global'): if request.param.endswith('default'): Globals.sim = Simulation.Simulation() elif request.param.endswith('step'): Globals.sim = SimulationStep.SimulationStep() elif request.param.endswith('trace'): Globals.sim = SimulationTrace.SimulationTrace() elif request.param.endswith('rt'): Globals.sim = SimulationRT.SimulationRT() return Globals.sim
if __name__ == "__main__": import random as r r.seed(1234567) class Test(Process): def run(self): while self.sim.now() < until: yield hold, self, r.uniform(1, 10) class Waiter(Process): def run(self, evt): def gt30(): return self.sim.now() > 30 yield waituntil, self, gt30 print("now() is past 30") self.sim.stopSimulation() until = 100 s = SimulationTrace() s.initialize() evt = SimEvent(sim=s) t = Test("Test1", sim=s) s.activate(t, t.run()) t2 = Test("Test2", sim=s) s.activate(t2, t2.run()) w = Waiter("Waiter", sim=s) s.activate(w, w.run(evt=evt)) stepper(whichsim=s)