Adding tests for meter service.
Change-Id: Ic220fdaa89b421661019f1a6ef23c7b02eef127c
diff --git a/incubator/store/src/main/java/org/onosproject/incubator/store/meter/impl/DistributedMeterStore.java b/incubator/store/src/main/java/org/onosproject/incubator/store/meter/impl/DistributedMeterStore.java
index f343d83..32890cb 100644
--- a/incubator/store/src/main/java/org/onosproject/incubator/store/meter/impl/DistributedMeterStore.java
+++ b/incubator/store/src/main/java/org/onosproject/incubator/store/meter/impl/DistributedMeterStore.java
@@ -143,7 +143,9 @@
// update the state of the meter. It will be pruned by observing
// that it has been removed from the dataplane.
try {
- meters.put(meter.id(), data);
+ if (meters.computeIfPresent(meter.id(), (k, v) -> data) == null) {
+ future.complete(MeterStoreResult.success());
+ }
} catch (StorageException e) {
future.completeExceptionally(e);
}
@@ -159,7 +161,9 @@
MeterData data = new MeterData(meter, null, local);
try {
- meters.put(meter.id(), data);
+ if (meters.computeIfPresent(meter.id(), (k, v) -> data) == null) {
+ future.complete(MeterStoreResult.fail(MeterFailReason.INVALID_METER));
+ }
} catch (StorageException e) {
future.completeExceptionally(e);
}
@@ -227,6 +231,10 @@
}
break;
case ADDED:
+ if (local.equals(data.origin()) && data.meter().state() == MeterState.PENDING_ADD) {
+ futures.remove(data.meter().id()).complete(MeterStoreResult.success());
+ }
+ break;
case REMOVED:
if (local.equals(data.origin()) && data.meter().state() == MeterState.PENDING_REMOVE) {
futures.remove(data.meter().id()).complete(MeterStoreResult.success());