def runTest(self): args = [(1, None), (1, b''), (2, b'1'), (3, b'12345'), (9, b'0' * 1024)] req = Lwm2mRead('/1337/1/4') self.serv.send(req) empty_array_tlv = TLV.make_multires(resource_id=4, instances=[]) self.assertMsgEqual( Lwm2mContent.matching(req)(content=empty_array_tlv.serialize()), self.serv.recv()) # perform the Execute with arguments exec_content = b','.join( b'%d' % k if v is None else b"%d='%s'" % (k, v) for k, v in args) req = Lwm2mExecute('/1337/1/2', content=exec_content) self.serv.send(req) self.assertMsgEqual(Lwm2mChanged.matching(req)(), self.serv.recv()) # Exectue args should now be saved in the Execute Arguments array req = Lwm2mRead('/1337/1/4') self.serv.send(req) exec_args_tlv = TLV.make_multires(resource_id=4, instances=((k, v or b'') for k, v in args)) self.assertMsgEqual( Lwm2mContent.matching(req)(content=exec_args_tlv.serialize()), self.serv.recv())
def runTest(self): # 1. Discover is performed by the Server on /16, expecting '</16/0/0>' in the resulting payload linklist = self.discover(self.serv, oid=OID.Portfolio).content self.assertLinkListValid(linklist) self.assertIn(b'</16/0/0>', linklist.split(b',')) # 2. Create is performed </16/1> with specified payload self.create_instance_with_payload(self.serv, oid=OID.Portfolio, iid=1, payload=[ TLV.make_multires( RID.Portfolio.Identity, IDENTITIES_FOR_INSTANCE[1]) ]) # 3. Discover is performed by the Server on /16 linklist = self.discover(self.serv, oid=OID.Portfolio).content self.assertLinkListValid(linklist) self.assertIn(b'</16/0/0>', linklist.split(b',')) self.assertIn(b'</16/1/0>', linklist.split(b',')) # 4. Read entire object. EXPECTED_TLV = TLV.make_instance(0, [ TLV.make_multires(RID.Portfolio.Identity, IDENTITIES_FOR_INSTANCE[0]) ]).serialize() \ + TLV.make_instance(1, [ TLV.make_multires(RID.Portfolio.Identity, IDENTITIES_FOR_INSTANCE[1]) ]).serialize() self.assertEqual( EXPECTED_TLV, self.read_object(self.serv, oid=OID.Portfolio).content)
def runTest(self): # ensure the array is empty req = Lwm2mRead('/1337/1/3') self.serv.send(req) empty_array_tlv = TLV.make_multires(resource_id=3, instances=[]) self.assertMsgEqual( Lwm2mContent.matching(req)(content=empty_array_tlv.serialize()), self.serv.recv()) # write something array_tlv = TLV.make_multires( resource_id=3, instances=[ # (1, (0).to_bytes(0, byteorder='big')), (2, (12).to_bytes(1, byteorder='big')), (4, (1234).to_bytes(2, byteorder='big')), ]) req = Lwm2mWrite('/1337/1/3', array_tlv.serialize(), format=coap.ContentFormat.APPLICATION_LWM2M_TLV) self.serv.send(req) self.assertMsgEqual(Lwm2mChanged.matching(req)(), self.serv.recv()) # check updated content req = Lwm2mRead('/1337/1/3') self.serv.send(req) self.assertMsgEqual( Lwm2mContent.matching(req)( content=array_tlv.serialize(), format=coap.ContentFormat.APPLICATION_LWM2M_TLV), self.serv.recv())
def setUp(self): super().setUp() self.create_instance(self.serv, oid=OID.Portfolio, iid=0) self.test_write(path=ResPath.Portfolio[0].Identity, value=TLV.make_multires(RID.Portfolio.Identity, IDENTITIES_FOR_INSTANCE[0]).serialize(), format=coap.ContentFormat.APPLICATION_LWM2M_TLV)