From 6a4018c9d8b356bc55af135d68803a08729d0ae1 Mon Sep 17 00:00:00 2001 From: selias Date: Tue, 18 Apr 2017 12:01:27 +0200 Subject: [PATCH] HC Test: update persistence suite - fix "enable persistence" is suite setup - update Jira links to persistence bug - log content of persistence file before each restart Change-Id: I68ad759ded5d6bee277cf946953c11f19628a9e7 Signed-off-by: selias --- .../libraries/python/honeycomb/HcPersistence.py | 16 +++++++++++++++ .../libraries/robot/honeycomb/persistence.robot | 24 +++++++++++++++++++++- .../honeycomb/mgmt-statepersist-apihc-func.robot | 11 ++++++---- 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/resources/libraries/python/honeycomb/HcPersistence.py b/resources/libraries/python/honeycomb/HcPersistence.py index 83d756f9d3..dae84bdf22 100644 --- a/resources/libraries/python/honeycomb/HcPersistence.py +++ b/resources/libraries/python/honeycomb/HcPersistence.py @@ -142,3 +142,19 @@ class HcPersistence(object): if ret_code != 0: raise HoneycombError("Failed to modify configuration on " "node {0}, {1}".format(node, stderr)) + + @staticmethod + def log_persisted_configuration(node): + """Read contents of Honeycomb persistence files and print to Robot log. + + :param node: Honeycomb node. + :type node: dict + """ + + command = "cat /var/lib/honeycomb/persist/{0}/data.json" + + ssh = SSH() + ssh.connect(node) + + ssh.exec_command_sudo(command.format("config")) + ssh.exec_command_sudo(command.format("context")) diff --git a/resources/libraries/robot/honeycomb/persistence.robot b/resources/libraries/robot/honeycomb/persistence.robot index aac920914c..a1c08c2ec1 100644 --- a/resources/libraries/robot/honeycomb/persistence.robot +++ b/resources/libraries/robot/honeycomb/persistence.robot @@ -35,6 +35,7 @@ | | ... | *Example:* | | ... | | ... | \| Honeycomb is restarted \| ${nodes['DUT1']} \| +| | ... | | [Arguments] | ${node} | | Stop Honeycomb service on DUTs | ${node} | | Log Persisted Configuration | ${node} @@ -49,6 +50,7 @@ | | ... | *Example:* | | ... | | ... | \| VPP is restarted \| ${nodes['DUT1']} \| +| | ... | | [Arguments] | ${node} | | Setup DUT | ${node} | | Check VPP connection | ${node} @@ -63,6 +65,7 @@ | | ... | *Example:* | | ... | | ... | \| Check VPP connection \| ${nodes['DUT1']} \| +| | ... | | [Arguments] | ${node} | | Wait until keyword succeeds | 2min | 20sec | | ... | Check Honeycomb startup state | ${node} @@ -77,6 +80,7 @@ | | ... | *Example:* | | ... | | ... | \| Honeycomb and VPP are restarted \| ${nodes['DUT1']} \| +| | ... | | [Arguments] | ${node} | | Stop Honeycomb service on DUTs | ${node} | | Log Persisted Configuration | ${node} @@ -95,6 +99,7 @@ | | ... | | ... | \| Honeycomb configures every setting \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| +| | ... | | [Arguments] | ${node} | ${interface} | | Honeycomb sets interface VxLAN configuration | | ... | ${node} | ${vx_interface} | ${vxlan_settings} @@ -126,6 +131,7 @@ | | ... | | ... | \| Honeycomb and VPP should verify every setting \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| +| | ... | | [Arguments] | ${node} | ${interface} | | VxLAN configuration from Honeycomb should be | | ... | ${node} | ${vx_interface} | ${vxlan_settings} @@ -170,6 +176,7 @@ | | ... | | ... | \| Honeycomb and VPP should have default configuration \| | | ... | ${nodes['DUT1']} \| +| | ... | | [Arguments] | ${node} | | VxLAN configuration from Honeycomb should be empty | | ... | ${node} | ${vx_interface} @@ -201,11 +208,11 @@ | | ... | | ... | \| Honeycomb and VPP should not have default configuration \ | | ... | \| ${nodes['DUT1']} \| +| | ... | | [Arguments] | ${node} | | Run keyword and expect error | * | | ... | Honeycomb and VPP should have default configuration | ${node} - | Honeycomb should show no rogue interfaces | | [Documentation] | Checks if operational data contains interfaces not\ | | ... | present in configuration and vice versa. @@ -216,6 +223,7 @@ | | ... | *Example:* | | ... | | ... | \| Honeycomb should show no rogue interfaces \| ${nodes['DUT1']} \| +| | ... | | [Arguments] | ${node} | | ${data_conf}= | InterfaceAPI.Get all interfaces cfg data | ${node} | | ${data_oper}= | InterfaceAPI.Get all interfaces oper data | ${node} @@ -231,8 +239,22 @@ | | ... | *Example:* | | ... | | ... | \| Persistence file is damaged during restart \| ${nodes['DUT1']} \| +| | ... | | [Arguments] | ${node} | | Stop Honeycomb service on DUTs | ${node} | | Modify persistence files | ${node} | { | abc | | Setup DUT | ${node} | | Setup Honeycomb service on DUTs | ${node} + +| Log persisted configuration on node +| | [Documentation] | Logs the content of Honeycomb's persitence files. +| | ... +| | ... | *Arguments:* +| | ... | - node - information about a DUT node. Type: dictionary +| | ... +| | ... | *Example:* +| | ... +| | ... | \| Log persisted configuration on node \| ${nodes['DUT1']} \| +| | ... +| | [Arguments] | ${node} +| | Log persisted configuration | ${node} \ No newline at end of file diff --git a/tests/func/honeycomb/mgmt-statepersist-apihc-func.robot b/tests/func/honeycomb/mgmt-statepersist-apihc-func.robot index 8aebe741cf..28746e66fb 100644 --- a/tests/func/honeycomb/mgmt-statepersist-apihc-func.robot +++ b/tests/func/honeycomb/mgmt-statepersist-apihc-func.robot @@ -19,8 +19,8 @@ | Resource | resources/libraries/robot/default.robot | Resource | resources/libraries/robot/honeycomb/persistence.robot | Suite Setup | Run Keywords +| ... | Configure Persistence | ${node} | enable | AND | ... | Restart Honeycomb And VPP And Clear Persisted Configuration | ${node} -| ... | AND | Configure Persistence | ${node} | enable | Suite Teardown | Configure Persistence | ${node} | disable | Force Tags | honeycomb_sanity | Documentation | *Honeycomb configuration persistence test suite.* @@ -29,10 +29,11 @@ | TC01: Honeycomb persists configuration through restart of both Honeycomb and VPP | | [Documentation] | Checks if Honeycomb maintains configuration after both\ | | ... | Honeycomb and VPP are restarted. -# Vxlan tunnel name is sometimes not properly restored (HONEYCOMB-301) +# Vxlan tunnel name is sometimes not properly restored (HC2VPP-47) | | [Tags] | EXPECTED_FAILING | | Given Honeycomb configures every setting | ${node} | ${interface} | | And Honeycomb and VPP should verify every setting | ${node} | ${interface} +| | And Log persisted configuration on node | ${node} | | When Honeycomb and VPP are restarted | ${node} | | Then Honeycomb and VPP should verify every setting | ${node} | ${interface} | | And Honeycomb should show no rogue interfaces | ${node} @@ -40,9 +41,10 @@ | TC02: Honeycomb persists configuration through restart of Honeycomb | | [Documentation] | Checks if Honeycomb maintains configuration after it\ | | ... | is restarted. -# Vxlan tunnel name is sometimes not properly restored (HONEYCOMB-301) +# Vxlan tunnel name is sometimes not properly restored (HC2VPP-47) | | [Tags] | EXPECTED_FAILING | | Given Honeycomb and VPP should verify every setting | ${node} | ${interface} +| | And Log persisted configuration on node | ${node} | | When Honeycomb is restarted | ${node} | | Then Honeycomb and VPP should verify every setting | ${node} | ${interface} | | And Honeycomb should show no rogue interfaces | ${node} @@ -50,9 +52,10 @@ | TC03: Honeycomb persists configuration through restart of VPP | | [Documentation] | Checks if Honeycomb updates VPP settings after VPP is\ | | ... | restarted. -# Vxlan tunnel name is sometimes not properly restored (HONEYCOMB-301) +# Vxlan tunnel name is sometimes not properly restored (HC2VPP-47) | | [Tags] | EXPECTED_FAILING | | Given Honeycomb and VPP should verify every setting | ${node} | ${interface} +| | And Log persisted configuration on node | ${node} | | When VPP is restarted | ${node} | | Then Honeycomb and VPP should verify every setting | ${node} | ${interface} | | And Honeycomb should show no rogue interfaces | ${node} -- 2.16.6