Initial commit

This commit is contained in:
Yentl Van Tendeloo 2016-08-04 17:38:43 +02:00
commit 66a6860316
407 changed files with 1254365 additions and 0 deletions

87
test/testScheduler.py Normal file
View file

@ -0,0 +1,87 @@
# Copyright 2014 Modelling, Simulation and Design Lab (MSDL) at
# McGill University and the University of Antwerp (http://msdl.cs.mcgill.ca/)
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from testutils import *
from pypdevs.schedulers.schedulerAH import SchedulerAH
class TestScheduler(unittest.TestCase):
def setUp(self):
self.models = []
for i in range(10):
ne = Generator()
ne.model_id = i
ne.time_next = (1, 1)
self.models.append(ne)
for i in range(10):
ne = Processor()
ne.model_id = i + 10
ne.time_next = (float('inf'), 1)
self.models.append(ne)
self.scheduler = SchedulerAH(self.models, 1e-9, len(self.models))
def tearDown(self):
pass
def test_scheduler_schedule(self):
# Only 10, since the Processors should not get scheduled
# due to their time_next
self.assertTrue(len(self.scheduler.heap) == 10)
def test_scheduler_unschedule(self):
self.assertTrue(len(self.scheduler.heap) == 10)
for i in self.models:
self.scheduler.unschedule(i)
# Heap should have the same length, as they became invalid
self.assertTrue(len(self.scheduler.heap) == 10)
# Clean up
self.scheduler.cleanFirst()
self.assertTrue(len(self.scheduler.heap) == 0)
for i in self.models:
self.scheduler.schedule(i)
self.scheduler.unschedule(self.models[5])
self.assertTrue(len(self.scheduler.heap) == 10)
def test_scheduler_get_imminent(self):
self.assertTrue(len(self.scheduler.heap) == 10)
self.scheduler.unschedule(self.models[2])
self.scheduler.unschedule(self.models[4])
self.scheduler.unschedule(self.models[0])
self.scheduler.unschedule(self.models[7])
verifylist = list(self.models[:10])
verifylist.remove(self.models[0])
verifylist.remove(self.models[2])
verifylist.remove(self.models[4])
verifylist.remove(self.models[7])
# Heap should have the same length, as they became invalid
self.assertTrue(len(self.scheduler.heap) == 10)
res = self.scheduler.getImminent((1, 1))
self.assertTrue(res == verifylist)
for i in self.models:
try:
self.scheduler.unschedule(i)
except TypeError:
# Some are possibly already None
pass
# List should be completely empty now
res = self.scheduler.getImminent((1, 1))
self.assertTrue(res == [])