コード例 #1
0
    async def test_device_self_get_request(self):
        defines.EXCHANGE_LIFETIME = 2
        device0 = Device.init_from_file(
            di='10000000-0000-0000-0000-000000000001',
            class_name='EchoDevice',
            path=self.config_path)
        await wait_run_device(device0)

        address = list(device0.transport_layer.eps_coap_ipv4.keys())[0]
        request = Request()
        # request.token = _token
        # request.query = {'owned': ['TRUE']}
        request.type = NON
        request.code = Code.GET
        request.uri_path = '/oic/res'
        request.content_type = 10000
        request.source = (
            address,
            list(device0.transport_layer.eps_coap_ipv4[address].keys())[0])
        # request.multicast = True
        # request.family = _msg.family
        request.scheme = 'coap'
        request.destination = (
            address,
            list(device0.transport_layer.eps_coap_ipv4[address].keys())[0])
        # request.destination = (address, 5683)
        res2 = await device0.transport_layer.coap.send_message(request)
        links = res2.decode_payload()
        await asyncio.sleep(15)
        await device0.stop()
        self.assertGreater(len(links), 7)
        link = links[0]
        self.assertIn('href', link)
        self.assertIn('eps', link)
        pass
コード例 #2
0
ファイル: plugtest.py プロジェクト: businka/Bubot_CoAP
    def test_td_coap_core_03(self):
        print("TD_COAP_CORE_03")
        path = "/test"

        req = Request()
        req.code = defines.Codes.PUT.number
        req.uri_path = path
        req.type = defines.Types["CON"]
        req.content_type = defines.Content_types["application/xml"]
        req._mid = self.current_mid
        req.destination = self.server_address
        req.payload = "<value>test</value>"

        expected = Response()
        expected.type = defines.Types["ACK"]
        expected._mid = self.current_mid
        expected.code = defines.Codes.CHANGED.number
        expected.token = None
        expected.payload = None

        self.current_mid += 1
        exchange1 = (req, expected)

        req = Request()
        req.code = defines.Codes.GET.number
        req.uri_path = path
        req.type = defines.Types["CON"]
        req._mid = self.current_mid
        req.destination = self.server_address

        expected = Response()
        expected.type = defines.Types["ACK"]
        expected._mid = self.current_mid
        expected.code = defines.Codes.CONTENT.number
        expected.token = None
        expected.payload = "Test Resource"

        self.current_mid += 1
        exchange2 = (req, expected)

        req = Request()
        req.code = defines.Codes.GET.number
        req.uri_path = path
        req.type = defines.Types["CON"]
        req._mid = self.current_mid
        req.destination = self.server_address
        req.accept = defines.Content_types["application/xml"]

        expected = Response()
        expected.type = defines.Types["ACK"]
        expected._mid = self.current_mid
        expected.code = defines.Codes.CONTENT.number
        expected.token = None
        expected.payload = "<value>test</value>"
        expected.content_type = defines.Content_types["application/xml"]

        self.current_mid += 1
        exchange3 = (req, expected)
        self._test_with_client([exchange1, exchange2, exchange3])
コード例 #3
0
ファイル: TransporLayer.py プロジェクト: businka/Bubot_Core
 async def get_name(_result):
     _request = Request()
     _request.type = NON
     _request.code = Code.GET
     _request.uri_path = '/oic/d'
     _request.content_type = 10000
     _request.source = _msg.destination
     _request.family = _msg.family
     _request.scheme = _msg.scheme
     _request.destination = _msg.source
     resp = await self.coap.send_message(_request)
     _payload = resp.decode_payload()
     # result[di]['oic-d'] = json.dumps(_payload)  # debug
     _result['n'] = _payload['n']
     _result['di'] = _payload['di']
コード例 #4
0
ファイル: TransporLayer.py プロジェクト: businka/Bubot_Core
        async def get_eps(_result):
            _request = Request()
            _request.type = NON
            _request.code = Code.GET
            _request.uri_path = '/oic/res'
            _request.query = {'rt': ['oic.r.doxm']}
            _request.content_type = 10000

            _request.source = _msg.destination
            _request.family = _msg.family
            _request.scheme = _msg.scheme
            _request.destination = _msg.source
            _resp = await self.coap.send_message(_request)
            _payload = _resp.decode_payload()
            if len(_payload) > 1:
                self.device.log.error(
                    f'not supported answer /oic/res. {_result.get("di")}')
            _payload = _payload[0]
            # result[di]['res'] = json.dumps(_payload)  # for debug
            _eps = []
            if 'links' in _payload:
                _link = _payload['links']
                if 'eps' in _link:  # todo надо узнать по старому формату eps может быть вообще?
                    _eps = _link['eps']
                    return
                else:
                    _eps.append({
                        'ep':
                        f'{_msg.family}://{_msg.source[0]}:{_msg.source[1]}'
                    })
                    try:
                        if 'p' in _link and _link['p'].get(
                                'sec') and _link['p'].get('port'):
                            _eps.append({
                                'ep':
                                f'coaps://{_msg.source[0]}:{_link["p"]["port"]}'
                            })
                    except Exception:
                        pass
                    return
            else:
                _eps = _payload['eps']
            _result['family'] = _msg.family
            for elem in _eps:
                _url = urlparse(elem['ep'])
                if _url.scheme in ['coap', 'coaps']:
                    _address = _url.netloc.split(":")
                    _result[_url.scheme] = (_address[0], int(_address[1]))
コード例 #5
0
ファイル: plugtest.py プロジェクト: businka/Bubot_CoAP
    def test_td_coap_core_07(self):
        print("TD_COAP_CORE_07")
        path = "/test"

        req = Request()
        req.code = defines.Codes.PUT.number
        req.uri_path = path
        req.type = defines.Types["NON"]
        req.content_type = defines.Content_types["application/xml"]
        req._mid = self.current_mid
        req.destination = self.server_address
        req.payload = "<value>test</value>"

        expected = Response()
        expected.type = defines.Types["NON"]
        expected._mid = None
        expected.code = defines.Codes.CHANGED.number
        expected.token = None
        expected.payload = None

        self.current_mid += 1
        self._test_with_client([(req, expected)])