aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorselias <samelias@cisco.com>2016-05-25 17:16:11 +0200
committerJan Gelety <jgelety@cisco.com>2016-06-07 20:19:50 +0000
commitce469c1a7d56c2be639e5cecde961c4ef6354fb5 (patch)
tree617a03045adb8426c59ac2758d5075fb3096d054 /tests
parent6000b2abc3d6b8bb8ff2941aacf005a04a33be60 (diff)
Add Honeycomb persistence tests
JIRA: CSIT-121 - add honeycomb persistence test suite - add keywords used by persistence tests - add methods for working with Honeycomb persistence files - make suite setup clear persisted data before Honeycomb startup Change-Id: Ief61c12b730d58a456566c4683c0091e08a09b56 Signed-off-by: selias <samelias@cisco.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/suites/honeycomb/7 - persistence.robot64
-rw-r--r--tests/suites/honeycomb/__init__.robot2
-rw-r--r--tests/suites/honeycomb/resources/persistence.py74
3 files changed, 140 insertions, 0 deletions
diff --git a/tests/suites/honeycomb/7 - persistence.robot b/tests/suites/honeycomb/7 - persistence.robot
new file mode 100644
index 0000000000..24043c343c
--- /dev/null
+++ b/tests/suites/honeycomb/7 - persistence.robot
@@ -0,0 +1,64 @@
+# 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***
+# Node and interface to run tests on.
+| ${node}= | ${nodes['DUT1']}
+| ${interface}= | ${node['interfaces']['port1']['name']}
+
+*** Settings ***
+| Resource | resources/libraries/robot/default.robot
+| Resource | resources/libraries/robot/honeycomb/persistence.robot
+# Restart Honeycomb and VPP to clear configuration before tests.
+| Suite Setup | Run keywords
+| ... | Stop Honeycomb service on DUTs | ${node} | AND
+| ... | Clear persisted Honeycomb configuration | ${node} | AND
+| ... | Setup DUT | ${node} | AND
+| ... | Setup Honeycomb service on DUTs | ${node}
+| Documentation | *Honeycomb configuration persistence test suite.*
+
+*** Test Cases ***
+| Honeycomb persists configuration through restart of both systems
+| | [Documentation] | Checks if Honeycomb maintains configuration after both\
+| | ... | Honeycomb and VPP are restarted.
+| | [Tags] | honeycomb_sanity
+| | When Honeycomb configures every setting | ${node} | ${interface}
+| | And Honeycomb and VPP are restarted | ${node}
+| | Then Honeycomb and VPP should verify every setting | ${node} | ${interface}
+| | And Honeycomb should show no rogue interfaces | ${node}
+
+| Honeycomb persists configuration through restart of Honeycomb
+| | [Documentation] | Checks if Honeycomb maintains configuration after it\
+| | ... | is restarted.
+| | [Tags] | honeycomb_sanity
+| | Given Honeycomb and VPP should verify every setting | ${node} | ${interface}
+| | When Honeycomb is restarted | ${node}
+| | Then Honeycomb and VPP should verify every setting | ${node} | ${interface}
+| | And Honeycomb should show no rogue interfaces | ${node}
+
+| Honeycomb persists configuration through restart of VPP
+| | [Documentation] | Checks if Honeycomb updates VPP settings after VPP is\
+| | ... | restarted.
+| | [Tags] | honeycomb_sanity
+| | Given Honeycomb and VPP should verify every setting | ${node} | ${interface}
+| | When VPP is restarted | ${node}
+| | Then Honeycomb and VPP should verify every setting | ${node} | ${interface}
+| | And Honeycomb should show no rogue interfaces | ${node}
+
+| Honeycomb reverts to defaults if persistence files are invalid
+| | [Documentation] | Checks if Honeycomb reverts to default configuration when\
+| | ... | persistence files are damaged or invalid.
+| | [Tags] | honeycomb_sanity
+| | Given Honeycomb and VPP should verify every setting | ${node} | ${interface}
+| | When Persistence file is damaged during restart | ${node}
+| | Then Honeycomb and VPP should have default configuration | ${node}
diff --git a/tests/suites/honeycomb/__init__.robot b/tests/suites/honeycomb/__init__.robot
index a61f2160f2..264f604599 100644
--- a/tests/suites/honeycomb/__init__.robot
+++ b/tests/suites/honeycomb/__init__.robot
@@ -15,8 +15,10 @@
| ${node}= | ${nodes['DUT1']}
*** Settings ***
+| Library | resources.libraries.python.honeycomb.HcPersistence
| Resource | resources/libraries/robot/default.robot
| Resource | resources/libraries/robot/honeycomb/honeycomb.robot
| Suite Setup | Run keywords | Setup all DUTs before test | AND
+| ... | Clear persisted Honeycomb configuration | ${node} | AND
| ... | Setup Honeycomb service on DUTs | ${node}
| Suite Teardown | Stop Honeycomb service on DUTs | ${node}
diff --git a/tests/suites/honeycomb/resources/persistence.py b/tests/suites/honeycomb/resources/persistence.py
new file mode 100644
index 0000000000..d47ea662f9
--- /dev/null
+++ b/tests/suites/honeycomb/resources/persistence.py
@@ -0,0 +1,74 @@
+# 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.
+
+"""Test variables for Honeycomb persistence test suite."""
+
+
+def get_variables(interface):
+ """Creates and returns dictionary of test variables.
+
+ :param interface: name of super-interface for the tested sub-interface
+ :type interface: str
+ :return: dictionary of test variables
+ :rtype: dict
+ """
+ # Vlan subinterface basic settings
+ sub_interface_id = 10
+ sub_interface_name = interface + '.' + str(sub_interface_id)
+
+ variables = {
+ # VxLan settings
+ 'vx_interface': 'vx_tunnel_test',
+ 'vxlan_settings': {'src': '192.168.0.2',
+ 'dst': '192.168.0.3',
+ "vni": 88,
+ 'encap-vrf-id': 0},
+ # bridge domain settings
+ 'bd_name': 'bd_persist',
+ 'bd_settings': {'flood': True,
+ 'forward': True,
+ 'learn': True,
+ 'unknown-unicast-flood': True,
+ 'arp-termination': True
+ },
+ # tap interface settings
+ 'tap_interface': 'tap_test',
+ 'tap_settings': {'tap-name': 'tap_test',
+ 'mac': '08:00:27:c0:5d:37',
+ 'device-instance': 1
+ },
+ # vhost-user interface settings
+ 'vhost_interface': 'test_vhost',
+ 'vhost_user_server': {'socket': 'soc1',
+ 'role': 'server'
+ },
+ # Vlan subinterface settings
+ 'sub_interface_id': sub_interface_id,
+ 'sub_interface_name': sub_interface_name,
+ 'sub_interface_base_settings': {'name': sub_interface_name,
+ 'type': 'v3po:sub-interface'
+ },
+ 'sub_interface_settings': {
+ 'super-interface': interface,
+ 'identifier': sub_interface_id,
+ 'vlan-type': '802dot1ad',
+ 'number-of-tags': 2,
+ 'outer-id': 22,
+ 'inner-id': 33,
+ 'match-any-outer-id': False,
+ 'match-any-inner-id': False,
+ 'exact-match': True,
+ 'default-subif': True
+ }
+ }
+ return variables