blob: 000ea3529649459b30c86249c162fd178ecb3110 [file] [log] [blame]
Andrea Campanellacbbb7952019-11-25 06:38:41 +00001/*
2 * Copyright 2016-present Open Networking Foundation
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.opencord.olt.impl;
17
Andrea Campanellacbbb7952019-11-25 06:38:41 +000018import com.google.common.collect.ImmutableMap;
Andrea Campanellacbbb7952019-11-25 06:38:41 +000019import org.junit.Before;
20import org.junit.Test;
Jonathan Hart4f178fa2020-02-03 10:46:01 -080021import org.onosproject.cfg.ComponentConfigAdapter;
22import org.onosproject.core.CoreServiceAdapter;
Andrea Campanellacbbb7952019-11-25 06:38:41 +000023import org.onosproject.net.DeviceId;
24import org.onosproject.net.meter.DefaultMeter;
25import org.onosproject.net.meter.Meter;
26import org.onosproject.net.meter.MeterId;
27import org.onosproject.net.meter.MeterKey;
28import org.onosproject.net.meter.MeterListener;
29import org.onosproject.net.meter.MeterRequest;
Jonathan Hart4f178fa2020-02-03 10:46:01 -080030import org.onosproject.store.service.TestStorageService;
Andrea Campanellacbbb7952019-11-25 06:38:41 +000031import org.opencord.sadis.BandwidthProfileInformation;
32
33import java.util.Collection;
34import java.util.concurrent.CompletableFuture;
35
36public class OltMeterTest extends TestBase {
37 private OltMeterService oltMeterService;
38
39 private BandwidthProfileInformation bandwidthProfileInformation = new BandwidthProfileInformation();
40
41 @Before
42 public void setUp() {
43 oltMeterService = new OltMeterService();
Jonathan Hart4f178fa2020-02-03 10:46:01 -080044 oltMeterService.storageService = new TestStorageService();
Andrea Campanellacbbb7952019-11-25 06:38:41 +000045 oltMeterService.meterService = new MockMeterService();
Jonathan Hart4f178fa2020-02-03 10:46:01 -080046 oltMeterService.coreService = new CoreServiceAdapter();
47 oltMeterService.componentConfigService = new ComponentConfigAdapter();
48 oltMeterService.activate(null);
49 oltMeterService.bpInfoToMeter = new MockConsistentMultimap<>();
Andrea Campanellacbbb7952019-11-25 06:38:41 +000050 }
51
52 @Test
53 public void testAddAndGetMeterIdToBpMapping() {
54 oltMeterService.addMeterIdToBpMapping(DEVICE_ID_1, usMeterId, usBpId);
55 MeterId usMeterId = oltMeterService.getMeterIdFromBpMapping(DEVICE_ID_1, usBpId);
56 assert usMeterId.equals(this.usMeterId);
57
58 oltMeterService.addMeterIdToBpMapping(DEVICE_ID_1, dsMeterId, dsBpId);
59 MeterId dsMeterId = oltMeterService.getMeterIdFromBpMapping(DEVICE_ID_1, dsBpId);
60 assert dsMeterId.equals(this.dsMeterId);
61
62 ImmutableMap<String, Collection<MeterKey>> meterMappings = oltMeterService.getBpMeterMappings();
63 assert meterMappings.size() == 2;
64 }
65
66 @Test
67 public void testCreateMeter() {
68 //with provided bandwidth profile information
69 bandwidthProfileInformation.setId(usBpId);
70 bandwidthProfileInformation.setExceededInformationRate(10000);
71 bandwidthProfileInformation.setExceededBurstSize(10000L);
72 bandwidthProfileInformation.setCommittedBurstSize(10000L);
73 bandwidthProfileInformation.setCommittedInformationRate(10000);
74
75 oltMeterService.addMeterIdToBpMapping(DEVICE_ID_1, usMeterId, usBpId);
76
77
78 MeterId meterId =
79 oltMeterService.createMeter(DEVICE_ID_1, bandwidthProfileInformation, new CompletableFuture<>());
80 assert meterId != null;
81
82 //with null bandwidth profile information
83 meterId = oltMeterService.createMeter(DEVICE_ID_1, null, new CompletableFuture<>());
84 assert meterId == null;
85 }
86
87
88 private class MockMeterService implements org.onosproject.net.meter.MeterService {
89 @Override
90 public Meter submit(MeterRequest meterRequest) {
91 return DefaultMeter.builder()
92 .forDevice(DEVICE_ID_1)
93 .fromApp(appId)
94 .withId(usMeterId)
95 .build();
96 }
97
98 @Override
99 public void withdraw(MeterRequest meterRequest, MeterId meterId) {
100
101 }
102
103 @Override
104 public Meter getMeter(DeviceId deviceId, MeterId meterId) {
105 return null;
106 }
107
108 @Override
109 public Collection<Meter> getAllMeters() {
110 return null;
111 }
112
113 @Override
114 public Collection<Meter> getMeters(DeviceId deviceId) {
115 return null;
116 }
117
118 @Override
119 public MeterId allocateMeterId(DeviceId deviceId) {
120 return null;
121 }
122
123 @Override
124 public void freeMeterId(DeviceId deviceId, MeterId meterId) {
125
126 }
127
128 @Override
129 public void addListener(MeterListener meterListener) {
130
131 }
132
133 @Override
134 public void removeListener(MeterListener meterListener) {
135
136 }
137 }
138}