[ONOS-5934] MeterId availability after withdraw.
Change-Id: Ib40b3ca53bae48d16ecbed9665a4061dd2f7eb0c
diff --git a/incubator/net/src/test/java/org/onosproject/incubator/net/meter/impl/MeterManagerTest.java b/incubator/net/src/test/java/org/onosproject/incubator/net/meter/impl/MeterManagerTest.java
index a81004f..045f270 100644
--- a/incubator/net/src/test/java/org/onosproject/incubator/net/meter/impl/MeterManagerTest.java
+++ b/incubator/net/src/test/java/org/onosproject/incubator/net/meter/impl/MeterManagerTest.java
@@ -52,6 +52,7 @@
import org.onosproject.net.provider.ProviderId;
import org.onosproject.store.service.TestStorageService;
+import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Map;
@@ -87,6 +88,7 @@
private Meter m2;
private MeterRequest.Builder m1Request;
private MeterRequest.Builder m2Request;
+ private MeterRequest.Builder m3Request;
private Map<MeterId, Meter> meters = Maps.newHashMap();
@@ -166,6 +168,11 @@
.withUnit(Meter.Unit.KB_PER_SEC)
.withBands(Collections.singletonList(band));
+ m3Request = DefaultMeterRequest.builder()
+ .forDevice(did("1"))
+ .fromApp(APP_ID)
+ .withUnit(Meter.Unit.KB_PER_SEC)
+ .withBands(Collections.singletonList(band));
}
@@ -220,6 +227,30 @@
assertEquals(meterStore.getMaxMeters(MeterFeaturesKey.key(did("2"))), 2);
}
+ @Test
+ public void testMeterReuse() {
+ manager.submit(m1Request.add());
+ manager.submit(m3Request.add());
+ Collection<Meter> meters = manager.getMeters(did("1"));
+ Meter m = meters.iterator().next();
+ MeterRequest mr = DefaultMeterRequest.builder()
+ .forDevice(m.deviceId())
+ .fromApp(m.appId())
+ .withBands(m.bands())
+ .withUnit(m.unit())
+ .remove();
+ manager.withdraw(mr, m.id());
+ mr = DefaultMeterRequest.builder()
+ .forDevice(m.deviceId())
+ .fromApp(m.appId())
+ .withBands(m.bands())
+ .withUnit(m.unit())
+ .add();
+ Meter meter = manager.submit(mr);
+ assertTrue("Meter id not reused", m.id().equals(meter.id()));
+
+ }
+
public class TestApplicationId extends DefaultApplicationId {