Chore: Add gerrit maven verify GHA workflow
[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
25 *** Variables ***
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
33 ${PORT_NOK}  ${4711}
34 ${USERNAME_NOK}  wrong-username
35 ${PASSWORD_NOK}  wrong-password
36 ${CORE_MODEL}  Unsupported
37 ${UNDEFINED}  undefined
38 ${DEVICE_TO_DELETE}  devices
39
40 # set log level https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html
41
42
43 *** Test Cases ***
44
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
49   [Tags]  smoke
50
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}
63                                                                      ...  status=Connected
64                                                                      ...  host=${HOST}
65                                                                      ...  port=${PORT}
66                                                                      ...  device-type=${DEVICE_TYPE_GUI}
67   # Check connection status log entries
68   Sleep  1s  reason=insert time gap to avoid time constrains
69   ${connection_status_list} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
70                                                                      ...   timestamp=>=${start_time}
71   Log  ${connection_status_list}
72   ${conn_status_list_stats} =  get_counts_from_list  ${connection_status_list}  status
73   Log Dictionary  ${conn_status_list_stats}
74   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Connected  ${1}
75   ...  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
77
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
81
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
87
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
92   [Tags]  smoke
93
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}
101
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
115
116 Add network element connection wrong port
117   [Tags]  prio2
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
130                                                                      ...  host=${HOST}
131                                                                      ...  port=${PORT_NOK}
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
147
148 Remove network element connection wrong port
149   [Tags]  prio2
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}
157
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
173
174 Add network element connection wrong ip
175   [Tags]  prio2
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
188                                                                      ...  host=${HOST_NOK}
189                                                                      ...  port=${PORT}
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
205
206 Remove network element connection wrong ip
207   [Tags]  prio2
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}
215
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
231
232 Add network element connection and change is required to false
233   [Tags]  prio2
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}
245
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
264
265 Edit network element connection: is required to true
266   [Tags]  prio2
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
291
292 Unmount network element
293   [Tags]  prio2
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}
301
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
318
319
320 Mount network element
321   [Tags]  prio2
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}
329
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
344
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
354                                   ...  time_to_wait=60
355        ConnectApp.remove_network_element_connection    ${DEVICE_NAME}_sim_key_0
356   END
357
358 Remove network element connection
359   [Tags]  prio2
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}
367
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
384
385 Remove unmounted network element connection
386   [Tags]  prio2
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}
395
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}
399
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
402
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']}
419
420 Add network element connection and remount
421   [Tags]  smoke
422   Sleep  1s  reason=insert time gap in log files
423   ${start_time} =  Get Current Date  time_zone=UTC  result_format=%Y-%m-%dT%H:%M:%S.%f
424   Sleep  1s  reason=insert time delay to account for time differences of container and host
425   Set Test Variable  ${DEVICE_NAME_TEST}  ${DEVICE_NAME}-remount
426   Log To Console  ${start_time}
427   ConnectApp.Add network element connection    device_name=${DEVICE_NAME_TEST}    is_required=${True}
428   ...  host=${HOST}    port=${PORT}    username=${USERNAME}    password=${PASSWORD}
429   Run Keyword And Continue On Failure  ConnectApp.Should Be Equal connection status until time  ${DEVICE_NAME_TEST}  Connected
430   SDNCRestconfLibrary.should_be_equal_connection_status_until_time  ${DEVICE_NAME_TEST}  connected  time_in_sec=${10}
431   Run Keyword And Continue On Failure  ConnectApp.should_be_equal_network_element_connection_details  ${DEVICE_NAME_TEST}
432                                                                      ...  node-id=${DEVICE_NAME_TEST}
433                                                                      ...  is-required=${True}
434                                                                      ...  status=Connected
435                                                                      ...  host=${HOST}
436                                                                      ...  port=${PORT}
437                                                                      ...  device-type=${DEVICE_TYPE_GUI}
438   # Check connection status log entries
439   Sleep  1s  reason=insert time gap to avoid time constrains
440   ${connection_status_list} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
441                                                                      ...   timestamp=>=${start_time}
442   Log  ${connection_status_list}
443   ${conn_status_list_stats} =  get_counts_from_list  ${connection_status_list}  status
444   Log Dictionary  ${conn_status_list_stats}
445   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Connected  ${1}  msg=wrong connection log entries for Connected state
446   Dictionary Should Contain Item  ${conn_status_list_stats}  Mounted  ${1}    msg=wrong connection log entries for Mounted state
447
448   Sleep  1s  reason=insert time gap in log files
449   ${start_time} =  Get Current Date  time_zone=UTC  result_format=%Y-%m-%dT%H:%M:%S.%f
450   Sleep  1s  reason=insert time delay to account for time differences of container and host
451   # perform a mount on a alredy connected device
452   ConnectApp.mount_network_element  ${DEVICE_NAME_TEST}
453   Run Keyword And Continue On Failure  ConnectApp.Should Be Equal connection status until time  ${DEVICE_NAME_TEST}  Connected
454   Run Keyword And Continue On Failure  SDNCRestconfLibrary.should_be_equal_connection_status_until_time  ${DEVICE_NAME_TEST}  connected  time_in_sec=${10}
455
456   # Check connection status log entries
457   Sleep  1s  reason=insert time gap to avoid time constrains
458   ${connection_status_list} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
459                                                                      ...   timestamp=>=${start_time}
460   Log  ${connection_status_list}
461   ${connection_status_list_debug} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
462   Log  ${connection_status_list_debug}
463   ${connection_status_list_debug_backend} =  FaultManagementAppBackend.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
464                                                                      ...  timestamp=>=${start_time}
465   Log  ${connection_status_list_debug_backend}
466   ${conn_status_list_stats} =  get_counts_from_list  ${connection_status_list}  status
467   Log Dictionary  ${conn_status_list_stats}
468   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Connected  ${1}  msg=wrong connection log entries for Connected state
469   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Mounted  ${1}    msg=wrong connection log entries for Mounted state
470
471 Remove remounted network element connection
472   [Tags]  smoke
473   Sleep  3s  reason=insert time gap in log files
474   ${start_time} =  Get Current Date  time_zone=UTC  result_format=%Y-%m-%dT%H:%M:%S.%f
475   Sleep  3s  reason=insert time delay to account for time differences of container and host
476   Set Test Variable  ${DEVICE_NAME_TEST}  ${DEVICE_NAME}-remount
477   ConnectApp.Remove network element connection  ${DEVICE_NAME_TEST}
478   Run Keyword And Continue On Failure  ConnectApp.Should be equal connection status until time  ${DEVICE_NAME_TEST}  not existing
479   Run Keyword And Continue On Failure  SDNCRestconfLibrary.should_be_equal_connection_status_until_time  ${DEVICE_NAME_TEST}  not existing  time_in_sec=${10}
480
481   # Check connection status log entries
482   Sleep  1s  reason=insert time gap to avoid time constrains
483   ${connection_status_list} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
484                                                                      ...   timestamp=>=${start_time}
485   Log  ${connection_status_list}
486   ${connection_status_list_debug} =  FaultManagementApp.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
487   Log  ${connection_status_list_debug}
488   ${connection_status_list_debug_backend} =  FaultManagementAppBackend.get_connection_log_list  node-id=${DEVICE_NAME_TEST}
489                                                                      ...  timestamp=>=${start_time}
490   Log  ${connection_status_list_debug_backend}
491   ${conn_status_list_stats} =  get_counts_from_list  ${connection_status_list}  status
492   Log Dictionary  ${conn_status_list_stats}
493   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${conn_status_list_stats}  Unmounted  ${1}  msg=wrong connection log entries for Unmounted state
494   Run Keyword And Continue On Failure  Dictionary Should Not Contain Key  ${conn_status_list_stats}  Connected
495   Run Keyword And Continue On Failure  Dictionary Should Not Contain Key  ${conn_status_list_stats}  Mounted