def test_rt_sync(log): """Test resetting the internal wall-clock reference time.""" env = RealtimeEnvironment(factor=0.05) env.process(process(env, log, 0.01)) time.sleep(0.06) # Simulate massiv workload :-) env.sync() env.run(3)
def test_rt_slow_sim_no_error(log): """Test ignoring slow simulations.""" env = RealtimeEnvironment(factor=0.05, strict=False) env.process(process(env, log, 0.1, 1)) start = monotonic() env.run(2) duration = monotonic() - start assert check_duration(duration, 2 * 0.1) assert log == [1]
def test_rt(log, factor): """Basic tests for run().""" env = RealtimeEnvironment(factor=factor) env.process(process(env, log, 0.01, 1)) env.process(process(env, log, 0.02, 1)) start = monotonic() env.run(2) duration = monotonic() - start assert check_duration(duration, 2 * factor) assert log == [1, 1]
def test_rt_multiple_call(log): """Test multiple calls to run().""" env = RealtimeEnvironment(factor=0.05) start = monotonic() env.process(process(env, log, 0.01, 2)) env.process(process(env, log, 0.01, 3)) env.run(5) duration = monotonic() - start # assert almost_equal(duration, 0.2) assert check_duration(duration, 5 * 0.05) assert log == [2, 3, 4] env.run(12) duration = monotonic() - start assert check_duration(duration, 12 * 0.05) assert log == [2, 3, 4, 6, 6, 8, 9, 10]
task_instance = task.popleft() finished = env.process(cpu.run_task_instance(task_instance)) yield cpu.free if len(task): env.process(schedule(env, task, cpu)) if __name__ == "__main__": from simpy.rt import RealtimeEnvironment from simulations.job import Task from simulations.config import TaskConfig from collections import deque from simulations.config import LOG_BASE # print(LOG_BASE) cpu_config = CPUConfig(speed=1, frequency=2.3e9, cache=4e6, power_consumption=65, runtime=None) env = RealtimeEnvironment(factor=0.01, strict=False) cpu = CPU(cpu_config, env) task = deque([]) taskconfigs = [] for i in range(10): taskconfigs.append([i, 3000000, 20, None, 70, 10000, 10000, None]) taskconfig = TaskConfig(1, 0, taskconfigs) onetask = Task(env, taskconfig) env.process(schedule(env, deque(onetask.task_instances), cpu)) env.run()