blob: b00b321b26ca30c2b4f7da1da237b2bb4a841d62 [file] [log] [blame]
Sean Condonfae8e662016-12-15 10:25:13 +00001/*
2 * Copyright 2017-present Open Networking Laboratory
3 *
4 * 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 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
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.drivers.microsemi;
17
18import java.util.HashSet;
19
20import org.junit.After;
21import org.junit.Before;
22import org.junit.Test;
23import org.onosproject.core.DefaultApplicationId;
24import org.onosproject.drivers.microsemi.yang.MockMseaUniEvcServiceManager;
25import org.onosproject.drivers.microsemi.yang.MockNetconfSessionEa1000;
26import org.onosproject.drivers.netconf.MockNetconfController;
27import org.onosproject.drivers.netconf.MockNetconfDevice;
28import org.onosproject.net.DeviceId;
29import org.onosproject.net.meter.Band;
30import org.onosproject.net.meter.DefaultBand;
31import org.onosproject.net.meter.DefaultMeter;
32import org.onosproject.net.meter.Meter;
33import org.onosproject.net.meter.Meter.Unit;
34import org.onosproject.net.meter.MeterId;
35import org.onosproject.net.meter.MeterOperation;
36import org.onosproject.net.meter.MeterOperation.Type;
37import org.onosproject.netconf.NetconfController;
38
39public class EA1000MeterProviderTest {
40
41 private EA1000MeterProvider meterProvider;
42 private NetconfController controller;
43 private DeviceId mockDeviceId;
44 private MockMseaUniEvcServiceManager mseaUniEvcServiceSvc;
45
46 @Before
47 public void setUp() throws Exception {
48 mockDeviceId = DeviceId.deviceId("netconf:1.2.3.4:830");
49 controller = new MockNetconfController();
50 MockNetconfDevice device = (MockNetconfDevice) controller.connectDevice(mockDeviceId);
51 device.setNcSessionImpl(MockNetconfSessionEa1000.class);
52 mseaUniEvcServiceSvc = new MockMseaUniEvcServiceManager();
53 mseaUniEvcServiceSvc.activate();
54 meterProvider = new TestEA1000MeterProvider(controller, mseaUniEvcServiceSvc);
55 }
56
57 @After
58 public void tearDown() throws Exception {
59 }
60
61 @Test
62 public void testPerformMeterOperationDeviceIdMeterAdd() {
63 DeviceId mockDeviceId = DeviceId.deviceId("netconf:1.2.3.4:830");
64
65 Band cbsBand = DefaultBand.builder()
66 .ofType(Band.Type.REMARK) //Committed - CIR & CBS
67 .withRate(37500L)
68 .burstSize(2000)
69 .dropPrecedence((short) 0)
70 .build();
71
72 Band ebsBand = DefaultBand.builder()
73 .ofType(Band.Type.DROP) //Excess - EIR & EBS
74 .withRate(50000L) //The rate at which we drop - for EA 1000 subtract CIR to get EIR
75 .burstSize(3000) //The burst rate to drop at
76 .build();
77
78 Meter.Builder mBuilder = DefaultMeter.builder()
79 .forDevice(mockDeviceId)
80 .withId(MeterId.meterId(1))
81 .fromApp(new DefaultApplicationId(101, "unit.test"))
82 .burst()
83 .withUnit(Unit.KB_PER_SEC)
84 .withBands(new HashSet<Band>() { { add(cbsBand); add(ebsBand); } });
85
86 MeterOperation meterOp = new MeterOperation(mBuilder.build(), Type.ADD);
87
88 meterProvider.performMeterOperation(mockDeviceId, meterOp);
89 //The NETCONF XML generated by this matches the pattern
90 // sampleXmlRegexEditConfigBwpGroup1
91 // in MockNetconfSession
92 }
93
94 @Test
95 public void testPerformMeterOperationDeviceIdMeterRemove() {
96 DeviceId mockDeviceId = DeviceId.deviceId("netconf:1.2.3.4:830");
97
98 Band cbsBand = DefaultBand.builder()
99 .ofType(Band.Type.REMARK) //Committed - CIR & CBS
100 .withRate(37500L)
101 .burstSize(2000)
102 .dropPrecedence((short) 0)
103 .build();
104
105 Meter.Builder mBuilder = DefaultMeter.builder()
106 .forDevice(mockDeviceId)
107 .withId(MeterId.meterId(1))
108 .fromApp(new DefaultApplicationId(101, "unit.test"))
109 .burst()
110 .withBands(new HashSet<Band>() { { add(cbsBand); } });
111
112 MeterOperation meterOp = new MeterOperation(mBuilder.build(), Type.REMOVE);
113
114 meterProvider.performMeterOperation(mockDeviceId, meterOp);
115 //The NETCONF XML generated by this matches the pattern
116 // sampleXmlRegexEditConfigBwpGroup1
117 // in MockNetconfSession
118 }
119
120}