blob: 5998242af1884ca3f3ae185469b0e3838a5e3ffd [file] [log] [blame]
/*
* 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.factory.core;
import org.apache.nifi.remote.io.socket.NetworkUtils;
import org.apache.nifi.snmp.configuration.SNMPConfiguration;
import org.apache.nifi.util.StringUtils;
import org.junit.Test;
import org.snmp4j.CommunityTarget;
import org.snmp4j.Snmp;
import org.snmp4j.Target;
import org.snmp4j.security.SecurityLevel;
import static org.apache.nifi.snmp.helper.configurations.SNMPConfigurationFactory.DEFAULT_HOST;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.IsInstanceOf.instanceOf;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
public class V1V2cSNMPFactoryTest {
private static final int RETRIES = 3;
@Test
public void testFactoryCreatesV1V2Configuration() {
final V1V2cSNMPFactory snmpFactory = new V1V2cSNMPFactory();
final int managerPort = NetworkUtils.getAvailableUdpPort();
final String targetPort = String.valueOf(NetworkUtils.getAvailableUdpPort());
final SNMPConfiguration snmpConfiguration = getSnmpConfiguration(managerPort, targetPort);
final Target target = snmpFactory.createTargetInstance(snmpConfiguration);
assertThat(target, instanceOf(CommunityTarget.class));
assertEquals(DEFAULT_HOST + "/" + targetPort, target.getAddress().toString());
assertEquals(RETRIES, target.getRetries());
assertEquals(1, target.getSecurityLevel());
assertEquals(StringUtils.EMPTY, target.getSecurityName().toString());
}
@Test
public void testFactoryCreatesSnmpManager() {
final V1V2cSNMPFactory snmpFactory = new V1V2cSNMPFactory();
final int managerPort = NetworkUtils.getAvailableUdpPort();
final String targetPort = String.valueOf(NetworkUtils.getAvailableUdpPort());
final SNMPConfiguration snmpConfiguration = getSnmpConfiguration(managerPort, targetPort);
final Snmp snmpManager = snmpFactory.createSnmpManagerInstance(snmpConfiguration);
final String address = snmpManager.getMessageDispatcher().getTransportMappings().iterator().next().getListenAddress().toString();
assertEquals(DEFAULT_HOST + "/" + managerPort, address);
}
@Test
public void testFactoryCreatesResourceHandler() {
final V1V2cSNMPFactory snmpFactory = spy(V1V2cSNMPFactory.class);
final int managerPort = NetworkUtils.getAvailableUdpPort();
final String targetPort = String.valueOf(NetworkUtils.getAvailableUdpPort());
final SNMPConfiguration snmpConfiguration = getSnmpConfiguration(managerPort, targetPort);
snmpFactory.createSNMPResourceHandler(snmpConfiguration);
verify(snmpFactory).createTargetInstance(snmpConfiguration);
verify(snmpFactory).createSnmpManagerInstance(snmpConfiguration);
}
private SNMPConfiguration getSnmpConfiguration(int managerPort, String targetPort) {
return new SNMPConfiguration.Builder()
.setRetries(RETRIES)
.setManagerPort(managerPort)
.setTargetHost(DEFAULT_HOST)
.setTargetPort(targetPort)
.setSecurityLevel(SecurityLevel.noAuthNoPriv.name())
.build();
}
}