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
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])
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']
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]))
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)])