def __calculate_left_work(self, pcb): """ we have to find out how much cpu-time is left in the workplan :param pcb: the PCB of the target Process :return: int. left service time """ pe = ProcessEvaluator() # we 'abuse' the process evaluator # @TODO: change this. The evaluator module is not meant to be used this way service_time = pe.getServiceTime(pcb) return service_time
class ProcessEvaluatorTestCase(SimpleFiFoScenario): def setUp(self): super(ProcessEvaluatorTestCase, self).setUp() scheduler = SchedulerFactory.getScheduler("FiFo", timeslice=10) scheduler.initialize("A") scheduler.run() self.evaluator = ProcessEvaluator() def test_getPeriodForPCB_01(self): # test get pcb by name period_B = self.evaluator.getPeriodForPCB("B") self.assertTupleEqual(period_B, (10, 20)) def test_getPeriodForPCB_02(self): period_A = self.evaluator.getPeriodForPCB("A") self.assertTupleEqual(period_A, (0, 35)) def test_getPeriodForPCB_03(self): # test get pcb by reference period_B = self.evaluator.getPeriodForPCB(self.pcb2) self.assertTupleEqual(period_B, (10, 20)) def test_getServiceTime_01(self): service_time = self.evaluator.getServiceTime("A") self.assertEqual(service_time, 20) def test_getServiceTime_02(self): service_time = self.evaluator.getServiceTime("B") self.assertEqual(service_time, 10) def test_getWaitTime_01(self): wait_time = self.evaluator.getWaitTime("A") self.assertEqual(wait_time, 15) def test_getWaitTime_02(self): wait_time = self.evaluator.getWaitTime("B") self.assertEqual(wait_time, 0)