def test_tasks_are_correctly_scheduled_when_compute_resources_is_False( self): """testing if the tasks are correctly scheduled when the compute resources is False """ tjp_sched = TaskJugglerScheduler(compute_resources=False) from stalker import Studio test_studio = Studio(name='Test Studio', now=datetime.datetime(2013, 4, 16, 0, 0, tzinfo=pytz.utc)) test_studio.start = \ datetime.datetime(2013, 4, 16, 0, 0, tzinfo=pytz.utc) test_studio.end = datetime.datetime(2013, 4, 30, 0, 0, tzinfo=pytz.utc) test_studio.daily_working_hours = 9 from stalker.db.session import DBSession DBSession.add(test_studio) tjp_sched.studio = test_studio tjp_sched.schedule() DBSession.commit() # check if the task and project timings are all adjusted assert \ datetime.datetime(2013, 4, 16, 9, 0, tzinfo=pytz.utc) == \ self.test_proj1.computed_start assert \ datetime.datetime(2013, 4, 24, 10, 0, tzinfo=pytz.utc) == \ self.test_proj1.computed_end assert \ datetime.datetime(2013, 4, 16, 9, 0, tzinfo=pytz.utc) == \ self.test_task1.computed_start assert \ datetime.datetime(2013, 4, 18, 16, 0, tzinfo=pytz.utc) == \ self.test_task1.computed_end assert len(self.test_task1.computed_resources) == 2 assert self.test_task1.computed_resources[0] in \ [self.test_user1, self.test_user2, self.test_user3, self.test_user4, self.test_user5] assert self.test_task1.computed_resources[1] in \ [self.test_user1, self.test_user2, self.test_user3, self.test_user4, self.test_user5] assert \ datetime.datetime(2013, 4, 18, 16, 0, tzinfo=pytz.utc) == \ self.test_task2.computed_start assert \ datetime.datetime(2013, 4, 24, 10, 0, tzinfo=pytz.utc) == \ self.test_task2.computed_end assert len(self.test_task2.computed_resources) == 2 assert self.test_task2.computed_resources[0] in \ [self.test_user1, self.test_user2, self.test_user3, self.test_user4, self.test_user5] assert self.test_task2.computed_resources[1] in \ [self.test_user1, self.test_user2, self.test_user3, self.test_user4, self.test_user5]
def test_tasks_are_correctly_scheduled_when_compute_resources_is_True(self): """testing if the tasks are correctly scheduled when the compute resources is True """ tjp_sched = TaskJugglerScheduler(compute_resources=True) test_studio = Studio(name="Test Studio", now=datetime.datetime(2013, 4, 16, 0, 0)) test_studio.start = datetime.datetime(2013, 4, 16, 0, 0) test_studio.end = datetime.datetime(2013, 4, 30, 0, 0) test_studio.daily_working_hours = 9 DBSession.add(test_studio) tjp_sched.studio = test_studio tjp_sched.schedule() db.DBSession.commit() # check if the task and project timings are all adjusted self.assertEqual(datetime.datetime(2013, 4, 16, 9, 0), self.test_proj1.computed_start) self.assertEqual(datetime.datetime(2013, 4, 24, 10, 0), self.test_proj1.computed_end) self.assertEqual(datetime.datetime(2013, 4, 16, 9, 0), self.test_task1.computed_start) self.assertEqual(datetime.datetime(2013, 4, 18, 16, 0), self.test_task1.computed_end) self.assertEqual( sorted([self.test_user1, self.test_user2], key=lambda x: x.name), sorted(self.test_task1.computed_resources, key=lambda x: x.name), ) self.assertEqual(datetime.datetime(2013, 4, 18, 16, 0), self.test_task2.computed_start) self.assertEqual(datetime.datetime(2013, 4, 24, 10, 0), self.test_task2.computed_end) self.assertEqual( sorted([self.test_user4, self.test_user5], key=lambda x: x.name), sorted(self.test_task2.computed_resources, key=lambda x: x.name), )
def test_tasks_of_given_projects_are_correctly_scheduled(self): """testing if the tasks of given projects are correctly scheduled """ # create a dummy project # create a dummy Project to schedule dummy_project = Project(name='Dummy Project', code='DP', repository=self.test_repo) dt1 = Task(name='Dummy Task 1', project=dummy_project, schedule_timing=4, schedule_unit='h', resources=[self.test_user1]) dt2 = Task(name='Dummy Task 2', project=dummy_project, schedule_timing=4, schedule_unit='h', resources=[self.test_user2]) db.DBSession.add_all([dummy_project, dt1, dt2]) db.DBSession.commit() tjp_sched = TaskJugglerScheduler(compute_resources=True, projects=[dummy_project]) test_studio = Studio(name='Test Studio', now=datetime.datetime(2013, 4, 16, 0, 0)) test_studio.start = datetime.datetime(2013, 4, 16, 0, 0) test_studio.end = datetime.datetime(2013, 4, 30, 0, 0) test_studio.daily_working_hours = 9 DBSession.add(test_studio) db.DBSession.commit() tjp_sched.studio = test_studio tjp_sched.schedule() db.DBSession.commit() # check if the task and project timings are all adjusted self.assertEqual(self.test_proj1.computed_start, None) self.assertEqual(self.test_proj1.computed_end, None) self.assertEqual(self.test_task1.computed_start, None) self.assertEqual(self.test_task1.computed_end, None) self.assertEqual(self.test_task1.computed_resources, [self.test_user1, self.test_user2]) self.assertEqual(self.test_task2.computed_start, None) self.assertEqual(self.test_task2.computed_end, None) self.assertEqual(self.test_task2.computed_resources, [self.test_user1, self.test_user2]) self.assertEqual(dt1.computed_start, datetime.datetime(2013, 4, 16, 9, 0)) self.assertEqual(dt1.computed_end, datetime.datetime(2013, 4, 16, 13, 0)) self.assertEqual(dt2.computed_start, datetime.datetime(2013, 4, 16, 9, 0)) self.assertEqual(dt2.computed_end, datetime.datetime(2013, 4, 16, 13, 0))
def test_tasks_are_correctly_scheduled(self): """testing if the tasks are correctly scheduled """ tjp_sched = TaskJugglerScheduler(compute_resources=True) test_studio = Studio(name='Test Studio', now=datetime.datetime(2013, 4, 16, 0, 0)) test_studio.start = datetime.datetime(2013, 4, 16, 0, 0) test_studio.end = datetime.datetime(2013, 4, 30, 0, 0) test_studio.daily_working_hours = 9 DBSession.add(test_studio) tjp_sched.studio = test_studio tjp_sched.schedule() db.DBSession.commit() # check if the task and project timings are all adjusted self.assertEqual( datetime.datetime(2013, 4, 16, 9, 0), self.test_proj1.computed_start ) self.assertEqual( datetime.datetime(2013, 4, 24, 10, 0), self.test_proj1.computed_end ) self.assertEqual( datetime.datetime(2013, 4, 16, 9, 0), self.test_task1.computed_start ) self.assertEqual( datetime.datetime(2013, 4, 18, 16, 0), self.test_task1.computed_end ) self.assertEqual( sorted([self.test_user1, self.test_user2], key=lambda x: x.name), sorted(self.test_task1.computed_resources, key=lambda x: x.name) ) self.assertEqual( datetime.datetime(2013, 4, 18, 16, 0), self.test_task2.computed_start ) self.assertEqual( datetime.datetime(2013, 4, 24, 10, 0), self.test_task2.computed_end ) self.assertEqual(2, len(self.test_task2.computed_resources)) possible_resources = [ self.test_user2, self.test_user3, self.test_user4, self.test_user5 ] for r in self.test_task2.computed_resources: self.assertIn(r, possible_resources)
def test_tasks_are_correctly_scheduled(self): """testing if the tasks are correctly scheduled """ tjp_sched = TaskJugglerScheduler(compute_resources=True) from stalker import Studio test_studio = Studio( name='Test Studio', now=datetime.datetime(2013, 4, 16, 0, 0, tzinfo=pytz.utc) ) test_studio.start = \ datetime.datetime(2013, 4, 16, 0, 0, tzinfo=pytz.utc) test_studio.end = \ datetime.datetime(2013, 4, 30, 0, 0, tzinfo=pytz.utc) test_studio.daily_working_hours = 9 from stalker.db.session import DBSession DBSession.add(test_studio) tjp_sched.studio = test_studio tjp_sched.schedule() DBSession.commit() # check if the task and project timings are all adjusted assert \ datetime.datetime(2013, 4, 16, 9, 0, tzinfo=pytz.utc) == \ self.test_proj1.computed_start assert \ datetime.datetime(2013, 4, 24, 10, 0, tzinfo=pytz.utc) == \ self.test_proj1.computed_end assert \ datetime.datetime(2013, 4, 16, 9, 0, tzinfo=pytz.utc) == \ self.test_task1.computed_start assert \ datetime.datetime(2013, 4, 18, 16, 0, tzinfo=pytz.utc) == \ self.test_task1.computed_end assert \ sorted([self.test_user1, self.test_user2], key=lambda x: x.name) == \ sorted(self.test_task1.computed_resources, key=lambda x: x.name) assert \ datetime.datetime(2013, 4, 18, 16, 0, tzinfo=pytz.utc) == \ self.test_task2.computed_start assert \ datetime.datetime(2013, 4, 24, 10, 0, tzinfo=pytz.utc) == \ self.test_task2.computed_end assert len(self.test_task2.computed_resources) == 2 possible_resources = [ self.test_user2, self.test_user3, self.test_user4, self.test_user5 ] for r in self.test_task2.computed_resources: assert r in possible_resources
def test_tasks_of_given_projects_are_correctly_scheduled(self): """testing if the tasks of given projects are correctly scheduled """ # create a dummy project # create a dummy Project to schedule dummy_project = Project(name="Dummy Project", code="DP", repository=self.test_repo) dt1 = Task( name="Dummy Task 1", project=dummy_project, schedule_timing=4, schedule_unit="h", resources=[self.test_user1], ) dt2 = Task( name="Dummy Task 2", project=dummy_project, schedule_timing=4, schedule_unit="h", resources=[self.test_user2], ) db.DBSession.add_all([dummy_project, dt1, dt2]) db.DBSession.commit() tjp_sched = TaskJugglerScheduler(compute_resources=True, projects=[dummy_project]) test_studio = Studio(name="Test Studio", now=datetime.datetime(2013, 4, 16, 0, 0)) test_studio.start = datetime.datetime(2013, 4, 16, 0, 0) test_studio.end = datetime.datetime(2013, 4, 30, 0, 0) test_studio.daily_working_hours = 9 DBSession.add(test_studio) db.DBSession.commit() tjp_sched.studio = test_studio tjp_sched.schedule() db.DBSession.commit() # check if the task and project timings are all adjusted self.assertEqual(self.test_proj1.computed_start, None) self.assertEqual(self.test_proj1.computed_end, None) self.assertEqual(self.test_task1.computed_start, None) self.assertEqual(self.test_task1.computed_end, None) self.assertEqual(self.test_task1.computed_resources, [self.test_user1, self.test_user2]) self.assertEqual(self.test_task2.computed_start, None) self.assertEqual(self.test_task2.computed_end, None) self.assertEqual(self.test_task2.computed_resources, [self.test_user1, self.test_user2]) self.assertEqual(dt1.computed_start, datetime.datetime(2013, 4, 16, 9, 0)) self.assertEqual(dt1.computed_end, datetime.datetime(2013, 4, 16, 13, 0)) self.assertEqual(dt2.computed_start, datetime.datetime(2013, 4, 16, 9, 0)) self.assertEqual(dt2.computed_end, datetime.datetime(2013, 4, 16, 13, 0))
def test_schedule_will_not_work_when_the_studio_attribute_is_None(self): """testing if a TypeError will be raised when the studio attribute is None """ tjp_sched = TaskJugglerScheduler() tjp_sched.studio = None with pytest.raises(TypeError) as cm: tjp_sched.schedule() assert str(cm.value) == \ 'TaskJugglerScheduler.studio should be an instance of ' \ 'stalker.models.studio.Studio, not NoneType'
def test_schedule_will_not_work_when_the_studio_attribute_is_None(self): """testing if a TypeError will be raised when the studio attribute is None """ tjp_sched = TaskJugglerScheduler() tjp_sched.studio = None with self.assertRaises(TypeError) as cm: tjp_sched.schedule() self.assertEqual( str(cm.exception), 'TaskJugglerScheduler.studio should be an instance of ' 'stalker.models.studio.Studio, not NoneType')
def test_tasks_are_correctly_scheduled_when_compute_resources_is_False(self): """testing if the tasks are correctly scheduled when the compute resources is False """ tjp_sched = TaskJugglerScheduler(compute_resources=False) test_studio = Studio(name='Test Studio', now=datetime.datetime(2013, 4, 16, 0, 0)) test_studio.start = datetime.datetime(2013, 4, 16, 0, 0) test_studio.end = datetime.datetime(2013, 4, 30, 0, 0) test_studio.daily_working_hours = 9 DBSession.add(test_studio) tjp_sched.studio = test_studio tjp_sched.schedule() db.DBSession.commit() # check if the task and project timings are all adjusted self.assertEqual( datetime.datetime(2013, 4, 16, 9, 0), self.test_proj1.computed_start ) self.assertEqual( datetime.datetime(2013, 4, 24, 10, 0), self.test_proj1.computed_end ) self.assertEqual( datetime.datetime(2013, 4, 16, 9, 0), self.test_task1.computed_start ) self.assertEqual( datetime.datetime(2013, 4, 18, 16, 0), self.test_task1.computed_end ) self.assertEqual( sorted(self.test_task1.resources, key=lambda x: x.name), sorted(self.test_task1.computed_resources, key=lambda x: x.name) ) self.assertEqual( datetime.datetime(2013, 4, 18, 16, 0), self.test_task2.computed_start ) self.assertEqual( datetime.datetime(2013, 4, 24, 10, 0), self.test_task2.computed_end ) self.assertEqual( sorted(self.test_task2.resources, key=lambda x: x.name), sorted(self.test_task2.computed_resources, key=lambda x: x.name) )
def test_tasks_are_correctly_scheduled_when_compute_resources_is_False(self): """testing if the tasks are correctly scheduled when the compute resources is False """ tjp_sched = TaskJugglerScheduler(compute_resources=False) test_studio = Studio(name='Test Studio', now=datetime.datetime(2013, 4, 16, 0, 0)) test_studio.start = datetime.datetime(2013, 4, 16, 0, 0) test_studio.end = datetime.datetime(2013, 4, 30, 0, 0) test_studio.daily_working_hours = 9 DBSession.add(test_studio) tjp_sched.studio = test_studio tjp_sched.schedule() db.DBSession.commit() # check if the task and project timings are all adjusted self.assertEqual( datetime.datetime(2013, 4, 16, 9, 0), self.test_proj1.computed_start ) self.assertEqual( datetime.datetime(2013, 4, 19, 12, 0), self.test_proj1.computed_end ) self.assertEqual( datetime.datetime(2013, 4, 16, 9, 0), self.test_task1.computed_start ) self.assertEqual( datetime.datetime(2013, 4, 18, 16, 0), self.test_task1.computed_end ) self.assertItemsEqual( self.test_task1.resources, self.test_task1.computed_resources ) self.assertEqual( datetime.datetime(2013, 4, 16, 9, 0), self.test_task2.computed_start ) self.assertEqual( datetime.datetime(2013, 4, 19, 12, 0), self.test_task2.computed_end ) self.assertItemsEqual( self.test_task2.resources, self.test_task2.computed_resources )
def test_tasks_are_correctly_scheduled(self): """testing if the tasks are correctly scheduled """ tjp_sched = TaskJugglerScheduler() test_studio = Studio(name='Test Studio', now=datetime.datetime(2013, 4, 16, 0, 0)) test_studio.daily_working_hours = 9 DBSession.add(test_studio) tjp_sched.studio = test_studio tjp_sched.schedule() # check if the task and project timings are all adjusted self.assertEqual( datetime.datetime(2013, 4, 16, 9, 0), self.test_proj1.computed_start ) self.assertEqual( datetime.datetime(2013, 4, 19, 12, 0), self.test_proj1.computed_end ) self.assertEqual( datetime.datetime(2013, 4, 16, 9, 0), self.test_task1.computed_start ) self.assertEqual( datetime.datetime(2013, 4, 18, 16, 0), self.test_task1.computed_end ) self.assertItemsEqual( [self.test_user5, self.test_user4], self.test_task1.computed_resources ) self.assertEqual( datetime.datetime(2013, 4, 16, 9, 0), self.test_task2.computed_start ) self.assertEqual( datetime.datetime(2013, 4, 19, 12, 0), self.test_task2.computed_end ) self.assertItemsEqual( [self.test_user1, self.test_user2], self.test_task2.computed_resources )
def test_tasks_of_given_projects_are_correctly_scheduled(self): """testing if the tasks of given projects are correctly scheduled """ # create a dummy project # create a dummy Project to schedule from stalker import Project dummy_project = Project(name='Dummy Project', code='DP', repository=self.test_repo) from stalker import Task dt1 = Task(name='Dummy Task 1', project=dummy_project, schedule_timing=4, schedule_unit='h', resources=[self.test_user1]) dt2 = Task(name='Dummy Task 2', project=dummy_project, schedule_timing=4, schedule_unit='h', resources=[self.test_user2]) from stalker.db.session import DBSession DBSession.add_all([dummy_project, dt1, dt2]) DBSession.commit() tjp_sched = TaskJugglerScheduler(compute_resources=True, projects=[dummy_project]) from stalker import Studio test_studio = Studio(name='Test Studio', now=datetime.datetime(2013, 4, 16, 0, 0, tzinfo=pytz.utc)) test_studio.start = \ datetime.datetime(2013, 4, 16, 0, 0, tzinfo=pytz.utc) test_studio.end = datetime.datetime(2013, 4, 30, 0, 0, tzinfo=pytz.utc) test_studio.daily_working_hours = 9 DBSession.add(test_studio) DBSession.commit() tjp_sched.studio = test_studio tjp_sched.schedule() DBSession.commit() # check if the task and project timings are all adjusted assert self.test_proj1.computed_start is None assert self.test_proj1.computed_end is None assert self.test_task1.computed_start is None assert self.test_task1.computed_end is None assert self.test_task1.computed_resources == \ [self.test_user1, self.test_user2] assert self.test_task2.computed_start is None assert self.test_task2.computed_end is None assert self.test_task2.computed_resources == \ [self.test_user1, self.test_user2] assert \ dt1.computed_start == \ datetime.datetime(2013, 4, 16, 9, 0, tzinfo=pytz.utc) assert \ dt1.computed_end == \ datetime.datetime(2013, 4, 16, 13, 0, tzinfo=pytz.utc) assert \ dt2.computed_start == \ datetime.datetime(2013, 4, 16, 9, 0, tzinfo=pytz.utc) assert \ dt2.computed_end == \ datetime.datetime(2013, 4, 16, 13, 0, tzinfo=pytz.utc)