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());