|
| | profinet::TEST_F (AlarmListenerRtaTest, UntaggedAlarmFrameIsProcessed) |
| |
| | profinet::TEST_F (AlarmListenerRtaTest, VlanTaggedAlarmFrameIsProcessed) |
| |
| | profinet::TEST_F (AlarmListenerRtaTest, HighPriorityAlarmUsesHighFrameId) |
| |
| | profinet::TEST_F (AlarmListenerRtaTest, NonProfinetEtherTypeIsIgnored) |
| |
| | profinet::TEST_F (AlarmListenerRtaTest, WrongSourceMacIsIgnored) |
| |
| | profinet::TEST_F (AlarmListenerRtaTest, WrongDestinationReferenceIsIgnored) |
| |
| | profinet::TEST_F (AlarmListenerRtaTest, ShortEthernetFrameIsIgnored) |
| |
| | profinet::TEST_F (AlarmListenerRtaTest, AlarmAckIsPriorityVlanTagged) |
| |
| | profinet::TEST_F (AlarmListenerRtaTest, AlarmAckUsesDataPdu) |
| |
| | profinet::TEST_F (AlarmListenerRtaTest, AlarmAckUsesDeviceEndpointAsDestination) |
| |
| | profinet::TEST_F (AlarmListenerRtaTest, AlarmAckEchoesReceivedSequenceNumber) |
| |
| | profinet::TEST_F (AlarmListenerCallbackTest, ReceivedAlarmInvokesCallback) |
| |
| | profinet::TEST_F (AlarmListenerCallbackTest, MultipleCallbacksAreInvoked) |
| |
| | profinet::TEST_F (AlarmListenerCallbackTest, EmptyCallbackIsIgnored) |
| |
| | profinet::TEST_F (AlarmListenerCallbackTest, CallbackExceptionDoesNotPreventOtherCallbacks) |
| |
| | profinet::TEST_F (AlarmListenerRtaIntegrationTest, TwoAlarmNotificationsAreDispatched) |
| |
| | profinet::TEST_F (AlarmListenerRtaTest, InvalidAlarmPayloadIsNotAcknowledged) |
| |
| | profinet::TEST_F (AlarmListenerRtaTest, WrongRtaVersionIsIgnored) |
| |
| | profinet::TEST_F (AlarmListenerRtaTest, DataWithoutTackIsIgnored) |
| |
| | profinet::TEST_F (AlarmListenerRtaIntegrationTest, DISABLED_DuplicateNotificationIsNotDispatchedTwice) |
| |
| | profinet::TEST_F (AlarmListenerRtaTest, DISABLED_OutOfSequenceNotificationIsRejected) |
| |
| | profinet::TEST_F (AlarmListenerRtaTest, FirstAlarmAckUsesInitialSequenceNumber) |
| |
| | profinet::TEST_F (RtaErrorTests, ParsesAumaReleaseIndReceivedError) |
| |
| | profinet::TEST_F (RtaErrorTests, IgnoresEthernetPaddingAfterStatus) |
| |
| | profinet::TEST_F (RtaErrorTests, RejectsNonErrRtaPdu) |
| |
| | profinet::TEST_F (RtaErrorTests, RejectsWrongVariablePartLength) |
| |
| | profinet::TEST_F (RtaErrorTests, RejectsTruncatedStatus) |
| |
| | profinet::TEST_F (RtaErrorTests, SequenceErrorIsNotAbort) |
| |
| | profinet::TEST_F (RtaErrorTests, NonRtaStatusIsNotProtocolError) |
| |
| | profinet::TEST_P (RtaErrorsTests, EveryDefinedReasonIsDecoded) |
| |
| | profinet::INSTANTIATE_TEST_SUITE_P (AllDefinedReasons, RtaErrorsTests, ::testing::Values(RtaErrorReasonTestCase{0x00, RtaErrorReason::Reserved, RtaErrorClass::Reserved}, RtaErrorReasonTestCase{0x01, RtaErrorReason::SequenceNumber, RtaErrorClass::SequenceNumber}, RtaErrorReasonTestCase{0x02, RtaErrorReason::InstanceClosed, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x03, RtaErrorReason::ArOutOfMemory, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x04, RtaErrorReason::ArAddProviderConsumerFailed, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x05, RtaErrorReason::ArConsumerDhtWdtExpired, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x06, RtaErrorReason::ArCmiTimeout, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x07, RtaErrorReason::ArAlarmOpenFailed, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x08, RtaErrorReason::ArAlarmSendConfirmationNegative, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x09, RtaErrorReason::ArAlarmAckSendConfirmationNegative, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x0A, RtaErrorReason::ArAlarmDataTooLong, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x0B, RtaErrorReason::ArAlarmIndError, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x0C, RtaErrorReason::ArRpcClientCallConfirmationNegative, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x0D, RtaErrorReason::ArAbortRequest, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x0E, RtaErrorReason::ArRerunAbortsExisting, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x0F, RtaErrorReason::ArReleaseIndReceived, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x10, RtaErrorReason::ArDeviceDeactivated, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x11, RtaErrorReason::ArRemoved, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x12, RtaErrorReason::ArProtocolViolation, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x13, RtaErrorReason::ArNameResolutionError, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x14, RtaErrorReason::ArRpcBindError, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x15, RtaErrorReason::ArRpcConnectError, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x16, RtaErrorReason::ArRpcReadError, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x17, RtaErrorReason::ArRpcWriteError, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x18, RtaErrorReason::ArRpcControlError, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x19, RtaErrorReason::ArForbiddenPullPlug, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x1A, RtaErrorReason::ArApRemoved, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x1B, RtaErrorReason::ArLinkDown, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x1C, RtaErrorReason::ArMulticastMacRegistrationFailed, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x1D, RtaErrorReason::NotSynchronized, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x1E, RtaErrorReason::WrongTopology, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x1F, RtaErrorReason::DcpStationNameChanged, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x20, RtaErrorReason::DcpResetToFactorySettings, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x21, RtaErrorReason::CompanionAr8ippSubmodule, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x22, RtaErrorReason::NoIrdataRecordYet, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x23, RtaErrorReason::Pdev, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x24, RtaErrorReason::PdevNoRequiredSpeedDuplexity, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x25, RtaErrorReason::IpSuiteChanged, RtaErrorClass::Abort}, RtaErrorReasonTestCase{0x26, RtaErrorReason::IocarSrRdhtExpired, RtaErrorClass::Extended}, RtaErrorReasonTestCase{0x27, RtaErrorReason::IocarSrPdevParameterizationImpossible, RtaErrorClass::Extended}, RtaErrorReasonTestCase{0x28, RtaErrorReason::RemoteApplicationReadyTimeout, RtaErrorClass::Extended}, RtaErrorReasonTestCase{0x29, RtaErrorReason::IocarSrRedundantInterfaceLost, RtaErrorClass::Extended}, RtaErrorReasonTestCase{0x2A, RtaErrorReason::IocarSrMtotExpired, RtaErrorClass::Extended}, RtaErrorReasonTestCase{0x2B, RtaErrorReason::IocarSrArProtocolViolation, RtaErrorClass::Extended}, RtaErrorReasonTestCase{0x2C, RtaErrorReason::PdevPlugPortWithoutCombinedObjectContainer, RtaErrorClass::Extended}, RtaErrorReasonTestCase{0x2D, RtaErrorReason::ObsoletedNmeNoConfiguration, RtaErrorClass::Obsoleted}, RtaErrorReasonTestCase{0xFF, RtaErrorReason::UserAbort, RtaErrorClass::Abort}), [](const ::testing::TestParamInfo< RtaErrorReasonTestCase > &info) { return std::format("{:#04x}", info.param.code);}) |
| |
| | profinet::TEST (RtaErrorsTests, UndefinedReasonIsUnknown) |
| |
PROFINET RTA AlarmListener conformance and regression tests.
Verifies Layer 2 PROFINET alarm reception and AlarmAck transmission against the wire-level behavior.
The tests cover:
- Untagged and VLAN-tagged RTA alarm reception.
- PROFINET EtherType validation.
- Source-MAC validation.
- RTA destination endpoint validation.
- AlarmNotification parsing and callback dispatch.
- High- and low-priority AlarmAck frame IDs.
- Mandatory priority VLAN tagging on transmitted AlarmAck frames.
- RTA header serialization.
- AlarmAck block serialization.
- Callback exception isolation.
Definition in file test_alarmListenerRta.cpp.