Exemple #1
0
    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)
Exemple #2
0
    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)
Exemple #3
0
    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()
Exemple #4
0
    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)
Exemple #5
0
    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)
Exemple #6
0
    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)