blob: ea84627aaac2cf46ba8721c9329c9faea6a48cc9 [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.bti7000.bti7000_13_2_0.btisystems.btiproducts.bti7000.objects.conditions.ActAlarmTable;
19import com.btisystems.mibbler.mibs.bti7000.interfaces.btisystems.btiproducts.bti7000.objects.conditions.actalarmtable.IActAlarmEntry;
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 Bti7000SnmpAlarmProviderTest {
44 private Bti7000SnmpAlarmProvider alarmProvider;
45 private ISnmpSession mockSession;
46 private ActAlarmTable alarmsTable;
47
48 public Bti7000SnmpAlarmProviderTest() {
49 }
50
51 @Before
52 public void setUp() {
53 mockSession = createMock(ISnmpSession.class);
54
55 alarmProvider = new Bti7000SnmpAlarmProvider();
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 Bti7000SnmpAlarmProvider.CLASS_REGISTRY.getClassToOidMap().get(ActAlarmTable.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 alarmsTable = new ActAlarmTable();
76 alarmsTable.createEntry("14.1.3.6.1.4.1.18070.2.2.2.2.20.0.1.13.1.3.6.1.4.1."
77 + "18070.2.2.1.4.14.1.7.49.46.55.46.50.46.53");
78 IActAlarmEntry entry = alarmsTable.getEntries().values().iterator().next();
79 entry.setActAlarmDescription("XFP Missing.");
80 entry.setActAlarmDateAndTime("07:df:0c:01:03:0d:30:00");
81 entry.setActAlarmSeverity(1);
82
83 Capture<NetworkDevice> networkDeviceCapture = new Capture<>();
84
85 expect(mockSession.getAddress()).andReturn(InetAddress.getLoopbackAddress());
86 expect(mockSession.walkDevice(capture(networkDeviceCapture),
87 eq(Arrays.asList(new OID[]{
88 Bti7000SnmpAlarmProvider.CLASS_REGISTRY.getClassToOidMap().get(ActAlarmTable.class)}))))
89 .andAnswer(() -> {
90 networkDeviceCapture.getValue().getRootObject().setObject(alarmsTable);
91 return null;
92 });
93
94 replay(mockSession);
95
96 Collection<Alarm> alarms = alarmProvider.getAlarms(mockSession, DeviceId.deviceId("snmp:1.1.1.1"));
97 assertEquals(1, alarms.size());
98 assertEquals("XFP Missing.", alarms.iterator().next().description());
99 verify(mockSession);
100 }
101
102 @Test
103 public void shouldHandleException() throws UnknownHostException, IOException {
104 expect(mockSession.getAddress()).andReturn(InetAddress.getLoopbackAddress());
105 expect(mockSession.walkDevice(isA(NetworkDevice.class),
106 eq(Arrays.asList(new OID[]{
107 Bti7000SnmpAlarmProvider.CLASS_REGISTRY.getClassToOidMap().get(ActAlarmTable.class)}))))
108 .andThrow(new IOException());
109
110 replay(mockSession);
111
112 assertNotNull(alarmProvider.getAlarms(mockSession, DeviceId.deviceId("snmp:1.1.1.1")));
113
114 verify(mockSession);
115 }
116
117}