def test_client_reaches_join_point_which_completes_parent( self, wait_for_status, setup_index, setup_template): target = self.create_test_driver_target() d = driver.Driver(target, self.cfg) d.start_benchmark(t=self.track, lap=1, metrics_meta_info={}) d.after_track_prepared() self.assertEqual(0, len(d.clients_completed_current_step)) # it does not matter what we put into `clients_executing_completing_task` We choose to put the client id into it. d.joinpoint_reached(client_id=0, client_local_timestamp=10, task=driver.JoinPoint( id=0, clients_executing_completing_task=[0])) self.assertEqual(-1, d.current_step) self.assertEqual(1, len(d.clients_completed_current_step)) # notified all drivers that they should complete the current task ASAP self.assertEqual(4, target.complete_current_task.call_count) # awaiting responses of other clients d.joinpoint_reached(client_id=1, client_local_timestamp=11, task=driver.JoinPoint( id=0, clients_executing_completing_task=[0])) self.assertEqual(-1, d.current_step) self.assertEqual(2, len(d.clients_completed_current_step)) d.joinpoint_reached(client_id=2, client_local_timestamp=12, task=driver.JoinPoint( id=0, clients_executing_completing_task=[0])) self.assertEqual(-1, d.current_step) self.assertEqual(3, len(d.clients_completed_current_step)) d.joinpoint_reached(client_id=3, client_local_timestamp=13, task=driver.JoinPoint( id=0, clients_executing_completing_task=[0])) # by now the previous step should be considered completed and we are at the next one self.assertEqual(0, d.current_step) self.assertEqual(0, len(d.clients_completed_current_step)) # this requires at least Python 3.6 #target.on_task_finished.assert_called_once() self.assertEqual(1, target.on_task_finished.call_count) self.assertEqual(4, target.drive_at.call_count)
def test_client_reaches_join_point_others_still_executing(self, wait_for_status, setup_index, setup_template): target = self.create_test_driver_target() d = driver.Driver(target, self.cfg) d.start_benchmark(t=self.track, lap=1, metrics_meta_info={}) d.after_track_prepared() self.assertEqual(0, len(d.clients_completed_current_step)) d.joinpoint_reached(client_id=0, client_local_timestamp=10, task=driver.JoinPoint(id=0)) self.assertEqual(1, len(d.clients_completed_current_step)) target.on_task_finished.assert_not_called() target.drive_at.assert_not_called()
def test_client_reaches_join_point_others_still_executing(self): target = self.create_test_driver_target() d = driver.Driver(target, self.cfg, es_client_factory_class=DriverTests.StaticClientFactory) d.prepare_benchmark(t=self.track) d.start_benchmark() self.assertEqual(0, len(d.clients_completed_current_step)) d.joinpoint_reached(client_id=0, client_local_timestamp=10, task=driver.JoinPoint(id=0)) self.assertEqual(1, len(d.clients_completed_current_step)) self.assertEqual(0, target.on_task_finished.call_count) self.assertEqual(0, target.drive_at.call_count)