aboutsummaryrefslogtreecommitdiffstats
path: root/csit/tests/sdnr/functional/devicemanager/_templates/10_lifecycleNetconfSsh/devicemanagerlifecycle_netconf.robot
diff options
context:
space:
mode:
Diffstat (limited to 'csit/tests/sdnr/functional/devicemanager/_templates/10_lifecycleNetconfSsh/devicemanagerlifecycle_netconf.robot')
-rw-r--r--csit/tests/sdnr/functional/devicemanager/_templates/10_lifecycleNetconfSsh/devicemanagerlifecycle_netconf.robot401
1 files changed, 401 insertions, 0 deletions
diff --git a/csit/tests/sdnr/functional/devicemanager/_templates/10_lifecycleNetconfSsh/devicemanagerlifecycle_netconf.robot b/csit/tests/sdnr/functional/devicemanager/_templates/10_lifecycleNetconfSsh/devicemanagerlifecycle_netconf.robot
new file mode 100644
index 00000000..084c1556
--- /dev/null
+++ b/csit/tests/sdnr/functional/devicemanager/_templates/10_lifecycleNetconfSsh/devicemanagerlifecycle_netconf.robot
@@ -0,0 +1,401 @@
+*** Settings ***
+Documentation devicemanager lifecycle via netconf only
+... Verify network element connection
+... Actions are triggered via server interface as used by ODLUX
+... Status verifcation is done by dataprovider interface and restconf mdsal
+... to detect asynchron connection status entries
+Default Tags dm-lifecycle netconf ssh
+
+Library ConnectLibrary
+Library SDNCBaseLibrary
+Library SDNCDataProvider
+Library SDNCRestconfLibrary
+Library ConnectApp
+Library FaultManagementApp
+Library FaultManagementAppBackend
+Library Collections
+Library DateTime
+Library utility
+
+Suite Setup global suite setup &{GLOBAL_SUITE_SETUP_CONFIG}
+Suite Teardown global suite teardown
+
+
+*** Variables ***
+${DEVICE_TYPE} DEFINE_IN_INIT
+${DEVICE_NAME} robot-${DEVICE_TYPE}-sim-lifecycle
+${HOST} ${NETWORK_FUNCTIONS}[${DEVICE_TYPE}][NETCONF_HOST]
+${PORT} ${NETWORK_FUNCTIONS}[${DEVICE_TYPE}][BASE_PORT]
+${USERNAME} ${NETWORK_FUNCTIONS}[${DEVICE_TYPE}][USER]
+${PASSWORD} ${NETWORK_FUNCTIONS}[${DEVICE_TYPE}][PASSWORD]
+${HOST_NOK} 192.168.240.240
+${PORT_NOK} ${4711}
+${USERNAME_NOK} wrong-username
+${PASSWORD_NOK} wrong-password
+${CORE_MODEL} Unsupported
+${UNDEFINED} undefined
+${DEVICE_TO_DELETE} devices
+
+# set log level https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html
+
+
+*** Test Cases ***
+
+Add network element connection
+ [Documentation] Add network-function to device manager
+ ... verify correct detection of specific device manager
+ ... verify correct entries in connection log
+ [Tags] smoke
+
+ Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-ok
+ Sleep 1s reason=insert time gap in log files
+ ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
+ Sleep 1s reason=insert time delay to account for time differences of container and host
+ Log To Console ${start_time}
+ ConnectApp.Add network element connection ${DEVICE_NAME_TEST} ${True} ${HOST} ${PORT} ${USERNAME} ${PASSWORD}
+ Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} Connected
+ SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} connected time_in_sec=${10}
+ Run Keyword And Continue On Failure ConnectApp.should_be_equal_network_element_connection_details ${DEVICE_NAME_TEST}
+ ... node-id=${DEVICE_NAME_TEST}
+ ... is-required=${True}
+ ... status=Connected
+ ... host=${HOST}
+ ... port=${PORT}
+ ... core-model-capability=${CORE_MODEL}
+ ... device-type=${DEVICE_TYPE_GUI}
+ # Check connection status log entries
+ Sleep 1s reason=insert time gap to avoid time constrains
+ ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list}
+ ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
+ Log Dictionary ${conn_status_list_stats}
+ Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Connected 1 msg=wrong connection log entries for Connected state
+ Dictionary Should Contain Item ${conn_status_list_stats} Mounted 1 msg=wrong connection log entries for Mounted state
+
+Retrieve yang capabilities from network element
+ [Documentation] get yang capabilities from network element and compare with reference file
+ [Tags] smoke netconf yang
+
+ Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-ok
+ ${yang_capabilities} = get_yang_capabilities_as_list node_id=${DEVICE_NAME_TEST}
+ Log ${yang_capabilities}
+ ${is_yang_correct} = compare_yang_capability_list_to_file ${yang_capabilities} ${YANG_CAPABILITIES_FILE}
+ Should be True ${is_yang_correct} msg=Yang capabilities are different from expected list
+
+Remove network element connection
+ [Documentation] remove network element connection from device manager
+ ... verify if all ressources are removed
+ ... verify correct entries in connection log
+ [Tags] smoke
+
+ Sleep 1s reason=insert time gap in log files
+ ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
+ Sleep 1s reason=insert time delay to account for time differences of container and host
+ Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-ok
+ ConnectApp.Remove network element connection ${DEVICE_NAME_TEST}
+ Run Keyword And Continue On Failure ConnectApp.Should be equal connection status until time ${DEVICE_NAME_TEST} not existing
+ SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} not existing time_in_sec=${10}
+
+ # Check connection status log entries
+ Sleep 6s reason=insert time gap to avoid time constrains
+ ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list}
+ ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ Log ${connection_status_list_debug}
+ ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list_debug_backend}
+ ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
+ Log Dictionary ${conn_status_list_stats}
+ Dictionary Should Contain Item ${conn_status_list_stats} Unmounted 1 msg=wrong connection log entries for Unmounted state
+
+Add network element connection wrong port
+ [Tags] prio2
+ Sleep 1s reason=insert time gap in log files
+ ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
+ Sleep 1s reason=insert time delay to account for time differences of container and host
+ Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-port-nok
+ ConnectApp.Add network element connection ${DEVICE_NAME_TEST} ${True} ${HOST} ${PORT_NOK} ${USERNAME} ${PASSWORD}
+ Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} Connecting
+ SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} connecting time_in_sec=${10}
+ Run Keyword And Continue On Failure ConnectApp.should_be_equal_network_element_connection_details ${DEVICE_NAME_TEST}
+ ... node-id=${DEVICE_NAME_TEST}
+ ... is-required=${True}
+ ... status=Connecting
+ ... host=${HOST}
+ ... port=${PORT_NOK}
+ # Check connection status log entries
+ Sleep 1s reason=insert time gap to avoid time constrains
+ ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list}
+ ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
+ Log Dictionary ${conn_status_list_stats}
+ ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ Log ${connection_status_list_debug}
+ ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list_debug_backend}
+ Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Mounted 1 msg=wrong connection log entries for Mounted state
+ Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Connected
+ Dictionary Should Not Contain Key ${conn_status_list_stats} Unmounted
+
+Remove network element connection wrong port
+ [Tags] prio2
+ Sleep 1s reason=insert time gap in log files
+ ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
+ Sleep 1s reason=insert time delay to account for time differences of container and host
+ Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-port-nok
+ ConnectApp.Remove network element connection ${DEVICE_NAME_TEST}
+ Run Keyword And Continue On Failure ConnectApp.Should be equal connection status until time ${DEVICE_NAME_TEST} not existing
+ SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} not existing time_in_sec=${10}
+
+ # Check connection status log entries
+ Sleep 1s reason=insert time gap to avoid time constrains
+ ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list}
+ ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ Log ${connection_status_list_debug}
+ ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list_debug_backend}
+ ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
+ Log Dictionary ${conn_status_list_stats}
+ Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Unmounted 1 msg=wrong connection log entries for Unmounted state
+ Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Connected
+ Dictionary Should Not Contain Key ${conn_status_list_stats} Mounted
+
+Add network element connection wrong ip
+ [Tags] prio2
+ Sleep 1s reason=insert time gap in log files
+ ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
+ Sleep 1s reason=insert time delay to account for time differences of container and host
+ Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-ip-nok
+ ConnectApp.Add network element connection ${DEVICE_NAME_TEST} ${True} ${HOST_NOK} ${PORT} ${USERNAME} ${PASSWORD}
+ Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} Connecting
+ Run Keyword And Continue On Failure SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} connecting time_in_sec=${10}
+ Run Keyword And Continue On Failure ConnectApp.should_be_equal_network_element_connection_details ${DEVICE_NAME_TEST}
+ ... node-id=${DEVICE_NAME_TEST}
+ ... is-required=${True}
+ ... status=Connecting
+ ... host=${HOST_NOK}
+ ... port=${PORT}
+ # Check connection status log entries
+ Sleep 1s reason=insert time gap to avoid time constrains
+ ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list}
+ ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ Log ${connection_status_list_debug}
+ ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list_debug_backend}
+ ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
+ Log Dictionary ${conn_status_list_stats}
+ Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Mounted 1 msg=wrong connection log entries for Mounted state
+ Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Connected
+ Dictionary Should Not Contain Key ${conn_status_list_stats} Unmounted
+
+Remove network element connection wrong ip
+ [Tags] prio2
+ Sleep 1s reason=insert time gap in log files
+ ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
+ Sleep 1s reason=insert time delay to account for time differences of container and host
+ Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-ip-nok
+ ConnectApp.Remove network element connection ${DEVICE_NAME_TEST}
+ Run Keyword And Continue On Failure ConnectApp.Should be equal connection status until time ${DEVICE_NAME_TEST} not existing
+ Run Keyword And Continue On Failure SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} not existing time_in_sec=${10}
+
+ # Check connection status log entries
+ Sleep 1s reason=insert time gap to avoid time constrains
+ ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list}
+ ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ Log ${connection_status_list_debug}
+ ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list_debug_backend}
+ ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
+ Log Dictionary ${conn_status_list_stats}
+ Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Unmounted 1 msg=wrong connection log entries for Unmounted state
+ Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Connected
+ Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Mounted
+
+Add network element connection and change is required to false
+ [Tags] prio2
+ Sleep 1s reason=insert time gap in log files
+ ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
+ Sleep 1s reason=insert time delay to account for time differences of container and host
+ Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-required
+ ConnectApp.Add network element connection ${DEVICE_NAME_TEST} ${True} ${HOST} ${PORT} ${USERNAME} ${PASSWORD}
+ Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} Connected
+ SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} connected time_in_sec=${10}
+ Run Keyword And Continue On Failure ConnectApp.should_be_equal_network_element_connection_details ${DEVICE_NAME_TEST}
+ ... node-id=${DEVICE_NAME_TEST}
+ ... is-required=${True}
+
+ ConnectApp.edit network element connection ${DEVICE_NAME_TEST} ${False}
+ Run Keyword And Continue On Failure ConnectApp.should_be_equal_network_element_connection_details ${DEVICE_NAME_TEST}
+ ... node-id=${DEVICE_NAME_TEST}
+ ... is-required=${False}
+ # Check connection status log entries
+ Sleep 1s reason=insert time gap to avoid time constrains
+ ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list}
+ ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ Log ${connection_status_list_debug}
+ ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list_debug_backend}
+ ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
+ Log Dictionary ${conn_status_list_stats}
+ Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Connected 1 msg=wrong connection log entries for Connected state
+ Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Mounted 1 msg=wrong connection log entries for Mounted state
+
+Edit network element connection: is required to true
+ [Tags] prio2
+ Sleep 1s reason=insert time gap in log files
+ ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
+ Sleep 1s reason=insert time delay to account for time differences of container and host
+ Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-required
+ ConnectApp.edit network element connection ${DEVICE_NAME_TEST} ${True}
+ Run Keyword And Continue On Failure ConnectApp.should_be_equal_network_element_connection_details ${DEVICE_NAME_TEST}
+ ... node-id=${DEVICE_NAME_TEST}
+ ... is-required=${True}
+ # Check connection status log entries
+ Sleep 1s reason=insert time gap to avoid time constrains
+ ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list}
+ ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ Log ${connection_status_list_debug}
+ ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list_debug_backend}
+ ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
+ Log Dictionary ${conn_status_list_stats}
+ Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Connected
+ Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Mounted
+ Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Unmounted
+ #Dictionary Should Not Contain Key ${conn_status_list_stats} Connecting
+
+Unmount network element
+ [Tags] prio2
+ Sleep 1s reason=insert time gap in log files
+ ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
+ Sleep 1s reason=insert time delay to account for time differences of container and host
+ Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-required
+ ConnectApp.unmount_network_element ${DEVICE_NAME_TEST}
+ Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} Disconnected
+ Run Keyword And Continue On Failure SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} not existing time_in_sec=${10}
+
+ # Check connection status log entries
+ Sleep 1s reason=insert time gap to avoid time constrains
+ ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list}
+ ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ Log ${connection_status_list_debug}
+ ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list_debug_backend}
+ ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
+ Log Dictionary ${conn_status_list_stats}
+ Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Unmounted 1 msg=wrong connection log entries for Unmounted state
+ Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Connected
+ Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Mounted
+ #Dictionary Should Not Contain Key ${conn_status_list_stats} Connecting
+
+
+Mount network element
+ [Tags] prio2
+ Sleep 1s reason=insert time gap in log files
+ ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
+ Sleep 1s reason=insert time delay to account for time differences of container and host
+ Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-required
+ ConnectApp.mount_network_element ${DEVICE_NAME_TEST}
+ Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} Connected
+ Run Keyword And Continue On Failure SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} connected time_in_sec=${10}
+
+ # Check connection status log entries
+ Sleep 1s reason=insert time gap to avoid time constrains
+ ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list}
+ ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ Log ${connection_status_list_debug}
+ ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list_debug_backend}
+ ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
+ Log Dictionary ${conn_status_list_stats}
+ Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Connected 1 msg=wrong connection log entries for Connected state
+ Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Mounted 1 msg=wrong connection log entries for Mounted state
+
+Remove network element connection
+ [Tags] prio2
+ Sleep 1s reason=insert time gap in log files
+ ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
+ Sleep 1s reason=insert time delay to account for time differences of container and host
+ Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-required
+ ConnectApp.remove network element connection ${DEVICE_NAME_TEST}
+ Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} not existing
+ Run Keyword And Continue On Failure SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} not existing time_in_sec=${10}
+
+ # Check connection status log entries
+ Sleep 1s reason=insert time gap to avoid time constrains
+ ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list}
+ ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ Log ${connection_status_list_debug}
+ ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list_debug_backend}
+ ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
+ Log Dictionary ${conn_status_list_stats}
+ Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Unmounted 1 msg=wrong connection log entries for Unmounted state
+ Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Connected
+ Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Mounted
+ #Dictionary Should Not Contain Key ${conn_status_list_stats} Connecting
+
+Remove unmounted network element connection
+ [Tags] prio2
+ Sleep 1s reason=insert time gap in log files
+ ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
+ Sleep 1s reason=insert time delay to account for time differences of container and host
+ Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-required-true
+ ConnectApp.Add network element connection ${DEVICE_NAME_TEST} ${True} ${HOST} ${PORT} ${USERNAME} ${PASSWORD}
+ Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} Connected
+ Run Keyword And Continue On Failure SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} connected time_in_sec=${10}
+
+ ConnectApp.unmount_network_element ${DEVICE_NAME_TEST}
+ Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} Disconnected
+ Run Keyword And Continue On Failure SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} not existing time_in_sec=${10}
+
+ ConnectApp.remove_network_element_connection ${DEVICE_NAME_TEST}
+ Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} not existing
+
+ # Check connection status log entries
+ Sleep 1s reason=insert time gap to avoid time constrains
+ ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list}
+ ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ Log ${connection_status_list_debug}
+ ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
+ ... timestamp=>=${start_time}
+ Log ${connection_status_list_debug_backend}
+ ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
+ Log Dictionary ${conn_status_list_stats}
+ Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Mounted 1 msg=wrong connection log entries for Mounted state
+ Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Connected 1 msg=wrong connection log entries for Connected state
+ Run Keyword And Continue On Failure Dictionary Should Contain Key ${conn_status_list_stats} Unmounted msg=no connection log entries for Unmounted state
+ ConnectApp.Remove Network Element Connection ${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['NAME']}
+
+