From: Denghui Huang Date: Fri, 22 Nov 2013 15:21:03 +0000 (+0800) Subject: Add more operation cases for switch manager module. X-Git-Tag: release/helium~127^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=aa6cab713310eea929ba99c686b6bc99726357d9;hp=9205fe59e503d73b1d7cd14ca86a1f703b5bc017;p=integration%2Ftest.git Add more operation cases for switch manager module. Change-Id: I82de21d73b4e55e0791a3286564040d1aa860ee2 Signed-off-by: Denghui Huang --- diff --git a/test/tools/Robot_Tool/libraries/SwitchManager.py b/test/tools/Robot_Tool/libraries/SwitchManager.py index 2ab2b16505..c72c636ae2 100644 --- a/test/tools/Robot_Tool/libraries/SwitchManager.py +++ b/test/tools/Robot_Tool/libraries/SwitchManager.py @@ -3,15 +3,46 @@ Library for the robot based system test tool of the OpenDaylight project. Authors: Baohua Yang@IBM, Denghui Huang@IBM Updated: 2013-11-10 """ +import robot +from robot.libraries.BuiltIn import BuiltIn + class SwitchManager(object): + def __init__(self): + self.builtin = BuiltIn() + def extract_all_nodes(self, content): """ Return all nodes. """ - if isinstance(content,dict) or not content.has_key('nodeProperties'): - return None - else: + if isinstance(content,dict) and content.has_key('nodeProperties'): + self.builtin.log("18") return [e.get('node') for e in content['nodeProperties']] + else: + self.builtin.log("21") + return None + + def extract_all_properties(self, content, property_type): + if isinstance(content,dict) and content.has_key(property_type): + self.builtin.log("26") + list1=[e.get('properties') for e in content[property_type]] + self.builtin.log(list1) + return [e.get('properties') for e in content[property_type]] + else: + self.builtin.log("29") + return None + + def extract_property_value(self, content, property, property_type): + res = self.extract_all_properties(content, property_type) + return [e.get(property) for e in res] + + def extract_all_node_properties(self, content): + return self.extract_all_properties(content, 'nodeProperties') + + def extract_node_property_values(self, content, property): + return self.extract_property_value(content, property, 'nodeProperties') + + def extract_all_nodeconnector_properties(self, content): + return self.extract_all_properties(content, 'nodeConnectorProperties') - def extract_all_properties(self, content): - pass + def extract_nodeconnector_property_values(self, content, property): + return self.extract_property_value(content, property, 'nodeConnectorProperties') diff --git a/test/tools/Robot_Tool/suites/base/switch_manager.txt b/test/tools/Robot_Tool/suites/base/switch_manager.txt index 77c6930351..113f6a13a2 100644 --- a/test/tools/Robot_Tool/suites/base/switch_manager.txt +++ b/test/tools/Robot_Tool/suites/base/switch_manager.txt @@ -1,6 +1,6 @@ *** Settings *** Documentation Test suite for the switch manager bundle. -Suite Setup Create Session ${ODL_CONTROLLER_SESSION} ${PREFIX} auth=${AUTH} +Suite Setup Create Session ${ODL_CONTROLLER_SESSION} http://${CONTROLLER}:8080 auth=${AUTH} headers=${HEADERS} Suite Teardown Delete All Sessions Library Collections Library RequestsLibrary @@ -16,11 +16,128 @@ ${REST_CONTEXT} /controller/nb/v2/switchmanager List all nodes [Documentation] List all nodes and their properties in the network. [Tags] list_info - ${URL} Combine Strings ${REST_CONTEXT} / ${CONTAINER} /nodes - Log ${topo_tree_level} + Log ${TOPO_TREE_LEVEL} ${topo_nodes} Get Nodes From Topology ${TOPO_TREE_LEVEL} - ${resp} Get ${ODL_CONTROLLER_SESSION} ${URL} + ${resp} Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/nodes Should Be Equal As Strings ${resp.status_code} 200 Response status code error ${jsondata}= To JSON ${resp.content} ${nodes} Extract All Nodes ${jsondata} Collection Should Contain ${nodes} ${topo_nodes} + +Get a node + [Documentation] Get a node + Get node 00:00:00:00:00:00:00:02 OF + +Add property to node + [Documentation] Add a property to node + Add property to node OF 00:00:00:00:00:00:00:02 description Switch2 + Node property should exist OF 00:00:00:00:00:00:00:02 description Switch2 + +Remove property from node + [Documentation] Remove a property from node + Remove property from node OF 00:00:00:00:00:00:00:02 description + Node property should not exist OF 00:00:00:00:00:00:00:02 description Switch2 + +Add property to nodeconnector + [Documentation] Add a property to nodeconnector + Add property to nodeconnector OF 00:00:00:00:00:00:00:02 OF 2 bandwidth 1000 + Nodeconnector property should exist OF 00:00:00:00:00:00:00:02 OF 2 bandwidth ${1000} + +Remove property from nodeconnector + [Documentation] Remove a property from nodeconnector + Remove property from nodeconnector OF 00:00:00:00:00:00:00:02 OF 2 bandwidth + Nodeconnector property should not exist OF 00:00:00:00:00:00:00:02 OF 2 bandwidth ${1000} + +*** Keywords *** +Get node + [Arguments] ${node_id} ${node_type} + [Documentation] Get a specific node + ${resp} Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/nodes + Should Be Equal As Strings ${resp.status_code} 200 Response status code error + ${result} TO JSON ${resp.content} + ${node} Create Dictionary id ${node_id} type ${node_type} + ${content} Extract All Nodes ${result} + Log ${content} + List Should Contain Value ${content} ${node} + +Add property to node + [Arguments] ${node_type} ${node_id} ${property} ${value} + [Documentation] Add property to node + ${resp} Put ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/node/${node_type}/${node_id}/property/${property}/${value} + Should Be Equal As Strings ${resp.status_code} 201 Response status code error + +Remove property from node + [Arguments] ${node_type} ${node_id} ${property} + [Documentation] Remove property from node + ${resp} Delete ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/node/${node_type}/${node_id}/property/${property} + Should Be Equal As Strings ${resp.status_code} 204 Response status code error + +Add property to nodeconnector + [Arguments] ${node_type} ${node_id} ${nc_type} ${nc_id} ${property} ${value} + [Documentation] Add property to nodeconnector + ${resp} Put ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/nodeconnector/${node_type}/${node_id}/${nc_type}/${nc_id}/property/${property}/${value} + Should Be Equal As Strings ${resp.status_code} 201 Response status code error + +Remove property from nodeconnector + [Arguments] ${node_type} ${node_id} ${nc_type} ${nc_id} ${property} + [Documentation] Remove property from nodeconnector + ${resp} Delete ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/nodeconnector/${node_type}/${node_id}/${nc_type}/${nc_id}/property/${property} + Should Be Equal As Strings ${resp.status_code} 204 Response status code error + +Node property should exist + [Arguments] ${node_type} ${node_id} ${property} ${value} + [Documentation] Property of node should exist + ${resp} Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/nodes + Should Be Equal As Strings ${resp.status_code} 200 Response status code error + ${result} TO JSON ${resp.content} + Log ${result} + ${nodes} Extract All Nodes ${result} + ${property_values} Extract Node Property Values ${result} ${property} + ${node} Create Dictionary id ${node_id} type ${node_type} + ${property_value} Create Dictionary value ${value} + Log ${property_value} + List Should Contain Value ${nodes} ${node} + List Should Contain Value ${property_values} ${property_value} + +Node property should not exist + [Arguments] ${node_type} ${node_id} ${property} ${value} + [Documentation] Property of node should not exist + ${resp} Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/nodes + Should Be Equal As Strings ${resp.status_code} 200 Response status code error + ${result} TO JSON ${resp.content} + Log ${result} + ${nodes} Extract All Nodes ${result} + ${properties} Extract Node Property Values ${result} ${property} + ${node} Create Dictionary id ${node_id} type ${node_type} + ${property} Create Dictionary value ${value} + Log ${property} + List Should Contain Value ${nodes} ${node} + List Should Not Contain Value ${properties} ${property} + +Nodeconnector property should exist + [Arguments] ${node_type} ${node_id} ${nc_type} ${nc_id} ${property} ${value} + [Documentation] Property of nodeconnector should exist + ${resp} Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/node/${node_type}/${node_id} + Should Be Equal As Strings ${resp.status_code} 200 Response status code error + ${result} TO JSON ${resp.content} + Log ${result} + ${property_values} Extract Nodeconnector Property Values ${result} ${property} + Log ${property_values} + ${property_value} Create Dictionary value ${value} + List Should Contain Value ${property_values} ${property_value} + +Nodeconnector property should not exist + [Arguments] ${node_type} ${node_id} ${nc_type} ${nc_id} ${property} ${value} + [Documentation] Property of nodeconnector should not exist + ${resp} Get ${ODL_CONTROLLER_SESSION} ${REST_CONTEXT}/${CONTAINER}/node/${node_type}/${node_id} + Should Be Equal As Strings ${resp.status_code} 200 Response status code error + ${result} TO JSON ${resp.content} + Log ${result} + ${property_values} Extract Nodeconnector Property Values ${result} ${property} + Log ${property_values} + ${property_value} Create Dictionary value ${value} + List Should not Contain Value ${property_values} ${property_value} + +List all nodeconnectors of node + [Arguments] ${node_type} ${node_id} + [Documentation] List all nodeconnectors and properties of node diff --git a/test/tools/Robot_Tool/variables/Variables.py b/test/tools/Robot_Tool/variables/Variables.py index 48c47b6920..100f3bca31 100644 --- a/test/tools/Robot_Tool/variables/Variables.py +++ b/test/tools/Robot_Tool/variables/Variables.py @@ -13,5 +13,6 @@ CONTAINER = 'default' USER = 'admin' PWD = 'admin' AUTH = [u'admin',u'admin'] +HEADERS={'Content-Type':'application/json'} ODL_CONTROLLER_SESSION=None TOPO_TREE_LEVEL=2