Files
neuron/ft/group_test.robot
T

221 lines
9.9 KiB
Plaintext

*** Settings ***
Resource resource/api.resource
Resource resource/common.resource
Resource resource/error.resource
Suite Setup Start Neuronx
Suite Teardown Stop Neuronx
*** Variables ***
${g_long_str} ${{'a'*200}}
*** Test Cases ***
Add group under non-existent node, it should return failure
${res}= Add Group modbus-node1 group 1000
Check Response Status ${res} 404
Check Error Code ${res} ${NEU_ERR_NODE_NOT_EXIST}
Add group under existent node, it should return success
Add Node modbus-node ${PLUGIN-MODBUS-TCP}
${res}= Add Group modbus-node group 1000
Check Response Status ${res} 200
Check Error Code ${res} ${NEU_ERR_SUCCESS}
Get the group from this node, it should return the group config
${res}= Get Group modbus-node
Check Response Status ${res} 200
${len} = Get Length ${res}[groups]
Should Be Equal As Integers ${len} 1
Should Be Equal As Strings ${res}[groups][0][name] group
Should Be Equal As Strings ${res}[groups][0][interval] 1000
Should Be Equal As Strings ${res}[groups][0][tag_count] 0
Delete a non-existent group, it should return failure
${res}= Del Group modbus-node group1
Check Response Status ${res} 404
Check Error Code ${res} ${NEU_ERR_GROUP_NOT_EXIST}
Delete a group from non-existent node, it should return failure
${res}= Del Group modbus-node1 group
Check Response Status ${res} 404
Check Error Code ${res} ${NEU_ERR_NODE_NOT_EXIST}
Delete a group, it should return success
${res}= Del Group modbus-node group
Check Response Status ${res} 200
Check Error Code ${res} ${NEU_ERR_SUCCESS}
Add group with interval < 100 under existent node, it should return failure
${res}= Add Group modbus-node group 99
Check Response Status ${res} 400
Check Error Code ${res} ${NEU_ERR_GROUP_PARAMETER_INVALID}
[Teardown] Del Node modbus-node
Add group under app node, it should return failure
Add Node mqtt ${PLUGIN-MQTT}
${res}= Add Group mqtt group 1000
Check Response Status ${res} 409
Check Error Code ${res} ${NEU_ERR_GROUP_NOT_ALLOW}
[Teardown] Del Node mqtt
Update group with nonexistent node, it should fail.
${res} = Update Group modbus-node group interval=${1000}
Check Response Status ${res} 404
Check Error Code ${res} ${NEU_ERR_NODE_NOT_EXIST}
[Teardown] Del Node modbus-node
Update group using too long node name, it should fail.
${res} = Update Group ${g_long_str} group interval=${1000}
Check Response Status ${res} 400
Check Error Code ${res} ${NEU_ERR_NODE_NAME_TOO_LONG}
[Teardown] Del Node modbus-node
Update group with nonexistent group, it should fail.
Add Node modbus-node ${PLUGIN-MODBUS-TCP}
${res} = Update Group modbus-node group interval=${1000}
Check Response Status ${res} 404
Check Error Code ${res} ${NEU_ERR_GROUP_NOT_EXIST}
[Teardown] Del Node modbus-node
Update group using to long group name, it should fail.
Add Node modbus-node ${PLUGIN-MODBUS-TCP}
${res} = Update Group modbus-node ${g_long_str} interval=${1000}
Check Response Status ${res} 400
Check Error Code ${res} ${NEU_ERR_GROUP_NAME_TOO_LONG}
[Teardown] Del Node modbus-node
Update group with too small interval, it should fail.
Add Node modbus-node ${PLUGIN-MODBUS-TCP}
Add Group modbus-node group 1000
${res} = Update Group modbus-node group interval=${10}
Check Response Status ${res} 400
Check Error Code ${res} ${NEU_ERR_GROUP_PARAMETER_INVALID}
[Teardown] Del Node modbus-node
Update group with too large interval, it should fail.
Add Node modbus-node ${PLUGIN-MODBUS-TCP}
Add Group modbus-node group 1000
${res} = Update Group modbus-node group interval=${100000000000}
Check Response Status ${res} 400
Check Error Code ${res} ${NEU_ERR_GROUP_PARAMETER_INVALID}
[Teardown] Del Node modbus-node
Update group interval, it should success.
Add Node modbus-node ${PLUGIN-MODBUS-TCP}
Add Group modbus-node group 1000
${res} = Update Group modbus-node group interval=${2000}
Check Response Status ${res} 200
Check Error Code ${res} ${NEU_ERR_SUCCESS}
${res} = Get Group modbus-node
Set Local Variable ${groups} ${res}[groups]
Should Match Group ${groups} group ${2000}
[Teardown] Del Node modbus-node
Update group with empty new name, it should fail.
Add Node modbus-node ${PLUGIN-MODBUS-TCP}
Add Group modbus-node group 1000
${res} = Update Group modbus-node group new_name=${EMPTY}
Check Response Status ${res} 400
Check Error Code ${res} ${NEU_ERR_BODY_IS_WRONG}
[Teardown] Del Node modbus-node
Update group with too long new name, it should fail.
Add Node modbus-node ${PLUGIN-MODBUS-TCP}
Add Group modbus-node group 1000
${res} = Update Group modbus-node group new_name=${g_long_str}
Check Response Status ${res} 400
Check Error Code ${res} ${NEU_ERR_GROUP_NAME_TOO_LONG}
[Teardown] Del Node modbus-node
Update group name to conflicting group name, it should fail.
Add Node modbus-node ${PLUGIN-MODBUS-TCP}
Add Group modbus-node group 1000
Add Group modbus-node grp 1000
${res} = Update Group modbus-node group new_name=grp
Check Response Status ${res} 409
Check Error Code ${res} ${NEU_ERR_GROUP_EXIST}
[Teardown] Del Node modbus-node
Update group name, it should success.
Add Node modbus-node ${PLUGIN-MODBUS-TCP}
Add Group modbus-node group 1000
${res} = Update Group modbus-node group new_name=grp
Check Response Status ${res} 200
Check Error Code ${res} ${NEU_ERR_SUCCESS}
${res} = Get Group modbus-node
Set Local Variable ${groups} ${res}[groups]
Should Match Group ${groups} grp ${1000}
[Teardown] Del Node modbus-node
Update group name and interval, it should success.
Add Node modbus-node ${PLUGIN-MODBUS-TCP}
Add Group modbus-node group 1000
${res} = Update Group modbus-node group new_name=grp interval=${2000}
Check Response Status ${res} 200
Check Error Code ${res} ${NEU_ERR_SUCCESS}
${res} = Get Group modbus-node
Set Local Variable ${groups} ${res}[groups]
Should Match Group ${groups} grp ${2000}
[Teardown] Del Node modbus-node
Update group name, subscriptions should be updated.
Add Node mqtt-node ${PLUGIN-MQTT}
Add Node modbus-node ${PLUGIN-MODBUS-TCP}
Add Group modbus-node group 1000
Subscribe Group mqtt-node modbus-node group
${res} = Update Group modbus-node group new_name=grp
Check Response Status ${res} 200
Check Error Code ${res} ${NEU_ERR_SUCCESS}
${res} = Get Subscribe Group mqtt-node
Check Response Status ${res} 200
Set Local Variable ${groups} ${res}[groups]
List Length Should Be ${groups} 1
Should Be Equal As Strings ${groups}[0][driver] modbus-node
Should Be Equal As Strings ${groups}[0][group] grp
[Teardown] Del Node modbus-node
*** Keywords ***
Should Match Group
[Arguments] ${groups} ${name} ${interval}
List Length Should Be ${groups} 1
Should Be Equal As Strings ${name} ${groups}[0][name]
Should Be Equal As Integers ${interval} ${groups}[0][interval]