diff options
author | selias <samelias@cisco.com> | 2016-07-06 08:50:00 +0200 |
---|---|---|
committer | Matej Klotton <mklotton@cisco.com> | 2016-07-20 15:05:28 +0000 |
commit | c10eda554529ac5433216a18d30e9964c6af7976 (patch) | |
tree | 0569a229c0954f35d17e398d6bf29765d7f25f53 /tests | |
parent | 28e17b8002b50a04cdd6c9e74c15cdc4aa33a5e2 (diff) |
CSIT-190 Add honeycomb interface management test
- add test for specific issue with interface management through netconf
- add keywords used in test
- update methods that manage Netconf communication
- update notifications tests to reuse more code
Change-Id: I11788e18f05c4965160f247c3811d270d2c91170
Signed-off-by: selias <samelias@cisco.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/suites/honeycomb/070_netconf.robot | 29 | ||||
-rw-r--r-- | tests/suites/honeycomb/071_notification.robot (renamed from tests/suites/honeycomb/070_notification.robot) | 0 | ||||
-rw-r--r-- | tests/suites/honeycomb/resources/netconf/hello.py | 22 | ||||
-rw-r--r-- | tests/suites/honeycomb/resources/netconf/subscription.py | 24 | ||||
-rw-r--r-- | tests/suites/honeycomb/resources/netconf/triggers.py | 336 |
5 files changed, 411 insertions, 0 deletions
diff --git a/tests/suites/honeycomb/070_netconf.robot b/tests/suites/honeycomb/070_netconf.robot new file mode 100644 index 0000000000..998b550bf6 --- /dev/null +++ b/tests/suites/honeycomb/070_netconf.robot @@ -0,0 +1,29 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +*** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/netconf.robot +| Variables | tests/suites/honeycomb/resources/netconf/triggers.py +| Documentation | *Netconf test suite. Contains test cases that need to bypass\ +| ... | REST API.* +| Force Tags | honeycomb_sanity + +*** Test Cases *** +| Honeycomb can create and delete interfaces +| | [Documentation] | Repeatedly create and delete an interface through Netconf\ +| | ... | and check the reply for any errors. +| | Given Netconf session is established | ${node} +| | :FOR | ${index} | IN RANGE | 20 +| | | When Error trigger is sent | ${trigger_105} +| | | Then Replies should not contain RPC errors diff --git a/tests/suites/honeycomb/070_notification.robot b/tests/suites/honeycomb/071_notification.robot index 117f024b21..117f024b21 100644 --- a/tests/suites/honeycomb/070_notification.robot +++ b/tests/suites/honeycomb/071_notification.robot diff --git a/tests/suites/honeycomb/resources/netconf/hello.py b/tests/suites/honeycomb/resources/netconf/hello.py new file mode 100644 index 0000000000..2cc89b387c --- /dev/null +++ b/tests/suites/honeycomb/resources/netconf/hello.py @@ -0,0 +1,22 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Hello message with capabilities list for Netconf sessions.""" + +hello = u""" +<hello xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<capabilities> +<capability>urn:ietf:params:netconf:base:1.0</capability> +</capabilities> +</hello> +]]>]]>"""
\ No newline at end of file diff --git a/tests/suites/honeycomb/resources/netconf/subscription.py b/tests/suites/honeycomb/resources/netconf/subscription.py new file mode 100644 index 0000000000..ccf8c47022 --- /dev/null +++ b/tests/suites/honeycomb/resources/netconf/subscription.py @@ -0,0 +1,24 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""RPC call to add a subscription to Netconf notifications.""" + +subscription = u""" +<netconf:rpc netconf:message-id="101" +xmlns:netconf="urn:ietf:params:xml:ns:netconf:base:1.0"> +<create-subscription +xmlns="urn:ietf:params:xml:ns:netconf:notification:1.0"> +<stream>honeycomb</stream> +</create-subscription> +</netconf:rpc> +]]>]]>""" diff --git a/tests/suites/honeycomb/resources/netconf/triggers.py b/tests/suites/honeycomb/resources/netconf/triggers.py new file mode 100644 index 0000000000..77596bd052 --- /dev/null +++ b/tests/suites/honeycomb/resources/netconf/triggers.py @@ -0,0 +1,336 @@ +# Copyright (c) 2016 Cisco and/or its affiliates. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at: +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Contains RPC sequences to trigger specific issues through Netconf.""" + +# Test data for issue: https://jira.fd.io/browse/HONEYCOMB-105 +# Creating and removing interfaces may result in duplicated interface indices. +trigger_105 = u""" +<rpc message-id="m-27" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<get-config> +<source> +<running/> +</source> +<filter xmlns:ns0="urn:ietf:params:xml:ns:netconf:base:1.0" ns0:type="subtree"> +<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> +<interface> +<name>4fe335c8-6fdc-4654-b12c-d256e9b39229</name> +</interface> +</interfaces> +</filter> +</get-config> +</rpc> +]]>]]> + +<rpc message-id="m-72" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<lock> +<target> +<candidate/> +</target> +</lock> +</rpc> +]]>]]> + +<rpc message-id="m-38" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<edit-config> +<target> +<candidate/> +</target> +<default-operation>none</default-operation> +<config> +<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> +<interface xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0" +a:operation="replace"> +<name>4fe335c8-6fdc-4654-b12c-d256e9b39229</name> +<description>neutron port</description> +<link-up-down-trap-enable>enabled</link-up-down-trap-enable> +<vhost-user xmlns="urn:opendaylight:params:xml:ns:yang:v3po"> +<role>client</role> +<socket>/tmp/socket_4fe335c8-6fdc-4654-b12c-d256e9b39229</socket> +</vhost-user> +<type xmlns:x="urn:opendaylight:params:xml:ns:yang:v3po">x:vhost-user</type> +<enabled>true</enabled> +</interface> +</interfaces> +</config> +</edit-config> +</rpc> +]]>]]> + +<rpc message-id="m-80" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<commit/> +</rpc> +]]>]]> + +<rpc message-id="m-74" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<unlock> +<target> +<candidate/> +</target> +</unlock> +</rpc> +]]>]]> + +<rpc message-id="m-72" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<lock> +<target> +<candidate/> +</target> +</lock> +</rpc> +]]>]]> + +<rpc message-id="m-43" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<edit-config> +<target> +<candidate/> +</target> +<default-operation>none</default-operation> +<config> +<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> +<interface xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0" +a:operation="delete"> +<name>4fe335c8-6fdc-4654-b12c-d256e9b39229</name> +</interface> +</interfaces> +</config> +</edit-config> +</rpc> +]]>]]> + +<rpc message-id="m-80" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<commit/> +</rpc> +]]>]]> + +<rpc message-id="m-74" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<unlock> +<target> +<candidate/> +</target> +</unlock> +</rpc> +]]>]]> + +<rpc message-id="m-72" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<lock> +<target> +<candidate/> +</target> +</lock> +</rpc> +]]>]]> + +<rpc message-id="m-50" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<edit-config> +<target> +<candidate/> +</target> +<default-operation>none</default-operation> +<config> +<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> +<interface xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0" +a:operation="replace"> +<name>4fe335c8-6fdc-4654-b12c-d256e9b39229</name> +<description>neutron port</description> +<link-up-down-trap-enable>enabled</link-up-down-trap-enable> +<vhost-user xmlns="urn:opendaylight:params:xml:ns:yang:v3po"> +<role>client</role> +<socket>/tmp/socket_4fe335c8-6fdc-4654-b12c-d256e9b39229</socket> +</vhost-user> +<type xmlns:x="urn:opendaylight:params:xml:ns:yang:v3po">x:vhost-user</type> +<enabled>true</enabled> +</interface> +</interfaces> +</config> +</edit-config> +</rpc> +]]>]]> + +<rpc message-id="m-80" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<commit/> +</rpc> +]]>]]> + +<rpc message-id="m-74" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<unlock> +<target> +<candidate/> +</target> +</unlock> +</rpc> +]]>]]> + +<rpc message-id="m-72" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<lock> +<target> +<candidate/> +</target> +</lock> +</rpc> +]]>]]> + +<rpc message-id="m-57" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<edit-config> +<target> +<candidate/> +</target> +<default-operation>none</default-operation> +<config> +<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> +<interface xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0" +a:operation="replace"> +<name>d7611278-88ff-40e1-81e2-602e94e96fc7</name> +<description>neutron port</description> +<link-up-down-trap-enable>enabled</link-up-down-trap-enable> +<vhost-user xmlns="urn:opendaylight:params:xml:ns:yang:v3po"> +<role>client</role> +<socket>/tmp/socket_d7611278-88ff-40e1-81e2-602e94e96fc7</socket> +</vhost-user> +<type xmlns:x="urn:opendaylight:params:xml:ns:yang:v3po">x:vhost-user</type> +<enabled>true</enabled> +</interface> +</interfaces> +</config> +</edit-config> +</rpc> +]]>]]> + +<rpc message-id="m-80" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<commit/> +</rpc> +]]>]]> + +<rpc message-id="m-74" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<unlock> +<target> +<candidate/> +</target> +</unlock> +</rpc> +]]>]]> + +<rpc message-id="m-72" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<lock> +<target> +<candidate/> +</target> +</lock> +</rpc> +]]>]]> + +<rpc message-id="m-64" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<edit-config> +<target> +<candidate/> +</target> +<default-operation>none</default-operation> +<config> +<interfaces xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"> +<interface xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0" +a:operation="replace"> +<name>1f96a665-4351-4984-b1a8-dc6f54683123</name> +<description>neutron port</description> +<link-up-down-trap-enable>enabled</link-up-down-trap-enable> +<vhost-user xmlns="urn:opendaylight:params:xml:ns:yang:v3po"> +<role>client</role> +<socket>/tmp/socket_1f96a665-4351-4984-b1a8-dc6f54683123</socket> +</vhost-user> +<type xmlns:x="urn:opendaylight:params:xml:ns:yang:v3po">x:vhost-user</type> +<enabled>true</enabled> +</interface> +</interfaces> +</config> +</edit-config> +</rpc> +]]>]]> + +<rpc message-id="m-80" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<commit/> +</rpc> +]]>]]> + +<rpc message-id="m-74" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<unlock> +<target> +<candidate/> +</target> +</unlock> +</rpc> +]]>]]> + +<rpc message-id="m-72" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<lock> +<target> +<candidate/> +</target> +</lock> +</rpc> +]]>]]> + +<rpc message-id="m-72" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<edit-config> +<target> +<candidate/> +</target> +<default-operation>none</default-operation> +<config> +<vpp xmlns="urn:opendaylight:params:xml:ns:yang:v3po"> +<bridge-domains> +<bridge-domain xmlns:a="urn:ietf:params:xml:ns:netconf:base:1.0" +a:operation="replace"> +<name>e86740a2-042c-4e64-a43b-cc224e0d5240</name> +<unknown-unicast-flood>true</unknown-unicast-flood> +<forward>true</forward> +<learn>true</learn> +<flood>true</flood> +<arp-termination>false</arp-termination> +</bridge-domain> +</bridge-domains> +</vpp> +</config> +</edit-config> +</rpc> +]]>]]> + +<rpc message-id="m-80" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<commit/> +</rpc> +]]>]]> + +<rpc message-id="m-74" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<unlock> +<target> +<candidate/> +</target> +</unlock> +</rpc> +]]>]]> + +<rpc message-id="m-72" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<lock> +<target> +<candidate/> +</target> +</lock> +</rpc> +]]>]]> + +<rpc message-id="m-75" xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"> +<get> +<filter xmlns:ns0="urn:ietf:params:xml:ns:netconf:base:1.0" ns0:type="subtree"> +<interfaces-state xmlns="urn:ietf:params:xml:ns:yang:ietf-interfaces"/> +</filter> +</get> +</rpc> +]]>]]>""" |