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