Chore: Add gerrit maven verify GHA workflow
[sdnc/oam.git] / csit / tests / sdnr / functional / devicemanager / _templates / 22_alarmNotificationNETCONF / alarmNotificationNetconf.robot
1 *** Settings ***
2 Documentation     Connects NTSim of specific device type
3 ...  NTSim information are stored in test environment variable file <environment>
4 ...  as dictionary NETWORK_FUNCTIONS = {}
5 ...  change device type on command line with e.g. --variable  DEVICE_TYPE:O_RAN_FH
6 ...  Enable alarms by setting fault-notification-delay-period and validate the alarms raised by NTS 
7 ...  received by SDNR via netconf
8 Default Tags  fm  ves
9
10 Library  ConnectLibrary
11 Library  SDNCBaseLibrary
12 Library  SDNCRestconfLibrary
13 Library  ConnectApp
14 Library  NTSimManagerNG
15 Library  FaultManagementApp
16 Library  FaultManagementAppBackend
17 Library  utility
18 Library  DateTime
19 Library  Collections
20
21 Suite Setup  global suite setup    &{GLOBAL_SUITE_SETUP_CONFIG}
22 Suite Teardown  global suite teardown
23
24
25 *** Variables ***
26 ${DEVICE_TYPE}  DEFINE_IN_INIT
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 ${FAULT_DELAY}  10
38 ${TIME_PERIOD_SEND_NOTIF}  22s
39 &{ALARM_SEVERITY_DEFAULT}  Critical=${0}  Major=${0}  Minor=${0}  Warning=${0}  NonAlarmed=${0}
40
41
42 *** Test Cases ***
43 Setup NTS function
44   [Tags]  nts  bringup
45   [Documentation]  configure NTS manager to support restconf registration
46   Add Network Element Connection   device_name=${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['NAME']}  is_required=${True}
47   ...  host=${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['IP']}     port=${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['PORT']}
48   ...  username=${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['USER']}    password=${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['PASSWORD']}
49   ...  check_connection_status=Connected
50   SDNCRestconfLibrary.Should Be Equal Connection Status Until Time    ${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['NAME']}    Connected
51
52 Set alarm notification
53   [Tags]  smoke
54   NTSimManagerNG.clear_alarm_count  ${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['NAME']}
55   NTSimManagerNG.Set Netconf Config Nf    ${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['NAME']}  faults-enabled=${True}
56   ${vesAlarmGenerated} =  NTSimManagerNG.Get Alarm Count  ${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['NAME']}
57   Sleep  1s  reason=insert time gap in log files
58   ${start_time} =  Get Current Date  time_zone=UTC  result_format=%Y-%m-%dT%H:%M:%S.%f
59   Sleep  1s  reason=insert time delay to account for time differences of container and host
60   Set Global Variable  ${start_time}
61   ${current_problem_list}=  FaultManagementApp.Get Current Problem List
62   Log  ${current_problem_list}
63   ${alarm_status_start} =  FaultManagementApp.get_alarm_status
64   Set Global Variable  ${alarm_status_start}
65   NTSimManagerNG.set_fault_delay_list_nf  ${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['NAME']}  delay-period=${fault_delay}
66
67   Log  Send notification every ${FAULT_DELAY} sec for ${TIME_PERIOD_SEND_NOTIF}  level=INFO  console=True
68   Sleep  ${TIME_PERIOD_SEND_NOTIF}
69
70 UnSet alarm notification
71   [Documentation]  stops alarm generation and create dictionary ${netconfAlarmGenerated}
72   ...              for further checks
73   [Tags]  smoke
74   NTSimManagerNG.set_fault_delay_list_nf  ${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['NAME']}  delay-period=${0}
75   NTSimManagerNG.Set Netconf Config Nf    ${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['NAME']}  faults-enabled=${False}
76   ${netconfAlarmGenerated} =   NTSimManagerNG.Get Alarm Count    ${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['NAME']}
77   # get generated alarms
78   ${alarmsGenerated} =  Get Dictionary Values   ${netconfAlarmGenerated}
79   Log  ${alarmsGenerated}
80   ${numAlarmsGenerated} =  evaluate  sum(${alarmsGenerated})
81   Log  ${numAlarmsGenerated}
82   Should Not Be Equal As Integers  ${numAlarmsGenerated}  0  msg=no alarm notifications generated
83   Set Global Variable  ${netconfAlarmGenerated}
84
85
86 Verify alarm log
87   [Tags]  smoke
88
89   ${alarm_log_list} =  FaultManagementApp.get_alarm_log_list  source-type=Netconf
90                                                         ...   timestamp=>=${start_time}
91                                                         ...   node-id=${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['NAME']}
92   ${alarm_log_list_stats} =  get_counts_from_list  ${alarm_log_list}  severity  ${ALARM_SEVERITY_DEFAULT}
93   Log Dictionary  ${alarm_log_list_stats}
94   ${alarm_log_list_debug} =  FaultManagementApp.get_alarm_log_list  source-type=Netconf
95   Log  ${alarm_log_list_debug}
96   ${alarm_log_list_debug_backend} =  FaultManagementAppBackend.get_alarm_log_list  source-type=Netconf
97                                                         ...   timestamp=>=${start_time}
98   Log  ${alarm_log_list_debug_backend}
99
100   ${critical_count}    Set Variable    ${alarm_log_list_stats}[Critical]
101   ${major_count}       Set Variable    ${alarm_log_list_stats}[Major]
102   ${minor_count}       Set Variable    ${alarm_log_list_stats}[Minor]
103   ${warning_count}     Set Variable    ${alarm_log_list_stats}[Warning]
104   ${nonalarmed_count}  Set Variable    ${alarm_log_list_stats}[NonAlarmed]
105
106   ${netconf_critical_count}    Set Variable    ${netconfAlarmGenerated}[critical]
107   ${netconf_major_count}       Set Variable    ${netconfAlarmGenerated}[major]
108   ${netconf_minor_count}       Set Variable    ${netconfAlarmGenerated}[minor]
109   ${netconf_warning_count}     Set Variable    ${netconfAlarmGenerated}[warning]
110   ${netconf_nonalarmed_count}  Set Variable    ${netconfAlarmGenerated}[normal]
111
112   Should Be True    ${critical_count} >= ${netconf_critical_count}
113   Should Be True    ${major_count} >= ${netconf_major_count}
114   Should Be True    ${minor_count} >= ${netconf_minor_count}
115   Should Be True    ${warning_count} >= ${netconf_warning_count}
116   Should Be True    ${nonalarmed_count} >= ${netconf_nonalarmed_count}
117
118
119 Verify current problem list
120   [Tags]  smoke
121   # fails immediatly if netconfAlarmGenerated is not set
122   Log  ${netconfAlarmGenerated}
123   ${alarm_log_list} =  FaultManagementApp.get_alarm_log_list  timestamp=>=${start_time}
124   ${current_problem_list_calculated}=  FaultManagementApp.calculate_current_alarm_list   ${alarm_log_list}
125   Log  ${current_problem_list_calculated}
126   ${current_problem_list}=  FaultManagementApp.get_current_problem_list  timestamp=>=${start_time}
127   Log  ${current_problem_list}
128   ${current_problem_list_debug}=  FaultManagementApp.get_current_problem_list
129   Log  ${current_problem_list_debug}
130   ${current_problem_list_debug_backend}=  FaultManagementAppBackend.get_current_problem_list  timestamp=>=${start_time}
131   Log  ${current_problem_list_debug_backend}
132   ${current_problem_list_calculated_stats} =  get_counts_from_list  ${current_problem_list_calculated}  severity  ${ALARM_SEVERITY_DEFAULT}
133   ${current_problem_list_stats} =  get_counts_from_list  ${current_problem_list}  severity  ${ALARM_SEVERITY_DEFAULT}
134   Log Dictionary  ${current_problem_list_calculated_stats}
135   Log Dictionary  ${current_problem_list_stats}
136   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${current_problem_list_stats}  Critical    ${current_problem_list_calculated_stats}[Critical]
137   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${current_problem_list_stats}  Major       ${current_problem_list_calculated_stats}[Major]
138   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${current_problem_list_stats}  Minor       ${current_problem_list_calculated_stats}[Minor]
139   Run Keyword And Continue On Failure  Dictionary Should Contain Item  ${current_problem_list_stats}  Warning     ${current_problem_list_calculated_stats}[Warning]
140
141 Verify alarm status bar
142   [Tags]  smoke
143   Sleep  10s  reason=wait update alarmstatus
144   ${alarm_status_end} =  FaultManagementApp.get_alarm_status
145   Log Dictionary  ${alarm_status_start}
146   Log Dictionary  ${alarm_status_end}
147   Run Keyword And Continue On Failure  Evaluate  ${alarm_status_end}[criticals]-${alarm_status_start}[criticals] == ${netconfAlarmGenerated}[critical]
148   Run Keyword And Continue On Failure  Evaluate  ${alarm_status_end}[majors]-${alarm_status_start}[majors] == ${netconfAlarmGenerated}[major]
149   Run Keyword And Continue On Failure  Evaluate  ${alarm_status_end}[minors]-${alarm_status_start}[minors] == ${netconfAlarmGenerated}[minor]
150   Run Keyword And Continue On Failure  Evaluate  ${alarm_status_end}[warnings]-${alarm_status_start}[warnings] == ${netconfAlarmGenerated}[warning]
151
152 Remove networkelement connection
153   ConnectApp.Remove network element connection  ${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['NAME']}
154   Run Keyword And Continue On Failure  ConnectApp.Should be equal connection status until time  ${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['NAME']}  not existing
155   SDNCRestconfLibrary.Should Be Equal Connection Status Until Time    ${NETWORK_FUNCTIONS['${DEVICE_TYPE}']['NAME']}  not existing
156