2 Documentation devicemanager lifecycle via netconf only
3 ... Verify network element connection
4 ... Actions are triggered via server interface as used by ODLUX
5 ... Status verifcation is done by dataprovider interface and restconf mdsal
6 ... to detect asynchron connection status entries
7 Default Tags dm-lifecycle netconf ssh
10 Library SDNCBaseLibrary
11 Library SDNCDataProvider
12 Library SDNCRestconfLibrary
14 Library FaultManagementApp
15 Library FaultManagementAppBackend
20 Suite Setup global suite setup &{GLOBAL_SUITE_SETUP_CONFIG}
21 Suite Teardown global suite teardown
26 ${DEVICE_TYPE} DEFINE_IN_INIT
27 ${DEVICE_NAME} robot-${DEVICE_TYPE}-sim-lifecycle
28 ${HOST} ${NETWORK_FUNCTIONS}[${DEVICE_TYPE}][NETCONF_HOST]
29 ${PORT} ${NETWORK_FUNCTIONS}[${DEVICE_TYPE}][BASE_PORT]
30 ${USERNAME} ${NETWORK_FUNCTIONS}[${DEVICE_TYPE}][USER]
31 ${PASSWORD} ${NETWORK_FUNCTIONS}[${DEVICE_TYPE}][PASSWORD]
32 ${HOST_NOK} 192.168.240.240
34 ${USERNAME_NOK} wrong-username
35 ${PASSWORD_NOK} wrong-password
36 ${CORE_MODEL} Unsupported
37 ${UNDEFINED} undefined
38 ${DEVICE_TO_DELETE} devices
40 # set log level https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html
45 Add network element connection
46 [Documentation] Add network-function to device manager
47 ... verify correct detection of specific device manager
48 ... verify correct entries in connection log
51 Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-ok
52 Sleep 1s reason=insert time gap in log files
53 ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
54 Sleep 1s reason=insert time delay to account for time differences of container and host
55 Log To Console ${start_time}
56 ConnectApp.Add network element connection device_name=${DEVICE_NAME_TEST} is_required=${True}
57 ... host=${HOST} port=${PORT} username=${USERNAME} password=${PASSWORD}
58 Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} Connected
59 SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} connected time_in_sec=${10}
60 Run Keyword And Continue On Failure ConnectApp.should_be_equal_network_element_connection_details ${DEVICE_NAME_TEST}
61 ... node-id=${DEVICE_NAME_TEST}
62 ... is-required=${True}
66 ... core-model-capability=${CORE_MODEL}
67 ... device-type=${DEVICE_TYPE_GUI}
68 # Check connection status log entries
69 Sleep 1s reason=insert time gap to avoid time constrains
70 ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
71 ... timestamp=>=${start_time}
72 Log ${connection_status_list}
73 ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
74 Log Dictionary ${conn_status_list_stats}
75 Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Connected 1 msg=wrong connection log entries for Connected state
76 Dictionary Should Contain Item ${conn_status_list_stats} Mounted 1 msg=wrong connection log entries for Mounted state
78 Retrieve yang capabilities from network element
79 [Documentation] get yang capabilities from network element and compare with reference file
80 [Tags] smoke netconf yang
82 Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-ok
83 ${yang_capabilities} = get_yang_capabilities_as_list node_id=${DEVICE_NAME_TEST}
84 Log ${yang_capabilities}
85 ${is_yang_correct} = compare_yang_capability_list_to_file ${yang_capabilities} ${YANG_CAPABILITIES_FILE}
86 Should be True ${is_yang_correct} msg=Yang capabilities are different from expected list
88 Remove network element connection
89 [Documentation] remove network element connection from device manager
90 ... verify if all ressources are removed
91 ... verify correct entries in connection log
94 Sleep 1s reason=insert time gap in log files
95 ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
96 Sleep 1s reason=insert time delay to account for time differences of container and host
97 Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-ok
98 ConnectApp.Remove network element connection ${DEVICE_NAME_TEST}
99 Run Keyword And Continue On Failure ConnectApp.Should be equal connection status until time ${DEVICE_NAME_TEST} not existing
100 SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} not existing time_in_sec=${10}
102 # Check connection status log entries
103 Sleep 6s reason=insert time gap to avoid time constrains
104 ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
105 ... timestamp=>=${start_time}
106 Log ${connection_status_list}
107 ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
108 Log ${connection_status_list_debug}
109 ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
110 ... timestamp=>=${start_time}
111 Log ${connection_status_list_debug_backend}
112 ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
113 Log Dictionary ${conn_status_list_stats}
114 Dictionary Should Contain Item ${conn_status_list_stats} Unmounted 1 msg=wrong connection log entries for Unmounted state
116 Add network element connection wrong port
118 Sleep 1s reason=insert time gap in log files
119 ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
120 Sleep 1s reason=insert time delay to account for time differences of container and host
121 Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-port-nok
122 ConnectApp.Add network element connection device_name=${DEVICE_NAME_TEST} is_required=${True} host=${HOST}
123 ... port=${PORT_NOK} username=${USERNAME} password=${PASSWORD}
124 Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} Connecting
125 SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} connecting time_in_sec=${10}
126 Run Keyword And Continue On Failure ConnectApp.should_be_equal_network_element_connection_details ${DEVICE_NAME_TEST}
127 ... node-id=${DEVICE_NAME_TEST}
128 ... is-required=${True}
129 ... status=Connecting
132 # Check connection status log entries
133 Sleep 1s reason=insert time gap to avoid time constrains
134 ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
135 ... timestamp=>=${start_time}
136 Log ${connection_status_list}
137 ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
138 Log Dictionary ${conn_status_list_stats}
139 ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
140 Log ${connection_status_list_debug}
141 ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
142 ... timestamp=>=${start_time}
143 Log ${connection_status_list_debug_backend}
144 Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Mounted 1 msg=wrong connection log entries for Mounted state
145 Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Connected
146 Dictionary Should Not Contain Key ${conn_status_list_stats} Unmounted
148 Remove network element connection wrong port
150 Sleep 1s reason=insert time gap in log files
151 ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
152 Sleep 1s reason=insert time delay to account for time differences of container and host
153 Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-port-nok
154 ConnectApp.Remove network element connection ${DEVICE_NAME_TEST}
155 Run Keyword And Continue On Failure ConnectApp.Should be equal connection status until time ${DEVICE_NAME_TEST} not existing
156 SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} not existing time_in_sec=${10}
158 # Check connection status log entries
159 Sleep 1s reason=insert time gap to avoid time constrains
160 ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
161 ... timestamp=>=${start_time}
162 Log ${connection_status_list}
163 ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
164 Log ${connection_status_list_debug}
165 ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
166 ... timestamp=>=${start_time}
167 Log ${connection_status_list_debug_backend}
168 ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
169 Log Dictionary ${conn_status_list_stats}
170 Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Unmounted 1 msg=wrong connection log entries for Unmounted state
171 Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Connected
172 Dictionary Should Not Contain Key ${conn_status_list_stats} Mounted
174 Add network element connection wrong ip
176 Sleep 1s reason=insert time gap in log files
177 ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
178 Sleep 1s reason=insert time delay to account for time differences of container and host
179 Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-ip-nok
180 ConnectApp.Add network element connection device_name=${DEVICE_NAME_TEST} is_required=${True} host=${HOST_NOK}
181 ... port=${PORT} username=${USERNAME} password=${PASSWORD}
182 Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} Connecting
183 Run Keyword And Continue On Failure SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} connecting time_in_sec=${10}
184 Run Keyword And Continue On Failure ConnectApp.should_be_equal_network_element_connection_details ${DEVICE_NAME_TEST}
185 ... node-id=${DEVICE_NAME_TEST}
186 ... is-required=${True}
187 ... status=Connecting
190 # Check connection status log entries
191 Sleep 1s reason=insert time gap to avoid time constrains
192 ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
193 ... timestamp=>=${start_time}
194 Log ${connection_status_list}
195 ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
196 Log ${connection_status_list_debug}
197 ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
198 ... timestamp=>=${start_time}
199 Log ${connection_status_list_debug_backend}
200 ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
201 Log Dictionary ${conn_status_list_stats}
202 Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Mounted 1 msg=wrong connection log entries for Mounted state
203 Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Connected
204 Dictionary Should Not Contain Key ${conn_status_list_stats} Unmounted
206 Remove network element connection wrong ip
208 Sleep 1s reason=insert time gap in log files
209 ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
210 Sleep 1s reason=insert time delay to account for time differences of container and host
211 Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-ip-nok
212 ConnectApp.Remove network element connection ${DEVICE_NAME_TEST}
213 Run Keyword And Continue On Failure ConnectApp.Should be equal connection status until time ${DEVICE_NAME_TEST} not existing
214 Run Keyword And Continue On Failure SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} not existing time_in_sec=${10}
216 # Check connection status log entries
217 Sleep 1s reason=insert time gap to avoid time constrains
218 ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
219 ... timestamp=>=${start_time}
220 Log ${connection_status_list}
221 ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
222 Log ${connection_status_list_debug}
223 ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
224 ... timestamp=>=${start_time}
225 Log ${connection_status_list_debug_backend}
226 ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
227 Log Dictionary ${conn_status_list_stats}
228 Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Unmounted 1 msg=wrong connection log entries for Unmounted state
229 Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Connected
230 Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Mounted
232 Add network element connection and change is required to false
234 Sleep 1s reason=insert time gap in log files
235 ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
236 Sleep 1s reason=insert time delay to account for time differences of container and host
237 Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-required
238 ConnectApp.Add network element connection device_name=${DEVICE_NAME_TEST} is_required=${True} host=${HOST}
239 ... port=${PORT} username=${USERNAME} password=${PASSWORD}
240 Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} Connected
241 SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} connected time_in_sec=${10}
242 Run Keyword And Continue On Failure ConnectApp.should_be_equal_network_element_connection_details ${DEVICE_NAME_TEST}
243 ... node-id=${DEVICE_NAME_TEST}
244 ... is-required=${True}
246 ConnectApp.edit network element connection ${DEVICE_NAME_TEST} ${False}
247 Run Keyword And Continue On Failure ConnectApp.should_be_equal_network_element_connection_details ${DEVICE_NAME_TEST}
248 ... node-id=${DEVICE_NAME_TEST}
249 ... is-required=${False}
250 # Check connection status log entries
251 Sleep 1s reason=insert time gap to avoid time constrains
252 ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
253 ... timestamp=>=${start_time}
254 Log ${connection_status_list}
255 ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
256 Log ${connection_status_list_debug}
257 ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
258 ... timestamp=>=${start_time}
259 Log ${connection_status_list_debug_backend}
260 ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
261 Log Dictionary ${conn_status_list_stats}
262 Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Connected 1 msg=wrong connection log entries for Connected state
263 Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Mounted 1 msg=wrong connection log entries for Mounted state
265 Edit network element connection: is required to true
267 Sleep 1s reason=insert time gap in log files
268 ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
269 Sleep 1s reason=insert time delay to account for time differences of container and host
270 Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-required
271 ConnectApp.edit network element connection ${DEVICE_NAME_TEST} ${True}
272 Run Keyword And Continue On Failure ConnectApp.should_be_equal_network_element_connection_details ${DEVICE_NAME_TEST}
273 ... node-id=${DEVICE_NAME_TEST}
274 ... is-required=${True}
275 # Check connection status log entries
276 Sleep 1s reason=insert time gap to avoid time constrains
277 ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
278 ... timestamp=>=${start_time}
279 Log ${connection_status_list}
280 ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
281 Log ${connection_status_list_debug}
282 ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
283 ... timestamp=>=${start_time}
284 Log ${connection_status_list_debug_backend}
285 ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
286 Log Dictionary ${conn_status_list_stats}
287 Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Connected
288 Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Mounted
289 Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Unmounted
290 #Dictionary Should Not Contain Key ${conn_status_list_stats} Connecting
292 Unmount network element
294 Sleep 1s reason=insert time gap in log files
295 ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
296 Sleep 1s reason=insert time delay to account for time differences of container and host
297 Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-required
298 ConnectApp.unmount_network_element ${DEVICE_NAME_TEST}
299 Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} Disconnected
300 Run Keyword And Continue On Failure SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} not existing time_in_sec=${10}
302 # Check connection status log entries
303 Sleep 1s reason=insert time gap to avoid time constrains
304 ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
305 ... timestamp=>=${start_time}
306 Log ${connection_status_list}
307 ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
308 Log ${connection_status_list_debug}
309 ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
310 ... timestamp=>=${start_time}
311 Log ${connection_status_list_debug_backend}
312 ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
313 Log Dictionary ${conn_status_list_stats}
314 Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Unmounted 1 msg=wrong connection log entries for Unmounted state
315 Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Connected
316 Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Mounted
317 #Dictionary Should Not Contain Key ${conn_status_list_stats} Connecting
320 Mount network element
322 Sleep 1s reason=insert time gap in log files
323 ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
324 Sleep 1s reason=insert time delay to account for time differences of container and host
325 Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-required
326 ConnectApp.mount_network_element ${DEVICE_NAME_TEST}
327 Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} Connected
328 Run Keyword And Continue On Failure SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} connected time_in_sec=${10}
330 # Check connection status log entries
331 Sleep 1s reason=insert time gap to avoid time constrains
332 ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
333 ... timestamp=>=${start_time}
334 Log ${connection_status_list}
335 ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
336 Log ${connection_status_list_debug}
337 ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
338 ... timestamp=>=${start_time}
339 Log ${connection_status_list_debug_backend}
340 ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
341 Log Dictionary ${conn_status_list_stats}
342 Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Connected 1 msg=wrong connection log entries for Connected state
343 Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Mounted 1 msg=wrong connection log entries for Mounted state
345 Mount Nts Network Function with VALID TLS Key ID
346 IF 'DOCKER_TLS_PORT' in ${NETWORK_FUNCTIONS['${DEVICE_TYPE}']}
347 Run Keyword And Continue On Failure Add Network Element Connection device_name=${DEVICE_NAME}_sim_key_0
348 ... is_required=${True}
349 ... host=${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['IP']}
350 ... port=${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['DOCKER_TLS_PORT']}
351 ... username=${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['USER']}
352 ... tls_key=ODL_private_key_0
353 ... check_connection_status=Connected
355 ConnectApp.remove_network_element_connection ${DEVICE_NAME}_sim_key_0
358 Remove network element connection
360 Sleep 1s reason=insert time gap in log files
361 ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
362 Sleep 1s reason=insert time delay to account for time differences of container and host
363 Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-required
364 ConnectApp.remove network element connection ${DEVICE_NAME_TEST}
365 Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} not existing
366 Run Keyword And Continue On Failure SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} not existing time_in_sec=${10}
368 # Check connection status log entries
369 Sleep 5s reason=insert time gap to avoid time constrains
370 ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
371 ... timestamp=>=${start_time}
372 Log ${connection_status_list}
373 ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
374 Log ${connection_status_list_debug}
375 ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
376 ... timestamp=>=${start_time}
377 Log ${connection_status_list_debug_backend}
378 ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
379 Log Dictionary ${conn_status_list_stats}
380 Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Unmounted 1 msg=wrong connection log entries for Unmounted state
381 Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Connected
382 Run Keyword And Continue On Failure Dictionary Should Not Contain Key ${conn_status_list_stats} Mounted
383 #Dictionary Should Not Contain Key ${conn_status_list_stats} Connecting
385 Remove unmounted network element connection
387 Sleep 1s reason=insert time gap in log files
388 ${start_time} = Get Current Date time_zone=UTC result_format=%Y-%m-%dT%H:%M:%S.%f
389 Sleep 1s reason=insert time delay to account for time differences of container and host
390 Set Test Variable ${DEVICE_NAME_TEST} ${DEVICE_NAME}-required-true
391 ConnectApp.Add network element connection device_name=${DEVICE_NAME_TEST} is_required=${True} host=${HOST}
392 ... port=${PORT} username=${USERNAME} password=${PASSWORD}
393 Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} Connected
394 Run Keyword And Continue On Failure SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} connected time_in_sec=${10}
396 ConnectApp.unmount_network_element ${DEVICE_NAME_TEST}
397 Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} Disconnected
398 Run Keyword And Continue On Failure SDNCRestconfLibrary.should_be_equal_connection_status_until_time ${DEVICE_NAME_TEST} not existing time_in_sec=${10}
400 ConnectApp.remove_network_element_connection ${DEVICE_NAME_TEST}
401 Run Keyword And Continue On Failure ConnectApp.Should Be Equal connection status until time ${DEVICE_NAME_TEST} not existing
403 # Check connection status log entries
404 Sleep 1s reason=insert time gap to avoid time constrains
405 ${connection_status_list} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
406 ... timestamp=>=${start_time}
407 Log ${connection_status_list}
408 ${connection_status_list_debug} = FaultManagementApp.get_connection_log_list node-id=${DEVICE_NAME_TEST}
409 Log ${connection_status_list_debug}
410 ${connection_status_list_debug_backend} = FaultManagementAppBackend.get_connection_log_list node-id=${DEVICE_NAME_TEST}
411 ... timestamp=>=${start_time}
412 Log ${connection_status_list_debug_backend}
413 ${conn_status_list_stats} = get_counts_from_list ${connection_status_list} status
414 Log Dictionary ${conn_status_list_stats}
415 Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Mounted 1 msg=wrong connection log entries for Mounted state
416 Run Keyword And Continue On Failure Dictionary Should Contain Item ${conn_status_list_stats} Connected 1 msg=wrong connection log entries for Connected state
417 Run Keyword And Continue On Failure Dictionary Should Contain Key ${conn_status_list_stats} Unmounted msg=no connection log entries for Unmounted state
418 ConnectApp.Remove Network Element Connection ${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['NAME']}