def test_start_benchmark_and_prepare_track(self, resolve): # override load driver host self.cfg.add(config.Scope.applicationOverride, "driver", "load_driver_hosts", ["10.5.5.1", "10.5.5.2"]) resolve.side_effect = ["10.5.5.1", "10.5.5.2"] target = self.create_test_driver_target() d = driver.Driver(target, self.cfg) d.start_benchmark(t=self.track, lap=1, metrics_meta_info={}) target.create_track_preparator.assert_has_calls(calls=[ mock.call("10.5.5.1"), mock.call("10.5.5.2"), ]) target.on_prepare_track.assert_called_once_with( ["track_preparator_marker", "track_preparator_marker"], self.cfg, self.track) d.after_track_prepared() target.create_client.assert_has_calls(calls=[ mock.call(0, "10.5.5.1"), mock.call(1, "10.5.5.2"), mock.call(2, "10.5.5.1"), mock.call(3, "10.5.5.2"), ]) # Did we start all load generators? There is no specific mock assert for this... self.assertEqual(4, target.start_load_generator.call_count)
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)
def test_assign_drivers_round_robin(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={}) target.create_track_preparator.assert_called_once_with("localhost") target.on_prepare_track.assert_called_once_with(["track_preparator_marker"], self.cfg, self.track) d.after_track_prepared() target.create_client.assert_has_calls(calls=[ mock.call(0, "localhost"), mock.call(1, "localhost"), mock.call(2, "localhost"), mock.call(3, "localhost"), ]) # Did we start all load generators? There is no specific mock assert for this... self.assertEqual(4, target.start_load_generator.call_count)
def test_assign_drivers_round_robin(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) target.create_track_preparator.assert_called_once_with("localhost") target.on_prepare_track.assert_called_once_with(["track_preparator_marker"], self.cfg, self.track) d.start_benchmark() target.create_client.assert_has_calls(calls=[ mock.call(0, "localhost"), mock.call(1, "localhost"), mock.call(2, "localhost"), mock.call(3, "localhost"), ]) # Did we start all load generators? There is no specific mock assert for this... self.assertEqual(4, target.start_load_generator.call_count)