Exemple #1
0
 def test_print_jobs(self, que, sub, start, print_jobs):
     self.sched = HMScheduler(que)
     self.sched.start()
     self.sched.print_jobs()
     print_jobs.assert_called_once_with()
     self.sched.shutdown()
     self.sched = None
Exemple #2
0
    def test_sendCommand(self, str, rept):
        str.return_value = "a"
        rept.return_value = "'a'"
        queue = MagicMock(spec=HMQueue)
        self.sched = HMScheduler(queue)

        device = 1
        port = 2
        listeners = ['a', 'b']
        scheduler_id = 1
        name = 'keep on keeping on'
        self.sched.sendCommand(name, device, port, listeners, scheduler_id)
        data = {}
        data[Constants.DataPacket.device] = device
        data[Constants.DataPacket.port] = port
        data[Constants.DataPacket.scheduler_id] = scheduler_id
        data[Constants.DataPacket.arrival_time] = GetDateTime()
        data[Constants.DataPacket.listeners] = copy.copy(listeners)
        data[Constants.DataPacket.name] = name
        de = DataEnvelope(type=Constants.EnvelopeTypes.STATUS, data=data)

        #         queue.transmit.assert_called_once_with( DataEnvelope( type='status', packet={},
        #              arrival_time='a', data={'name': 'scheduled status check',
        #                                                    'listeners': ['a', 'b'],
        #                                                    'at': 'a',
        #                                                    'device': 1, 'port': 2, 'scheduler_id': 1} ), 10 )
        #        # Not sure why this in not working.  I have tried all sorts of variations.
        self.assertEqual(queue.transmit.call_count, 1)
        args = queue.transmit.call_args
        self.sched.shutdown()
        self.sched = None
Exemple #3
0
    def test_deleteJob(self, ):
        que = MagicMock()
        self.sched = HMScheduler(que)
        self.sched.start()
        self.sched.scheduler = MagicMock(spec=Scheduler)
        self.sched.scheduler.add_date_job.return_value = 55

        name = 'test1'
        device = 'a'
        port = 'b'
        listeners = ['c', 'd']
        date = datetime.datetime(2013, 1, 2, 3, 4, 5)
        args = name, device, port, listeners
        kwargs = {}
        self.sched.jobs['test1'] = []

        self.sched.add_date(date, args, **kwargs)
        date = datetime.datetime(2013, 1, 2, 3, 4, 6)
        self.sched.add_date(date, args)

        name = 'test2'
        args = name, device, port, listeners
        self.sched.add_date(date, args)
        self.assertListEqual(self.sched.jobs['test1'], [55, 55])
        self.sched.deleteJob('test1')
        self.assertListEqual(self.sched.jobs['test1'], [])
        self.sched.scheduler.unschedule_job.assert_any_call(55)
        self.assertEqual(self.sched.scheduler.unschedule_job.call_count, 2)
        self.sched.scheduler.unschedule_job.reset_mock()

        self.sched.deleteJob('test3')
        self.assertEqual(self.sched.scheduler.unschedule_job.call_count, 0)

        self.sched.shutdown()
        self.sched = None
    def startInputs(self, global_data):
        ''' Start Home Monitor Input routines '''

        input_queue = global_data[Constants.GlobalData.INPUT_QUEUE]
        self.input = ProcessInput(input_queue)

        # Start thread for inputing data
        if (not self.options.in_test_mode):
            self.logger.debug('Starting xbee input')
            self.xbee_thread = XBeeInputThread(input_queue)
            self.xbee_thread.start()

        # The following will test various inputs
        if (self.options.in_test_mode):
            self.logger.debug('Starting test thread')
            self.test_input = TestInputThread(input_queue)
            self.test_input.start()

        self.logger.debug('Starting scheduler')
        self.sched = HMScheduler(input_queue)
        self.sched.start()

        if (sys.platform[:5] == 'linux' and not self.options.in_test_mode):
            self.logger.debug('Starting ComputerMonitor')
            self.computer_monitor = ComputerMonitor(input_queue)
            self.computer_monitor.start()
Exemple #5
0
    def test_shutdown(self, que, sub, start, shutdown):
        self.sched = HMScheduler(que)
        self.sched.start()
        self.sched.shutdown(wait=True)
        shutdown.assert_called_once_with(wait=True)
        shutdown.reset_mock()
        self.assertIsNone(self.sched.scheduler)

        self.sched.shutdown(wait=True)
        self.assertEqual(shutdown.call_count, 0)
        self.sched.shutdown()
        self.sched = None
Exemple #6
0
    def test_start(self, que, sub, start, add_interval_job):
        try:
            uuid.uuid4 = Mock()
            uuid.uuid4.return_value = '1234567'
            self.sched = HMScheduler(que)
            self.sched.start()

            start.assert_called_once_with()

            name = 'scheduled status check'
            device = 'status'
            port = 'scheduler'
            listeners = [
                Constants.TopicNames.Statistics,
                Constants.TopicNames.CurrentValueStep
            ]
            scheduler_id = '1234567'
            args = name, device, port, listeners, scheduler_id
            add_interval_job.assert_any_call(self.sched.sendCommand,
                                             minutes=10,
                                             args=args)

            name = 'uptime'
            device = 'HouseMonitor'
            port = 'uptime'
            listeners = [
                Constants.TopicNames.UpTime,
                Constants.TopicNames.CurrentValueStep
            ]
            scheduler_id = '1234567'
            args = name, device, port, listeners, scheduler_id
            add_interval_job.assert_any_call(self.sched.sendCommand,
                                             seconds=5,
                                             args=args)

            name = 'Pulse'
            device = '0x13a20040902a02'
            port = 'DIO-0'
            listeners = [Constants.TopicNames.StatusPanel_SystemCheck]
            scheduler_id = '1234567'
            args = name, device, port, listeners, scheduler_id
            print add_interval_job.call_args_list
            add_interval_job.assert_any_call(
                self.sched.sendCommand,
                seconds=5,
                args=('Pulse', '0x13a20040902a02', 'DIO-0',
                      ['step.StatusPanel_SystemCheck',
                       'step.ZigBeeOutput'], '1234567'))
        finally:
            self.sched.shutdown()
            self.sched = None
Exemple #7
0
 def test_init(self, que, sub):
     self.sched = HMScheduler(que)
     sub.assert_any_call(self.sched.add_interval,
                         Constants.TopicNames.SchedulerAddIntervalStep)
     sub.assert_any_call(self.sched.add_cron,
                         Constants.TopicNames.SchedulerAddCronStep)
     sub.assert_any_call(self.sched.add_date,
                         Constants.TopicNames.SchedulerAddDateStep)
     sub.assert_any_call(self.sched.add_one_shot,
                         Constants.TopicNames.SchedulerAddOneShotStep)
     sub.assert_any_call(self.sched.deleteJob,
                         Constants.TopicNames.SchedulerDeleteJob)
     sub.assert_any_call(self.sched.print_jobs,
                         Constants.TopicNames.SchedulerPrintJobs)
     self.sched.shutdown()
     self.sched = None
Exemple #8
0
    def test_add_one_shot(self, dt):
        d = datetime.datetime(2013, 1, 1, 1, 1, 1)
        dt.return_value = d
        que = MagicMock()
        self.sched = HMScheduler(que)
        self.sched.scheduler = MagicMock()
        self.sched.scheduler.add_date_job = MagicMock()
        self.sched.scheduler.add_date_job.return_value = 99
        self.sched.jobs['test'] = []

        delta = timedelta(seconds=1)
        name = 'Unit Test'
        args = ('test', 1, 2, 3)
        kwargs = 456
        self.sched.add_one_shot(delta, args, kwargs)
        self.assertListEqual(self.sched.jobs['test'], [99])
        self.assertEqual(self.sched.scheduler.add_date_job.call_count, 1)

        self.sched.shutdown()
        self.sched = None
Exemple #9
0
    def test_add_interval(self, que, sub, start, add_interval_job):
        self.sched = HMScheduler(que)
        self.sched.start()
        add_interval_job.reset_mock()
        add_interval_job.return_value = 555

        name = 'Unit Test'
        weeks = 1
        days = 2
        hours = 3
        #         minutes = 4
        #         seconds = 5
        #         start_date = datetime.datetime( 2013, 1, 2, 3, 4, 5 )
        #         args = ( name )
        #         kwargs = 456
        #         self.sched.add_interval( weeks, days, hours, minutes, seconds, start_date, args, kwargs )
        #
        #         add_interval_job.assert_called_once_with( self.sched.sendCommand, seconds=5,
        #             args=name, days=2, hours=3, kwargs=456, weeks=1, minutes=4,
        #             start_date=datetime.datetime( 2013, 1, 2, 3, 4, 5 ) )

        self.sched.shutdown()
        self.sched = None
Exemple #10
0
    def test_add_date(self, que, sub, start, add_date_job):
        self.sched = HMScheduler(que)
        self.sched.start()
        add_date_job.reset_mock()
        add_date_job.return_value = 555
        self.sched.jobs['Unit Test'] = []

        name = 'Unit Test'
        device = 'device'
        port = 'port'
        listeners = []
        scheduler_id = str(uuid.uuid4())
        date = datetime.datetime(2013, 1, 2, 3, 4, 5)
        args = (name, device, port, listeners, scheduler_id)
        #         kwargs = {}
        #         self.sched.add_date( date, args, kwargs )
        #
        #         add_date_job.assert_called_once_with( self.sched.sendCommand,
        #                                                date=datetime.datetime( 2013, 1, 2, 3, 4, 5 ),
        #                                                *args, **kwargs )
        #
        #         self.assertListEqual( self.sched.jobs[name], [555, 555] )
        self.sched.shutdown()
        self.sched = None
Exemple #11
0
    def test_add_cron(self, que, sub, start, add_cron_job):
        self.sched = HMScheduler(que)
        self.sched.start()
        add_cron_job.reset_mock()
        add_cron_job.return_value = 555

        name = 'Unit Test'
        year = 2013
        month = 1
        day_of_week = 1
        week = 99
        day = 2
        hour = 3
        minute = 4
        second = 5
        start_date = datetime.datetime(2013, 1, 2, 3, 4, 5)
        args = (name)
        kwargs = 456
        self.sched.add_cron(year, month, day, week, day_of_week, hour, minute,
                            second, start_date, args, kwargs)

        add_cron_job.assert_called_once_with(self.sched.sendCommand,
                                             week=99,
                                             hour=3,
                                             args=args,
                                             year=2013,
                                             day_of_week=1,
                                             month=1,
                                             second=5,
                                             minute=4,
                                             kwargs=456,
                                             start_date=datetime.datetime(
                                                 2013, 1, 2, 3, 4, 5),
                                             day=2)
        self.sched.shutdown()
        self.sched = None
Exemple #12
0
 def test_scheduler_topic_name(self, tx):
     self.sched = HMScheduler(tx)
     self.assertEqual(self.sched.scheduler_topic_name,
                      Constants.TopicNames.SchedulerStep)
     self.sched.shutdown()
     self.sched = None
Exemple #13
0
 def test_logger_name(self, tx):
     self.sched = HMScheduler(tx)
     self.assertEqual(self.sched.logger_name, Constants.LogKeys.Scheduler)
     self.sched.shutdown()
     self.sched = None