Example #1
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)
Example #2
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()
Example #3
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)