Пример #1
0
 def test_simple(self):
     driver = Mock()
     primaryDevice = Mock()
     driver.getCommand = MagicMock(
         return_value=PolyTester.config['simple']['commands']['command1'])
     driver.getData = MagicMock(return_value={})
     device = RemoteDevice(None, primaryDevice, None, None, None, "test device",
                           PolyTester.config['simple'], driver)
     device.runCmd({'cmd': 'command1'})
     driver.executeCommand.assert_called_with('command1', None)
Пример #2
0
 def test_prefix(self):
     driver = Mock()
     driver.getData = Mock(return_value={'result': 1})
     primaryDevice = Mock()
     driver.getCommand = MagicMock(return_value=None)
     primaryDevice.connected = True
     device = RemoteDevice(None, primaryDevice, None, None, None, "test device",
                           PolyTester.config['prefix']['commandGroups']['group1'], driver)
     device.runCmd({'cmd': 'command1'})
     driver.executeCommand.assert_called_with('g1_command1', None)
     driver.getData.assert_called_with('g1_command2')
Пример #3
0
 def test_read_only(self):
     driver = Mock()
     primaryDevice = Mock()
     driver.getCommand = MagicMock(
         return_value=PolyTester.config['read_only']['commands']['command3'])
     driver.getData = MagicMock(return_value={})
     device = RemoteDevice(None, primaryDevice, None, None, None, "test device",
                           PolyTester.config['read_only'], driver)
     device.runCmd({'cmd': 'command3'})
     driver.executeCommand.assert_called_with('command3', None)
     self.assertEqual(device.driverSetters['GV0'], 'command3')
Пример #4
0
 def test_read_only_prefix(self):
     driver = Mock()
     primaryDevice = Mock()
     data = PolyTester.config['read_only_prefix']['commandGroups']['group1']
     driver.getCommand = MagicMock(
         return_value=data['commands']['command1'])
     driver.getData = MagicMock(return_value={})
     device = RemoteDevice(None, primaryDevice, None, None, None, "test device",
                           data, driver)
     device.runCmd({'cmd': 'command1'})
     driver.executeCommand.assert_called_with('r1_command1', None)
     self.assertEqual(device.driverSetters['GV0'], 'r1_command1')
Пример #5
0
 def test_skips_bad_input_command(self):
     driver = Mock()
     driver.getData = Mock(return_value={'result': 1})
     driver.hasCommand = Mock(return_value=False)
     primaryDevice = Mock()
     driver.getCommand = MagicMock(return_value=None)
     primaryDevice.connected = True
     device = RemoteDevice(None, primaryDevice, None, None, None, "test device",
                           PolyTester.config['state'], driver)
     device.runCmd({'cmd': 'command1'})
     driver.executeCommand.assert_called_with('command1', None)
     driver.getData.assert_not_called()
Пример #6
0
    def createDevices(self):
        customData = self.polyConfig.get('customData', {})
        addressMap = copy.deepcopy(customData.get('addressMap', {}))
        discoveredDevices = customData.get('discoveredDevices', {})
        removedDevices = customData.get('removedDevices', {})

        devicesConfig = self.configData.get('devices', {})
        if discoveredDevices is not None:
            devicesConfig.update(discoveredDevices)

        self.configData['devices'] = devicesConfig
        for deviceName, deviceData in devicesConfig.items():
            if self.isDeviceConfigured(deviceData) and deviceData.get('enable', True):
                driverName = deviceData['driver']
                deviceData.update(self.configData['drivers'][driverName])
                polyData = self.configData['poly']['drivers'].get(
                    driverName, {})
                deviceData['poly'].update(polyData)

                deviceDriver = self.deviceDriverInstances.get(driverName, {}).get(
                    deviceName)
                if deviceDriver is None:
                    deviceDriver = self.get_device_driver(driverName, deviceData)(
                        utils.merge_commands(deviceData), LOGGER, True)
                    self.deviceDriverInstances[driverName][deviceName] = deviceDriver

                nodeAddress = self.getDeviceAddress(deviceName, addressMap)
                if nodeAddress not in removedDevices:
                    nodeName = deviceData.get(
                        'name', utils.name_to_desc(deviceName))
                    primaryDevice = PrimaryRemoteDevice(self, nodeAddress,
                                                        driverName, nodeName, deviceData, deviceDriver)
                    self.addNode(primaryDevice)
                for commandGroup, commandGroupData in deviceData.get(
                        'commandGroups', {}).items():
                    commandGroupData['poly'] = polyData
                    groupConfig = self.configData['poly']['commandGroups'].get(
                        commandGroup)
                    if groupConfig:
                        groupDriverName = driverName + '_' + commandGroup
                        groupNodeAddress = self.getDeviceAddress(
                            deviceName + '_' + commandGroup, addressMap)
                        if groupNodeAddress not in removedDevices:
                            self.addNode(RemoteDevice(self, primaryDevice, nodeAddress,
                                                      groupNodeAddress, groupDriverName,
                                                      utils.name_to_desc(
                                                          commandGroup),
                                                      commandGroupData, deviceDriver))

        if customData.get('addressMap') != addressMap:
            self.saveCustomData({
                'addressMap': addressMap,
                'discoveredDevices': discoveredDevices,
                'removedDevices': removedDevices
            })