Merge pull request #2077 from hxy7yx/v2.9-1

[v2.9]ft(modbus):test read tag
This commit is contained in:
fengzeroz
2024-06-07 14:58:32 +08:00
committed by GitHub
3 changed files with 51 additions and 6 deletions
+27 -6
View File
@@ -482,8 +482,7 @@ int modbus_value_handle_test(neu_plugin_t *plugin, void *req,
}
switch (point->type) {
case NEU_TYPE_UINT16:
case NEU_TYPE_INT16: {
case NEU_TYPE_UINT16: {
jtype = NEU_JSON_INT;
uint16_t tmp_val16;
memcpy(&tmp_val16, jvalue.val_bytes.bytes, sizeof(uint16_t));
@@ -491,6 +490,14 @@ int modbus_value_handle_test(neu_plugin_t *plugin, void *req,
jvalue.val_int = ntohs(tmp_val16);
break;
}
case NEU_TYPE_INT16: {
jtype = NEU_JSON_INT;
int16_t tmp_val16;
memcpy(&tmp_val16, jvalue.val_bytes.bytes, sizeof(int16_t));
free(jvalue.val_bytes.bytes);
jvalue.val_int = (int16_t) ntohs(tmp_val16);
break;
}
case NEU_TYPE_FLOAT: {
uint32_t tmp_valf;
memcpy(&tmp_valf, jvalue.val_bytes.bytes, sizeof(uint32_t));
@@ -499,12 +506,19 @@ int modbus_value_handle_test(neu_plugin_t *plugin, void *req,
jvalue.val_int = ntohl(tmp_valf);
break;
}
case NEU_TYPE_INT32:
case NEU_TYPE_INT32: {
jtype = NEU_JSON_INT;
int32_t tmp_val32;
memcpy(&tmp_val32, jvalue.val_bytes.bytes, sizeof(int32_t));
free(jvalue.val_bytes.bytes);
jvalue.val_int = (int32_t) ntohl(tmp_val32);
break;
}
case NEU_TYPE_UINT32: {
jtype = NEU_JSON_INT;
uint32_t tmp_val32;
memcpy(&tmp_val32, jvalue.val_bytes.bytes, sizeof(uint32_t));
free(jvalue.val_bytes.bytes);
jtype = NEU_JSON_INT;
jvalue.val_int = ntohl(tmp_val32);
break;
}
@@ -516,12 +530,19 @@ int modbus_value_handle_test(neu_plugin_t *plugin, void *req,
jvalue.val_int = neu_ntohll(tmp_vald);
break;
}
case NEU_TYPE_INT64:
case NEU_TYPE_INT64: {
jtype = NEU_JSON_INT;
int64_t tmp_val64;
memcpy(&tmp_val64, jvalue.val_bytes.bytes, sizeof(int64_t));
free(jvalue.val_bytes.bytes);
jvalue.val_int = (int64_t) neu_ntohll(tmp_val64);
break;
}
case NEU_TYPE_UINT64: {
jtype = NEU_JSON_INT;
uint64_t tmp_val64;
memcpy(&tmp_val64, jvalue.val_bytes.bytes, sizeof(uint64_t));
free(jvalue.val_bytes.bytes);
jtype = NEU_JSON_INT;
jvalue.val_int = neu_ntohll(tmp_val64);
break;
}
+21
View File
@@ -744,6 +744,27 @@ class TestModbus:
assert 0 == api.read_tag(
node=param[0], group='group', tag=input_bit_5[0]['name'])
@description(given="created modbus node", when="test read tag", then="read tcp success and read rtu failed")
def test_modbus_test_read_tag(self, param):
body = {
"driver": param[0],
"group": "group",
"tag": "tag",
"address": "1!400001",
"attribute": config.NEU_TAG_ATTRIBUTE_RW,
"type": config.NEU_TYPE_INT16,
"precision": 0,
"decimal": 0,
"bias": 0.0
}
if param[0] == 'modbus-tcp':
time.sleep(1)
response = api.test_read_tag(json=body)
assert response.json()["value"] == -123
else:
response = api.test_read_tag(json=body)
assert response.json()["error"] == 3022
@description(given="created modbus node and tags", when="read tags fuzz", then="should return correct result")
def test_read_tags_fuzz(self, param):
response = api.read_tags(
+3
View File
@@ -163,6 +163,9 @@ def read_tags_paginate(node, group, sync=False, query=None):
body["query"] = query
return requests.post(url=config.BASE_URL + "/api/v2/read/paginate", headers={"Authorization": config.default_jwt}, json=body)
def test_read_tag(json):
return requests.post(url=config.BASE_URL + '/api/v2/read/test', headers={"Authorization": config.default_jwt}, json=json)
def read_tag(node, group, tag, sync=False):
response = read_tags(node, group, sync, query={"name": tag})
assert 200 == response.status_code