async def SendWriteRequest(cls, devCtrl): res = await devCtrl.WriteAttribute( nodeid=NODE_ID, attributes=[ (0, Clusters.Basic.Attributes.NodeLabel("Test")), (0, Clusters.Basic.Attributes.Location("A loooong string")) ]) expectedRes = [ AttributeStatus(Path=AttributePath(EndpointId=0, ClusterId=40, AttributeId=5), Status=chip.interaction_model.Status.Success), AttributeStatus(Path=AttributePath(EndpointId=0, ClusterId=40, AttributeId=6), Status=chip.interaction_model.Status.InvalidValue) ] if res != expectedRes: for i in range(len(res)): if res[i] != expectedRes[i]: logger.error( f"Item {i} is not expected, expect {expectedRes[i]} got {res[i]}" ) raise AssertionError("Read returned unexpected result.")
async def TestWriteRequest(cls, devCtrl): logger.info("1: Trivial writes (multiple attributes)") res = await devCtrl.WriteAttribute( nodeid=NODE_ID, attributes=[ (0, Clusters.Basic.Attributes.NodeLabel("Test")), (0, Clusters.Basic.Attributes.Location("A loooong string")) ]) expectedRes = [ AttributeStatus(Path=AttributePath(EndpointId=0, ClusterId=40, AttributeId=5), Status=chip.interaction_model.Status.Success), AttributeStatus(Path=AttributePath(EndpointId=0, ClusterId=40, AttributeId=6), Status=chip.interaction_model.Status.InvalidValue) ] logger.info(f"Received WriteResponse: {res}") if res != expectedRes: for i in range(len(res)): if res[i] != expectedRes[i]: logger.error( f"Item {i} is not expected, expect {expectedRes[i]} got {res[i]}" ) raise AssertionError("Write returned unexpected result.") logger.info("2: Write chunked list") res = await devCtrl.WriteAttribute( nodeid=NODE_ID, attributes=[(1, Clusters.TestCluster.Attributes.ListLongOctetString( [b"0123456789abcdef" * 32] * 5))]) expectedRes = [ AttributeStatus(Path=AttributePath( EndpointId=1, Attribute=Clusters.TestCluster.Attributes.ListLongOctetString), Status=chip.interaction_model.Status.Success), ] logger.info(f"Received WriteResponse: {res}") if res != expectedRes: logger.error(f"Expect {expectedRes} got {res}") raise AssertionError("Write returned unexpected result.")
async def TestReadWriteAttributeRequestsWithVersion(cls, devCtrl): logger.info("TestReadWriteAttributeRequestsWithVersion") req = [ (0, Clusters.Basic.Attributes.VendorName) ] res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=req) VerifyDecodeSuccess(res) data_version = res[0][Clusters.Basic][DataVersion] res = await devCtrl.WriteAttribute(nodeid=NODE_ID, attributes=[ (0, Clusters.Basic.Attributes.NodeLabel( "Test")) ]) expectedRes = [ AttributeStatus(Path=AttributePath(EndpointId=0, ClusterId=40, AttributeId=5), Status=chip.interaction_model.Status.Success), ] if res != expectedRes: for i in range(len(res)): if res[i] != expectedRes[i]: logger.error( f"Item {i} is not expected, expect {expectedRes[i]} got {res[i]}") raise AssertionError("Write returned unexpected result.") req = [ (0, Clusters.Basic.Attributes.VendorName), ] res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=req, dataVersionFilters=[(0, Clusters.Basic, data_version)]) VerifyDecodeSuccess(res) new_data_version = res[0][Clusters.Basic][DataVersion] if (data_version + 1) != new_data_version: raise AssertionError("Version mistmatch happens.") res = await devCtrl.ReadAttribute(nodeid=NODE_ID, attributes=req, dataVersionFilters=[(0, Clusters.Basic, new_data_version)]) VerifyDecodeSuccess(res) res = await devCtrl.WriteAttribute(nodeid=NODE_ID, attributes=[ (0, Clusters.Basic.Attributes.NodeLabel( "Test"), new_data_version) ]) expectedRes = [ AttributeStatus(Path=AttributePath(EndpointId=0, ClusterId=40, AttributeId=5), Status=chip.interaction_model.Status.Success), ] if res != expectedRes: for i in range(len(res)): if res[i] != expectedRes[i]: logger.error( f"Item {i} is not expected, expect {expectedRes[i]} got {res[i]}") raise AssertionError("Write returned unexpected result.") res = await devCtrl.WriteAttribute(nodeid=NODE_ID, attributes=[ (0, Clusters.Basic.Attributes.NodeLabel( "Test"), new_data_version) ]) expectedRes = [ AttributeStatus(Path=AttributePath(EndpointId=0, ClusterId=40, AttributeId=5), Status=chip.interaction_model.Status.DataVersionMismatch), ] if res != expectedRes: for i in range(len(res)): if res[i] != expectedRes[i]: logger.error( f"Item {i} is not expected, expect {expectedRes[i]} got {res[i]}") raise AssertionError("Write returned unexpected result.")