blob: d63c0fe766cb7643e41cc4bd12ba3b112261a272 [file] [log] [blame]
kmcpeakeb172d5f2015-12-10 11:30:43 +00001/*
Brian O'Connor7cbbbb72016-04-09 02:13:23 -07002 * Copyright 2015-present Open Networking Laboratory
3 *
kmcpeakeb172d5f2015-12-10 11:30:43 +00004 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
Brian O'Connor7cbbbb72016-04-09 02:13:23 -07008 * http://www.apache.org/licenses/LICENSE-2.0
kmcpeakeb172d5f2015-12-10 11:30:43 +00009 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.provider.snmp.alarm.impl;
17
18import com.btisystems.mibbler.mibs.netsnmp.interfaces.mib_2.interfaces.iftable.IIfEntry;
19import com.btisystems.mibbler.mibs.netsnmp.netsnmp.mib_2.interfaces.IfTable;
20import com.btisystems.pronx.ems.core.model.NetworkDevice;
21import com.btisystems.pronx.ems.core.snmp.ISnmpSession;
22import java.io.IOException;
23import java.net.InetAddress;
24import java.net.UnknownHostException;
25import java.util.Arrays;
26import java.util.Collection;
27import org.easymock.Capture;
28import static org.easymock.EasyMock.capture;
29import static org.easymock.EasyMock.createMock;
30import static org.easymock.EasyMock.eq;
31import static org.easymock.EasyMock.expect;
32import static org.easymock.EasyMock.isA;
33import static org.easymock.EasyMock.replay;
34import static org.easymock.EasyMock.verify;
35import org.junit.Before;
36import org.junit.Test;
37import static org.junit.Assert.*;
38import org.onosproject.incubator.net.faultmanagement.alarm.Alarm;
39import org.onosproject.net.DeviceId;
40import org.snmp4j.smi.OID;
41
42
43public class NetSnmpSnmpAlarmProviderTest {
44 private NetSnmpAlarmProvider alarmProvider;
45 private ISnmpSession mockSession;
46 private IfTable interfaceTable;
47
48 public NetSnmpSnmpAlarmProviderTest() {
49 }
50
51 @Before
52 public void setUp() {
53 mockSession = createMock(ISnmpSession.class);
54
55 alarmProvider = new NetSnmpAlarmProvider();
56 }
57
58 @Test
59 public void shouldWalkDevice() throws UnknownHostException, IOException {
60 expect(mockSession.getAddress()).andReturn(InetAddress.getLoopbackAddress());
61 expect(mockSession.walkDevice(isA(NetworkDevice.class),
62 eq(Arrays.asList(new OID[]{
63 NetSnmpAlarmProvider.CLASS_REGISTRY.getClassToOidMap().get(IfTable.class)}))))
64 .andReturn(null);
65
66 replay(mockSession);
67
68 assertNotNull(alarmProvider.getAlarms(mockSession, DeviceId.deviceId("snmp:1.1.1.1")));
69
70 verify(mockSession);
71 }
72
73 @Test
74 public void shouldFindAlarms() throws UnknownHostException, IOException {
75 interfaceTable = new IfTable();
76 interfaceTable.createEntry("1");
77 IIfEntry entry = interfaceTable.getEntry("1");
78 entry.setIfDescr("eth1");
79 entry.setIfAdminStatus(1);
80 entry.setIfOperStatus(2);
81
82 Capture<NetworkDevice> networkDeviceCapture = new Capture<>();
83
84 expect(mockSession.getAddress()).andReturn(InetAddress.getLoopbackAddress());
85 expect(mockSession.walkDevice(capture(networkDeviceCapture),
86 eq(Arrays.asList(new OID[]{
87 NetSnmpAlarmProvider.CLASS_REGISTRY.getClassToOidMap().get(IfTable.class)}))))
88 .andAnswer(() -> {
89 networkDeviceCapture.getValue().getRootObject().setObject(interfaceTable);
90 return null;
91 });
92
93 replay(mockSession);
94
95 Collection<Alarm> alarms = alarmProvider.getAlarms(mockSession, DeviceId.deviceId("snmp:1.1.1.1"));
96 assertEquals(1, alarms.size());
97 assertEquals("Link Down.", alarms.iterator().next().description());
98 verify(mockSession);
99 }
100
101 @Test
102 public void shouldHandleException() throws UnknownHostException, IOException {
103 expect(mockSession.getAddress()).andReturn(InetAddress.getLoopbackAddress());
104 expect(mockSession.walkDevice(isA(NetworkDevice.class),
105 eq(Arrays.asList(new OID[]{
106 NetSnmpAlarmProvider.CLASS_REGISTRY.getClassToOidMap().get(IfTable.class)}))))
107 .andThrow(new IOException());
108
109 replay(mockSession);
110
111 assertNotNull(alarmProvider.getAlarms(mockSession, DeviceId.deviceId("snmp:1.1.1.1")));
112
113 verify(mockSession);
114 }
115
116}