X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=csit%2Fsuites%2Fnetconf%2FCRUD%2FCRUD.robot;h=d37738dcf7a82a28ade08b71e530c74cc4db3e6c;hb=7e5a8e3140f4ae6ae45e05047650617b3f85253a;hp=ed14c3a6bc5b31d97bd765d0cd58acc977ebba97;hpb=3300c3bbb8e8a590bc21f00681edc7ca188fbdcc;p=integration%2Ftest.git diff --git a/csit/suites/netconf/CRUD/CRUD.robot b/csit/suites/netconf/CRUD/CRUD.robot index ed14c3a6bc..d37738dcf7 100644 --- a/csit/suites/netconf/CRUD/CRUD.robot +++ b/csit/suites/netconf/CRUD/CRUD.robot @@ -10,28 +10,38 @@ Documentation netconf-connector CRUD test suite. ... ... Perform basic operations (Create, Read, Update and Delete or CRUD) on device ... data mounted onto a netconf connector and see if they work. +... +... FIXME: Replace the BuiltIn.Should_[Not_]Contain instances in the test cases +... that check the car list related data with calls to keywords of a Resource +... aimed at getting interesting pieces of data from the XML files and checking +... them against expected data sets. See MDSAL/northbound.robot suite for +... additional information. Suite Setup Setup_Everything Suite Teardown Teardown_Everything -Test Setup SetupUtils.Setup_Test_With_Logging_And_Fast_Failing -Test Teardown FailFast.Start_Failing_Fast_If_This_Failed +Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing Library Collections Library RequestsLibrary Library OperatingSystem Library String Library SSHLibrary timeout=10s +Resource ${CURDIR}/../../../libraries/CompareStream.robot Resource ${CURDIR}/../../../libraries/FailFast.robot -Resource ${CURDIR}/../../../libraries/KarafKeywords.robot Resource ${CURDIR}/../../../libraries/NetconfKeywords.robot -Resource ${CURDIR}/../../../libraries/NetconfViaRestconf.robot Resource ${CURDIR}/../../../libraries/SetupUtils.robot -Resource ${CURDIR}/../../../libraries/Utils.robot +Resource ${CURDIR}/../../../libraries/TemplatedRequests.robot Variables ${CURDIR}/../../../variables/Variables.py *** Variables *** -${DIRECTORY_WITH_TEMPLATE_FOLDERS} ${CURDIR}/../../../variables/netconf/CRUD +${directory_with_template_folders} ${CURDIR}/../../../variables/netconf/CRUD ${device_name} netconf-test-device +${device_type} full-uri-device +${USE_NETCONF_CONNECTOR} ${False} *** Test Cases *** +Start_Testtool + [Documentation] Deploy and start test tool, then wait for all its devices to become online. + NetconfKeywords.Install_And_Start_Testtool device-count=1 schemas=${CURDIR}/../../../variables/netconf/CRUD/schemas + Check_Device_Is_Not_Configured_At_Beginning [Documentation] Sanity check making sure our device is not there. Fail if found. [Tags] critical @@ -40,7 +50,7 @@ Check_Device_Is_Not_Configured_At_Beginning Configure_Device_On_Netconf [Documentation] Make request to configure a testtool device on Netconf connector. [Tags] critical - NetconfKeywords.Configure_Device_In_Netconf ${device_name} + NetconfKeywords.Configure_Device_In_Netconf ${device_name} device_type=${device_type} http_timeout=2 Check_ODL_Has_Netconf_Connector_For_Device [Documentation] Get the list of configured devices and search for our device there. Fail if not found. @@ -54,34 +64,140 @@ Wait_For_Device_To_Become_Connected Check_Device_Data_Is_Empty [Documentation] Get the device data and make sure it is empty. - Check_Config_Data + Run_Keyword_If_Less_Than_Neon Check_Config_Data + Run_Keyword_If_At_Least_Neon Check_Config_Data -Create_Device_Data - [Documentation] Send some sample test data into the device and check that the request went OK. +Create_Device_Data_Label_Via_Xml + [Documentation] Send a sample test data label into the device and check that the request went OK. ${template_as_string}= BuiltIn.Set_Variable {'DEVICE_NAME': '${device_name}'} - NetconfViaRestconf.Post_Xml_Template_Folder_Via_Restconf ${DIRECTORY_WITH_TEMPLATE_FOLDERS}${/}dataorig ${template_as_string} + TemplatedRequests.Post_As_Xml_Templated ${directory_with_template_folders}${/}dataorig ${template_as_string} + +Check_Device_Data_Label_Is_Created + [Documentation] Get the device data label and make sure it contains the created content. + Check_Config_Data Content + +Modify_Device_Data_Label_Via_Xml + [Documentation] Send a request to change the sample test data label and check that the request went OK. + ${template_as_string}= BuiltIn.Set_Variable {'DEVICE_NAME': '${device_name}'} + TemplatedRequests.Put_As_Xml_Templated ${directory_with_template_folders}${/}datamod1 ${template_as_string} + +Check_Device_Data_Label_Is_Modified + [Documentation] Get the device data label and make sure it contains the modified content. + Check_Config_Data Modified Content + +Deconfigure_Device_From_Netconf_Temporarily + [Documentation] Make request to deconfigure the testtool device on Netconf connector. + ... This is the first part of the "configure/deconfigure" cycle of the device + ... The purpose of cycling the device like this is to see that the configuration + ... data was really stored in the device. + [Tags] critical + [Setup] SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing + NetconfKeywords.Remove_Device_From_Netconf ${device_name} + +Wait_For_Device_To_Be_Gone + [Documentation] Wait for the device to completely disappear. + NetconfKeywords.Wait_Device_Fully_Removed ${device_name} -Check_Device_Data_Is_Created +Configure_The_Device_Back + [Documentation] Configure the device again. + ... This is the second step of the device configuration. + [Tags] critical + NetconfKeywords.Configure_Device_In_Netconf ${device_name} device_type=${device_type} + +Wait_For_Device_To_Reconnect + [Documentation] Wait until the device becomes available through Netconf. + NetconfKeywords.Wait_Device_Connected ${device_name} + +Check_Modified_Device_Data_Is_Still_There [Documentation] Get the device data and make sure it contains the created content. - Check_Config_Data Content + BuiltIn.Wait_Until_Keyword_Succeeds 60s 1s Check_Config_Data Modified Content -Modify_Device_Data +Modify_Device_Data_Again [Documentation] Send a request to change the sample test data and check that the request went OK. ${template_as_string}= BuiltIn.Set_Variable {'DEVICE_NAME': '${device_name}'} - NetconfViaRestconf.Put_Xml_Template_Folder_Via_Restconf ${DIRECTORY_WITH_TEMPLATE_FOLDERS}${/}datamod1 ${template_as_string} + TemplatedRequests.Put_As_Xml_Templated ${DIRECTORY_WITH_TEMPLATE_FOLDERS}${/}datamod2 ${template_as_string} -Check_Device_Data_Is_Modified +Check_Device_Data_Is_Modified_Again [Documentation] Get the device data and make sure it contains the created content. - Check_Config_Data Modified Content + Check_Config_Data Another Modified Content + +Modify_Device_Data_Label_Via_Json + [Documentation] Send a JSON request to change the sample test data label and check that the request went OK. + ${template_as_string}= BuiltIn.Set_Variable {'DEVICE_NAME': '${device_name}'} + TemplatedRequests.Put_As_Json_Templated ${directory_with_template_folders}${/}datamodjson ${template_as_string} + +Check_Device_Data_Label_Is_Modified_Via_Json + [Documentation] Get the device data label as XML and make sure it matches the content posted as JSON in the previous case. + Check_Config_Data Content Modified via JSON + +Create_Car_List + [Documentation] Send a request to create a list of cars in the sample test data label and check that the request went OK. + ${template_as_string}= BuiltIn.Set_Variable {'DEVICE_NAME': '${device_name}'} + TemplatedRequests.Post_As_Xml_Templated ${directory_with_template_folders}${/}cars ${template_as_string} + +Check_Car_List_Created + [Documentation] Get the device data label as XML and make sure it matches the content posted as JSON in the previous case. + ${data}= Get_Config_Data + BuiltIn.Should_Contain ${data} KEEP + BuiltIn.Should_Not_Contain ${data} SMALL + BuiltIn.Should_Not_Contain ${data} Isetta + BuiltIn.Should_Not_Contain ${data} BMW + BuiltIn.Should_Not_Contain ${data} 1953 + BuiltIn.Should_Not_Contain ${data} microcar + BuiltIn.Should_Not_Contain ${data} TOYOTA + BuiltIn.Should_Not_Contain ${data} Camry + BuiltIn.Should_Not_Contain ${data} Toyota + BuiltIn.Should_Not_Contain ${data} 1982 + BuiltIn.Should_Not_Contain ${data} sedan + +Add_Device_Data_Item_1_Via_XML_Post + [Documentation] Send a request to create a data item in the test list and check that the request went OK. + ${template_as_string}= BuiltIn.Set_Variable {'DEVICE_NAME': '${device_name}'} + TemplatedRequests.Post_As_Xml_Templated ${directory_with_template_folders}${/}item1 ${template_as_string} + +Check_Item1_Is_Created + [Documentation] Get the device data as XML and make sure it matches the content posted as JSON in the previous case. + ${data}= Get_Config_Data + BuiltIn.Should_Contain ${data} SMALL + BuiltIn.Should_Contain ${data} Isetta + BuiltIn.Should_Contain ${data} BMW + BuiltIn.Should_Contain ${data} 1953 + BuiltIn.Should_Contain ${data} microcar + BuiltIn.Should_Not_Contain ${data} TOYOTA + BuiltIn.Should_Not_Contain ${data} Camry + BuiltIn.Should_Not_Contain ${data} Toyota + BuiltIn.Should_Not_Contain ${data} 1982 + BuiltIn.Should_Not_Contain ${data} sedan + +Add_Device_Data_Item_2_Via_JSON_Post + [Documentation] Send a JSON request to change the sample test data and check that the request went OK. + ${template_as_string}= BuiltIn.Set_Variable {'DEVICE_NAME': '${device_name}'} + TemplatedRequests.Post_As_Json_Templated ${directory_with_template_folders}${/}item2 ${template_as_string} + +Check_Item2_Is_Created + [Documentation] Get the device data as XML and make sure it matches the content posted as JSON in the previous case. + ${data}= Get_Config_Data + BuiltIn.Should_Contain ${data} SMALL + BuiltIn.Should_Contain ${data} Isetta + BuiltIn.Should_Contain ${data} BMW + BuiltIn.Should_Contain ${data} 1953 + BuiltIn.Should_Contain ${data} microcar + BuiltIn.Should_Contain ${data} TOYOTA + BuiltIn.Should_Contain ${data} Camry + BuiltIn.Should_Contain ${data} Toyota + BuiltIn.Should_Contain ${data} 1982 + BuiltIn.Should_Contain ${data} sedan Delete_Device_Data [Documentation] Send a request to delete the sample test data on the device and check that the request went OK. ${template_as_string}= BuiltIn.Set_Variable {'DEVICE_NAME': '${device_name}'} - NetconfViaRestconf.Delete_Xml_Template_Folder_Via_Restconf ${DIRECTORY_WITH_TEMPLATE_FOLDERS}${/}datamod1 ${template_as_string} + TemplatedRequests.Delete_Templated ${directory_with_template_folders}${/}datamod1 ${template_as_string} + TemplatedRequests.Delete_Templated ${directory_with_template_folders}${/}item1 ${template_as_string} Check_Device_Data_Is_Deleted [Documentation] Get the device data and make sure it is empty again. - Check_Config_Data + Run_Keyword_If_Less_Than_Neon Check_Config_Data + Run_Keyword_If_At_Least_Neon Check_Config_Data Deconfigure_Device_From_Netconf [Documentation] Make request to deconfigure the testtool device on Netconf connector. @@ -103,25 +219,27 @@ Check_Device_Going_To_Be_Gone_After_Deconfiguring *** Keywords *** Setup_Everything - [Documentation] Setup everything needed for the test cases. + [Documentation] Initialize SetupUtils. Setup everything needed for the test cases. # Setup resources used by the suite. SetupUtils.Setup_Utils_For_Setup_And_Teardown RequestsLibrary.Create_Session operational http://${ODL_SYSTEM_IP}:${RESTCONFPORT}${OPERATIONAL_API} auth=${AUTH} NetconfKeywords.Setup_Netconf_Keywords - # Connect to the Mininet machine - SSHLibrary.Open_Connection ${TOOLS_SYSTEM_IP} prompt=${TOOLS_SYSTEM_PROMPT} - Utils.Flexible_Mininet_Login - NetconfKeywords.Install_And_Start_Testtool device-count=10 schemas=${CURDIR}/../../../variables/netconf/CRUD/schemas + ${device_type}= BuiltIn.Set_Variable_If """${USE_NETCONF_CONNECTOR}""" == """True""" default ${device_type} + BuiltIn.Set_Suite_Variable ${device_type} Teardown_Everything [Documentation] Teardown the test infrastructure, perform cleanup and release all resources. - Teardown_Netconf_Via_Restconf RequestsLibrary.Delete_All_Sessions BuiltIn.Run_Keyword_And_Ignore_Error NetconfKeywords.Stop_Testtool +Get_Config_Data + [Documentation] Get and return the config data from the device. + ${url}= Builtin.Set_Variable ${CONFIG_API}/network-topology:network-topology/topology/topology-netconf/node/${device_name}/yang-ext:mount + ${data}= TemplatedRequests.Get_As_Xml_From_Uri ${url} + [Return] ${data} + Check_Config_Data [Arguments] ${expected} ${contains}=False - ${url}= Builtin.Set_Variable network-topology:network-topology/topology/topology-netconf/node/${device_name}/yang-ext:mount - ${data}= Utils.Get_Data_From_URI nvr_session ${url} headers=${ACCEPT_XML} + ${data}= Get_Config_Data BuiltIn.Run_Keyword_Unless ${contains} BuiltIn.Should_Be_Equal_As_Strings ${data} ${expected} BuiltIn.Run_Keyword_If ${contains} BuiltIn.Should_Contain ${data} ${expected}