blob: 718cb539d3931ec03a51dff4ee525cbfdf54dff7 [file] [log] [blame]
#Copyright 2017-2024 Open Networking Foundation (ONF) and the ONF Contributors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
*** Settings ***
Documentation This test raises alarms using bbsimctl and verifies them using voltctl
Suite Setup Setup Suite
Suite Teardown Teardown Suite
Library Collections
Library String
Library OperatingSystem
Library XML
Library RequestsLibrary
Library ../../libraries/DependencyLibrary.py
Resource ../../libraries/onos.robot
Resource ../../libraries/voltctl.robot
Resource ../../libraries/utils.robot
Resource ../../libraries/k8s.robot
Resource ../../libraries/voltha.robot
Resource ../../variables/variables.robot
*** Variables ***
${timeout} 60s
${long_timeout} 420s
${of_id} 0
${logical_id} 0
${has_dataplane} True
${setup_device} True
${teardown_device} True
${VOLTCTL_NAMESPACE} default
${BBSIMCTL_NAMESPACE} voltha
${VOLTCTL_POD_NAME} voltctl
${BBSIMCTL_POD_NAME} bbsim
*** Test Cases ***
Ensure required pods Running
[Documentation] Ensure the bbsim and voltctl pods are in Running state
[Tags] active
Validate Pod Status ${BBSIMCTL_POD_NAME} ${BBSIMCTL_NAMESPACE} Running
Validate Pod Status ${VOLTCTL_POD_NAME} ${VOLTCTL_NAMESPACE} Running
ONU Discovery
[Documentation] Discover lists of ONUS, their Serial Numbers and device id, and pick one for subsequent tests
[Tags] active
#build onu sn list
${List_ONU_Serial} Create List
Set Suite Variable ${List_ONU_Serial}
Build ONU SN List ${List_ONU_Serial}
Log ${List_ONU_Serial}
#validate onu states
Wait Until Keyword Succeeds ${long_timeout} 20s
... Validate ONU Devices ENABLED ACTIVE REACHABLE ${List_ONU_Serial}
# Pick an ONU to use for subsequent test cases
${onu_sn} Set Variable ${List_ONU_Serial}[0]
Set Suite Variable ${onu_sn}
${onu_id} Get Device ID From SN ${onu_sn}
Set Suite Variable ${onu_id}
${parent_id} Get Parent ID From Device ID ${onu_id}
Set Suite Variable ${parent_id}
Test RaiseDriftOfWindowAlarm
[Documentation] Raise Drift Of Window Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Raise Onu Alarm And Get Event ONU_DRIFT_OF_WINDOW
... ${onu_sn} ONU_DRIFT_OF_WINDOW_RAISE_EVENT
Verify Header ${header} Voltha.openolt.ONU_DRIFT_OF_WINDOW\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_DRIFT_OF_WINDOW_RAISE_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test ClearDriftOfWindowAlarm
[Documentation] Clear Drift Of Window Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Clear Onu Alarm And Get Event ONU_DRIFT_OF_WINDOW
... ${onu_sn} ONU_DRIFT_OF_WINDOW_CLEAR_EVENT
Verify Header ${header} Voltha.openolt.ONU_DRIFT_OF_WINDOW\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_DRIFT_OF_WINDOW_CLEAR_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test RaiseDyingGaspAlarm
[Documentation] Raise Dying Gasp Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Raise Onu Alarm And Get Event DYING_GASP
... ${onu_sn} ONU_DYING_GASP_RAISE_EVENT
Verify Header ${header} Voltha.openolt.ONU_DYING_GASP\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_DYING_GASP_RAISE_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test RaiseLopcMissAlarm
[Documentation] Raise LOPC_MISS Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Raise Onu Alarm And Get Event ONU_ALARM_LOPC_MISS
... ${onu_sn} ONU_LOPC_MISS_RAISE_EVENT
Verify Header ${header} Voltha.openolt.ONU_LOPC_MISS\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_LOPC_MISS_RAISE_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test ClearLopcMissAlarm
[Documentation] Clear LOPC_MISS Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Clear Onu Alarm And Get Event ONU_ALARM_LOPC_MISS
... ${onu_sn} ONU_LOPC_MISS_CLEAR_EVENT
Verify Header ${header} Voltha.openolt.ONU_LOPC_MISS\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_LOPC_MISS_CLEAR_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test RaiseLopcMicErrorAlarm
[Documentation] Raise LOPC_MISS Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Raise Onu Alarm And Get Event ONU_ALARM_LOPC_MIC_ERROR
... ${onu_sn} ONU_LOPC_MIC_ERROR_RAISE_EVENT
Verify Header ${header} Voltha.openolt.ONU_LOPC_MIC_ERROR\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_LOPC_MIC_ERROR_RAISE_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test ClearLopcMicErrorAlarm
[Documentation] Clear LOPC_MISS Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Clear Onu Alarm And Get Event ONU_ALARM_LOPC_MIC_ERROR
... ${onu_sn} ONU_LOPC_MIC_ERROR_CLEAR_EVENT
Verify Header ${header} Voltha.openolt.ONU_LOPC_MIC_ERROR\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_LOPC_MIC_ERROR_CLEAR_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test RaiseLossOfBurstAlarm
[Documentation] Raise Loss Of Burst Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Raise Onu Alarm And Get Event ONU_ALARM_LOB
... ${onu_sn} ONU_LOSS_OF_BURST_RAISE_EVENT
Verify Header ${header} Voltha.openolt.ONU_LOSS_OF_BURST\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_LOSS_OF_BURST_RAISE_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test ClearLossOfBurstAlarm
[Documentation] Clear Loss Of Burst Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Clear Onu Alarm And Get Event ONU_ALARM_LOB
... ${onu_sn} ONU_LOSS_OF_BURST_CLEAR_EVENT
Verify Header ${header} Voltha.openolt.ONU_LOSS_OF_BURST\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_LOSS_OF_BURST_CLEAR_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test RaiseLossOfFrameAlarm
[Documentation] Raise Loss Of Frame Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Raise Onu Alarm And Get Event ONU_ALARM_LOFI
... ${onu_sn} ONU_LOSS_OF_FRAME_RAISE_EVENT
Verify Header ${header} Voltha.openolt.ONU_LOSS_OF_FRAME\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_LOSS_OF_FRAME_RAISE_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test ClearLossOfFrameAlarm
[Documentation] Clear Loss Of Frame Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Clear Onu Alarm And Get Event ONU_ALARM_LOFI
... ${onu_sn} ONU_LOSS_OF_FRAME_CLEAR_EVENT
Verify Header ${header} Voltha.openolt.ONU_LOSS_OF_FRAME\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_LOSS_OF_FRAME_CLEAR_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test RaiseLossOfKeySyncFailureAlarm
[Documentation] Raise Loss Of Key Sync Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Raise Onu Alarm And Get Event ONU_LOSS_OF_KEY_SYNC_FAILURE
... ${onu_sn} ONU_LOSS_OF_KEY_SYNC_RAISE_EVENT
Verify Header ${header} Voltha.openolt.ONU_LOSS_OF_KEY_SYNC\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_LOSS_OF_KEY_SYNC_RAISE_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test ClearLossOfKeySyncFailureAlarm
[Documentation] Clear Loss Of Key Sync Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Clear Onu Alarm And Get Event ONU_LOSS_OF_KEY_SYNC_FAILURE
... ${onu_sn} ONU_LOSS_OF_KEY_SYNC_CLEAR_EVENT
Verify Header ${header} Voltha.openolt.ONU_LOSS_OF_KEY_SYNC\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_LOSS_OF_KEY_SYNC_CLEAR_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test RaiseLossOfOmciChannelAlarm
[Documentation] Raise Loss Of Omci Channel Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Raise Onu Alarm And Get Event ONU_LOSS_OF_OMCI_CHANNEL
... ${onu_sn} ONU_LOSS_OF_OMCI_CHANNEL_RAISE_EVENT
Verify Header ${header} Voltha.openolt.ONU_LOSS_OF_OMCI_CHANNEL\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_LOSS_OF_OMCI_CHANNEL_RAISE_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test ClearLossOfOmciChannelAlarm
[Documentation] Clear Loss Of Omci Channel Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Clear Onu Alarm And Get Event ONU_LOSS_OF_OMCI_CHANNEL
... ${onu_sn} ONU_LOSS_OF_OMCI_CHANNEL_CLEAR_EVENT
Verify Header ${header} Voltha.openolt.ONU_LOSS_OF_OMCI_CHANNEL\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_LOSS_OF_OMCI_CHANNEL_CLEAR_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test RaiseLossOfPloamAlarm
[Documentation] Raise Loss Of Ploam Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Raise Onu Alarm And Get Event ONU_ALARM_LOAMI
... ${onu_sn} ONU_LOSS_OF_PLOAM_RAISE_EVENT
Verify Header ${header} Voltha.openolt.ONU_LOSS_OF_PLOAM\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_LOSS_OF_PLOAM_RAISE_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test ClearLossOfPloamAlarm
[Documentation] Clear Loss Of Ploam Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Clear Onu Alarm And Get Event ONU_ALARM_LOAMI
... ${onu_sn} ONU_LOSS_OF_PLOAM_CLEAR_EVENT
Verify Header ${header} Voltha.openolt.ONU_LOSS_OF_PLOAM\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_LOSS_OF_PLOAM_CLEAR_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
# NOTE: ONU_ALARM_LOS a bit touchy as it seems to be automatically suppressed if
# multiples are sent in a row. It seems like the bbsim state machine is interacting
# with alarms, sometimes causing an ONU_ALARM_LOS to be sent, which then causes
# this test to be a duplicate, which in turn is suppressed and fails. So what we
# do is issue a CLEAR right before the RAISE.
Test RaiseLossOfSignalAlarm
[Documentation] Raise Loss Of Signal Alarm and verify event received
[Tags] active
Clear Onu Alarm ONU_ALARM_LOS ${onu_sn}
${header} ${deviceEvent} Raise Onu Alarm And Get Event ONU_ALARM_LOS
... ${onu_sn} ONU_LOSS_OF_SIGNAL_RAISE_EVENT
Verify Header ${header} Voltha.openolt.ONU_LOSS_OF_SIGNAL\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_LOSS_OF_SIGNAL_RAISE_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test ClearLossOfSignalAlarm
[Documentation] Clear Loss Of Signal Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Clear Onu Alarm And Get Event ONU_ALARM_LOS
... ${onu_sn} ONU_LOSS_OF_SIGNAL_CLEAR_EVENT
Verify Header ${header} Voltha.openolt.ONU_LOSS_OF_SIGNAL\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_LOSS_OF_SIGNAL_CLEAR_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test RaisePonLossOfSignalAlarm
[Documentation] Raise Loss Of Signal Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Raise Olt Alarm And Get Event OLT_PON_LOS
... 0 OLT_LOSS_OF_SIGNAL_RAISE_EVENT
Verify Header ${header} Voltha.openolt.OLT_LOSS_OF_SIGNAL\.(\\d+) PON
Should Be Equal ${deviceEvent}[deviceEventName] OLT_LOSS_OF_SIGNAL_RAISE_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test ClearPonLossOfSignalAlarm
[Documentation] Clear Loss Of Signal Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Clear Olt Alarm And Get Event OLT_PON_LOS
... 0 OLT_LOSS_OF_SIGNAL_CLEAR_EVENT
Verify Header ${header} Voltha.openolt.OLT_LOSS_OF_SIGNAL\.(\\d+) PON
Should Be Equal ${deviceEvent}[deviceEventName] OLT_LOSS_OF_SIGNAL_CLEAR_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test RaiseProcessingErrorAlarm
# Not Implemented
[Documentation] Raise Processing Error Alarm and verify event received
[Tags] not-active
${header} ${deviceEvent} Raise Onu Alarm And Get Event ONU_PROCESSING_ERROR
... ${onu_sn} ONU_PROCESSING_ERROR_RAISE_EVENT
Verify Header ${header} Voltha.openolt.ONU_PROCESSING_ERROR\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_PROCESSING_ERROR_RAISE_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test ClearProcessingErrorAlarm
# Not Implemented
[Documentation] Clear Processing Error Alarm and verify event received
[Tags] not-active
${header} ${deviceEvent} Clear Onu Alarm And Get Event ONU_PROCESSING_ERROR
... ${onu_sn} ONU_PROCESSING_ERROR_CLEAR_EVENT
Verify Header ${header} Voltha.openolt.ONU_PROCESSING_ERROR\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_PROCESSING_ERROR_CLEAR_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test RaiseSignalDegradeAlarm
[Documentation] Raise Signal Degrade Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Raise Onu Alarm And Get Event ONU_SIGNAL_DEGRADE
... ${onu_sn} ONU_SIGNAL_DEGRADE_RAISE_EVENT
Verify Header ${header} Voltha.openolt.ONU_SIGNAL_DEGRADE\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_SIGNAL_DEGRADE_RAISE_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test ClearSignalDegradeAlarm
[Documentation] Clear Signal Degrade Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Clear Onu Alarm And Get Event ONU_SIGNAL_DEGRADE
... ${onu_sn} ONU_SIGNAL_DEGRADE_CLEAR_EVENT
Verify Header ${header} Voltha.openolt.ONU_SIGNAL_DEGRADE\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_SIGNAL_DEGRADE_CLEAR_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test RaiseSignalsFailureAlarm
[Documentation] Raise Signals Fail Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Raise Onu Alarm And Get Event ONU_SIGNALS_FAILURE
... ${onu_sn} ONU_SIGNALS_FAIL_RAISE_EVENT
Verify Header ${header} Voltha.openolt.ONU_SIGNALS_FAIL\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_SIGNALS_FAIL_RAISE_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test ClearSignalsFailureAlarm
[Documentation] Clear Signals Fail Alarm and verify event received
[Tags] active
${header} ${deviceEvent} Clear Onu Alarm And Get Event ONU_SIGNALS_FAILURE
... ${onu_sn} ONU_SIGNALS_FAIL_CLEAR_EVENT
Verify Header ${header} Voltha.openolt.ONU_SIGNALS_FAIL\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_SIGNALS_FAIL_CLEAR_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test RaiseStartupFailureAlarm
# Not Implemented
[Documentation] Raise Startup Failure Alarm and verify event received
[Tags] not-active
${header} ${deviceEvent} Raise Onu Alarm And Get Event ONU_STARTUP_FAILURE
... ${onu_sn} ONU_STARTUP_FAILURE_RAISE_EVENT
Verify Header ${header} Voltha.openolt.ONU_STARTUP_FAILURE\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_STARTUP_FAILURE_RAISE_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test ClearStartupFailureAlarm
# Not Implemented
[Documentation] Clear Startup Failure Alarm and verify event received
[Tags] not-active
${header} ${deviceEvent} Clear Onu Alarm And Get Event ONU_STARTUP_FAILURE
... ${onu_sn} ONU_STARTUP_FAILURE_CLEAR_EVENT
Verify Header ${header} Voltha.openolt.ONU_STARTUP_FAILURE\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_STARTUP_FAILURE_CLEAR_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test RaiseTransmissionInterferenceAlarm
# Not Implemented
[Documentation] Raise Transmission Interference Alarm and verify event received
[Tags] not-active
${header} ${deviceEvent} Raise Onu Alarm And Get Event ONU_TRANSMISSION_INTERFERENCE_WARNING
... ${onu_sn} ONU_TRANSMISSION_INTERFERENCE_RAISE_EVENT
Verify Header ${header} Voltha.openolt.ONU_TRANSMISSION_INTERFERENCE\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_TRANSMISSION_INTERFERENCE_RAISE_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
Test ClearTransmissionInterferenceAlarm
# Not Implemented
[Documentation] Clear Transmission Interference Alarm and verify event received
[Tags] not-active
${header} ${deviceEvent} Clear Onu Alarm And Get Event ONU_TRANSMISSION_INTERFERENCE_WARNING
... ${onu_sn} ONU_TRANSMISSION_INTERFERENCE_CLEAR_EVENT
Verify Header ${header} Voltha.openolt.ONU_TRANSMISSION_INTERFERENCE\.(\\d+) ONU
Should Be Equal ${deviceEvent}[deviceEventName] ONU_TRANSMISSION_INTERFERENCE_CLEAR_EVENT
Should Be Equal ${deviceEvent}[resourceId] ${parent_id}
*** Keywords ***
Setup Suite
[Documentation] Set up the test suite
Common Test Suite Setup
# Ensure the voltctl pod is deployed and running
Apply Kubernetes Resources ./voltctl.yaml ${VOLTCTL_NAMESPACE}
Wait Until Keyword Succeeds ${timeout} 5s
... Validate Pod Status ${VOLTCTL_POD_NAME} ${VOLTCTL_NAMESPACE} Running
# Call Setup keyword in utils library to create and enable device
Run Keyword If ${setup_device} Setup
Teardown Suite
[Documentation] Clean up devices if desired
... kills processes and cleans up interfaces on src+dst servers
Delete Kubernetes Resources ./voltctl.yaml ${VOLTCTL_NAMESPACE}
Wait Until Keyword Succeeds ${timeout} 5s Pod Does Not Exist ${VOLTCTL_NAMESPACE} ${VOLTCTL_POD_NAME}
Get ONOS Status ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
Run Keyword If ${has_dataplane} Clean Up Linux
Run Keyword If ${teardown_device} Delete All Devices and Verify
Run Keyword If ${teardown_device} Test Empty Device List
Run Keyword If ${teardown_device} Execute ONOS CLI Command use single connection ${ONOS_SSH_IP} ${ONOS_SSH_PORT}
... device-remove ${of_id}
Close All ONOS SSH Connections
Run Keyword If ${has_dataplane} Clean Up All Nodes
# Onu Alarms
Raise Onu Alarm And Get Event
[Documentation] Raise an Alarm and return event
[Arguments] ${name} ${sn} ${deviceEventName}
${since} Get Current Time
Raise Onu Alarm ${name} ${sn}
${header} ${deviceEvent} Get Device Event ${deviceEventName} ${since}
${LastEventPostTimestamp} Set Variable ${since}
Set Suite Variable ${LastEventPostTimestamp}
[return] ${header} ${deviceEvent}
Clear Onu Alarm And Get Event
[Documentation] Clear an Alarm and return event
[Arguments] ${name} ${sn} ${deviceEventName}
${since} Get Current Time
Clear Onu Alarm ${name} ${sn}
${header} ${deviceEvent} Get Device Event ${deviceEventName} ${since}
${LastEventPostTimestamp} Set Variable ${since}
Set Suite Variable ${LastEventPostTimestamp}
[return] ${header} ${deviceEvent}
Raise Onu Alarm
[Documentation] Raise an Alarm
[Arguments] ${name} ${sn}
${raiseOutput} Exec Pod ${BBSIMCTL_NAMESPACE} ${BBSIMCTL_POD_NAME}
... bbsimctl onu alarms raise ${name} ${sn}
Should Contain ${raiseOutput} Alarm Indication Sent
Clear Onu Alarm
[Documentation] Raise an Alarm
[Arguments] ${name} ${sn}
${raiseOutput} Exec Pod ${BBSIMCTL_NAMESPACE} ${BBSIMCTL_POD_NAME}
... bbsimctl onu alarms clear ${name} ${sn}
Should Contain ${raiseOutput} Alarm Indication Sent
# Olt Alarms
Raise Olt Alarm And Get Event
[Documentation] Raise an Alarm and return event
[Arguments] ${name} ${intf_id} ${deviceEventName}
${since} Get Current Time
Raise Olt Alarm ${name} ${intf_id}
${header} ${deviceEvent} Get Device Event ${deviceEventName} ${since}
${LastEventPostTimestamp} Set Variable ${since}
Set Suite Variable ${LastEventPostTimestamp}
[return] ${header} ${deviceEvent}
Clear Olt Alarm And Get Event
[Documentation] Clear an Alarm and return event
[Arguments] ${name} ${intf_id} ${deviceEventName}
${since} Get Current Time
Clear Olt Alarm ${name} ${intf_id}
${header} ${deviceEvent} Get Device Event ${deviceEventName} ${since}
${LastEventPostTimestamp} Set Variable ${since}
Set Suite Variable ${LastEventPostTimestamp}
[return] ${header} ${deviceEvent}
Raise Olt Alarm
[Documentation] Raise an Alarm
[Arguments] ${name} ${intf_id}
${raiseOutput} Exec Pod ${BBSIMCTL_NAMESPACE} ${BBSIMCTL_POD_NAME}
... bbsimctl olt alarms raise ${name} ${intf_id}
Should Contain ${raiseOutput} Alarm Indication Sent
Clear Olt Alarm
[Documentation] Raise an Alarm
[Arguments] ${name} ${intf_id}
${raiseOutput} Exec Pod ${BBSIMCTL_NAMESPACE} ${BBSIMCTL_POD_NAME}
... bbsimctl olt alarms clear ${name} ${intf_id}
Should Contain ${raiseOutput} Alarm Indication Sent
Get Device Event
[Documentation] Get the most recent alarm event from voltha.events
[Arguments] ${deviceEventName} ${since}
${output} ${raiseErr} Exec Pod Separate Stderr ${VOLTCTL_NAMESPACE} ${VOLTCTL_POD_NAME}
... voltctl event listen --show-body -t 1 -o json -f Titles=${deviceEventName}
${json} To Json ${output}
${count} Get Length ${json}
# If there is more than one event (which could happen if we quickly do a raise and a clear),
# then return the most recent one.
Should Be Larger Than ${count} 0
${lastIndex} Evaluate ${count}-1
${lastItem} Set Variable ${json}[${lastIndex}]
${header} Set Variable ${lastItem}[header]
${deviceEvent} Set Variable ${lastItem}[deviceEvent]
Log ${header}
Log ${deviceEvent}
[return] ${header} ${deviceEvent}
Verify Header
[Documentation] Verify that a DeviceEvent's header is sane and the id matches regex
[Arguments] ${header} ${id} ${subCategory}
${headerSubCategory} Evaluate $header.get("subCategory", "")
Should Be Equal ${headerSubCategory} ${subCategory}
Should Be Equal ${header}[type] DEVICE_EVENT
Should Match Regexp ${header}[id] ${id}
# TODO Timestamps are now RFC3339 date strings. Add Verification
${reportedTs} Set Variable ${header}[reportedTs]
${raisedTs} Set Variable ${header}[raisedTs]
Should Be Newer Than Or Equal To ${reportedTs} ${LastEventPostTimestamp}
Should Be Newer Than Or Equal To ${raisedTs} ${LastEventPostTimestamp}