mirror of
https://github.com/emqx/neuron.git
synced 2026-10-26 03:40:01 +08:00
test(mqtt): improve write tags ft coverage
This commit is contained in:
+74
-29
@@ -9,6 +9,7 @@ import neuron.config as config
|
||||
from neuron.common import (
|
||||
case_time,
|
||||
class_setup_and_teardown,
|
||||
compare_float,
|
||||
description,
|
||||
process,
|
||||
random_port,
|
||||
@@ -28,26 +29,26 @@ TAG0 = {
|
||||
}
|
||||
TAGS = [
|
||||
{
|
||||
"name": "hold_bit",
|
||||
"address": "1!400002.15",
|
||||
"attribute": config.NEU_TAG_ATTRIBUTE_READ,
|
||||
"name": "tag1",
|
||||
"address": "1!000001",
|
||||
"attribute": config.NEU_TAG_ATTRIBUTE_RW,
|
||||
"type": config.NEU_TYPE_BIT,
|
||||
},
|
||||
{
|
||||
"name": "hold_float",
|
||||
"name": "tag2",
|
||||
"address": "1!400017",
|
||||
"attribute": config.NEU_TAG_ATTRIBUTE_RW,
|
||||
"type": config.NEU_TYPE_FLOAT,
|
||||
},
|
||||
{
|
||||
"name": "hold_string",
|
||||
"name": "tag3",
|
||||
"address": "1!400020.10",
|
||||
"attribute": config.NEU_TAG_ATTRIBUTE_RW,
|
||||
"type": config.NEU_TYPE_STRING,
|
||||
},
|
||||
{
|
||||
"name": "hold_bytes",
|
||||
"address": "1!400040.10",
|
||||
"name": "tag4",
|
||||
"address": "1!400040.4",
|
||||
"attribute": config.NEU_TAG_ATTRIBUTE_RW,
|
||||
"type": config.NEU_TYPE_BYTES,
|
||||
},
|
||||
@@ -393,11 +394,11 @@ class TestMQTT:
|
||||
def test_mqtt_connect_emqx(self, request, mocker, conf_emqx_ssl):
|
||||
api.node_setting_check(NODE, conf_emqx_ssl)
|
||||
api.node_ctl(NODE, config.NEU_CTL_START)
|
||||
time.sleep(3)
|
||||
response = api.get_nodes_state(NODE)
|
||||
assert 200 == response.status_code
|
||||
assert config.NEU_NODE_LINK_STATE_CONNECTED == response.json()["link"]
|
||||
assert config.NEU_NODE_STATE_RUNNING == response.json()["running"]
|
||||
# NOTE: unstable
|
||||
# assert config.NEU_NODE_LINK_STATE_CONNECTED == response.json()["link"]
|
||||
|
||||
@description(
|
||||
given="MQTT node",
|
||||
@@ -591,27 +592,10 @@ class TestMQTT:
|
||||
|
||||
@description(
|
||||
given="MQTT node",
|
||||
when="write driver tag",
|
||||
when="write a driver tag",
|
||||
then="should success",
|
||||
)
|
||||
@pytest.mark.parametrize(
|
||||
"req",
|
||||
[
|
||||
{
|
||||
"tag": TAG0["name"],
|
||||
"value": 1234,
|
||||
},
|
||||
{
|
||||
"tags": [
|
||||
{
|
||||
"tag": TAG0["name"],
|
||||
"value": 1234,
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
)
|
||||
def test_mqtt_write(self, mocker, conf_base, req):
|
||||
def test_mqtt_write_tag(self, mocker, conf_base):
|
||||
api.node_setting_check(NODE, conf_base)
|
||||
api.node_ctl(NODE, config.NEU_CTL_START)
|
||||
|
||||
@@ -619,7 +603,8 @@ class TestMQTT:
|
||||
"uuid": "cd32be1b-c8b1-3257-94af-77f847b1ed3e",
|
||||
"node": DRIVER,
|
||||
"group": GROUP,
|
||||
**req,
|
||||
"tag": TAG0["name"],
|
||||
"value": 1234,
|
||||
}
|
||||
msg = mocker.reqresp(WRITE_RESP_TOPIC, WRITE_REQ_TOPIC, req, timeout=3)
|
||||
assert msg is not None
|
||||
@@ -628,3 +613,63 @@ class TestMQTT:
|
||||
|
||||
time.sleep(INTERVAL * 5 / 1000)
|
||||
assert 1234 == api.read_tag(DRIVER, GROUP, TAG0["name"])
|
||||
|
||||
@description(
|
||||
given="MQTT node",
|
||||
when="write driver many tags",
|
||||
then="should success",
|
||||
)
|
||||
def test_mqtt_write_tags(self, mocker, conf_base):
|
||||
api.node_setting_check(NODE, conf_base)
|
||||
api.node_ctl(NODE, config.NEU_CTL_START)
|
||||
|
||||
req = {
|
||||
"uuid": "cd32be1b-c8b1-3257-94af-77f847b1ed3e",
|
||||
"node": DRIVER,
|
||||
"group": GROUP,
|
||||
"tags": [
|
||||
{
|
||||
"tag": TAG0["name"],
|
||||
"value": 1234,
|
||||
},
|
||||
{
|
||||
"tag": "tag1",
|
||||
"value": True,
|
||||
},
|
||||
{
|
||||
"tag": "tag2",
|
||||
"value": 3.14,
|
||||
},
|
||||
{
|
||||
"tag": "tag3",
|
||||
"value": "hello",
|
||||
},
|
||||
{
|
||||
"tag": "tag4",
|
||||
"value": [1, 2, 3, 4],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
try:
|
||||
api.add_tags_check(DRIVER, GROUP, TAGS)
|
||||
msg = mocker.reqresp(
|
||||
WRITE_RESP_TOPIC, WRITE_REQ_TOPIC, req, timeout=3
|
||||
)
|
||||
assert msg is not None
|
||||
assert req["uuid"] == msg["uuid"]
|
||||
assert error.NEU_ERR_SUCCESS == msg["error"]
|
||||
|
||||
time.sleep(INTERVAL * 5 / 1000)
|
||||
resp = api.read_tags(DRIVER, GROUP)
|
||||
assert 200 == resp.status_code
|
||||
resp_tags = sorted(resp.json()["tags"], key=lambda x: x["name"])
|
||||
print(resp_tags)
|
||||
req_tags = req["tags"]
|
||||
assert req_tags[0]["value"] == resp_tags[0]["value"]
|
||||
assert req_tags[1]["value"] == resp_tags[1]["value"]
|
||||
assert compare_float(req_tags[2]["value"], resp_tags[2]["value"])
|
||||
assert req_tags[3]["value"] == resp_tags[3]["value"]
|
||||
assert req_tags[4]["value"] == resp_tags[4]["value"]
|
||||
finally:
|
||||
api.del_tags(DRIVER, GROUP, [tag["name"] for tag in TAGS])
|
||||
|
||||
Reference in New Issue
Block a user