From c10eda554529ac5433216a18d30e9964c6af7976 Mon Sep 17 00:00:00 2001 From: selias Date: Wed, 6 Jul 2016 08:50:00 +0200 Subject: 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 --- tests/suites/honeycomb/070_netconf.robot | 29 ++ tests/suites/honeycomb/070_notification.robot | 56 ---- tests/suites/honeycomb/071_notification.robot | 56 ++++ tests/suites/honeycomb/resources/netconf/hello.py | 22 ++ .../honeycomb/resources/netconf/subscription.py | 24 ++ .../suites/honeycomb/resources/netconf/triggers.py | 336 +++++++++++++++++++++ 6 files changed, 467 insertions(+), 56 deletions(-) create mode 100644 tests/suites/honeycomb/070_netconf.robot delete mode 100644 tests/suites/honeycomb/070_notification.robot create mode 100644 tests/suites/honeycomb/071_notification.robot create mode 100644 tests/suites/honeycomb/resources/netconf/hello.py create mode 100644 tests/suites/honeycomb/resources/netconf/subscription.py create mode 100644 tests/suites/honeycomb/resources/netconf/triggers.py (limited to 'tests/suites') 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/070_notification.robot deleted file mode 100644 index 117f024b21..0000000000 --- a/tests/suites/honeycomb/070_notification.robot +++ /dev/null @@ -1,56 +0,0 @@ -# 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. - -*** Variables *** -# Interfaces to run tests on. -| ${interface}= | ${node['interfaces']['port1']['name']} -| ${tap_interface}= | tap_test -| &{tap_settings}= | tap-name=tap_test | mac=08:00:27:c0:5d:37 -| ... | device-instance=${1} - -*** Settings *** -| Resource | resources/libraries/robot/default.robot -| Resource | resources/libraries/robot/honeycomb/interfaces.robot -| Resource | resources/libraries/robot/honeycomb/tap.robot -| Resource | resources/libraries/robot/honeycomb/notifications.robot -| Suite Setup | Run keywords -| ... | Honeycomb sets interface state -| ... | ${node} | ${interface} | down | AND -| ... | Honeycomb creates TAP interface -| ... | ${node} | ${tap_interface} | ${tap_settings} -| Documentation | *Honeycomb notifications test suite.* -| Force Tags | honeycomb_sanity - -*** Test Cases *** -| Honeycomb sends notification on interface state change -| | [Documentation] | Check if Honeycomb sends a state-changed notification\ -| | ... | when the state of an interface is changed. -| | Given Interface state from Honeycomb should be -| | ... | ${node} | ${interface} | down -| | And Interface state from VAT should be | ${node} | ${interface} | down -| | And Notification listener is established | ${node} -| | When Honeycomb sets interface state | ${node} | ${interface} | up -| | Then Honeycomb should send interface state notification | ${interface} | up -| | When Honeycomb sets interface state | ${node} | ${interface} | down -| | And Honeycomb should send interface state notification | ${interface} | down - -| Honeycomb sends notification on interface deletion -| | [Documentation] | Check if Honeycomb sends an interface-deleted notification -| | ... | when an interface is deleted. -| | Given TAP configuration from Honeycomb should be -| | ... | ${node} | ${tap_interface} | ${tap_settings} -| | And TAP configuration from VAT should be -| | ... | ${node} | ${tap_interface} | ${tap_settings} -| | And Notification listener is established | ${node} -| | When Honeycomb removes TAP interface | ${node} | ${tap_interface} -| | Then Honeycomb should send interface deleted notification | ${tap_interface} diff --git a/tests/suites/honeycomb/071_notification.robot b/tests/suites/honeycomb/071_notification.robot new file mode 100644 index 0000000000..117f024b21 --- /dev/null +++ b/tests/suites/honeycomb/071_notification.robot @@ -0,0 +1,56 @@ +# 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. + +*** Variables *** +# Interfaces to run tests on. +| ${interface}= | ${node['interfaces']['port1']['name']} +| ${tap_interface}= | tap_test +| &{tap_settings}= | tap-name=tap_test | mac=08:00:27:c0:5d:37 +| ... | device-instance=${1} + +*** Settings *** +| Resource | resources/libraries/robot/default.robot +| Resource | resources/libraries/robot/honeycomb/interfaces.robot +| Resource | resources/libraries/robot/honeycomb/tap.robot +| Resource | resources/libraries/robot/honeycomb/notifications.robot +| Suite Setup | Run keywords +| ... | Honeycomb sets interface state +| ... | ${node} | ${interface} | down | AND +| ... | Honeycomb creates TAP interface +| ... | ${node} | ${tap_interface} | ${tap_settings} +| Documentation | *Honeycomb notifications test suite.* +| Force Tags | honeycomb_sanity + +*** Test Cases *** +| Honeycomb sends notification on interface state change +| | [Documentation] | Check if Honeycomb sends a state-changed notification\ +| | ... | when the state of an interface is changed. +| | Given Interface state from Honeycomb should be +| | ... | ${node} | ${interface} | down +| | And Interface state from VAT should be | ${node} | ${interface} | down +| | And Notification listener is established | ${node} +| | When Honeycomb sets interface state | ${node} | ${interface} | up +| | Then Honeycomb should send interface state notification | ${interface} | up +| | When Honeycomb sets interface state | ${node} | ${interface} | down +| | And Honeycomb should send interface state notification | ${interface} | down + +| Honeycomb sends notification on interface deletion +| | [Documentation] | Check if Honeycomb sends an interface-deleted notification +| | ... | when an interface is deleted. +| | Given TAP configuration from Honeycomb should be +| | ... | ${node} | ${tap_interface} | ${tap_settings} +| | And TAP configuration from VAT should be +| | ... | ${node} | ${tap_interface} | ${tap_settings} +| | And Notification listener is established | ${node} +| | When Honeycomb removes TAP interface | ${node} | ${tap_interface} +| | Then Honeycomb should send interface deleted notification | ${tap_interface} 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""" + + +urn:ietf:params:netconf:base:1.0 + + +]]>]]>""" \ 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""" + + +honeycomb + + +]]>]]>""" 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""" + + + + + + + + +4fe335c8-6fdc-4654-b12c-d256e9b39229 + + + + + +]]>]]> + + + + + + + + +]]>]]> + + + + + + +none + + + +4fe335c8-6fdc-4654-b12c-d256e9b39229 +neutron port +enabled + +client +/tmp/socket_4fe335c8-6fdc-4654-b12c-d256e9b39229 + +x:vhost-user +true + + + + + +]]>]]> + + + + +]]>]]> + + + + + + + + +]]>]]> + + + + + + + + +]]>]]> + + + + + + +none + + + +4fe335c8-6fdc-4654-b12c-d256e9b39229 + + + + + +]]>]]> + + + + +]]>]]> + + + + + + + + +]]>]]> + + + + + + + + +]]>]]> + + + + + + +none + + + +4fe335c8-6fdc-4654-b12c-d256e9b39229 +neutron port +enabled + +client +/tmp/socket_4fe335c8-6fdc-4654-b12c-d256e9b39229 + +x:vhost-user +true + + + + + +]]>]]> + + + + +]]>]]> + + + + + + + + +]]>]]> + + + + + + + + +]]>]]> + + + + + + +none + + + +d7611278-88ff-40e1-81e2-602e94e96fc7 +neutron port +enabled + +client +/tmp/socket_d7611278-88ff-40e1-81e2-602e94e96fc7 + +x:vhost-user +true + + + + + +]]>]]> + + + + +]]>]]> + + + + + + + + +]]>]]> + + + + + + + + +]]>]]> + + + + + + +none + + + +1f96a665-4351-4984-b1a8-dc6f54683123 +neutron port +enabled + +client +/tmp/socket_1f96a665-4351-4984-b1a8-dc6f54683123 + +x:vhost-user +true + + + + + +]]>]]> + + + + +]]>]]> + + + + + + + + +]]>]]> + + + + + + + + +]]>]]> + + + + + + +none + + + + +e86740a2-042c-4e64-a43b-cc224e0d5240 +true +true +true +true +false + + + + + + +]]>]]> + + + + +]]>]]> + + + + + + + + +]]>]]> + + + + + + + + +]]>]]> + + + + + + + + +]]>]]>""" -- cgit 1.2.3-korg