class RRStrategyTestCase(BaseScenario): def setUp(self): super(RRStrategyTestCase, self).setUp() self.se = StrategyEvaluator() self.pe = ProcessEvaluator() def _run_rr(self, quantum, timeslice): strategy = RoundRobin(quantum=quantum, timeslice=timeslice) scheduler = Scheduler(strategy=strategy) scheduler.initialize("FOO") scheduler.run() def test_RR_t10_q1(self): self._run_rr(quantum=1, timeslice=10) start, end = self.pe.getPeriodForPCB("FOO") self.assertEqual(end, 30) # work(10),launch(BAR),ready(10),work(10) -> 30 def test_RR_t10_q2(self): self._run_rr(quantum=2, timeslice=10) start, end = self.pe.getPeriodForPCB("FOO") self.assertEqual(end, 20) # work(10),launch(BAR),work(10) -> 20 def test_RR_t5_q1(self): self._run_rr(quantum=1, timeslice=5) start, end = self.pe.getPeriodForPCB("BAR") self.assertTupleEqual((10, 25), (start, end)) def test_RR_t5_q2(self): self._run_rr(quantum=2, timeslice=5) start, end = self.pe.getPeriodForPCB("FOO") self.assertTupleEqual((0, 30), (start, end))
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)
class SJFStrategyTestCase(BaseScenario): def setUp(self): super(SJFStrategyTestCase, self).setUp() self.pe = ProcessEvaluator() def run_scheduler(self): strategy = ShortesJobFirst() scheduler = Scheduler(strategy=strategy) scheduler.initialize("FOO") scheduler.run() def test_SJF_01(self): self.run_scheduler() start, end = self.pe.getPeriodForPCB("FOO") self.assertTupleEqual((0,20), (start, end))