From b2401522ead954c31004fa5877d51fc69d72e4da Mon Sep 17 00:00:00 2001 From: joewitt Date: Tue, 9 Aug 2016 00:33:45 -0400 Subject: [PATCH] NIFI-2521 This closes #815. removed test classes with questionable origin and licensing. --- .../nifi/snmp/processors/GetSNMPTest.java | 391 ------------------ .../nifi/snmp/processors/SNMPGetTest.java | 123 ------ .../nifi/snmp/processors/SNMPWalkTest.java | 121 ------ .../nifi/snmp/processors/SetSNMPTest.java | 332 --------------- .../nifi/snmp/processors/TestSnmpAgentV1.java | 218 ---------- .../snmp/processors/TestSnmpAgentV2c.java | 219 ---------- .../nifi/snmp/processors/TestSnmpAgentV3.java | 255 ------------ .../nifi/snmp/processors/WalkSNMPTest.java | 117 ------ 8 files changed, 1776 deletions(-) delete mode 100644 nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/GetSNMPTest.java delete mode 100644 nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/SNMPGetTest.java delete mode 100644 nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/SNMPWalkTest.java delete mode 100644 nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/SetSNMPTest.java delete mode 100644 nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/TestSnmpAgentV1.java delete mode 100644 nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/TestSnmpAgentV2c.java delete mode 100644 nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/TestSnmpAgentV3.java delete mode 100644 nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/WalkSNMPTest.java diff --git a/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/GetSNMPTest.java b/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/GetSNMPTest.java deleted file mode 100644 index 48be787d36..0000000000 --- a/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/GetSNMPTest.java +++ /dev/null @@ -1,391 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.nifi.snmp.processors; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; - -import org.apache.nifi.util.MockFlowFile; -import org.apache.nifi.util.TestRunner; -import org.apache.nifi.util.TestRunners; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; -import org.snmp4j.AbstractTarget; -import org.snmp4j.CommunityTarget; -import org.snmp4j.PDU; -import org.snmp4j.Snmp; -import org.snmp4j.UserTarget; -import org.snmp4j.agent.mo.DefaultMOFactory; -import org.snmp4j.agent.mo.MOAccessImpl; -import org.snmp4j.event.ResponseEvent; -import org.snmp4j.mp.MPv3; -import org.snmp4j.mp.SnmpConstants; -import org.snmp4j.security.SecurityModels; -import org.snmp4j.security.SecurityProtocols; -import org.snmp4j.security.USM; -import org.snmp4j.smi.Integer32; -import org.snmp4j.smi.OID; -import org.snmp4j.smi.OctetString; -import org.snmp4j.smi.VariableBinding; -import org.snmp4j.transport.DefaultUdpTransportMapping; - -/** - * Class to test SNMP Get processor - */ -public class GetSNMPTest { - - /** agent for version v1 */ - private static TestSnmpAgentV1 agentv1 = null; - /** agent for version v2c */ - private static TestSnmpAgentV2c agentv2c = null; - /** OID for system description */ - private static final OID sysDescr = new OID("1.3.6.1.2.1.1.1.0"); - /** value we set for system description at set-up */ - private static final String value = "MySystemDescr"; - /** OID for write only */ - private static final OID writeOnlyOID = new OID("1.3.6.1.2.1.1.3.0"); - /** value we set for write only at set-up */ - private static final int writeOnlyValue = 1; - - /** - * Method to set up different SNMP agents - * @throws Exception Exception - */ - @BeforeClass - public static void setUp() throws Exception { - agentv2c = new TestSnmpAgentV2c("0.0.0.0"); - agentv2c.start(); - agentv2c.unregisterManagedObject(agentv2c.getSnmpv2MIB()); - agentv2c.registerManagedObject( - DefaultMOFactory.getInstance().createScalar(sysDescr, - MOAccessImpl.ACCESS_READ_WRITE, - new OctetString(value))); - agentv2c.registerManagedObject( - DefaultMOFactory.getInstance().createScalar(writeOnlyOID, - MOAccessImpl.ACCESS_WRITE_ONLY, - new Integer32(writeOnlyValue))); - - agentv1 = new TestSnmpAgentV1("0.0.0.0"); - agentv1.start(); - agentv1.unregisterManagedObject(agentv1.getSnmpv2MIB()); - agentv1.registerManagedObject( - DefaultMOFactory.getInstance().createScalar(sysDescr, - MOAccessImpl.ACCESS_READ_WRITE, - new OctetString(value))); - } - - /** - * Method to close SNMP Agent once the tests are completed - * @throws Exception Exception - */ - @AfterClass - public static void tearDown() throws Exception { - agentv1.stop(); - agentv2c.stop(); - } - - /** - * Test to check FlowFile handling when performing a SNMP Get. - * First we set a new value for the OID we want to request, then we - * request this OID and we check that the returned value if the one - * we set just before. - * @throws Exception Exception - */ - @Test - public void validateSuccessfullSnmpSetGetv2c() throws Exception { - Snmp snmp = SNMPUtilsTest.createSnmp(); - CommunityTarget target = SNMPUtilsTest.createCommTarget("public", "127.0.0.1/" + agentv2c.getPort(), SnmpConstants.version2c); - - try (SNMPSetter setter = new SNMPSetter(snmp, target)) { - PDU pdu = new PDU(); - pdu.add(new VariableBinding(new OID(sysDescr), new OctetString("test"))); - pdu.setType(PDU.SET); - ResponseEvent response = setter.set(pdu); - if(response.getResponse().getErrorStatus() != PDU.noError ) { - fail(); - } - Thread.sleep(200); - - GetSNMP pubProc = new LocalGetSnmp(snmp, target); - TestRunner runner = TestRunners.newTestRunner(pubProc); - - runner.setProperty(GetSNMP.OID, sysDescr.toString()); - runner.setProperty(GetSNMP.HOST, "127.0.0.1"); - runner.setProperty(GetSNMP.PORT, String.valueOf(agentv2c.getPort())); - runner.setProperty(GetSNMP.SNMP_COMMUNITY, "public"); - runner.setProperty(GetSNMP.SNMP_VERSION, "SNMPv2c"); - - runner.run(); - Thread.sleep(200); - final MockFlowFile successFF = runner.getFlowFilesForRelationship(GetSNMP.REL_SUCCESS).get(0); - assertNotNull(successFF); - assertEquals("test", successFF.getAttributes().get(SNMPUtils.SNMP_PROP_PREFIX + sysDescr.toString() + SNMPUtils.SNMP_PROP_DELIMITER + "4")); - - pubProc.close(); - } - } - - /** - * Test to check FlowFile handling when performing a SNMP Get. - * First we set a new value for the OID we want to request, then we - * request this OID and we check that the returned value if the one - * we set just before. - * @throws Exception Exception - */ - @Test - public void validateSuccessfullSnmpSetGetv1() throws Exception { - Snmp snmp = SNMPUtilsTest.createSnmp(); - CommunityTarget target = SNMPUtilsTest.createCommTarget("public", "127.0.0.1/" + agentv1.getPort(), SnmpConstants.version1); - - try (SNMPSetter setter = new SNMPSetter(snmp, target)) { - PDU pdu = new PDU(); - pdu.add(new VariableBinding(new OID(sysDescr), new OctetString("test"))); - pdu.setType(PDU.SET); - ResponseEvent response = setter.set(pdu); - if(response.getResponse().getErrorStatus() != PDU.noError ) { - fail(); - } - Thread.sleep(200); - - GetSNMP pubProc = new LocalGetSnmp(snmp, target); - TestRunner runner = TestRunners.newTestRunner(pubProc); - runner.setProperty(GetSNMP.OID, sysDescr.toString()); - runner.setProperty(GetSNMP.HOST, "127.0.0.1"); - runner.setProperty(GetSNMP.PORT, String.valueOf(agentv1.getPort())); - runner.setProperty(GetSNMP.SNMP_COMMUNITY, "public"); - runner.setProperty(GetSNMP.SNMP_VERSION, "SNMPv1"); - - runner.run(); - Thread.sleep(200); - final MockFlowFile successFF = runner.getFlowFilesForRelationship(GetSNMP.REL_SUCCESS).get(0); - assertNotNull(successFF); - assertEquals("test", successFF.getAttributes().get(SNMPUtils.SNMP_PROP_PREFIX + sysDescr.toString() + SNMPUtils.SNMP_PROP_DELIMITER + "4")); - - pubProc.close(); - } - } - - /** - * Test the unauthorized case during a SNMP get request - * @throws Exception Exception - */ - @Test - public void errorUnauthorizedSnmpGet() throws Exception { - Snmp snmp = SNMPUtilsTest.createSnmp(); - CommunityTarget target = SNMPUtilsTest.createCommTarget("public", "127.0.0.1/" + agentv2c.getPort(), SnmpConstants.version2c); - - GetSNMP pubProc = new LocalGetSnmp(snmp, target); - TestRunner runner = TestRunners.newTestRunner(pubProc); - - runner.setProperty(GetSNMP.OID, writeOnlyOID.toString()); - runner.setProperty(GetSNMP.HOST, "127.0.0.1"); - runner.setProperty(GetSNMP.PORT, String.valueOf(agentv2c.getPort())); - runner.setProperty(GetSNMP.SNMP_COMMUNITY, "public"); - runner.setProperty(GetSNMP.SNMP_VERSION, "SNMPv2c"); - - runner.run(); - Thread.sleep(200); - assertTrue(runner.getFlowFilesForRelationship(GetSNMP.REL_SUCCESS).isEmpty()); - final MockFlowFile failFF = runner.getFlowFilesForRelationship(GetSNMP.REL_FAILURE).get(0); - assertNotNull(failFF); - assertEquals("Null", failFF.getAttributes().get(SNMPUtils.SNMP_PROP_PREFIX + writeOnlyOID.toString() + SNMPUtils.SNMP_PROP_DELIMITER + "5")); - assertEquals("No access", failFF.getAttributes().get(SNMPUtils.SNMP_PROP_PREFIX + "errorStatusText")); - } - - /** - * Test the timeout case during a SNMP get request - * @throws Exception Exception - */ - @Test - public void errorTimeoutSnmpGet() throws Exception { - Snmp snmp = SNMPUtilsTest.createSnmp(); - CommunityTarget target = SNMPUtilsTest.createCommTarget("public", "127.0.0.1/" + agentv2c.getPort(), SnmpConstants.version2c); - - GetSNMP pubProc = new LocalGetSnmp(snmp, target); - TestRunner runner = TestRunners.newTestRunner(pubProc); - - runner.setProperty(GetSNMP.OID, sysDescr.toString()); - runner.setProperty(GetSNMP.HOST, "127.0.0.1"); - runner.setProperty(GetSNMP.PORT, String.valueOf(SNMPTestUtil.availablePort())); - runner.setProperty(GetSNMP.SNMP_COMMUNITY, "public"); - runner.setProperty(GetSNMP.SNMP_VERSION, "SNMPv2c"); - - runner.run(); - Thread.sleep(200); - assertTrue(runner.getFlowFilesForRelationship(GetSNMP.REL_SUCCESS).isEmpty()); - assertTrue(runner.getFlowFilesForRelationship(GetSNMP.REL_FAILURE).isEmpty()); - } - - /** - * Test the case noSuchObject during a SNMP get request - * @throws Exception Exception - */ - @Test - public void errorNotExistingOIDSnmpGet() throws Exception { - Snmp snmp = SNMPUtilsTest.createSnmp(); - CommunityTarget target = SNMPUtilsTest.createCommTarget("public", "127.0.0.1/" + agentv2c.getPort(), SnmpConstants.version2c); - - GetSNMP pubProc = new LocalGetSnmp(snmp, target); - TestRunner runner = TestRunners.newTestRunner(pubProc); - - runner.setProperty(GetSNMP.OID, "1.3.6.1.2.1.1.2.0"); - runner.setProperty(GetSNMP.HOST, "127.0.0.1"); - runner.setProperty(GetSNMP.PORT, String.valueOf(agentv2c.getPort())); - runner.setProperty(GetSNMP.SNMP_COMMUNITY, "public"); - runner.setProperty(GetSNMP.SNMP_VERSION, "SNMPv2c"); - - runner.run(); - Thread.sleep(200); - final MockFlowFile successFF = runner.getFlowFilesForRelationship(GetSNMP.REL_SUCCESS).get(0); - assertNotNull(successFF); - assertEquals("noSuchObject", successFF.getAttributes().get(SNMPUtils.SNMP_PROP_PREFIX + "1.3.6.1.2.1.1.2.0" + SNMPUtils.SNMP_PROP_DELIMITER + "128")); - } - - /** - * Test the case with not existing community during a SNMP get request - * @throws Exception Exception - */ - @Test - public void errorCommunitySnmpGet() throws Exception { - Snmp snmp = SNMPUtilsTest.createSnmp(); - CommunityTarget target = SNMPUtilsTest.createCommTarget("errorCommunity", "127.0.0.1/" + agentv2c.getPort(), SnmpConstants.version2c); - - GetSNMP pubProc = new LocalGetSnmp(snmp, target); - TestRunner runner = TestRunners.newTestRunner(pubProc); - - runner.setProperty(GetSNMP.OID, "1.3.6.1.2.1.1.2.0"); - runner.setProperty(GetSNMP.HOST, "127.0.0.1"); - runner.setProperty(GetSNMP.PORT, String.valueOf(agentv2c.getPort())); - runner.setProperty(GetSNMP.SNMP_COMMUNITY, "errorCommunity"); - runner.setProperty(GetSNMP.SNMP_VERSION, "SNMPv2c"); - - runner.run(); - Thread.sleep(200); - assertTrue(runner.getFlowFilesForRelationship(GetSNMP.REL_SUCCESS).isEmpty()); - assertTrue(runner.getFlowFilesForRelationship(GetSNMP.REL_FAILURE).isEmpty()); - } - - /** - * Method to test SNMP v3 cases - * @throws Exception Exception - */ - @Test - public void validateSnmpVersion3() throws Exception { - int port = SNMPTestUtil.availablePort(); - Thread thread= new Thread(new Runnable() { - @Override - public void run() { - TestSnmpAgentV3.main(new String[]{"0.0.0.0/" + port}); - } - }); - thread.start(); - - DefaultUdpTransportMapping transportMapping = new DefaultUdpTransportMapping(); - Snmp snmp = new Snmp(transportMapping); - USM usm = new USM(SecurityProtocols.getInstance(), new OctetString(MPv3.createLocalEngineID()), 0); - SecurityModels.getInstance().addSecurityModel(usm); - transportMapping.listen(); - - this.executeCase(snmp, port, "SHADES", "authPriv", "SHA", "SHADESPassword", "DES", "SHADESPassword"); - this.executeCase(snmp, port, "MD5DES", "authPriv", "MD5", "MD5DESAuthPassword", "DES", "MD5DESPrivPassword"); - this.executeCase(snmp, port, "SHAAES128", "authPriv", "SHA", "SHAAES128AuthPassword", "AES128", "SHAAES128PrivPassword"); - } - - /** - * Method to test a specific configuration for SNMP V3 - * @param snmp SNMP - * @param port Port - * @param securityName Security name - * @param securityLevel security level - * @param authProt authentication protocol - * @param authPwd authentication password - * @param privProt private protocol - * @param privPwd private password - * @throws InterruptedException exception - */ - private void executeCase(Snmp snmp, int port, String securityName, String securityLevel, String authProt, String authPwd, String privProt, String privPwd) throws InterruptedException { - UserTarget target = SNMPUtilsTest.prepareUser(snmp, "127.0.0.1/" + port, SNMPUtils.getSecLevel(securityLevel), - securityName, SNMPUtils.getAuth(authProt), SNMPUtils.getPriv(privProt), authPwd, privPwd); - this.testTarget(snmp, port, target, securityName, securityLevel, authProt, authPwd, privProt, privPwd); - } - - /** - * Method to test a specific configuration for SNMP V3 - * @param snmp SNMP - * @param port Port - * @param target target - * @param securityName Security name - * @param securityLevel security level - * @param authProt authentication protocol - * @param authPwd authentication password - * @param privProt private protocol - * @param privPwd private password - * @throws InterruptedException exception - */ - private void testTarget(Snmp snmp, int port, UserTarget target, String securityName, String securityLevel, - String authProt, String authPwd, String privProt, String privPwd) throws InterruptedException { - GetSNMP pubProc = new LocalGetSnmp(snmp, target); - TestRunner runner = TestRunners.newTestRunner(pubProc); - - runner.setProperty(GetSNMP.OID, sysDescr.toString()); - runner.setProperty(GetSNMP.HOST, "127.0.0.1"); - runner.setProperty(GetSNMP.PORT, String.valueOf(port)); - runner.setProperty(GetSNMP.SNMP_VERSION, "SNMPv3"); - runner.setProperty(GetSNMP.SNMP_SECURITY_NAME, securityName); - runner.setProperty(GetSNMP.SNMP_SECURITY_LEVEL, securityLevel); - runner.setProperty(GetSNMP.SNMP_AUTH_PROTOCOL, authProt); - if(authPwd != null) { - runner.setProperty(GetSNMP.SNMP_AUTH_PASSWORD, authPwd); - } - runner.setProperty(GetSNMP.SNMP_PRIV_PROTOCOL, privProt); - if(privPwd != null) { - runner.setProperty(GetSNMP.SNMP_PRIV_PASSWORD, privPwd); - } - - runner.run(); - Thread.sleep(500); - - // Assert that a file has been transferred before attempting to access - runner.assertTransferCount(GetSNMP.REL_SUCCESS, 1); - final MockFlowFile successFF = runner.getFlowFilesForRelationship(GetSNMP.REL_SUCCESS).get(0); - assertNotNull(successFF); - assertTrue(successFF.getAttributes().get(SNMPUtils.SNMP_PROP_PREFIX + sysDescr.toString() + SNMPUtils.SNMP_PROP_DELIMITER + "4").startsWith("SNMP4J-Agent")); - } - - /** - * Local extension of SNMP Getter - */ - private class LocalGetSnmp extends GetSNMP { - /** SNMP */ - private Snmp snmp; - /** Target to request */ - private AbstractTarget target; - /** - * Constructor - * @param snmp SNMP - * @param target Target - */ - public LocalGetSnmp(Snmp snmp, AbstractTarget target) { - this.snmp = snmp; - this.target = target; - } - } - -} diff --git a/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/SNMPGetTest.java b/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/SNMPGetTest.java deleted file mode 100644 index 8932d610d2..0000000000 --- a/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/SNMPGetTest.java +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.nifi.snmp.processors; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; - -import java.io.IOException; -import java.util.concurrent.TimeoutException; - -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; -import org.snmp4j.CommunityTarget; -import org.snmp4j.Snmp; -import org.snmp4j.agent.mo.DefaultMOFactory; -import org.snmp4j.agent.mo.MOAccessImpl; -import org.snmp4j.agent.mo.MOFactory; -import org.snmp4j.event.ResponseEvent; -import org.snmp4j.mp.SnmpConstants; -import org.snmp4j.smi.OID; -import org.snmp4j.smi.OctetString; - - -/** - * Test class used to check SNMP Get processor - */ -public class SNMPGetTest { - - /** agent for test with SNMP v2c */ - private static TestSnmpAgentV2c agentv2c = null; - /** agent for test with SNMP v1 */ - private static TestSnmpAgentV1 agentv1 = null; - - /** OID to request */ - private static final OID sysDescr = new OID(".1.3.6.1.2.1.1.1.0"); - /** value we are supposed to retrieve */ - private static final String value = "MySystemDescr"; - - /** - * Method to set up different SNMP agents - * @throws Exception Exception - */ - @BeforeClass - public static void setUp() throws Exception { - MOFactory factory = DefaultMOFactory.getInstance(); - - agentv1 = new TestSnmpAgentV1("0.0.0.0"); - agentv1.start(); - agentv1.unregisterManagedObject(agentv1.getSnmpv2MIB()); - agentv1.registerManagedObject(factory.createScalar(sysDescr, - MOAccessImpl.ACCESS_READ_ONLY, - new OctetString(value))); - - agentv2c = new TestSnmpAgentV2c("0.0.0.0"); - agentv2c.start(); - agentv2c.unregisterManagedObject(agentv2c.getSnmpv2MIB()); - agentv2c.registerManagedObject(factory.createScalar(sysDescr, - MOAccessImpl.ACCESS_READ_ONLY, - new OctetString(value))); - } - - /** - * Method to close SNMP Agent once the tests are completed - * @throws Exception Exception - */ - @AfterClass - public static void tearDown() throws Exception { - agentv1.stop(); - agentv2c.stop(); - } - - /** - * Method to test successful SNMP Get in case of v2c - * @throws IOException IO Exception - * @throws TimeoutException Timeout exception - */ - @Test - public void validateSuccessfulSnmpGetVersion2c() throws IOException, TimeoutException { - Snmp snmp = SNMPUtilsTest.createSnmp(); - CommunityTarget target = SNMPUtilsTest.createCommTarget("public", "127.0.0.1/" + agentv2c.getPort(), SnmpConstants.version2c); - try (SNMPGetter getter = new SNMPGetter(snmp, target, sysDescr)) { - ResponseEvent response = getter.get(); - if(response.getResponse() == null) { - fail(); - } - assertEquals(value, response.getResponse().get(0).getVariable().toString()); - } - } - - /** - * Method to test successful SNMP Get in case of v1 - * @throws IOException IO Exception - * @throws TimeoutException Timeout exception - */ - @Test - public void validateSuccessfulSnmpGetVersion1() throws IOException, TimeoutException { - Snmp snmp = SNMPUtilsTest.createSnmp(); - CommunityTarget target = SNMPUtilsTest.createCommTarget("public", "127.0.0.1/" + agentv1.getPort(), SnmpConstants.version1); - try (SNMPGetter getter = new SNMPGetter(snmp, target, sysDescr)) { - ResponseEvent response = getter.get(); - if(response.getResponse() == null) { - fail(); - } - assertEquals(value, response.getResponse().get(0).getVariable().toString()); - } - } - -} diff --git a/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/SNMPWalkTest.java b/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/SNMPWalkTest.java deleted file mode 100644 index 59a6fa135d..0000000000 --- a/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/SNMPWalkTest.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.nifi.snmp.processors; - -import static org.junit.Assert.assertEquals; - -import java.io.IOException; -import java.util.List; -import java.util.concurrent.TimeoutException; - -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; -import org.snmp4j.CommunityTarget; -import org.snmp4j.Snmp; -import org.snmp4j.mp.SnmpConstants; -import org.snmp4j.smi.OID; -import org.snmp4j.smi.OctetString; -import org.snmp4j.smi.UdpAddress; -import org.snmp4j.transport.DefaultUdpTransportMapping; -import org.snmp4j.util.TreeEvent; - - -/** - * Test class used to check SNMP Walk part of the SNMP Get processor - */ -public class SNMPWalkTest { - - /** agent for test with SNMP v2c */ - private static TestSnmpAgentV2c agentv2c = null; - /** agent for test with SNMP v1 */ - private static TestSnmpAgentV1 agentv1 = null; - - /** Root OID to perform a WALK */ - private static final OID root = new OID("1.3.6.1.2.1.1"); - - /** - * Method to set up different SNMP agents - * @throws Exception Exception - */ - @BeforeClass - public static void setUp() throws Exception { - agentv1 = new TestSnmpAgentV1("0.0.0.0"); - agentv1.start(); - agentv2c = new TestSnmpAgentV2c("0.0.0.0"); - agentv2c.start(); - } - - /** - * Method to close SNMP Agent once the tests are completed - * @throws Exception Exception - */ - @AfterClass - public static void tearDown() throws Exception { - agentv1.stop(); - agentv2c.stop(); - } - - /** - * Method to test successful SNMP Walk in case of v2c - * @throws IOException IO Exception - * @throws TimeoutException Timeout exception - */ - @Test - public void validateSuccessfulSnmpWalkVersion2c() throws IOException, TimeoutException { - DefaultUdpTransportMapping transportMapping = new DefaultUdpTransportMapping(); - transportMapping.listen(); - Snmp snmp = new Snmp(transportMapping); - - CommunityTarget target = new CommunityTarget(); - target.setVersion(SnmpConstants.version2c); - target.setCommunity(new OctetString("public")); - target.setAddress(new UdpAddress("127.0.0.1/" + agentv2c.getPort())); - target.setRetries(0); - target.setTimeout(500); - - try (SNMPGetter getter = new SNMPGetter(snmp, target, root)) { - List response = getter.walk(); - assertEquals(response.size(), 1); - } - } - - /** - * Method to test successful SNMP Walk in case of v1 - * @throws IOException IO Exception - * @throws TimeoutException Timeout exception - */ - @Test - public void validateSuccessfullSnmpWalkVersion1() throws IOException, TimeoutException { - DefaultUdpTransportMapping transportMapping = new DefaultUdpTransportMapping(); - transportMapping.listen(); - Snmp snmp = new Snmp(transportMapping); - - CommunityTarget target = new CommunityTarget(); - target.setVersion(SnmpConstants.version1); - target.setCommunity(new OctetString("public")); - target.setAddress(new UdpAddress("127.0.0.1/" + agentv1.getPort())); - target.setRetries(0); - target.setTimeout(500); - - try (SNMPGetter getter = new SNMPGetter(snmp, target, root)) { - List response = getter.walk(); - assertEquals(response.size(), 9); - } - } - -} diff --git a/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/SetSNMPTest.java b/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/SetSNMPTest.java deleted file mode 100644 index bec6e7e971..0000000000 --- a/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/SetSNMPTest.java +++ /dev/null @@ -1,332 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.nifi.snmp.processors; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import java.util.HashMap; -import java.util.Map; - -import org.apache.nifi.util.MockFlowFile; -import org.apache.nifi.util.TestRunner; -import org.apache.nifi.util.TestRunners; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; -import org.snmp4j.AbstractTarget; -import org.snmp4j.CommunityTarget; -import org.snmp4j.Snmp; -import org.snmp4j.agent.mo.DefaultMOFactory; -import org.snmp4j.agent.mo.MOAccessImpl; -import org.snmp4j.mp.SnmpConstants; -import org.snmp4j.smi.Integer32; -import org.snmp4j.smi.OID; -import org.snmp4j.smi.OctetString; - -/** - * Class to test SNMP Get processor - */ -public class SetSNMPTest { - - /** agent for version v1 */ - private static TestSnmpAgentV1 agentv1 = null; - /** agent for version v2c */ - private static TestSnmpAgentV2c agentv2c = null; - /** OID for system description */ - private static final OID sysDescr = new OID("1.3.6.1.2.1.1.1.0"); - /** value we set for system description at set-up */ - private static final String value = "MySystemDescr"; - /** OID for read only access */ - private static final OID readOnlyOID = new OID("1.3.6.1.2.1.1.3.0"); - /** value we set for read only at set-up */ - private static final int readOnlyValue = 1; - /** OID for write only access */ - private static final OID writeOnlyOID = new OID("1.3.6.1.2.1.1.3.0"); - /** value we set for write only at set-up */ - private static final int writeOnlyValue = 1; - - /** - * Method to set up different SNMP agents - * @throws Exception Exception - */ - @BeforeClass - public static void setUp() throws Exception { - agentv2c = new TestSnmpAgentV2c("0.0.0.0"); - agentv2c.start(); - agentv2c.unregisterManagedObject(agentv2c.getSnmpv2MIB()); - agentv2c.registerManagedObject( - DefaultMOFactory.getInstance().createScalar(sysDescr, - MOAccessImpl.ACCESS_READ_WRITE, - new OctetString(value))); - agentv2c.registerManagedObject( - DefaultMOFactory.getInstance().createScalar(readOnlyOID, - MOAccessImpl.ACCESS_READ_ONLY, - new Integer32(readOnlyValue))); - - agentv1 = new TestSnmpAgentV1("0.0.0.0"); - agentv1.start(); - agentv1.unregisterManagedObject(agentv1.getSnmpv2MIB()); - agentv1.registerManagedObject( - DefaultMOFactory.getInstance().createScalar(sysDescr, - MOAccessImpl.ACCESS_READ_WRITE, - new OctetString(value))); - agentv1.registerManagedObject( - DefaultMOFactory.getInstance().createScalar(writeOnlyOID, - MOAccessImpl.ACCESS_WRITE_ONLY, - new Integer32(writeOnlyValue))); - } - - /** - * Method to close SNMP Agent once the tests are completed - * @throws Exception Exception - */ - @AfterClass - public static void tearDown() throws Exception { - agentv1.stop(); - agentv2c.stop(); - } - - /** - * Test the type success case during a SNMP set request - * @throws Exception Exception - */ - @Test - public void successTypeSnmpSet() throws Exception { - Snmp snmp = SNMPUtilsTest.createSnmp(); - CommunityTarget target = SNMPUtilsTest.createCommTarget("public", "127.0.0.1/" + agentv1.getPort(), SnmpConstants.version1); - - SetSNMP pubProc = new LocalSetSnmp(snmp, target); - TestRunner runner = TestRunners.newTestRunner(pubProc); - - int syntax = new Integer32(writeOnlyValue).getSyntax(); - - Map attributes = new HashMap<>(); - attributes.put("foo", "bar"); - attributes.put("snmp$" + writeOnlyOID.toString() + "$" + syntax, String.valueOf(writeOnlyValue)); - runner.enqueue("".getBytes(), attributes); - - runner.setProperty(SetSNMP.HOST, "127.0.0.1"); - runner.setProperty(SetSNMP.PORT, String.valueOf(agentv1.getPort())); - runner.setProperty(SetSNMP.SNMP_COMMUNITY, "public"); - runner.setProperty(SetSNMP.SNMP_VERSION, "SNMPv1"); - - runner.run(); - Thread.sleep(200); - final MockFlowFile successFF = runner.getFlowFilesForRelationship(SetSNMP.REL_SUCCESS).get(0); - assertNotNull(successFF); - - pubProc.close(); - } - - /** - * Test the type error case during a SNMP set request - * @throws Exception Exception - */ - @Test - public void errorTypeSnmpSet() throws Exception { - Snmp snmp = SNMPUtilsTest.createSnmp(); - CommunityTarget target = SNMPUtilsTest.createCommTarget("public", "127.0.0.1/" + agentv1.getPort(), SnmpConstants.version1); - - SetSNMP pubProc = new LocalSetSnmp(snmp, target); - TestRunner runner = TestRunners.newTestRunner(pubProc); - - Map attributes = new HashMap<>(); - attributes.put("foo", "bar"); - attributes.put("snmp$" + writeOnlyOID.toString(), String.valueOf(writeOnlyValue)); - runner.enqueue("".getBytes(), attributes); - - runner.setProperty(SetSNMP.HOST, "127.0.0.1"); - runner.setProperty(SetSNMP.PORT, String.valueOf(agentv1.getPort())); - runner.setProperty(SetSNMP.SNMP_COMMUNITY, "public"); - runner.setProperty(SetSNMP.SNMP_VERSION, "SNMPv1"); - - runner.run(); - Thread.sleep(200); - assertTrue(runner.getFlowFilesForRelationship(SetSNMP.REL_SUCCESS).isEmpty()); - final MockFlowFile failFF = runner.getFlowFilesForRelationship(SetSNMP.REL_FAILURE).get(0); - assertNotNull(failFF); - assertEquals(String.valueOf(writeOnlyValue), failFF.getAttributes().get(SNMPUtils.SNMP_PROP_PREFIX + writeOnlyOID.toString())); - assertEquals("Bad value", failFF.getAttributes().get(SNMPUtils.SNMP_PROP_PREFIX + "error")); - } - - /** - * Test the unauthorized case during a SNMP set request - * @throws Exception Exception - */ - @Test - public void errorUnauthorizedSnmpSet() throws Exception { - Snmp snmp = SNMPUtilsTest.createSnmp(); - CommunityTarget target = SNMPUtilsTest.createCommTarget("public", "127.0.0.1/" + agentv2c.getPort(), SnmpConstants.version2c); - - SetSNMP pubProc = new LocalSetSnmp(snmp, target); - TestRunner runner = TestRunners.newTestRunner(pubProc); - - Map attributes = new HashMap<>(); - attributes.put("foo", "bar"); - attributes.put("snmp$" + readOnlyOID.toString(), String.valueOf(readOnlyValue)); - runner.enqueue("".getBytes(), attributes); - - runner.setProperty(SetSNMP.HOST, "127.0.0.1"); - runner.setProperty(SetSNMP.PORT, String.valueOf(agentv2c.getPort())); - runner.setProperty(SetSNMP.SNMP_COMMUNITY, "public"); - runner.setProperty(SetSNMP.SNMP_VERSION, "SNMPv2c"); - - runner.run(); - Thread.sleep(200); - assertTrue(runner.getFlowFilesForRelationship(SetSNMP.REL_SUCCESS).isEmpty()); - final MockFlowFile failFF = runner.getFlowFilesForRelationship(SetSNMP.REL_FAILURE).get(0); - assertNotNull(failFF); - assertEquals(String.valueOf(readOnlyValue), failFF.getAttributes().get(SNMPUtils.SNMP_PROP_PREFIX + readOnlyOID.toString())); - assertEquals("Not writable", failFF.getAttributes().get(SNMPUtils.SNMP_PROP_PREFIX + "error")); - } - - /** - * Test the case with no OID in incoming FlowFile during a SNMP set request - * @throws Exception Exception - */ - @Test - public void errorNoOIDSnmpSet() throws Exception { - Snmp snmp = SNMPUtilsTest.createSnmp(); - CommunityTarget target = SNMPUtilsTest.createCommTarget("public", "127.0.0.1/" + agentv2c.getPort(), SnmpConstants.version2c); - - SetSNMP pubProc = new LocalSetSnmp(snmp, target); - TestRunner runner = TestRunners.newTestRunner(pubProc); - - Map attributes = new HashMap<>(); - attributes.put("foo", "bar"); - runner.enqueue("".getBytes(), attributes); - - runner.setProperty(SetSNMP.HOST, "127.0.0.1"); - runner.setProperty(SetSNMP.PORT, String.valueOf(agentv2c.getPort())); - runner.setProperty(SetSNMP.SNMP_COMMUNITY, "public"); - runner.setProperty(SetSNMP.SNMP_VERSION, "SNMPv2c"); - - runner.run(); - Thread.sleep(200); - assertTrue(runner.getFlowFilesForRelationship(SetSNMP.REL_SUCCESS).isEmpty()); - assertTrue(runner.getFlowFilesForRelationship(SetSNMP.REL_FAILURE).size() == 1); - } - - /** - * Test the timeout case during a SNMP set request - * @throws Exception Exception - */ - @Test - public void errorTimeoutSnmpSet() throws Exception { - Snmp snmp = SNMPUtilsTest.createSnmp(); - CommunityTarget target = SNMPUtilsTest.createCommTarget("public", "127.0.0.1/" + agentv2c.getPort(), SnmpConstants.version2c); - - SetSNMP pubProc = new LocalSetSnmp(snmp, target); - TestRunner runner = TestRunners.newTestRunner(pubProc); - - Map attributes = new HashMap<>(); - attributes.put("foo", "bar"); - attributes.put("snmp$" + "1.3.6.1.2.1.1.2.0", value); - runner.enqueue("".getBytes(), attributes); - - runner.setProperty(SetSNMP.HOST, "127.0.0.1"); - runner.setProperty(SetSNMP.PORT, String.valueOf(SNMPTestUtil.availablePort())); - runner.setProperty(SetSNMP.SNMP_COMMUNITY, "public"); - runner.setProperty(SetSNMP.SNMP_VERSION, "SNMPv2c"); - - runner.run(); - Thread.sleep(200); - assertTrue(runner.getFlowFilesForRelationship(SetSNMP.REL_SUCCESS).isEmpty()); - assertTrue(runner.getFlowFilesForRelationship(SetSNMP.REL_FAILURE).size() == 1); - } - - /** - * Test the case noSuchObject during a SNMP set request - * @throws Exception Exception - */ - @Test - public void errorNotExistingOIDSnmpSet() throws Exception { - Snmp snmp = SNMPUtilsTest.createSnmp(); - CommunityTarget target = SNMPUtilsTest.createCommTarget("public", "127.0.0.1/" + agentv2c.getPort(), SnmpConstants.version2c); - - SetSNMP pubProc = new LocalSetSnmp(snmp, target); - TestRunner runner = TestRunners.newTestRunner(pubProc); - - Map attributes = new HashMap<>(); - attributes.put("foo", "bar"); - attributes.put("snmp$" + "1.3.6.1.2.1.1.2.0", value); - runner.enqueue("".getBytes(), attributes); - - runner.setProperty(SetSNMP.HOST, "127.0.0.1"); - runner.setProperty(SetSNMP.PORT, String.valueOf(agentv2c.getPort())); - runner.setProperty(SetSNMP.SNMP_COMMUNITY, "public"); - runner.setProperty(SetSNMP.SNMP_VERSION, "SNMPv2c"); - - runner.run(); - Thread.sleep(200); - assertTrue(runner.getFlowFilesForRelationship(SetSNMP.REL_SUCCESS).isEmpty()); - assertTrue(runner.getFlowFilesForRelationship(SetSNMP.REL_FAILURE).size() == 1); - final MockFlowFile failFF = runner.getFlowFilesForRelationship(SetSNMP.REL_FAILURE).get(0); - assertNotNull(failFF); - assertEquals("Not writable", failFF.getAttributes().get(SNMPUtils.SNMP_PROP_PREFIX + "error")); - } - - /** - * Test the case with not existing community during a SNMP set request - * @throws Exception Exception - */ - @Test - public void errorCommunitySnmpSet() throws Exception { - Snmp snmp = SNMPUtilsTest.createSnmp(); - CommunityTarget target = SNMPUtilsTest.createCommTarget("errorCommunity", "127.0.0.1/" + agentv2c.getPort(), SnmpConstants.version2c); - - SetSNMP pubProc = new LocalSetSnmp(snmp, target); - TestRunner runner = TestRunners.newTestRunner(pubProc); - - Map attributes = new HashMap<>(); - attributes.put("foo", "bar"); - attributes.put("snmp$" + sysDescr, value); - runner.enqueue("".getBytes(), attributes); - - runner.setProperty(SetSNMP.HOST, "127.0.0.1"); - runner.setProperty(SetSNMP.PORT, String.valueOf(agentv2c.getPort())); - runner.setProperty(SetSNMP.SNMP_COMMUNITY, "errorCommunity"); - runner.setProperty(SetSNMP.SNMP_VERSION, "SNMPv2c"); - - runner.run(); - Thread.sleep(200); - assertTrue(runner.getFlowFilesForRelationship(SetSNMP.REL_SUCCESS).isEmpty()); - assertTrue(runner.getFlowFilesForRelationship(SetSNMP.REL_FAILURE).size() == 1); - } - - /** - * Local extension of SNMP Getter - */ - private class LocalSetSnmp extends SetSNMP { - /** SNMP */ - private Snmp snmp; - /** Target to request */ - private AbstractTarget target; - /** - * Constructor - * @param snmp SNMP - * @param target Target - */ - public LocalSetSnmp(Snmp snmp, AbstractTarget target) { - this.snmp = snmp; - this.target = target; - } - } - -} diff --git a/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/TestSnmpAgentV1.java b/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/TestSnmpAgentV1.java deleted file mode 100644 index 7d78003564..0000000000 --- a/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/TestSnmpAgentV1.java +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.nifi.snmp.processors; - - -import java.io.File; -import java.io.IOException; -import org.snmp4j.TransportMapping; -import org.snmp4j.agent.BaseAgent; -import org.snmp4j.agent.CommandProcessor; -import org.snmp4j.agent.DuplicateRegistrationException; -import org.snmp4j.agent.MOGroup; -import org.snmp4j.agent.ManagedObject; -import org.snmp4j.agent.mo.MOTableRow; -import org.snmp4j.agent.mo.snmp.RowStatus; -import org.snmp4j.agent.mo.snmp.SnmpCommunityMIB; -import org.snmp4j.agent.mo.snmp.SnmpNotificationMIB; -import org.snmp4j.agent.mo.snmp.SnmpTargetMIB; -import org.snmp4j.agent.mo.snmp.StorageType; -import org.snmp4j.agent.mo.snmp.VacmMIB; -import org.snmp4j.agent.security.MutableVACM; -import org.snmp4j.log.Log4jLogFactory; -import org.snmp4j.log.LogFactory; -import org.snmp4j.mp.MPv3; -import org.snmp4j.security.SecurityLevel; -import org.snmp4j.security.SecurityModel; -import org.snmp4j.security.USM; -import org.snmp4j.smi.Address; -import org.snmp4j.smi.GenericAddress; -import org.snmp4j.smi.Integer32; -import org.snmp4j.smi.OID; -import org.snmp4j.smi.OctetString; -import org.snmp4j.smi.Variable; -import org.snmp4j.transport.TransportMappings; - -/** - * This Agent contains minimal functionality for running a version 1 SNMP agent. - */ -public class TestSnmpAgentV1 extends BaseAgent { - - // not needed but very useful of course - static { - LogFactory.setLogFactory(new Log4jLogFactory()); - } - - /** address */ - private String address; - /** port */ - private int port; - - /** constructor - * @param address address - * @throws IOException IO Exception - */ - public TestSnmpAgentV1(String address) throws IOException { - // These files have to be specified - // Read snmp4j doc for more info - super(new File("target/conf1.agent"), new File("target/bootCounter1.agent"), new CommandProcessor(new OctetString(MPv3.createLocalEngineID()))); - this.port = SNMPTestUtil.availablePort(); - this.address = address + "/" + port; - } - - /** - * We let clients of this agent register the MO they - * need so this method does nothing - */ - @Override - protected void registerManagedObjects() { - } - - /** - * Clients can register the MO they need - * @param mo managed object - */ - public void registerManagedObject(ManagedObject mo) { - try { - this.server.register(mo, null); - } catch (DuplicateRegistrationException ex) { - throw new RuntimeException(ex); - } - } - - /** Method used to unregister objects - * @param moGroup group to unregister - */ - public void unregisterManagedObject(MOGroup moGroup) { - moGroup.unregisterMOs(this.server, this.getContext(moGroup)); - } - - /** - * @see org.snmp4j.agent.BaseAgent#addNotificationTargets(org.snmp4j.agent.mo.snmp.SnmpTargetMIB, org.snmp4j.agent.mo.snmp.SnmpNotificationMIB) - */ - @Override - protected void addNotificationTargets(SnmpTargetMIB targetMIB, SnmpNotificationMIB notificationMIB) { - /** nothing to do */ - } - - /** - * Minimal View based Access Control - * http://www.faqs.org/rfcs/rfc2575.html - */ - @Override - protected void addViews(VacmMIB vacm) { - - vacm.addGroup(SecurityModel.SECURITY_MODEL_SNMPv1, - new OctetString("cpublic"), - new OctetString("v1v2group"), - StorageType.nonVolatile); - - vacm.addAccess(new OctetString("v1v2group"), - new OctetString("public"), - SecurityModel.SECURITY_MODEL_ANY, - SecurityLevel.NOAUTH_NOPRIV, - MutableVACM.VACM_MATCH_EXACT, - new OctetString("fullReadView"), - new OctetString("fullWriteView"), - new OctetString("fullNotifyView"), - StorageType.nonVolatile); - - vacm.addViewTreeFamily(new OctetString("fullReadView"), - new OID("1.3"), - new OctetString(), - VacmMIB.vacmViewIncluded, - StorageType.nonVolatile); - vacm.addViewTreeFamily(new OctetString("fullWriteView"), - new OID("1.3"), - new OctetString(), - VacmMIB.vacmViewIncluded, - StorageType.nonVolatile); - vacm.addViewTreeFamily(new OctetString("fullNotifyView"), - new OID("1.3"), - new OctetString(), - VacmMIB.vacmViewIncluded, - StorageType.nonVolatile); - } - - /** - * User based Security Model, only applicable to SNMP v.3 - */ - @Override - protected void addUsmUser(USM usm) { - /** nothing to do */ - } - - /** - * @see org.snmp4j.agent.BaseAgent#initTransportMappings() - */ - @Override - protected void initTransportMappings() throws IOException { - this.transportMappings = new TransportMapping[1]; - Address addr = GenericAddress.parse(this.address); - TransportMapping tm = TransportMappings.getInstance().createTransportMapping(addr); - this.transportMappings[0] = tm; - } - - /** - * Start method invokes some initialization methods needed to - * start the agent - * @throws IOException IO Exception - */ - public void start() throws IOException { - this.init(); - this.addShutdownHook(); - this.getServer().addContext(new OctetString("public")); - this.finishInit(); - this.run(); - this.sendColdStartNotification(); - } - - /** - * @see org.snmp4j.agent.BaseAgent#unregisterManagedObjects() - */ - @Override - protected void unregisterManagedObjects() { - /** nothing to do */ - } - - /** - * The table of community strings configured in the SNMP - * engine's Local Configuration Datastore (LCD). - * - * We only configure one, "public". - */ - @Override - protected void addCommunities(SnmpCommunityMIB communityMIB) { - Variable[] com2sec = new Variable[] { - new OctetString("public"), // community name - new OctetString("cpublic"), // security name - this.getAgent().getContextEngineID(), // local engine ID - new OctetString("public"), // default context name - new OctetString(), // transport tag - new Integer32(StorageType.nonVolatile), // storage type - new Integer32(RowStatus.active) // row status - }; - - MOTableRow row = communityMIB.getSnmpCommunityEntry().createRow(new OctetString("public2public").toSubIndex(true), com2sec); - - communityMIB.getSnmpCommunityEntry().addRow(row); - } - - public int getPort() { - return port; - } -} diff --git a/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/TestSnmpAgentV2c.java b/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/TestSnmpAgentV2c.java deleted file mode 100644 index 8e8d127350..0000000000 --- a/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/TestSnmpAgentV2c.java +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.nifi.snmp.processors; - - -import java.io.File; -import java.io.IOException; - -import org.snmp4j.TransportMapping; -import org.snmp4j.agent.BaseAgent; -import org.snmp4j.agent.CommandProcessor; -import org.snmp4j.agent.DuplicateRegistrationException; -import org.snmp4j.agent.MOGroup; -import org.snmp4j.agent.ManagedObject; -import org.snmp4j.agent.mo.MOTableRow; -import org.snmp4j.agent.mo.snmp.RowStatus; -import org.snmp4j.agent.mo.snmp.SnmpCommunityMIB; -import org.snmp4j.agent.mo.snmp.SnmpNotificationMIB; -import org.snmp4j.agent.mo.snmp.SnmpTargetMIB; -import org.snmp4j.agent.mo.snmp.StorageType; -import org.snmp4j.agent.mo.snmp.VacmMIB; -import org.snmp4j.agent.security.MutableVACM; -import org.snmp4j.log.Log4jLogFactory; -import org.snmp4j.log.LogFactory; -import org.snmp4j.mp.MPv3; -import org.snmp4j.security.SecurityLevel; -import org.snmp4j.security.SecurityModel; -import org.snmp4j.security.USM; -import org.snmp4j.smi.Address; -import org.snmp4j.smi.GenericAddress; -import org.snmp4j.smi.Integer32; -import org.snmp4j.smi.OID; -import org.snmp4j.smi.OctetString; -import org.snmp4j.smi.Variable; -import org.snmp4j.transport.TransportMappings; - -/** - * This Agent contains minimal functionality for running a version 2c SNMP agent. - */ -public class TestSnmpAgentV2c extends BaseAgent { - - // not needed but very useful of course - static { - LogFactory.setLogFactory(new Log4jLogFactory()); - } - - /** address */ - private String address; - /** port */ - private int port; - - /** constructor - * @param address address - * @throws IOException IO Exception - */ - public TestSnmpAgentV2c(String address) throws IOException { - // These files have to be specified - // Read snmp4j doc for more info - super(new File("target/conf2.agent"), new File("target/bootCounter2.agent"), new CommandProcessor(new OctetString(MPv3.createLocalEngineID()))); - this.port = SNMPTestUtil.availablePort(); - this.address = address + "/" + port; - } - - /** - * We let clients of this agent register the MO they - * need so this method does nothing - */ - @Override - protected void registerManagedObjects() { - } - - /** - * Clients can register the MO they need - * @param mo managed object - */ - public void registerManagedObject(ManagedObject mo) { - try { - this.server.register(mo, null); - } catch (DuplicateRegistrationException ex) { - throw new RuntimeException(ex); - } - } - - /** Method used to unregister objects - * @param moGroup group to unregister - */ - public void unregisterManagedObject(MOGroup moGroup) { - moGroup.unregisterMOs(this.server, this.getContext(moGroup)); - } - - /** - * @see org.snmp4j.agent.BaseAgent#addNotificationTargets(org.snmp4j.agent.mo.snmp.SnmpTargetMIB, org.snmp4j.agent.mo.snmp.SnmpNotificationMIB) - */ - @Override - protected void addNotificationTargets(SnmpTargetMIB targetMIB, SnmpNotificationMIB notificationMIB) { - /** nothing to do */ - } - - /** - * Minimal View based Access Control - * http://www.faqs.org/rfcs/rfc2575.html - */ - @Override - protected void addViews(VacmMIB vacm) { - - vacm.addGroup(SecurityModel.SECURITY_MODEL_SNMPv2c, - new OctetString("cpublic"), - new OctetString("v1v2group"), - StorageType.nonVolatile); - - vacm.addAccess(new OctetString("v1v2group"), - new OctetString("public"), - SecurityModel.SECURITY_MODEL_ANY, - SecurityLevel.NOAUTH_NOPRIV, - MutableVACM.VACM_MATCH_EXACT, - new OctetString("fullReadView"), - new OctetString("fullWriteView"), - new OctetString("fullNotifyView"), - StorageType.nonVolatile); - - vacm.addViewTreeFamily(new OctetString("fullReadView"), - new OID("1.3"), - new OctetString(), - VacmMIB.vacmViewIncluded, - StorageType.nonVolatile); - vacm.addViewTreeFamily(new OctetString("fullWriteView"), - new OID("1.3"), - new OctetString(), - VacmMIB.vacmViewIncluded, - StorageType.nonVolatile); - vacm.addViewTreeFamily(new OctetString("fullNotifyView"), - new OID("1.3"), - new OctetString(), - VacmMIB.vacmViewIncluded, - StorageType.nonVolatile); - } - - /** - * User based Security Model, only applicable to SNMP v.3 - */ - @Override - protected void addUsmUser(USM usm) { - /** nothing to do */ - } - - /** - * @see org.snmp4j.agent.BaseAgent#initTransportMappings() - */ - @Override - protected void initTransportMappings() throws IOException { - this.transportMappings = new TransportMapping[1]; - Address addr = GenericAddress.parse(this.address); - TransportMapping tm = TransportMappings.getInstance().createTransportMapping(addr); - this.transportMappings[0] = tm; - } - - /** - * Start method invokes some initialization methods needed to - * start the agent - * @throws IOException IO Exception - */ - public void start() throws IOException { - this.init(); - this.addShutdownHook(); - this.getServer().addContext(new OctetString("public")); - this.finishInit(); - this.run(); - this.sendColdStartNotification(); - } - - /** - * @see org.snmp4j.agent.BaseAgent#unregisterManagedObjects() - */ - @Override - protected void unregisterManagedObjects() { - /** nothing to do */ - } - - /** - * The table of community strings configured in the SNMP - * engine's Local Configuration Datastore (LCD). - * - * We only configure one, "public". - */ - @Override - protected void addCommunities(SnmpCommunityMIB communityMIB) { - Variable[] com2sec = new Variable[] { - new OctetString("public"), // community name - new OctetString("cpublic"), // security name - this.getAgent().getContextEngineID(), // local engine ID - new OctetString("public"), // default context name - new OctetString(), // transport tag - new Integer32(StorageType.nonVolatile), // storage type - new Integer32(RowStatus.active) // row status - }; - - MOTableRow row = communityMIB.getSnmpCommunityEntry().createRow(new OctetString("public2public").toSubIndex(true), com2sec); - - communityMIB.getSnmpCommunityEntry().addRow(row); - } - - public int getPort() { - return port; - } -} diff --git a/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/TestSnmpAgentV3.java b/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/TestSnmpAgentV3.java deleted file mode 100644 index 61e987e7ad..0000000000 --- a/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/TestSnmpAgentV3.java +++ /dev/null @@ -1,255 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.nifi.snmp.processors; - -import java.io.File; -import java.io.IOException; - -import org.apache.log4j.BasicConfigurator; -import org.snmp4j.TransportMapping; -import org.snmp4j.agent.BaseAgent; -import org.snmp4j.agent.CommandProcessor; -import org.snmp4j.agent.io.ImportModes; -import org.snmp4j.agent.mo.MOTableRow; -import org.snmp4j.agent.mo.snmp.RowStatus; -import org.snmp4j.agent.mo.snmp.SnmpCommunityMIB; -import org.snmp4j.agent.mo.snmp.SnmpNotificationMIB; -import org.snmp4j.agent.mo.snmp.SnmpTargetMIB; -import org.snmp4j.agent.mo.snmp.StorageType; -import org.snmp4j.agent.mo.snmp.VacmMIB; -import org.snmp4j.agent.security.MutableVACM; -import org.snmp4j.log.Log4jLogFactory; -import org.snmp4j.log.LogFactory; -import org.snmp4j.security.AuthMD5; -import org.snmp4j.security.AuthSHA; -import org.snmp4j.security.PrivAES128; -import org.snmp4j.security.PrivDES; -import org.snmp4j.security.SecurityLevel; -import org.snmp4j.security.SecurityModel; -import org.snmp4j.security.USM; -import org.snmp4j.security.UsmUser; -import org.snmp4j.smi.Address; -import org.snmp4j.smi.GenericAddress; -import org.snmp4j.smi.Integer32; -import org.snmp4j.smi.OID; -import org.snmp4j.smi.OctetString; -import org.snmp4j.smi.Variable; -import org.snmp4j.transport.TransportMappings; -import org.snmp4j.util.ThreadPool; - -/** - * The TestAgent is a sample SNMP agent implementation of all - * features (MIB implementations) provided by the SNMP4J-Agent framework. - * The TestAgent extends the BaseAgent which provides - * a framework for custom agent implementations through hook methods. Those - * abstract hook methods need to be implemented by extending the - * BaseAgent. - *

- * This IF-MIB implementation part of this test agent, is instrumentation as - * a simulation MIB. Thus, by changing the agentppSimMode - * (1.3.6.1.4.1.4976.2.1.1.0) from 'oper(1)' to 'config(2)' any object of the - * IF-MIB is writable and even creatable (columnar objects) via SNMP. Check it - * out! - * - * @author Frank Fock - * @version 1.0 - */ -public class TestSnmpAgentV3 extends BaseAgent { - - // initialize Log4J logging - static { - LogFactory.setLogFactory(new Log4jLogFactory()); - } - - /** address */ - protected String address; - - /** - * Creates the test agent with a file to read and store the boot counter and - * a file to read and store its configuration. - * - * @param bootCounterFile - * a file containing the boot counter in serialized form (as expected by - * BaseAgent). - * @param configFile - * a configuration file with serialized management information. - * @throws IOException - * if the boot counter or config file cannot be read properly. - */ - public TestSnmpAgentV3(File bootCounterFile, File configFile) throws IOException { - super(bootCounterFile, configFile, new CommandProcessor(OctetString.fromHexString("00:00:00:00:00:00:02", ':'))); - this.agent.setWorkerPool(ThreadPool.create("RequestPool", 4)); - } - - /** - * @see org.snmp4j.agent.BaseAgent#registerManagedObjects() - */ - @Override - protected void registerManagedObjects() { - /** nothing to do */ - } - - /** - * @see org.snmp4j.agent.BaseAgent#addNotificationTargets(org.snmp4j.agent.mo.snmp.SnmpTargetMIB, org.snmp4j.agent.mo.snmp.SnmpNotificationMIB) - */ - @Override - protected void addNotificationTargets(SnmpTargetMIB targetMIB, SnmpNotificationMIB notificationMIB) { - /** nothing to do */ - } - - /** - * @see org.snmp4j.agent.BaseAgent#addViews(org.snmp4j.agent.mo.snmp.VacmMIB) - */ - @Override - protected void addViews(VacmMIB vacm) { - vacm.addGroup(SecurityModel.SECURITY_MODEL_USM, - new OctetString("SHADES"), - new OctetString("v3group"), - StorageType.nonVolatile); - vacm.addGroup(SecurityModel.SECURITY_MODEL_USM, - new OctetString("MD5DES"), - new OctetString("v3group"), - StorageType.nonVolatile); - vacm.addGroup(SecurityModel.SECURITY_MODEL_USM, - new OctetString("SHAAES128"), - new OctetString("v3group"), - StorageType.nonVolatile); - vacm.addAccess(new OctetString("v3group"), new OctetString(), - SecurityModel.SECURITY_MODEL_USM, - SecurityLevel.AUTH_PRIV, - MutableVACM.VACM_MATCH_EXACT, - new OctetString("fullReadView"), - new OctetString("fullWriteView"), - new OctetString("fullNotifyView"), - StorageType.nonVolatile); - vacm.addViewTreeFamily(new OctetString("fullReadView"), new OID("1.3"), - new OctetString(), VacmMIB.vacmViewIncluded, - StorageType.nonVolatile); - vacm.addViewTreeFamily(new OctetString("fullWriteView"), new OID("1.3"), - new OctetString(), VacmMIB.vacmViewIncluded, - StorageType.nonVolatile); - vacm.addViewTreeFamily(new OctetString("fullNotifyView"), new OID("1.3"), - new OctetString(), VacmMIB.vacmViewIncluded, - StorageType.nonVolatile); - } - - /** - * @see org.snmp4j.agent.BaseAgent#addUsmUser(org.snmp4j.security.USM) - */ - @Override - protected void addUsmUser(USM usm) { - UsmUser user = new UsmUser(new OctetString("SHA"), - AuthSHA.ID, - new OctetString("SHAAuthPassword"), - null, - null); - usm.addUser(user.getSecurityName(), usm.getLocalEngineID(), user); - user = new UsmUser(new OctetString("SHADES"), - AuthSHA.ID, - new OctetString("SHADESAuthPassword"), - PrivDES.ID, - new OctetString("SHADESPrivPassword")); - usm.addUser(user.getSecurityName(), usm.getLocalEngineID(), user); - user = new UsmUser(new OctetString("MD5DES"), - AuthMD5.ID, - new OctetString("MD5DESAuthPassword"), - PrivDES.ID, - new OctetString("MD5DESPrivPassword")); - usm.addUser(user.getSecurityName(), usm.getLocalEngineID(), user); - user = new UsmUser(new OctetString("SHAAES128"), - AuthSHA.ID, - new OctetString("SHAAES128AuthPassword"), - PrivAES128.ID, - new OctetString("SHAAES128PrivPassword")); - usm.addUser(user.getSecurityName(), usm.getLocalEngineID(), user); - } - - /** - * @see org.snmp4j.agent.BaseAgent#initTransportMappings() - */ - @Override - protected void initTransportMappings() throws IOException { - this.transportMappings = new TransportMapping[1]; - Address addr = GenericAddress.parse(this.address); - TransportMapping tm = TransportMappings.getInstance().createTransportMapping(addr); - this.transportMappings[0] = tm; - } - - /** - * Method to run agent - * @param args arguments - */ - public static void main(String[] args) { - String address = args[0] + "/" + SNMPTestUtil.availablePort();; - BasicConfigurator.configure(); - try { - TestSnmpAgentV3 testAgent1 = new TestSnmpAgentV3(new File("target/SNMP4JTestAgentBC.cfg"), - new File("target/SNMP4JTestAgentConfig.cfg")); - testAgent1.address = address; - testAgent1.init(); - testAgent1.loadConfig(ImportModes.REPLACE_CREATE); - testAgent1.addShutdownHook(); - testAgent1.getServer().addContext(new OctetString("public")); - testAgent1.finishInit(); - testAgent1.run(); - testAgent1.sendColdStartNotification(); - while (true) { - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - break; - } - } - } catch (IOException ex) { - ex.printStackTrace(); - } - } - - /** - * @see org.snmp4j.agent.BaseAgent#unregisterManagedObjects() - */ - @Override - protected void unregisterManagedObjects() { - /** nothing to do */ - } - - /** - * @see org.snmp4j.agent.BaseAgent#addCommunities(org.snmp4j.agent.mo.snmp.SnmpCommunityMIB) - */ - @Override - protected void addCommunities(SnmpCommunityMIB communityMIB) { - Variable[] com2sec = new Variable[] { - new OctetString("public"), // community name - new OctetString("cpublic"), // security name - this.getAgent().getContextEngineID(), // local engine ID - new OctetString("public"), // default context name - new OctetString(), // transport tag - new Integer32(StorageType.nonVolatile), // storage type - new Integer32(RowStatus.active) // row status - }; - MOTableRow row = communityMIB.getSnmpCommunityEntry().createRow(new OctetString("public2public").toSubIndex(true), com2sec); - communityMIB.getSnmpCommunityEntry().addRow(row); - } - - /** - * @see org.snmp4j.agent.BaseAgent#registerSnmpMIBs() - */ - @Override - protected void registerSnmpMIBs() { - super.registerSnmpMIBs(); - } -} diff --git a/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/WalkSNMPTest.java b/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/WalkSNMPTest.java deleted file mode 100644 index 356c48f99e..0000000000 --- a/nifi-nar-bundles/nifi-snmp-bundle/nifi-snmp-processors/src/test/java/org/apache/nifi/snmp/processors/WalkSNMPTest.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You 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. - */ -package org.apache.nifi.snmp.processors; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import org.apache.nifi.util.MockFlowFile; -import org.apache.nifi.util.TestRunner; -import org.apache.nifi.util.TestRunners; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.Test; -import org.snmp4j.AbstractTarget; -import org.snmp4j.CommunityTarget; -import org.snmp4j.Snmp; -import org.snmp4j.mp.SnmpConstants; -import org.snmp4j.smi.OID; - -/** - * Class to test SNMP Get processor - */ -public class WalkSNMPTest { - - /** agent for test with SNMP v1 */ - private static TestSnmpAgentV1 agentv1 = null; - - /** Root OID to perform a WALK */ - private static final OID root = new OID("1.3.6.1.2.1.1"); - - /** - * Method to set up different SNMP agents - * @throws Exception Exception - */ - @BeforeClass - public static void setUp() throws Exception { - agentv1 = new TestSnmpAgentV1("0.0.0.0"); - agentv1.start(); - } - - /** - * Method to close SNMP Agent once the tests are completed - * @throws Exception Exception - */ - @AfterClass - public static void tearDown() throws Exception { - agentv1.stop(); - } - - /** - * Method to test successful SNMP Walk in case of v1 - * @throws Exception Exception - */ - @Test - public void validateSuccessfullSnmpWalkVersion1() throws Exception { - Snmp snmp = SNMPUtilsTest.createSnmp(); - CommunityTarget target = SNMPUtilsTest.createCommTarget("public", "127.0.0.1/" + agentv1.getPort(), SnmpConstants.version1); - - GetSNMP pubProc = new LocalGetSnmp(snmp, target); - TestRunner runner = TestRunners.newTestRunner(pubProc); - - runner.setProperty(GetSNMP.OID, root.toString()); - runner.setProperty(GetSNMP.SNMP_STRATEGY, "WALK"); - runner.setProperty(GetSNMP.HOST, "127.0.0.1"); - runner.setProperty(GetSNMP.PORT, String.valueOf(agentv1.getPort())); - runner.setProperty(GetSNMP.SNMP_COMMUNITY, "public"); - runner.setProperty(GetSNMP.SNMP_VERSION, "SNMPv1"); - - runner.run(); - Thread.sleep(200); - final MockFlowFile successFF = runner.getFlowFilesForRelationship(GetSNMP.REL_SUCCESS).get(0); - assertNotNull(successFF); - - int i = 0; - for (String attributeKey : successFF.getAttributes().keySet()) { - if(attributeKey.startsWith(SNMPUtils.SNMP_PROP_PREFIX)) { - i++; - } - } - assertEquals(8,i); - - } - - /** - * Local extension of SNMP Getter - */ - private class LocalGetSnmp extends GetSNMP { - /** SNMP */ - private Snmp snmp; - /** Target to request */ - private AbstractTarget target; - /** - * Constructor - * @param snmp SNMP - * @param target Target - */ - public LocalGetSnmp(Snmp snmp, AbstractTarget target) { - this.snmp = snmp; - this.target = target; - } - } - -}