[SNDC-CSIT] Add tests for device manager
[sdnc/oam.git] / csit / tests / sdnr / functional / devicemanager / _templates / 10_lifecycleNetconfSsh / devicemanagerlifecycle_netconf.robot
1 *** Settings ***
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
8
9 Library  ConnectLibrary
10 Library  SDNCBaseLibrary
11 Library  SDNCDataProvider
12 Library  SDNCRestconfLibrary
13 Library  ConnectApp
14 Library  FaultManagementApp
15 Library  FaultManagementAppBackend
16 Library  Collections
17 Library  DateTime
18 Library  utility
19
20 Suite Setup  global suite setup    &{GLOBAL_SUITE_SETUP_CONFIG}
21 Suite Teardown  global suite teardown
22
23
24 *** Variables ***
25 ${DEVICE_TYPE}  DEFINE_IN_INIT
26 ${DEVICE_NAME}  robot-${DEVICE_TYPE}-sim-lifecycle
27 ${HOST}   ${NETWORK_FUNCTIONS}[${DEVICE_TYPE}][NETCONF_HOST]
28 ${PORT}   ${NETWORK_FUNCTIONS}[${DEVICE_TYPE}][BASE_PORT]
29 ${USERNAME}  ${NETWORK_FUNCTIONS}[${DEVICE_TYPE}][USER]
30 ${PASSWORD}  ${NETWORK_FUNCTIONS}[${DEVICE_TYPE}][PASSWORD]
31 ${HOST_NOK}  192.168.240.240
32 ${PORT_NOK}  ${4711}
33 ${USERNAME_NOK}  wrong-username
34 ${PASSWORD_NOK}  wrong-password
35 ${CORE_MODEL}  Unsupported
36 ${UNDEFINED}  undefined
37 ${DEVICE_TO_DELETE}  devices
38
39 # set log level https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html
40
41
42 *** Test Cases ***
43
44 Add network element connection
45   [Documentation]  Add network-function to device manager 
46   ...              verify correct detection of specific device manager 
47   ...              verify correct entries in connection log
48   [Tags]  smoke
49
50   Set Test Variable  ${DEVICE_NAME_TEST}  ${DEVICE_NAME}-ok
51   Sleep  1s  reason=insert time gap in log files
52   ${start_time} =  Get Current Date  time_zone=UTC  result_format=%Y-%m-%dT%H:%M:%S.%f
53   Sleep  1s  reason=insert time delay to account for time differences of container and host
54   Log To Console  ${start_time}
55   ConnectApp.Add network element connection    ${DEVICE_NAME_TEST}    ${True}    ${HOST}    ${PORT}    ${USERNAME}    ${PASSWORD}
56   Run Keyword And Continue On Failure  ConnectApp.Should Be Equal connection status until time  ${DEVICE_NAME_TEST}  Connected
57   SDNCRestconfLibrary.should_be_equal_connection_status_until_time  ${DEVICE_NAME_TEST}  connected  time_in_sec=${10}
58   Run Keyword And Continue On Failure  ConnectApp.should_be_equal_network_element_connection_details  ${DEVICE_NAME_TEST}
59                                                                      ...  node-id=${DEVICE_NAME_TEST}
60                                                                      ...  is-required=${True}
61                                                                      ...  status=Connected
62                                                                      ...  host=${HOST}
63                                                                      ...  port=${PORT}
64                                                                      ...  core-model-capability=${CORE_MODEL}
65                                                                      ...  device-type=${DEVICE_TYPE_GUI}
66   # Check connection status log entries
67   Sleep  1s  reason=insert time gap to avoid time constrains
68   ${connection_status_list} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
69                                                                      ...   timestamp=>=${start_time}
70   Log  ${connection_status_list}
71   ${conn_status_list_stats} =  get_counts_from_list  ${connection_status_list}  status
72   Log Dictionary  ${conn_status_list_stats}
73   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Connected  1  msg=wrong connection log entries for Connected state
74   Dictionary Should Contain Item  ${conn_status_list_stats}  Mounted  1    msg=wrong connection log entries for Mounted state
75
76 Retrieve yang capabilities from network element
77   [Documentation]  get yang capabilities from network element  and compare with reference file
78   [Tags]  smoke  netconf  yang
79
80   Set Test Variable  ${DEVICE_NAME_TEST}  ${DEVICE_NAME}-ok
81   ${yang_capabilities} =  get_yang_capabilities_as_list  node_id=${DEVICE_NAME_TEST}
82   Log  ${yang_capabilities}
83   ${is_yang_correct} =  compare_yang_capability_list_to_file  ${yang_capabilities}  ${YANG_CAPABILITIES_FILE}
84   Should be True  ${is_yang_correct}  msg=Yang capabilities are different from expected list
85
86 Remove network element connection
87   [Documentation]  remove network element connection from device manager 
88   ...              verify if all ressources are removed 
89   ...              verify correct entries in connection log
90   [Tags]  smoke
91   
92   Sleep  1s  reason=insert time gap in log files
93   ${start_time} =  Get Current Date  time_zone=UTC  result_format=%Y-%m-%dT%H:%M:%S.%f
94   Sleep  1s  reason=insert time delay to account for time differences of container and host
95   Set Test Variable  ${DEVICE_NAME_TEST}  ${DEVICE_NAME}-ok
96   ConnectApp.Remove network element connection  ${DEVICE_NAME_TEST}
97   Run Keyword And Continue On Failure  ConnectApp.Should be equal connection status until time  ${DEVICE_NAME_TEST}  not existing
98   SDNCRestconfLibrary.should_be_equal_connection_status_until_time  ${DEVICE_NAME_TEST}  not existing  time_in_sec=${10}
99
100   # Check connection status log entries
101   Sleep  6s  reason=insert time gap to avoid time constrains
102   ${connection_status_list} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
103                                                                      ...   timestamp=>=${start_time}
104   Log  ${connection_status_list}
105   ${connection_status_list_debug} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
106   Log  ${connection_status_list_debug}
107   ${connection_status_list_debug_backend} =  FaultManagementAppBackend.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
108                                                                      ...  timestamp=>=${start_time}
109   Log  ${connection_status_list_debug_backend}
110   ${conn_status_list_stats} =  get_counts_from_list  ${connection_status_list}  status
111   Log Dictionary  ${conn_status_list_stats}
112   Dictionary Should Contain Item  ${conn_status_list_stats}  Unmounted  1    msg=wrong connection log entries for Unmounted state
113
114 Add network element connection wrong port
115   [Tags]  prio2
116   Sleep  1s  reason=insert time gap in log files
117   ${start_time} =  Get Current Date  time_zone=UTC  result_format=%Y-%m-%dT%H:%M:%S.%f
118   Sleep  1s  reason=insert time delay to account for time differences of container and host
119   Set Test Variable  ${DEVICE_NAME_TEST}  ${DEVICE_NAME}-port-nok
120   ConnectApp.Add network element connection    ${DEVICE_NAME_TEST}    ${True}    ${HOST}    ${PORT_NOK}    ${USERNAME}    ${PASSWORD}
121   Run Keyword And Continue On Failure  ConnectApp.Should Be Equal connection status until time  ${DEVICE_NAME_TEST}  Connecting
122   SDNCRestconfLibrary.should_be_equal_connection_status_until_time  ${DEVICE_NAME_TEST}  connecting  time_in_sec=${10}
123   Run Keyword And Continue On Failure  ConnectApp.should_be_equal_network_element_connection_details  ${DEVICE_NAME_TEST}
124                                                                      ...  node-id=${DEVICE_NAME_TEST}
125                                                                      ...  is-required=${True}
126                                                                      ...  status=Connecting
127                                                                      ...  host=${HOST}
128                                                                      ...  port=${PORT_NOK}
129   # Check connection status log entries
130   Sleep  1s  reason=insert time gap to avoid time constrains
131   ${connection_status_list} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
132                                                                      ...   timestamp=>=${start_time}
133   Log  ${connection_status_list}
134   ${conn_status_list_stats} =  get_counts_from_list  ${connection_status_list}  status
135   Log Dictionary  ${conn_status_list_stats}
136   ${connection_status_list_debug} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
137   Log  ${connection_status_list_debug}
138   ${connection_status_list_debug_backend} =  FaultManagementAppBackend.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
139                                                                      ...  timestamp=>=${start_time}
140   Log  ${connection_status_list_debug_backend}
141   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Mounted  1  msg=wrong connection log entries for Mounted state
142   Run Keyword And Continue On Failure  Dictionary Should Not Contain Key  ${conn_status_list_stats}  Connected
143   Dictionary Should Not Contain Key  ${conn_status_list_stats}  Unmounted
144
145 Remove network element connection wrong port
146   [Tags]  prio2
147   Sleep  1s  reason=insert time gap in log files
148   ${start_time} =  Get Current Date  time_zone=UTC  result_format=%Y-%m-%dT%H:%M:%S.%f
149   Sleep  1s  reason=insert time delay to account for time differences of container and host
150   Set Test Variable  ${DEVICE_NAME_TEST}  ${DEVICE_NAME}-port-nok
151   ConnectApp.Remove network element connection  ${DEVICE_NAME_TEST}
152   Run Keyword And Continue On Failure  ConnectApp.Should be equal connection status until time  ${DEVICE_NAME_TEST}  not existing
153   SDNCRestconfLibrary.should_be_equal_connection_status_until_time  ${DEVICE_NAME_TEST}  not existing  time_in_sec=${10}
154
155   # Check connection status log entries
156   Sleep  1s  reason=insert time gap to avoid time constrains
157   ${connection_status_list} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
158                                                                      ...   timestamp=>=${start_time}
159   Log  ${connection_status_list}
160   ${connection_status_list_debug} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
161   Log  ${connection_status_list_debug}
162   ${connection_status_list_debug_backend} =  FaultManagementAppBackend.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
163                                                                      ...  timestamp=>=${start_time}
164   Log  ${connection_status_list_debug_backend}
165   ${conn_status_list_stats} =  get_counts_from_list  ${connection_status_list}  status
166   Log Dictionary  ${conn_status_list_stats}
167   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Unmounted  1  msg=wrong connection log entries for Unmounted state
168   Run Keyword And Continue On Failure  Dictionary Should Not Contain Key  ${conn_status_list_stats}  Connected
169   Dictionary Should Not Contain Key  ${conn_status_list_stats}  Mounted
170
171 Add network element connection wrong ip
172   [Tags]  prio2
173   Sleep  1s  reason=insert time gap in log files
174   ${start_time} =  Get Current Date  time_zone=UTC  result_format=%Y-%m-%dT%H:%M:%S.%f
175   Sleep  1s  reason=insert time delay to account for time differences of container and host
176   Set Test Variable  ${DEVICE_NAME_TEST}  ${DEVICE_NAME}-ip-nok
177   ConnectApp.Add network element connection    ${DEVICE_NAME_TEST}    ${True}    ${HOST_NOK}    ${PORT}    ${USERNAME}    ${PASSWORD}
178   Run Keyword And Continue On Failure  ConnectApp.Should Be Equal connection status until time  ${DEVICE_NAME_TEST}  Connecting
179   Run Keyword And Continue On Failure  SDNCRestconfLibrary.should_be_equal_connection_status_until_time  ${DEVICE_NAME_TEST}  connecting  time_in_sec=${10}
180   Run Keyword And Continue On Failure  ConnectApp.should_be_equal_network_element_connection_details  ${DEVICE_NAME_TEST}
181                                                                      ...  node-id=${DEVICE_NAME_TEST}
182                                                                      ...  is-required=${True}
183                                                                      ...  status=Connecting
184                                                                      ...  host=${HOST_NOK}
185                                                                      ...  port=${PORT}
186   # Check connection status log entries
187   Sleep  1s  reason=insert time gap to avoid time constrains
188   ${connection_status_list} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
189                                                                      ...   timestamp=>=${start_time}
190   Log  ${connection_status_list}
191   ${connection_status_list_debug} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
192   Log  ${connection_status_list_debug}
193   ${connection_status_list_debug_backend} =  FaultManagementAppBackend.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
194                                                                      ...  timestamp=>=${start_time}
195   Log  ${connection_status_list_debug_backend}
196   ${conn_status_list_stats} =  get_counts_from_list  ${connection_status_list}  status
197   Log Dictionary  ${conn_status_list_stats}
198   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Mounted  1  msg=wrong connection log entries for Mounted state
199   Run Keyword And Continue On Failure  Dictionary Should Not Contain Key  ${conn_status_list_stats}  Connected
200   Dictionary Should Not Contain Key  ${conn_status_list_stats}  Unmounted
201
202 Remove network element connection wrong ip
203   [Tags]  prio2
204   Sleep  1s  reason=insert time gap in log files
205   ${start_time} =  Get Current Date  time_zone=UTC  result_format=%Y-%m-%dT%H:%M:%S.%f
206   Sleep  1s  reason=insert time delay to account for time differences of container and host
207   Set Test Variable  ${DEVICE_NAME_TEST}  ${DEVICE_NAME}-ip-nok
208   ConnectApp.Remove network element connection  ${DEVICE_NAME_TEST}
209   Run Keyword And Continue On Failure  ConnectApp.Should be equal connection status until time  ${DEVICE_NAME_TEST}  not existing
210   Run Keyword And Continue On Failure  SDNCRestconfLibrary.should_be_equal_connection_status_until_time  ${DEVICE_NAME_TEST}  not existing  time_in_sec=${10}
211
212   # Check connection status log entries
213   Sleep  1s  reason=insert time gap to avoid time constrains
214   ${connection_status_list} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
215                                                                      ...   timestamp=>=${start_time}
216   Log  ${connection_status_list}
217   ${connection_status_list_debug} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
218   Log  ${connection_status_list_debug}
219   ${connection_status_list_debug_backend} =  FaultManagementAppBackend.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
220                                                                      ...  timestamp=>=${start_time}
221   Log  ${connection_status_list_debug_backend}
222   ${conn_status_list_stats} =  get_counts_from_list  ${connection_status_list}  status
223   Log Dictionary  ${conn_status_list_stats}
224   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Unmounted  1  msg=wrong connection log entries for Unmounted state
225   Run Keyword And Continue On Failure  Dictionary Should Not Contain Key  ${conn_status_list_stats}  Connected
226   Run Keyword And Continue On Failure  Dictionary Should Not Contain Key  ${conn_status_list_stats}  Mounted
227
228 Add network element connection and change is required to false
229   [Tags]  prio2
230   Sleep  1s  reason=insert time gap in log files
231   ${start_time} =  Get Current Date  time_zone=UTC  result_format=%Y-%m-%dT%H:%M:%S.%f
232   Sleep  1s  reason=insert time delay to account for time differences of container and host
233   Set Test Variable  ${DEVICE_NAME_TEST}  ${DEVICE_NAME}-required
234   ConnectApp.Add network element connection    ${DEVICE_NAME_TEST}    ${True}    ${HOST}    ${PORT}    ${USERNAME}    ${PASSWORD}
235   Run Keyword And Continue On Failure  ConnectApp.Should Be Equal connection status until time  ${DEVICE_NAME_TEST}  Connected
236   SDNCRestconfLibrary.should_be_equal_connection_status_until_time  ${DEVICE_NAME_TEST}  connected  time_in_sec=${10}
237   Run Keyword And Continue On Failure  ConnectApp.should_be_equal_network_element_connection_details  ${DEVICE_NAME_TEST}
238                                                                      ...  node-id=${DEVICE_NAME_TEST}
239                                                                      ...  is-required=${True}
240
241   ConnectApp.edit network element connection    ${DEVICE_NAME_TEST}    ${False}
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=${False}
245   # Check connection status log entries
246   Sleep  1s  reason=insert time gap to avoid time constrains
247   ${connection_status_list} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
248                                                                      ...   timestamp=>=${start_time}
249   Log  ${connection_status_list}
250   ${connection_status_list_debug} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
251   Log  ${connection_status_list_debug}
252   ${connection_status_list_debug_backend} =  FaultManagementAppBackend.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
253                                                                      ...  timestamp=>=${start_time}
254   Log  ${connection_status_list_debug_backend}
255   ${conn_status_list_stats} =  get_counts_from_list  ${connection_status_list}  status
256   Log Dictionary  ${conn_status_list_stats}
257   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Connected  1  msg=wrong connection log entries for Connected state
258   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Mounted  1    msg=wrong connection log entries for Mounted state
259
260 Edit network element connection: is required to true
261   [Tags]  prio2
262   Sleep  1s  reason=insert time gap in log files
263   ${start_time} =  Get Current Date  time_zone=UTC  result_format=%Y-%m-%dT%H:%M:%S.%f
264   Sleep  1s  reason=insert time delay to account for time differences of container and host
265   Set Test Variable  ${DEVICE_NAME_TEST}  ${DEVICE_NAME}-required
266   ConnectApp.edit network element connection    ${DEVICE_NAME_TEST}    ${True}
267   Run Keyword And Continue On Failure  ConnectApp.should_be_equal_network_element_connection_details  ${DEVICE_NAME_TEST}
268                                                                      ...  node-id=${DEVICE_NAME_TEST}
269                                                                      ...  is-required=${True}
270   # Check connection status log entries
271   Sleep  1s  reason=insert time gap to avoid time constrains
272   ${connection_status_list} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
273                                                                      ...   timestamp=>=${start_time}
274   Log  ${connection_status_list}
275   ${connection_status_list_debug} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
276   Log  ${connection_status_list_debug}
277   ${connection_status_list_debug_backend} =  FaultManagementAppBackend.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
278                                                                      ...  timestamp=>=${start_time}
279   Log  ${connection_status_list_debug_backend}
280   ${conn_status_list_stats} =  get_counts_from_list  ${connection_status_list}  status
281   Log Dictionary  ${conn_status_list_stats}
282   Run Keyword And Continue On Failure  Dictionary Should Not Contain Key  ${conn_status_list_stats}  Connected
283   Run Keyword And Continue On Failure  Dictionary Should Not Contain Key  ${conn_status_list_stats}  Mounted
284   Run Keyword And Continue On Failure  Dictionary Should Not Contain Key  ${conn_status_list_stats}  Unmounted
285   #Dictionary Should Not Contain Key  ${conn_status_list_stats}  Connecting
286
287 Unmount network element
288   [Tags]  prio2
289   Sleep  1s  reason=insert time gap in log files
290   ${start_time} =  Get Current Date  time_zone=UTC  result_format=%Y-%m-%dT%H:%M:%S.%f
291   Sleep  1s  reason=insert time delay to account for time differences of container and host
292   Set Test Variable  ${DEVICE_NAME_TEST}  ${DEVICE_NAME}-required
293   ConnectApp.unmount_network_element  ${DEVICE_NAME_TEST}
294   Run Keyword And Continue On Failure  ConnectApp.Should Be Equal connection status until time  ${DEVICE_NAME_TEST}  Disconnected
295   Run Keyword And Continue On Failure  SDNCRestconfLibrary.should_be_equal_connection_status_until_time  ${DEVICE_NAME_TEST}  not existing  time_in_sec=${10}
296
297   # Check connection status log entries
298   Sleep  1s  reason=insert time gap to avoid time constrains
299   ${connection_status_list} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
300                                                                      ...   timestamp=>=${start_time}
301   Log  ${connection_status_list}
302   ${connection_status_list_debug} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
303   Log  ${connection_status_list_debug}
304   ${connection_status_list_debug_backend} =  FaultManagementAppBackend.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
305                                                                      ...  timestamp=>=${start_time}
306   Log  ${connection_status_list_debug_backend}
307   ${conn_status_list_stats} =  get_counts_from_list  ${connection_status_list}  status
308   Log Dictionary  ${conn_status_list_stats}
309   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Unmounted  1    msg=wrong connection log entries for Unmounted state
310   Run Keyword And Continue On Failure  Dictionary Should Not Contain Key  ${conn_status_list_stats}  Connected
311   Run Keyword And Continue On Failure  Dictionary Should Not Contain Key  ${conn_status_list_stats}  Mounted
312   #Dictionary Should Not Contain Key  ${conn_status_list_stats}  Connecting
313
314
315 Mount network element
316   [Tags]  prio2
317   Sleep  1s  reason=insert time gap in log files
318   ${start_time} =  Get Current Date  time_zone=UTC  result_format=%Y-%m-%dT%H:%M:%S.%f
319   Sleep  1s  reason=insert time delay to account for time differences of container and host
320   Set Test Variable  ${DEVICE_NAME_TEST}  ${DEVICE_NAME}-required
321   ConnectApp.mount_network_element  ${DEVICE_NAME_TEST}
322   Run Keyword And Continue On Failure  ConnectApp.Should Be Equal connection status until time  ${DEVICE_NAME_TEST}  Connected
323   Run Keyword And Continue On Failure  SDNCRestconfLibrary.should_be_equal_connection_status_until_time  ${DEVICE_NAME_TEST}  connected  time_in_sec=${10}
324
325   # Check connection status log entries
326   Sleep  1s  reason=insert time gap to avoid time constrains
327   ${connection_status_list} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
328                                                                      ...   timestamp=>=${start_time}
329   Log  ${connection_status_list}
330   ${connection_status_list_debug} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
331   Log  ${connection_status_list_debug}
332   ${connection_status_list_debug_backend} =  FaultManagementAppBackend.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
333                                                                      ...  timestamp=>=${start_time}
334   Log  ${connection_status_list_debug_backend}
335   ${conn_status_list_stats} =  get_counts_from_list  ${connection_status_list}  status
336   Log Dictionary  ${conn_status_list_stats}
337   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Connected  1  msg=wrong connection log entries for Connected state
338   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Mounted  1    msg=wrong connection log entries for Mounted state
339
340 Remove network element connection
341   [Tags]  prio2
342   Sleep  1s  reason=insert time gap in log files
343   ${start_time} =  Get Current Date  time_zone=UTC  result_format=%Y-%m-%dT%H:%M:%S.%f
344   Sleep  1s  reason=insert time delay to account for time differences of container and host
345   Set Test Variable  ${DEVICE_NAME_TEST}  ${DEVICE_NAME}-required
346   ConnectApp.remove network element connection    ${DEVICE_NAME_TEST}
347   Run Keyword And Continue On Failure  ConnectApp.Should Be Equal connection status until time  ${DEVICE_NAME_TEST}  not existing
348   Run Keyword And Continue On Failure  SDNCRestconfLibrary.should_be_equal_connection_status_until_time  ${DEVICE_NAME_TEST}  not existing  time_in_sec=${10}
349
350   # Check connection status log entries
351   Sleep  1s  reason=insert time gap to avoid time constrains
352   ${connection_status_list} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
353                                                                      ...   timestamp=>=${start_time}
354   Log  ${connection_status_list}
355   ${connection_status_list_debug} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
356   Log  ${connection_status_list_debug}
357   ${connection_status_list_debug_backend} =  FaultManagementAppBackend.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
358                                                                      ...  timestamp=>=${start_time}
359   Log  ${connection_status_list_debug_backend}
360   ${conn_status_list_stats} =  get_counts_from_list  ${connection_status_list}  status
361   Log Dictionary  ${conn_status_list_stats}
362   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Unmounted  1    msg=wrong connection log entries for Unmounted state
363   Run Keyword And Continue On Failure  Dictionary Should Not Contain Key  ${conn_status_list_stats}  Connected
364   Run Keyword And Continue On Failure  Dictionary Should Not Contain Key  ${conn_status_list_stats}  Mounted
365   #Dictionary Should Not Contain Key  ${conn_status_list_stats}  Connecting
366
367 Remove unmounted network element connection
368   [Tags]  prio2
369   Sleep  1s  reason=insert time gap in log files
370   ${start_time} =  Get Current Date  time_zone=UTC  result_format=%Y-%m-%dT%H:%M:%S.%f
371   Sleep  1s  reason=insert time delay to account for time differences of container and host
372   Set Test Variable  ${DEVICE_NAME_TEST}  ${DEVICE_NAME}-required-true
373   ConnectApp.Add network element connection    ${DEVICE_NAME_TEST}    ${True}    ${HOST}    ${PORT}    ${USERNAME}    ${PASSWORD}
374   Run Keyword And Continue On Failure  ConnectApp.Should Be Equal connection status until time  ${DEVICE_NAME_TEST}  Connected
375   Run Keyword And Continue On Failure  SDNCRestconfLibrary.should_be_equal_connection_status_until_time  ${DEVICE_NAME_TEST}  connected  time_in_sec=${10}
376
377   ConnectApp.unmount_network_element    ${DEVICE_NAME_TEST}
378   Run Keyword And Continue On Failure  ConnectApp.Should Be Equal connection status until time  ${DEVICE_NAME_TEST}  Disconnected
379   Run Keyword And Continue On Failure  SDNCRestconfLibrary.should_be_equal_connection_status_until_time  ${DEVICE_NAME_TEST}  not existing  time_in_sec=${10}
380
381   ConnectApp.remove_network_element_connection    ${DEVICE_NAME_TEST}
382   Run Keyword And Continue On Failure  ConnectApp.Should Be Equal connection status until time  ${DEVICE_NAME_TEST}  not existing
383
384   # Check connection status log entries
385   Sleep  1s  reason=insert time gap to avoid time constrains
386   ${connection_status_list} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
387                                                                      ...   timestamp=>=${start_time}
388   Log  ${connection_status_list}
389   ${connection_status_list_debug} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
390   Log  ${connection_status_list_debug}
391   ${connection_status_list_debug_backend} =  FaultManagementAppBackend.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
392                                                                      ...  timestamp=>=${start_time}
393   Log  ${connection_status_list_debug_backend}
394   ${conn_status_list_stats} =  get_counts_from_list  ${connection_status_list}  status
395   Log Dictionary  ${conn_status_list_stats}
396   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Mounted  1    msg=wrong connection log entries for Mounted state
397   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Connected  1    msg=wrong connection log entries for Connected state
398   Run Keyword And Continue On Failure  Dictionary Should Contain Key  ${conn_status_list_stats}  Unmounted  msg=no connection log entries for Unmounted state
399   ConnectApp.Remove Network Element Connection    ${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['NAME']}
400
401