Exemplo n.º 1
0
 def test_recorder_scheduleRecordings(self):
     scheduler = Mock(BlockingScheduler)
     scheduler.get_jobs.return_value = []
     hdhomerun = Mock(HDHomeRunInterface)
     db = Mock(CarbonDVRDatabase)
     db.getPendingRecordings.return_value = []
     recorder = Recorder(scheduler, hdhomerun, db, 'recs', 'logs')
     recorder.logger = Mock()
     recorder.scheduler = Mock()
     recorder.removeAllRecordingJobs = Mock()
     # given: a set of pending recordings
     mockPendingRecordings = [ Bunch(channelMajor=1, channelMinor=2, startTime=datetime(2000,1,1,12,00,00, tzinfo=pytz.timezone('US/Central'))),
                               Bunch(channelMajor=19, channelMinor=3, startTime=datetime(2000,1,1,13,00,00, tzinfo=pytz.timezone('US/Central'))),
                               Bunch(channelMajor=38, channelMinor=1, startTime=datetime(2000,1,1,14,00,00, tzinfo=pytz.timezone('US/Central'))) ]
     db.getPendingRecordings.reset_mock()
     db.getPendingRecordings.return_value = mockPendingRecordings
     # when: scheduleRecordings
     recorder.scheduleRecordings()
     # then: all existing recording jobs cleared, getPendingRecordings is called, new recording jobs are added
     recorder.removeAllRecordingJobs.assert_called_once()
     db.getPendingRecordings.assert_called_once_with(timedelta(hours=12))
     self.assertEqual(3, recorder.scheduler.add_job.call_count)
     call0 = call(recorder.record, args=[mockPendingRecordings[0]], trigger='date', run_date=mockPendingRecordings[0].startTime, misfire_grace_time=60)
     self.assertEqual(recorder.scheduler.add_job.call_args_list[0], call0)
     call1 = call(recorder.record, args=[mockPendingRecordings[1]], trigger='date', run_date=mockPendingRecordings[1].startTime, misfire_grace_time=60)
     self.assertEqual(recorder.scheduler.add_job.call_args_list[1], call1)
     call2 = call(recorder.record, args=[mockPendingRecordings[2]], trigger='date', run_date=mockPendingRecordings[2].startTime, misfire_grace_time=60)
     self.assertEqual(recorder.scheduler.add_job.call_args_list[2], call2)
Exemplo n.º 2
0
 def test_recorder_removeAllRecordingJobs(self):
     scheduler = Mock(BlockingScheduler)
     scheduler.get_jobs.return_value = []
     hdhomerun = Mock(HDHomeRunInterface)
     db = Mock(CarbonDVRDatabase)
     db.getPendingRecordings.return_value = []
     recorder = Recorder(scheduler, hdhomerun, db, 'recs', 'logs')
     recorder.logger = Mock()
     recorder.scheduler = Mock()
     # given: a mix of recording jobs and non-recording jobs
     recorder.scheduler.get_jobs.return_value = [ Bunch(func=recorder.record, id=3),
                                                  Bunch(func=recorder.scheduleRecordings, id=1),
                                                  Bunch(func=recorder.record, id=4) ]
     # when: removeAllRecordingJobs
     recorder.removeAllRecordingJobs()
     # then: all recording jobs removed, non-recording jobs ignored
     self.assertEqual(2, recorder.scheduler.remove_job.call_count)
     self.assertEqual(recorder.scheduler.remove_job.call_args_list[0], call(3))
     self.assertEqual(recorder.scheduler.remove_job.call_args_list[1], call(4))
Exemplo n.º 3
0
 def test_recorder_removeAllRecordingJobs(self):
     scheduler = Mock(BlockingScheduler)
     scheduler.get_jobs.return_value = []
     hdhomerun = Mock(HDHomeRunInterface)
     db = Mock(CarbonDVRDatabase)
     db.getPendingRecordings.return_value = []
     recorder = Recorder(scheduler, hdhomerun, db, 'recs', 'logs')
     recorder.logger = Mock()
     recorder.scheduler = Mock()
     # given: a mix of recording jobs and non-recording jobs
     recorder.scheduler.get_jobs.return_value = [
         Bunch(func=recorder.record, id=3),
         Bunch(func=recorder.scheduleRecordings, id=1),
         Bunch(func=recorder.record, id=4)
     ]
     # when: removeAllRecordingJobs
     recorder.removeAllRecordingJobs()
     # then: all recording jobs removed, non-recording jobs ignored
     self.assertEqual(2, recorder.scheduler.remove_job.call_count)
     self.assertEqual(recorder.scheduler.remove_job.call_args_list[0],
                      call(3))
     self.assertEqual(recorder.scheduler.remove_job.call_args_list[1],
                      call(4))
Exemplo n.º 4
0
 def test_recorder_scheduleRecordings(self):
     scheduler = Mock(BlockingScheduler)
     scheduler.get_jobs.return_value = []
     hdhomerun = Mock(HDHomeRunInterface)
     db = Mock(CarbonDVRDatabase)
     db.getPendingRecordings.return_value = []
     recorder = Recorder(scheduler, hdhomerun, db, 'recs', 'logs')
     recorder.logger = Mock()
     recorder.scheduler = Mock()
     recorder.removeAllRecordingJobs = Mock()
     # given: a set of pending recordings
     mockPendingRecordings = [
         Bunch(channelMajor=1,
               channelMinor=2,
               startTime=datetime(2000,
                                  1,
                                  1,
                                  12,
                                  00,
                                  00,
                                  tzinfo=pytz.timezone('US/Central'))),
         Bunch(channelMajor=19,
               channelMinor=3,
               startTime=datetime(2000,
                                  1,
                                  1,
                                  13,
                                  00,
                                  00,
                                  tzinfo=pytz.timezone('US/Central'))),
         Bunch(channelMajor=38,
               channelMinor=1,
               startTime=datetime(2000,
                                  1,
                                  1,
                                  14,
                                  00,
                                  00,
                                  tzinfo=pytz.timezone('US/Central')))
     ]
     db.getPendingRecordings.reset_mock()
     db.getPendingRecordings.return_value = mockPendingRecordings
     # when: scheduleRecordings
     recorder.scheduleRecordings()
     # then: all existing recording jobs cleared, getPendingRecordings is called, new recording jobs are added
     recorder.removeAllRecordingJobs.assert_called_once()
     db.getPendingRecordings.assert_called_once_with(timedelta(hours=12))
     self.assertEqual(3, recorder.scheduler.add_job.call_count)
     call0 = call(recorder.record,
                  args=[mockPendingRecordings[0]],
                  trigger='date',
                  run_date=mockPendingRecordings[0].startTime,
                  misfire_grace_time=60)
     self.assertEqual(recorder.scheduler.add_job.call_args_list[0], call0)
     call1 = call(recorder.record,
                  args=[mockPendingRecordings[1]],
                  trigger='date',
                  run_date=mockPendingRecordings[1].startTime,
                  misfire_grace_time=60)
     self.assertEqual(recorder.scheduler.add_job.call_args_list[1], call1)
     call2 = call(recorder.record,
                  args=[mockPendingRecordings[2]],
                  trigger='date',
                  run_date=mockPendingRecordings[2].startTime,
                  misfire_grace_time=60)
     self.assertEqual(recorder.scheduler.add_job.call_args_list[2], call2)