diff --git a/ft/Keyword/Neuron.py b/ft/Keyword/Neuron.py index 9386f140..c64f2943 100644 --- a/ft/Keyword/Neuron.py +++ b/ft/Keyword/Neuron.py @@ -47,11 +47,14 @@ class Node(object): pass def Get_Node_By_Name(self, snodes, name): - for node in snodes[0]: + for node in snodes: if node['name'] == name: return node['id'] return 0 + def Node_With_Name_Should_Exist(self, snodes, name): + assert 0 != self.Get_Node_By_Name(snodes, name) + class Tag(object): @@ -94,6 +97,19 @@ class Read(object): def __init__(self): pass + def Compare_Tag_Value_Bool(self, tags, id, value): + ret = -1 + for tag in tags: + if tag['id'] == int(id): + if isinstance(value, str): + if (tag['value'] == False and value.lower() == "false" or + tag['value'] == True and value.lower() == "true"): + ret = 0 + elif tag['value'] == int(value): + ret = 0 + break + return ret + def Compare_Tag_Value_Int(self, tags, id, value): ret = -1 for tag in tags: diff --git a/ft/api_http.resource b/ft/api_http.resource index 3c48b943..cbe918b2 100644 --- a/ft/api_http.resource +++ b/ft/api_http.resource @@ -4,153 +4,220 @@ Resource common.resource *** Keywords *** +Check Error Code + [Arguments] ${result} ${errcode} + Integer response body error ${errcode} + +Check Response Status + [Arguments] ${result} ${status} + Integer response status ${status} + LOGIN - POST /api/v2/login {"name": "admin", "pass":"0000"} + POST /api/v2/login {"name": "admin", "pass":"0000"} - Integer response status 200 + Integer response status 200 - ${token} String $.token - [Return] ${token}[0] + ${token} String $.token + ${jwt} = Catenate Bearer ${token}[0] + Set Headers {"Authorization":"${jwt}"} + + [Return] ${token}[0] LOGOUT - POST /api/v2/logout - Integer response status 200 - -Get Node ID - [Arguments] ${node_type} ${node_name} - GET /api/v2/node?type=${node_type} - Integer response status 200 - ${tmp} Array $.nodes - ${node_id} Get Node By Name ${tmp} ${node_name} - - should not be equal as integers ${node_id} 0 - - [RETURN] ${node_id} + POST /api/v2/logout + Integer response status 200 Add Node - [Arguments] ${node_type} ${node_name} ${plugin_name} + [Arguments] &{args} + POST /api/v2/node ${args} - POST /api/v2/node {"type": ${node_type}, "name": "${node_name}", "plugin_name": "${plugin_name}"} - Integer response status 200 - Integer response body error ${ERR_SUCCESS} + ${res} = Object response body + [RETURN] ${res}[0] - ${node_id} Get Node ID ${node_type} ${node_name} - should not be equal as integers ${node_id} 0 - [RETURN] ${node_id} +Add Node And Return ID + [Arguments] ${node_type} ${node_name} ${plugin_name} + ${res} = Add Node type=${${node_type}} name=${node_name} plugin_name=${plugin_name} + + Check Response Status ${res} 200 + Check Error Code ${res} ${ERR_SUCCESS} + + ${node_id} = Get Node ID ${node_type} ${node_name} + Should Not Be Equal As Integers ${node_id} 0 + + [RETURN] ${node_id} + +Get Nodes + [Arguments] ${node_type} + GET /api/v2/node?type=${node_type} + ${res} = Object response body + + [RETURN] ${res}[0] + +Update Node + [Arguments] ${node_id} ${node_name} + PUT /api/v2/node {"id": ${node_id}, "name": "${node_name}"} + ${res} = Object response body + + [RETURN] ${res}[0] Del Node - [Arguments] ${node_id} + [Arguments] ${node_id} + Delete /api/v2/node {"id": ${node_id}} + ${res} = Object response body - Delete /api/v2/node {"id": ${node_id}} - Integer response status 200 + [RETURN] ${res}[0] + +Get Node ID + [Arguments] ${node_type} ${node_name} + ${res} = Get Nodes ${node_type} + Check Response Status ${res} 200 + + ${node_id} Get Node By Name ${res}[nodes] ${node_name} + + Should Not Be Equal As Integers ${node_id} 0 + + [RETURN] ${node_id} Node Setting - [Arguments] ${node_id} ${config} + [Arguments] ${node_id} ${config} + POST /api/v2/node/setting {"node_id": ${node_id}, "params": ${config}} + ${res} = Object response body - POST /api/v2/node/setting {"node_id": ${node_id}, "params": ${config}} - Integer response status 200 + [RETURN] ${res}[0] + +Get Node Setting + [Arguments] ${node_id} + GET /api/v2/node/setting?node_id=${node_id} + ${res} = Object response body + + [RETURN] ${res}[0] Get Node State - [Arguments] ${node_id} + [Arguments] ${node_id} + GET /api/v2/node/state?node_id=${node_id} + ${running} = Integer $.running + ${link} = Integer $.link - GET /api/v2/node/state?node_id=${node_id} - Integer response status 200 - - ${running} Integer $.running - ${link} Integer $.link - - [RETURN] ${running}[0] ${link}[0] + [RETURN] ${running}[0] ${link}[0] Node Ctl - [Arguments] ${node_id} ${cmd} + [Arguments] ${node_id} ${cmd} + POST /api/v2/node/ctl {"id": ${node_id}, "cmd": ${cmd}} + ${res} = Object response body - POST /api/v2/node/ctl {"id": ${node_id}, "cmd": ${cmd}} + [RETURN] ${res}[0] - Integer response status 200 +Ping + POST /api/v2/ping + Integer response status 200 + Object response body {} Add Group Config - [Arguments] ${node_id} ${grp_config_name} - POST /api/v2/gconfig {"name": "${grp_config_name}", "node_id": ${node_id}, "interval": 1000} + [Arguments] ${node_id} ${grp_config_name} ${interval} + POST /api/v2/gconfig {"name": "${grp_config_name}", "node_id": ${node_id}, "interval": ${interval}} + ${res} = Object response body - Integer response status 200 - Integer response body error ${ERR_SUCCESS} + [RETURN] ${res}[0] + +Get Group Config + [Arguments] ${node_id} + GET /api/v2/gconfig?node_id=${node_id} + ${res} = Object response body + + [RETURN] ${res}[0] + +Update Group Config + [Arguments] ${node_id} ${grp_config_name} ${interval} + PUT /api/v2/gconfig {"node_id": ${node_id}, "name": "${grp_config_name}", "interval": ${interval}} + ${res} = Object response body + + [RETURN] ${res}[0] Del Group Config - [Arguments] ${node_id} ${grp_config_name} + [Arguments] ${node_id} ${grp_config_name} + DELETE /api/v2/gconfig {"node_id": ${node_id}, "name": "${grp_config_name}"} + ${res} = Object response body - DELETE /api/v2/gconfig {"node_id": ${node_id}, "name": "${grp_config_name}"} - Integer response status 200 + [RETURN] ${res}[0] Subscribe Group - [Arguments] ${driver_node_id} ${app_node_id} ${group_config_name} + [Arguments] ${driver_node_id} ${app_node_id} ${group_config_name} + POST /api/v2/subscribe {"src_node_id": ${driver_node_id}, "dst_node_id": ${app_node_id}, "name": "${group_config_name}"} + ${res} = Object response body - POST /api/v2/subscribe {"src_node_id": ${driver_node_id}, "dst_node_id": ${app_node_id}, "name": "${group_config_name}"} + [RETURN] ${res}[0] - Integer response status 200 - Integer response body error ${ERR_SUCCESS} +Get Subscribe Group + [Arguments] ${node_id} + GET /api/v2/subscribe?node_id=${node_id} + ${res} = Object response body + + [RETURN] ${res}[0] + +Unsubscribe Group + [Arguments] ${driver_node_id} ${app_node_id} ${group_config_name} + DELETE /api/v2/subscribe {"src_node_id": ${driver_node_id}, "dst_node_id": ${app_node_id}, "name": "${group_config_name}"} + ${res} = Object response body + + [RETURN] ${res}[0] Add Tags - [Arguments] ${node_id} ${group} ${tags} + [Arguments] ${node_id} ${group} ${tags} + POST /api/v2/tags {"node_id": ${node_id}, "group_config_name": "${group}", "tags": [${tags}]} + ${res} = Object response body - POST /api/v2/tags {"node_id": ${node_id}, "group_config_name": "${group}", "tags": [${tags}]} + [RETURN] ${res}[0] - Integer response status 200 +Add Tag And Return ID + [Arguments] ${node_id} ${group} ${tag} + ${res} = Add Tags ${node_id} ${group} ${tag} + Check Response Status ${res} 200 + Check Error Code ${res} ${ERR_SUCCESS} + ${tmp} = evaluate json.loads('''${tag}''') json + + Run Keyword And Return Get Tag ID ${node_id} ${group} ${tmp}[name] + +Get Tags + [Arguments] ${node_id} ${group} + GET /api/v2/tags?node_id=${node_id}&group_config_name=${group} + ${res} = Object response body + + [RETURN] ${res}[0] + +Update Tags + [Arguments] ${node_id} ${group} ${tags} + Put /api/v2/tags {"node_id": ${node_id}, "group_config_name": "${group}", "tags": [${tags}]} + ${res} = Object response body + + [RETURN] ${res}[0] Del Tags - [Arguments] ${node_id} ${group} ${ids} + [Arguments] ${node_id} ${group} ${ids} + DELETE /api/v2/tags {"node_id": ${node_id}, "group_config_name": "${group}", "ids": [${ids}]} + ${res} = Object response body - DELETE /api/v2/tags {"node_id": ${node_id}, "group_config_name": "${group}", "ids": [${ids}]} - - Integer response status 200 + [RETURN] ${res}[0] Get Tag ID - [Arguments] ${node_id} ${group} ${tag_name} + [Arguments] ${node_id} ${group} ${tag_name} + ${res} = Get Tags ${node_id} ${group} + Check Response Status ${res} 200 - GET /api/v2/tags?node_id=${node_id}&group_config_name=${group} + ${id} = Tag Find By Name ${res}[tags] ${tag_name} + Should Not Be Equal As Integers ${id} 0 - Integer response status 200 - - ${result} = To Array $.tags - - ${id} = Tag Find By Name ${result} ${tag_name} - [Return] ${id} + [Return] ${id} Read Tags - [Arguments] ${node_id} ${group} + [Arguments] ${node_id} ${group} + POST /api/v2/read {"node_id": ${node_id}, "group_config_name": "${group}"} + ${res} = Object response body - POST /api/v2/read {"node_id": ${node_id}, "group_config_name": "${group}"} - - Integer response status 200 - output $ - [Return] $ + [RETURN] ${res}[0] Write Tags - [Arguments] ${node_id} ${group} ${tags} + [Arguments] ${node_id} ${group} ${tags} + POST /api/v2/write {"node_id": ${node_id}, "group_config_name": "${group}", "tags":[${tags}]} + ${res} = Object response body - POST /api/v2/write {"node_id": ${node_id}, "group_config_name": "${group}", "tags":[${tags}]} - - Integer response status 200 - -Compare Tag Value As Int - [Arguments] ${tags} ${id} ${value} - - ${val} = To Array ${tags} - ${ret} = Compare Tag Value Int ${val} ${id} ${value} - - should be equal as integers ${ret} 0 - -Compare Tag Value As Float - [Arguments] ${tags} ${id} ${value} - - ${val} = To Array ${tags} - ${ret} = Compare Tag Value Float ${val} ${id} ${value} - - should be equal as integers ${ret} 0 - -Compare Tag Value As String - [Arguments] ${tags} ${id} ${value} - - ${val} = To Array ${tags} - ${ret} = Compare Tag Value String ${val} ${id} ${value} - - should be equal as integers ${ret} 0 + [RETURN] ${res}[0] diff --git a/ft/common.resource b/ft/common.resource index 26e47345..9e79402d 100644 --- a/ft/common.resource +++ b/ft/common.resource @@ -71,3 +71,31 @@ To Array Neuron Ready Start Neuron Sleep 3 + +Compare Tag Value As Bool + [Arguments] ${tags} ${id} ${value} + + ${ret} = Compare Tag Value Bool ${tags} ${id} ${value} + + Should Be Equal As Integers ${ret} 0 + +Compare Tag Value As Int + [Arguments] ${tags} ${id} ${value} + + ${ret} = Compare Tag Value Int ${tags} ${id} ${value} + + Should Be Equal As Integers ${ret} 0 + +Compare Tag Value As Float + [Arguments] ${tags} ${id} ${value} + + ${ret} = Compare Tag Value Float ${tags} ${id} ${value} + + Should Be Equal As Integers ${ret} 0 + +Compare Tag Value As String + [Arguments] ${tags} ${id} ${value} + + ${ret} = Compare Tag Value String ${tags} ${id} ${value} + + Should Be Equal As Integers ${ret} 0