Esempio n. 1
0
    def test_recv_task_resp(self):
        # ProgramTask
        self.power_supply.send_task(ProgramTask(name=TaskName.END))
        self.assertEqual(
            self.power_supply.recv_task_resp(),
            TaskResponse(status=Status.ERROR,
                         value={'error': 'Not Implemented'}))

        # SystemTask
        self.power_supply.send_task(SystemTask(name=TaskName.ACTIVE))
        self.assertEqual(self.power_supply.recv_task_resp(),
                         TaskResponse(status=Status.OK, value=None))

        # EntityTask
        self.power_supply.send_task(Task(name=TaskName.GET_INFO))
        self.assertEqual(
            self.power_supply.recv_task_resp(),
            TaskResponse(status=Status.OK,
                         value={
                             'info': {
                                 'uuid': str(self.power_supply.uuid),
                                 'identifier':
                                 type(self.power_supply).identifier,
                                 'type': {
                                     'actuator': ['POWER'],
                                     'sensor': [],
                                     'accessor': []
                                 },
                             }
                         }))
Esempio n. 2
0
    def handle(self, task):
        def get_info():
            return {
                'uuid': str(self.entity.uuid),
                'identifier': type(self.entity).identifier,
                'type': {
                    'actuator': ['LUMINOSITY'],
                    'sensor': [],
                    'accessor': []
                }
            }

        if self.entity.active and task.level == TaskLevel.ENTITY:
            task_response = TaskResponse(Status.ERROR,
                                         {'error': 'Not Implemented'})

        elif task.level == TaskLevel.SYSTEM:
            if task.name == TaskName.GET_SYSTEM_INFO:
                system_info = get_info()
                system_info['active'] = self.entity.active
                task_response = TaskResponse(
                    status=Status.OK, value={'system_info': system_info})
            elif task.name == TaskName.ACTIVE:
                self.entity.active = True

                if self.entity.has_function(Function.POWERED):
                    powered = self.entity.get_function(Function.POWERED)
                    for i in powered.power_outputs:
                        i.set_power(powered.power_inputs[0].get_power())

                task_response = TaskResponse(status=Status.OK, value=None)
            elif task.name == TaskName.DEACTIVATE:
                self.entity.active = False

                if self.entity.has_function(Function.POWERED):
                    powered = self.entity.get_function(Function.POWERED)
                    for i in powered.power_outputs:
                        i.set_power()

                task_response = TaskResponse(status=Status.OK, value=None)
            else:
                task_response = TaskResponse(Status.ERROR,
                                             {'error': 'Not Implemented'})

        elif task.level == TaskLevel.PROGRAM:
            task_response = TaskResponse(Status.ERROR,
                                         {'error': 'Not Implemented'})

        else:
            task_response = TaskResponse(Status.ERROR,
                                         {'error': 'Not Implemented'})

        return task_response
Esempio n. 3
0
    def test_recv_task_resp(self):
        self.light.send_task(
            SystemTask(name=TaskName.SET_POWER,
                       value={'power': ElectricPower(110)}))
        self.assertEqual(TaskResponse(Status.OK), self.light.recv_task_resp())

        self.light.send_task(SystemTask(name=TaskName.ACTIVE))
        self.assertEqual(TaskResponse(Status.OK), self.light.recv_task_resp())

        self.light.send_task(Task(name=TaskName.GET_INFO))
        self.assertEqual(
            TaskResponse(status=Status.OK,
                         value={
                             'info': {
                                 'uuid': str(self.light.uuid),
                                 'identifier': type(self.light).identifier,
                                 'type': {
                                     'actuator': ['POWER'],
                                     'sensor': [],
                                     'accessor': []
                                 },
                             }
                         }), self.light.recv_task_resp())
Esempio n. 4
0
    def test_active_deactivate(self):
        self.light.send_task(
            SystemTask(name=TaskName.SET_POWER,
                       value={'power': ElectricPower(110)}))
        self.assertEqual(self.light.recv_task_resp(),
                         TaskResponse(status=Status.OK, value=None))

        self.light.send_task(SystemTask(name=TaskName.DEACTIVATE))
        self.assertEqual(self.light.recv_task_resp(),
                         TaskResponse(status=Status.OK, value=None))

        self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            self.light.recv_task_resp().value['system_info']['active'])

        self.light.send_task(SystemTask(name=TaskName.ACTIVE))
        self.assertEqual(self.light.recv_task_resp(),
                         TaskResponse(status=Status.OK, value=None))

        self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            self.light.recv_task_resp().value['system_info']['active'])

        self.light.send_task(SystemTask(name=TaskName.DEACTIVATE))
        self.assertEqual(self.light.recv_task_resp(),
                         TaskResponse(status=Status.OK, value=None))
        self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            self.light.recv_task_resp().value['system_info']['active'])

        self.light.send_task(Task(name=TaskName.GET_INFO))
        self.assertEqual(
            self.light.recv_task_resp(),
            TaskResponse(status=Status.OK,
                         value={
                             'info': {
                                 'uuid': str(self.light.uuid),
                                 'identifier': type(self.light).identifier,
                                 'type': {
                                     'actuator': ['POWER'],
                                     'sensor': [],
                                     'accessor': []
                                 },
                             }
                         }))

        self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            self.light.recv_task_resp().value['system_info']['active'])

        self.light.send_task(SystemTask(name=TaskName.DEACTIVATE))
        self.assertEqual(self.light.recv_task_resp(),
                         TaskResponse(status=Status.OK, value=None))

        self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            self.light.recv_task_resp().value['system_info']['active'])

        self.light.send_task(SystemTask(name=TaskName.ACTIVE))
        self.assertEqual(self.light.recv_task_resp(),
                         TaskResponse(status=Status.OK, value=None))

        self.light.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            self.light.recv_task_resp().value['system_info']['active'])

        self.light.send_task(Task(name=TaskName.GET_INFO))
        self.assertEqual(
            self.light.recv_task_resp(),
            TaskResponse(status=Status.OK,
                         value={
                             'info': {
                                 'uuid': str(self.light.uuid),
                                 'identifier': type(self.light).identifier,
                                 'type': {
                                     'actuator': ['POWER'],
                                     'sensor': [],
                                     'accessor': []
                                 },
                             }
                         }))
Esempio n. 5
0
    def test_main_6(self):
        # Create System
        self.system = System('MyNewSystem')

        # Put Space on the System
        self.system.put_space(
            dimension=(40, 30, 12),
            resolution=1,
            space_factor_types=[i for i in SpaceFactor.SpaceFactor])

        # Put Entity on the Space
        power_supply = PowerSupply(uuid=uuid.uuid4())
        light_switch1 = Switch(uuid=uuid.uuid4())
        wire_ls1 = PowerWire(power_supply, light_switch1)
        light1 = Light(uuid=uuid.uuid4(),
                       selected_functions=(Function.POWERED, ))
        wire_l1 = PowerWire(light_switch1, light1)

        light_switch2 = Switch(uuid=uuid.uuid4())
        wire_ls2 = PowerWire(power_supply, light_switch2)
        light2 = Light(uuid=uuid.uuid4(),
                       selected_functions=(Function.POWERED, ))
        wire_l2 = PowerWire(light_switch2, light2)

        power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            power_supply.recv_task_resp().value['system_info']['active'])
        light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            light_switch1.recv_task_resp().value['system_info']['active'])
        self.assertFalse(light1.active)
        light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            light_switch2.recv_task_resp().value['system_info']['active'])
        self.assertFalse(light2.active)

        # Turn On PowerSupply
        power_supply.send_task(SystemTask(name=TaskName.ACTIVE))
        self.assertEqual(TaskResponse(status=Status.OK, value=None),
                         power_supply.recv_task_resp())

        power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            power_supply.recv_task_resp().value['system_info']['active'])
        light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            light_switch1.recv_task_resp().value['system_info']['active'])
        self.assertFalse(light1.active)
        light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            light_switch2.recv_task_resp().value['system_info']['active'])
        self.assertFalse(light2.active)

        # Turn On Switch
        light_switch1.send_task(SystemTask(name=TaskName.ACTIVE))
        self.assertEqual(TaskResponse(status=Status.OK, value=None),
                         light_switch1.recv_task_resp())

        power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            power_supply.recv_task_resp().value['system_info']['active'])
        light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            light_switch1.recv_task_resp().value['system_info']['active'])
        self.assertTrue(light1.active)
        light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            light_switch2.recv_task_resp().value['system_info']['active'])
        self.assertFalse(light2.active)

        light_switch2.send_task(SystemTask(name=TaskName.ACTIVE))
        self.assertEqual(TaskResponse(status=Status.OK, value=None),
                         light_switch2.recv_task_resp())

        power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            power_supply.recv_task_resp().value['system_info']['active'])
        light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            light_switch1.recv_task_resp().value['system_info']['active'])
        self.assertTrue(light1.active)
        light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            light_switch2.recv_task_resp().value['system_info']['active'])
        self.assertTrue(light2.active)

        # Turn Off Switch
        light_switch1.send_task(SystemTask(name=TaskName.DEACTIVATE))
        self.assertEqual(TaskResponse(status=Status.OK, value=None),
                         light_switch1.recv_task_resp())

        power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            power_supply.recv_task_resp().value['system_info']['active'])
        light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            light_switch1.recv_task_resp().value['system_info']['active'])
        self.assertFalse(light1.active)
        light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            light_switch2.recv_task_resp().value['system_info']['active'])
        self.assertTrue(light2.active)

        light_switch2.send_task(SystemTask(name=TaskName.DEACTIVATE))
        self.assertEqual(TaskResponse(status=Status.OK, value=None),
                         light_switch2.recv_task_resp())

        power_supply.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertTrue(
            power_supply.recv_task_resp().value['system_info']['active'])
        light_switch1.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            light_switch1.recv_task_resp().value['system_info']['active'])
        self.assertFalse(light1.active)
        light_switch2.send_task(SystemTask(name=TaskName.GET_SYSTEM_INFO))
        self.assertFalse(
            light_switch2.recv_task_resp().value['system_info']['active'])
        self.assertFalse(light2.active)

        power_supply.destroy()
        light_switch1.destroy()
        light_switch2.destroy()
        light1.destroy()
        light2.destroy()
Esempio n. 6
0
    def handle(self, task):
        def get_info():
            return {
                'uuid': str(self.entity.uuid),
                'identifier': type(self.entity).identifier,
                'type': {
                    'actuator': [
                        'LUMINOSITY'
                    ],
                    'sensor': [],
                    'accessor': []
                }
            }

        powered = self.entity.get_function(Function.POWERED)
        power = powered.get_power_input().get_power()

        if task.level == TaskLevel.ENTITY and power in powered.input_power_ratings:
            if task.name == TaskName.GET_INFO:
                task_response = TaskResponse(Status.OK, {'info': get_info()})
            else:
                task_response = TaskResponse(Status.ERROR, {'error': 'Not Implemented'})

        elif task.level == TaskLevel.SYSTEM:
            if task.name == TaskName.GET_SYSTEM_INFO:
                system_info = get_info()
                system_info['active'] = self.entity.active
                task_response = TaskResponse(status=Status.OK, value={'system_info': system_info})
            elif task.name == TaskName.ACTIVE:
                if power in powered.input_power_ratings:
                    self.entity.active = True
                    task_response = TaskResponse(status=Status.OK, value=None)
                else:
                    task_response = TaskResponse(status=Status.ERROR, value={'error': 'No Input Power'})
            elif task.name == TaskName.DEACTIVATE:
                self.entity.active = False
                task_response = TaskResponse(status=Status.OK, value=None)
            elif task.name == TaskName.SET_POWER:
                power = task.value['power']
                powered.get_power_input().power = power
                if power not in powered.input_power_ratings:
                    self.entity.active = False
                task_response = TaskResponse(status=Status.OK, value=None)
            elif task.name == TaskName.ACTUATE:
                if power not in powered.input_power_ratings:
                    task_response = TaskResponse(status=Status.ERROR, value={'error': 'No Input Power'})
                else:
                    space_factor_patch = self.entity.get_function(Function.ACTUATE).actuate(**task.value)
                    task_response = TaskResponse(status=Status.OK, value=space_factor_patch)
            else:
                task_response = TaskResponse(Status.ERROR, {'error': 'Not Implemented'})

        elif task.level == TaskLevel.PROGRAM:
            if task.name == TaskName.END:
                task_response = self.handle_end()
            else:
                task_response = TaskResponse(Status.ERROR, {'error': 'Not Implemented'})

        else:
            task_response = TaskResponse(Status.ERROR, {'error': 'Not Implemented'})

        return task_response