def test_run_empty_no_end_time(self): simulator.ready() self.assertEqual(simulator.now(), 0) self.assertFalse(simulator.is_finished()) simulator.run() self.assertEqual(simulator.now(), 0) self.assertTrue(simulator.is_finished()) simulator.reset()
def receive(self, message): if message["dst_node_id"] == self.__node_id: print( "t=%d: node %d received message with content '%s'" % (simulator.now(), self.__node_id, message["content"])) else: (next_hop, travel_duration ) = self.__forward_table[message["dst_node_id"]] simulator.schedule(travel_duration, self.__all_nodes[next_hop].receive, message) self.__forward_counter += 1 print("t=%d: node %d forward message %s to node %d" % (simulator.now(), self.__node_id, str(message), next_hop))
def test_end_in_event(self): self.test_end_in_event_counter = 22 def x(val): self.test_end_in_event_counter += val def y(): simulator.end(5) simulator.ready() simulator.schedule(60, x, 22) simulator.schedule(70, y) simulator.schedule(70, x, 3) simulator.schedule(71, y) simulator.schedule(74, x, 5) simulator.schedule(75, x, 22) simulator.schedule(76, x, 22) simulator.schedule(888, x, 22) simulator.schedule(999, x, 22) simulator.schedule(8953, x, 22) simulator.end(1000) simulator.run() self.assertEqual(self.test_end_in_event_counter, 22 + 22 + 3 + 5) self.assertEqual(simulator.now(), 75) self.assertTrue(simulator.is_finished()) self.assertEqual(simulator.event_heap_size(), 5) simulator.reset()
def receive_stick_and_run(self): print("Athlete %d receives stick and starts run at t=%.3gs" % (self.idx, simulator.now() / 1e9)) if self.idx != len(self.athletes) - 1: simulator.schedule( int(100.0 / self.speed_m_per_s * 1e9), self.athletes[self.idx + 1].receive_stick_and_run) else: simulator.schedule(int(100.0 / self.speed_m_per_s * 1e9), relay_finished)
def test_end_in_same_event(self): self.test_end_in_same_event_counter = 0 def x(): self.test_end_in_same_event_counter += 100 def y(): self.test_end_in_same_event_counter += 3 def z(): self.test_end_in_same_event_counter += 5 self.assertFalse(simulator.is_init()) self.assertFalse(simulator.is_ready()) self.assertTrue(simulator.is_running()) self.assertFalse(simulator.is_finished()) simulator.end() # End after this event has been executed self.assertFalse(simulator.is_init()) self.assertFalse(simulator.is_ready()) self.assertTrue(simulator.is_running()) self.assertFalse(simulator.is_finished()) simulator.ready() simulator.schedule_with_priority(70, 5, x) simulator.schedule_with_priority(70, 5, x) simulator.schedule_with_priority(70, 20, y) simulator.schedule_with_priority(70, 10, z) simulator.run() self.assertEqual(self.test_end_in_same_event_counter, 100 + 100 + 5) self.assertEqual(simulator.now(), 70) self.assertTrue(simulator.is_finished()) self.assertEqual(simulator.event_heap_size(), 1) simulator.reset() self.assertTrue(simulator.is_init()) self.assertFalse(simulator.is_ready()) self.assertFalse(simulator.is_running()) self.assertFalse(simulator.is_finished()) self.assertEqual(simulator.now(), 0) self.assertEqual(simulator.event_heap_size(), 0)
def test_end_one(self): self.test_end_one_counter = 0 def x(val): self.test_end_one_counter += val simulator.ready() simulator.schedule(10, x, 57) simulator.end(100) simulator.run() self.assertEqual(self.test_end_one_counter, 57) self.assertEqual(simulator.now(), 100) self.assertTrue(simulator.is_finished()) simulator.reset()
def test_end_override(self): self.test_end_two_override_counter = 22 def x(val): self.test_end_two_override_counter += val simulator.ready() simulator.schedule(57, x, 67) simulator.end(100) simulator.end(57) simulator.end(100) simulator.run() self.assertEqual(self.test_end_two_override_counter, 22) self.assertEqual(simulator.now(), 57) self.assertTrue(simulator.is_finished()) simulator.reset()
def test_normal_just(self): self.test_normal_counter = 0 def x(val): self.test_normal_counter += val simulator.ready() simulator.schedule(100, x, 57) simulator.schedule(100, x, 473) simulator.schedule(199, x, 88) simulator.end(200) simulator.run() self.assertEqual(self.test_normal_counter, 57 + 473 + 88) self.assertEqual(simulator.now(), 200) self.assertTrue(simulator.is_finished()) self.assertEqual(simulator.event_heap_size(), 0) simulator.reset() self.assertEqual(simulator.event_heap_size(), 0)
def test_normal_not(self): self.test_normal_counter = 0 def x(val): self.test_normal_counter -= val simulator.ready() simulator.schedule(100, x, 57) simulator.schedule(153, x, 245) simulator.schedule(199, x, 88) simulator.end(156) simulator.run() self.assertEqual(self.test_normal_counter, - 57 - 245) self.assertEqual(simulator.now(), 156) self.assertTrue(simulator.is_finished()) self.assertEqual(simulator.event_heap_size(), 1) simulator.reset() self.assertEqual(simulator.event_heap_size(), 0)
def test_end_within_event_while_running(self): def something(value): print("t=" + str(simulator.now()) + ": something() with value: " + str(value)) def we_are_done(value): print("t=" + str(simulator.now()) + ": we_are_done() with value: " + str(value)) simulator.end() simulator.ready() simulator.schedule(100, something, "ABC") simulator.schedule(120, something, "DEF") simulator.schedule(140, we_are_done, "XYZ") simulator.schedule(160, something, "TEST") simulator.schedule(700, something, "GHI") simulator.end(1000) simulator.run() print("End time: " + str(simulator.now())) simulator.reset()
def test_stage_transitions(self): self.assertTrue(simulator.is_init()) self.assertFalse(simulator.is_ready()) self.assertFalse(simulator.is_running()) self.assertFalse(simulator.is_finished()) simulator.ready() self.assertFalse(simulator.is_init()) self.assertTrue(simulator.is_ready()) self.assertFalse(simulator.is_running()) self.assertFalse(simulator.is_finished()) def check_running(): self.assertFalse(simulator.is_init()) self.assertFalse(simulator.is_ready()) self.assertTrue(simulator.is_running()) self.assertFalse(simulator.is_finished()) self.assertEqual(simulator.now(), 0) simulator.schedule(0, check_running) simulator.end(100000) simulator.run() self.assertEqual(simulator.now(), 100000) self.assertFalse(simulator.is_init()) self.assertFalse(simulator.is_ready()) self.assertFalse(simulator.is_running()) self.assertTrue(simulator.is_finished()) simulator.reset() self.assertTrue(simulator.is_init()) self.assertFalse(simulator.is_ready()) self.assertFalse(simulator.is_running()) self.assertFalse(simulator.is_finished())
def something(value): print("t=" + str(simulator.now()) + ": something() with value " + str(value))
def something(): self.test_zero_arguments_info.append(simulator.now())
def relay_finished(): print("Last athlete finished: 4x100m relay in %.3gs" % (simulator.now() / 1e9))
def something(): print("t=" + str(simulator.now()) + ": something() was called") print(simulator._Simulator__event_heap)
def something(self, value): print("t=" + str(simulator.now()) + ": instance of class Example (x=" + str(self.x) + ") something() with value: " + str(value))
def something(value): print("t=" + str(simulator.now()) + ": something() with value: " + str(value)) simulator.schedule(200, something, "XYZ") # 100 time units in the future from now
def we_are_done(value): print("t=" + str(simulator.now()) + ": we_are_done() with value: " + str(value)) simulator.end()
def something(val1, val2, abc3, xyz=28): print("t=" + str(simulator.now()) + ": something() with: val1=" + str(val1) + ", val2=" + str(val2) + ", abc3=" + str(abc3) + ", xyz=" + str(xyz))
def something(arg1): self.test_one_argument_info.append((simulator.now(), arg1))
def x(v): self.test_function_in_function_info.append( (simulator.now(), xyz, v))
def x(val): result.append((simulator.now(), val))
def check_running(): self.assertFalse(simulator.is_init()) self.assertFalse(simulator.is_ready()) self.assertTrue(simulator.is_running()) self.assertFalse(simulator.is_finished()) self.assertEqual(simulator.now(), 0)
def something(): print("t=" + str(simulator.now()) + ": something() was called")
def something(arg1, arg2, arg3="def", arg4=2384): self.test_many_arguments_info.append( (simulator.now(), arg1, arg2, arg3, arg4))