Giuseppe Gerla created NIFI-12406:
-------------------------------------
Summary: SNMP processors doesn't manage INFORM message as traps
Key: NIFI-12406
URL: https://issues.apache.org/jira/browse/NIFI-12406
Project: Apache NiFi
Issue Type: Improvement
Components: Extensions
Affects Versions: 1.16.3
Reporter: Giuseppe Gerla
Traps and informs are mainly the same; notifications sent from a SNMP agent to
a SNMP manager. The only difference is that an inform requests a response from
the manager.
They are “unacknowledged notification-type PDU” and “acknowledged
notification-type PDUs” respectively.
([https://www.ietf.org/rfc/rfc3413.txt])
([https://www.ietf.org/rfc/rfc3412.txt])
So the isValidTrapPdu should be
private boolean isValidTrapPdu{*}({*}final PDU pdu{*}){*} *{*
*return* pdu *!=* *null* *&&* {*}({*}pdu{*}.{*}getType{*}(){*} *==*
PDU{*}.{*}V1TRAP *||* pdu{*}.{*}getType{*}(){*} *==* PDU{*}.{*}TRAP *||*
{*}pdu{*}{*}.{*}{*}getType{*}{*}(){*} * ** == **
PDU{*}{{*}}.{*}{{*}}INFORM{*}{{*}});\{*}
*}*
and to test it
@Test
void testTrapReceiverCreatesInforPduV2FlowFile{*}(){*} *{*
final CommandResponderEvent mockEvent *=*
mock{*}({*}CommandResponderEvent{*}.{*}class{*});{*}
when{*}({*}mockPdu{*}.{*}getType{*}()).{*}thenReturn{*}({*}PDU{*}.{*}INFORM{*});{*}
when{*}({*}mockPdu{*}.{*}getErrorIndex{*}()).{*}thenReturn{*}({*}123{*});{*}
when{*}({*}mockPdu{*}.{*}getErrorStatusText{*}()).{*}thenReturn{*}({*}"test
error status text"{*});{*}
final Vector{*}<{*}VariableBinding{*}>{*} vbs *=* *new*
Vector{*}<>();{*}
doReturn{*}({*}vbs{*}).{*}when{*}({*}mockPdu{*}).{*}getVariableBindings{*}();{*}
when{*}({*}mockEvent{*}.{*}getPDU{*}()).{*}thenReturn{*}({*}mockPdu{*});{*}
when{*}({*}mockProcessSessionFactory{*}.{*}createSession{*}()).{*}thenReturn{*}({*}mockProcessSession{*});{*}
snmpTrapReceiver{*}.{*}processPdu{*}({*}mockEvent{*});{*}
final List{*}<{*}MockFlowFile{*}>{*} flowFiles *=*
mockProcessSession{*}.{*}getFlowFilesForRelationship{*}({*}AmsSnmpTrapListener{*}.{*}REL_SUCCESS{*});{*}
final FlowFile flowFile *=* flowFiles{*}.{*}get{*}({*}0{*});{*}
assertEquals{*}({*}String{*}.{*}valueOf{*}({*}123{*}),{*}
flowFile{*}.{*}getAttribute{*}({*}"snmp$errorIndex"{*}));{*}
assertEquals{*}({*}"test error status text"{*},{*}
flowFile{*}.{*}getAttribute{*}({*}"snmp$errorStatusText"{*}));{*}
*}*
--
This message was sent by Atlassian Jira
(v8.20.10#820010)