Add more operation cases for switch manager module.
authorDenghui Huang <huangdenghui@gmail.com>
Fri, 22 Nov 2013 15:21:03 +0000 (23:21 +0800)
committerDenghui Huang <huangdenghui@gmail.com>
Fri, 22 Nov 2013 15:21:03 +0000 (23:21 +0800)
Change-Id: I82de21d73b4e55e0791a3286564040d1aa860ee2
Signed-off-by: Denghui Huang <huangdenghui@gmail.com>
test/tools/Robot_Tool/libraries/SwitchManager.py
test/tools/Robot_Tool/suites/base/switch_manager.txt
test/tools/Robot_Tool/variables/Variables.py

index 2ab2b165057e52ece81ccc07503c667fd23d9156..c72c636ae2592ee14354f981696348f9fe7715dc 100644 (file)
@@ -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')
index 77c6930351285fb9954a6ef7ffa188def9b9da4b..113f6a13a2500944df7c9231b3ef4d3de7eaf1e2 100644 (file)
@@ -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
index 48c47b6920b0231ed6108f80f4c4826b8ee79b9e..100f3bca3187823a9355aa67a22de36b77a229b6 100644 (file)
@@ -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