*** Settings *** Documentation Basic Tests for Persistence Test APP. ... ... Copyright (c) 2015 Hewlett-Packard Development Company, L.P. and others. All rights reserved. Suite Setup Setup Persistence Test App Environment Suite Teardown Cleanup Persistence Test Database Library SSHLibrary Library Collections Library ../../../libraries/UtilLibrary.py Resource ../../../libraries/KarafKeywords.robot Resource ../../../libraries/Utils.robot Variables ../../../variables/Variables.py *** Variables *** ${username} user1 ${password} user1 ${email_addr} user1@example.com ${location1} BUILDING_1_FIRST_FLOOR ${location2} BUILDING_2_FIRST_FLOOR ${device1_name} node1 ${device1_ip} 10.1.1.10 ${device2_name} node2 ${device2_ip} 10.1.1.20 *** Test Cases *** Verify User Test App [Documentation] Verify the User functionality of the Persistence Test App ... This test case performs the following: ... 1. Create a user ... 2. Verify user is created and can be fetched ... 3. Verify user is created with correct user name and email address ... 4. Verify unknown user cannot be authenticated ... 5. Disable the user ... 6. Verify disabled user can be fetched [Tags] Persistence TestApp Issue Command On Karaf Console user:sign-up ${username} ${password} ${email_addr} ${output}= Issue Command On Karaf Console user:get-enabled ${string}= Extract String To Validate ${output} User{username=Username{value= 0 Should Match ${string} ${username} ${string}= Extract String To Validate ${output} email=Email{value= 2 Should Match ${string} ${email_addr} ${unknown_user}= Set Variable random ${output}= Issue Command On Karaf Console user:sign-in ${unknown_user} ${password} Should Contain ${output} Error executing command: Issue Command On Karaf Console user:disable ${username} ${output}= Issue Command On Karaf Console user:get-disabled ${user_dstate}= Set Variable isEnabled=false ${data}= Find User State ${output} Should Contain ${data} ${user_dstate} Verify Network Device Test App [Documentation] Verify the Network Device functionality of the Persistence Test App ... This test case performs the following: ... 1. Add a device ... 2. Verify device can be discovered ... 3. Assign a name to the device ... 4. Verify device name ... 5. Configure a location ... 6. Verify device location [Tags] Persistence TestApp Issue Command On Karaf Console networkdevice:discover ${device1_ip} ${output}= Issue Command On Karaf Console networkdevice:get-reachable ${string}= Extract String To Validate ${output} ipAddress=IpAddress{value= 2 Should Match ${string} ${device1_ip} ${device_id} Find Device Id ${device1_ip} Issue Command On Karaf Console networkdevice:set-friendly-name ${device_id} ${device1_name} ${data}= Find Device Name ${device1_ip} Should Match ${data} ${device1_name} Issue Command On Karaf Console networkdevice:set-location ${device_id} ${location1} ${data}= Find Device Location ${device1_ip} ${location1} Should Match ${data} ${location1} Verify Data Persistency [Documentation] Verify that the data that is generated by Persistence Test App can be persisted ... This test case performs the following: ... 1. Create a user ... 2. Add a device and configure name and location ... 3. Restart the controller ... 4. Verify user name, email address and state are persisted ... 5. Verify device name and location are persisted [Tags] Persistence TestApp Issue Command On Karaf Console user:sign-up ${username} ${password} ${email_addr} Issue Command On Karaf Console networkdevice:discover ${device2_ip} ${device_id} Find Device Id ${device2_ip} Issue Command On Karaf Console networkdevice:set-location ${device_id} ${location2} Issue Command On Karaf Console networkdevice:set-friendly-name ${device_id} ${device2_name} Stop One Or More Controllers ${CONTROLLER} Wait Until Keyword Succeeds 60s 3s Controller Down Check ${CONTROLLER} Start One Or More Controllers ${CONTROLLER} UtilLibrary.Wait For Controller Up ${CONTROLLER} ${RESTCONFPORT} ${output}= Issue Command On Karaf Console user:get-enabled ${string}= Extract String To Validate ${output} User{username=Username{value= 0 Should Match ${string} ${username} ${string}= Extract String To Validate ${output} email=Email{value= 2 Should Match ${string} ${email_addr} ${data}= Find User State ${output} ${user_estate}= Set Variable isEnabled=true Should Contain ${data} ${user_estate} ${data}= Find Device Name ${device2_ip} Should Match ${data} ${device2_name} ${data}= Find Device Location ${device2_ip} ${location2} Should Match ${data} ${location2} *** Keywords *** Extract String To Validate [Arguments] ${output} ${splitter} ${index} [Documentation] Take the output of a content, the string to be splitted and the ... index of the data from the output, parse the strin and return the data that includes ... user's name, user's email address, device's IP address ${output}= Split Value from String ${output} } ${string}= Get From List ${output} ${index} ${string}= Split Value from String ${string} ${splitter} ${string}= Get From List ${string} 1 [Return] ${string} Find Line [Arguments] ${device_ip} [Documentation] Take the output of networkdevice:get-reachable, find the line ... with the give IP with the given IP address and return the line ${output}= Issue Command On Karaf Console networkdevice:get-reachable ${output}= Split To Lines ${output} ${length}= Get Length ${output} : FOR ${INDEX} IN RANGE 0 ${length} \ ${line}= Get From List ${output} ${INDEX} \ ${data}= Fetch From Right ${line} ipAddress=IpAddress{value= \ ${data}= Split String ${data} }, \ ${data}= Get From List ${data} 0 \ Run Keyword If '${data}' == '${device_ip}' Exit For Loop [Return] ${line} Find Device Id [Arguments] ${device_ip} [Documentation] Find the device ID using its IP address ${line}= Find Line ${device_ip} ${id}= Split String ${line} NetworkDevice{id=SerialNumber{value= ${id}= Get From List ${id} 1 ${id}= Fetch from Left ${id} } [Return] ${id} Find Device Name [Arguments] ${device_ip} [Documentation] Find the device's name using its IP address ${line}= Find Line ${device_ip} ${line}= Split String ${line} , ${line}= Get From List ${line} -2 ${name}= Split String ${line} friendlyName= ${name}= Get From List ${name} 1 [Return] ${name} Find Device Location [Arguments] ${device_ip} ${location} [Documentation] Find the device's location using its IP address ${line}= Find Line ${device_ip} ${line}= Split String ${line} , ${line}= Get From List ${line} 3 ${name}= Split String ${line} location= ${name}= Get From List ${name} 1 [Return] ${location} Find User State [Arguments] ${output} [Documentation] Find the user's state ${output}= Split Value from String ${output} , ${data}= Get From List ${output} 4 ${data}= Remove Space on String ${data} ${data}= Split String ${data} } [Return] ${data} Setup Persistence Test App Environment [Documentation] Installing Persistence Related features Install a Feature odl-persistence-all Install a Feature odl-persistence-test-app Verify Feature Is Installed odl-persistence-api Verify Feature Is Installed odl-persistence-jpa-impl Verify Feature Is Installed odl-persistence-test-app Cleanup Persistence Test Database [Documentation] Clear the database and uninstall Persistence Test App Uninstall a Feature odl-persistence-api Uninstall a Feature odl-persistence-jpa-impl Uninstall a Feature odl-persistence-test-app Verify Feature Is Not Installed odl-persistence-api Verify Feature Is Not Installed odl-persistence-jpa-impl Verify Feature Is Not Installed odl-persistence-test-app