Ejemplo n.º 1
0
    def test_add(self):
        """ Test adding data to the InputStatus. """
        inps = InputStatus()
        inps.set_input({'input': 1, 'status': 1})
        states = [{k: v
                   for k, v in x.items() if k in ('id', 'status')}
                  for x in inps.get_inputs()]
        self.assertEqual(len(states), 1)
        self.assertIn({'id': 1, 'status': True}, states)

        inps.set_input({'input': 2, 'status': 1})
        states = [{k: v
                   for k, v in x.items() if k in ('id', 'status')}
                  for x in inps.get_inputs()]
        self.assertEqual(len(states), 2)
        self.assertIn({'id': 2, 'status': True}, states)
        self.assertIn({'id': 1, 'status': True}, states)

        inps.set_input({'input': 3, 'status': 0})
        states = [{k: v
                   for k, v in x.items() if k in ('id', 'status')}
                  for x in inps.get_inputs()]
        self.assertEqual(len(states), 3)
        self.assertIn({'id': 3, 'status': False}, states)
        self.assertIn({'id': 1, 'status': True}, states)
Ejemplo n.º 2
0
    def __init__(self,
                 master_communicator=INJECTED,
                 master_controller=INJECTED,
                 message_client=INJECTED,
                 shutter_controller=INJECTED):
        """
        :param master_communicator: Master communicator
        :type master_communicator: master.master_communicator.MasterCommunicator
        :param master_controller: Master controller
        :type master_controller: gateway.master_controller.MasterController
        :param message_client: MessageClient instance
        :type message_client: bus.om_bus_client.MessageClient
        :param shutter_controller: Shutter Controller
        :type shutter_controller: gateway.shutters.ShutterController
        """
        self._master_communicator = master_communicator
        self._master_controller = master_controller
        self._message_client = message_client
        self._gateway_api = None

        self._master_subscriptions = {
            Observer.LegacyMasterEvents.ON_SHUTTER_UPDATE: [],
            Observer.LegacyMasterEvents.ON_INPUT_CHANGE: [],
            Observer.LegacyMasterEvents.ONLINE: []
        }
        self._event_subscriptions = []

        self._input_status = InputStatus(on_input_change=self._input_changed)
        self._thermostat_status = ThermostatStatus(
            on_thermostat_change=self._thermostat_changed,
            on_thermostat_group_change=self._thermostat_group_changed)
        self._shutter_controller = shutter_controller
        self._shutter_controller.set_shutter_changed_callback(
            self._shutter_changed)

        self._master_controller.subscribe_event(self._master_event)

        self._input_interval = 300
        self._input_last_updated = 0
        self._input_config = {}
        self._thermostats_original_interval = 30
        self._thermostats_interval = self._thermostats_original_interval
        self._thermostats_last_updated = 0
        self._thermostats_restore = 0
        self._thermostats_config = {}
        self._shutters_interval = 600
        self._shutters_last_updated = 0
        self._master_online = False
        self._background_consumers_registered = False
        self._master_version = None

        self._thread = Thread(target=self._monitor)
        self._thread.daemon = True
Ejemplo n.º 3
0
    def test_set_input_without_status(self):
        changed = []

        def on_input_change(input_id, status):
            changed.append(input_id)

        inps = InputStatus(on_input_change=on_input_change)
        inps.set_input({'input': 6, 'status': 1})
        current_status = inps.get_input(6)
        self.assertEquals(current_status['status'], True)
        inps.set_input({'input': 6})
        current_status = inps.get_input(6)
        self.assertEquals(current_status['status'], None)
        self.assertEquals(len(changed), 2)
Ejemplo n.º 4
0
    def test_on_changed(self):
        changed = []

        def on_input_change(input_id, status):
            changed.append(input_id)

        inps = InputStatus(on_input_change=on_input_change)
        inps.set_input({'input': 6, 'status': 0})
        inps.set_input({'input': 6, 'status': 1})
        inps.set_input({'input': 6, 'status': 1})
        inps.set_input({'input': 6, 'status': 0})
        inps.set_input({'input': 6, 'status': 0})
        inps.set_input({'input': 6, 'status': 1})
        self.assertEquals(len(changed), 4)
Ejemplo n.º 5
0
    def test_timeout(self):
        """ Test timeout of InputStatus data. """
        inps = InputStatus(5, 1)
        inps.set_input({'input': 1, 'status': 1})
        self.assertEquals([1], inps.get_recent())

        time.sleep(0.8)

        inps.set_input({'input': 2, 'status': 1})
        self.assertEquals([1, 2], inps.get_recent())

        time.sleep(0.3)

        self.assertEquals([2], inps.get_recent())
Ejemplo n.º 6
0
    def test_timeout(self):
        """ Test timeout of InputStatus data. """
        inps = InputStatus(5, 1)
        inps.add_data(1)
        self.assertEquals([1], inps.get_status())

        time.sleep(0.8)

        inps.add_data(2)
        self.assertEquals([1, 2], inps.get_status())

        time.sleep(0.3)

        self.assertEquals([2], inps.get_status())
Ejemplo n.º 7
0
    def test_get_recent(self):
        """ Test adding data to the InputStatus. """
        inps = InputStatus()
        with mock.patch.object(time, 'time', return_value=10):
            inps.set_input({'input': 1, 'status': 1})
            self.assertEqual([1], inps.get_recent())

        with mock.patch.object(time, 'time', return_value=30):
            for i in xrange(2, 10):
                inps.set_input({'input': i, 'status': 1})
            self.assertEqual(5, len(inps.get_recent()))

        with mock.patch.object(time, 'time', return_value=60):
            self.assertEqual(0, len(inps.get_recent()))

        with mock.patch.object(time, 'time', return_value=35):
            inps.set_input({'input': 1, 'status': 0})
            inps.set_input({'input': 2, 'status': 1})
            self.assertIn(1, inps.get_recent())
            self.assertNotIn(2, inps.get_recent())
Ejemplo n.º 8
0
    def test_add(self):
        """ Test adding data to the InputStatus. """
        inps = InputStatus(5, 300)
        inps.set_input({'input': 1, 'status': 1})
        self.assertEquals([1], inps.get_recent())

        inps.set_input({'input': 2, 'status': 1})
        self.assertEquals([1, 2], inps.get_recent())

        inps.set_input({'input': 3, 'status': 1})
        self.assertEquals([1, 2, 3], inps.get_recent())

        inps.set_input({'input': 4, 'status': 1})
        self.assertEquals([1, 2, 3, 4], inps.get_recent())

        inps.set_input({'input': 5, 'status': 1})
        self.assertEquals([1, 2, 3, 4, 5], inps.get_recent())

        inps.set_input({'input': 6, 'status': 1})
        self.assertEquals([2, 3, 4, 5, 6], inps.get_recent())

        inps.set_input({'input': 7, 'status': 1})
        self.assertEquals([3, 4, 5, 6, 7], inps.get_recent())
Ejemplo n.º 9
0
    def test_add(self):
        """ Test adding data to the InputStatus. """
        inps = InputStatus(5, 300)
        inps.add_data(1)
        self.assertEquals([1], inps.get_status())

        inps.add_data(2)
        self.assertEquals([1, 2], inps.get_status())

        inps.add_data(3)
        self.assertEquals([1, 2, 3], inps.get_status())

        inps.add_data(4)
        self.assertEquals([1, 2, 3, 4], inps.get_status())

        inps.add_data(5)
        self.assertEquals([1, 2, 3, 4, 5], inps.get_status())

        inps.add_data(6)
        self.assertEquals([2, 3, 4, 5, 6], inps.get_status())

        inps.add_data(7)
        self.assertEquals([3, 4, 5, 6, 7], inps.get_status())