diff --git a/app/src/test/java/org/opencord/olt/impl/OltFlowTest.java b/app/src/test/java/org/opencord/olt/impl/OltFlowTest.java
index 8a80ee0..16b407b 100644
--- a/app/src/test/java/org/opencord/olt/impl/OltFlowTest.java
+++ b/app/src/test/java/org/opencord/olt/impl/OltFlowTest.java
@@ -183,7 +183,7 @@
 
     private class MockOltMeterService implements org.opencord.olt.internalapi.AccessDeviceMeterService {
         @Override
-        public ImmutableMap<String, Set<MeterKey>> getBpMeterMappings() {
+        public ImmutableMap<String, Collection<MeterKey>> getBpMeterMappings() {
             return null;
         }
 
diff --git a/app/src/test/java/org/opencord/olt/impl/OltMeterTest.java b/app/src/test/java/org/opencord/olt/impl/OltMeterTest.java
index 7100b0f..da7e3e1 100644
--- a/app/src/test/java/org/opencord/olt/impl/OltMeterTest.java
+++ b/app/src/test/java/org/opencord/olt/impl/OltMeterTest.java
@@ -15,8 +15,9 @@
  */
 package org.opencord.olt.impl;
 
+import com.google.common.collect.HashMultimap;
 import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Maps;
+import com.google.common.collect.Multimaps;
 import com.google.common.collect.Sets;
 import org.junit.Before;
 import org.junit.Test;
@@ -30,7 +31,6 @@
 import org.opencord.sadis.BandwidthProfileInformation;
 
 import java.util.Collection;
-import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 
 public class OltMeterTest extends TestBase {
@@ -41,7 +41,7 @@
     @Before
     public void setUp() {
         oltMeterService = new OltMeterService();
-        oltMeterService.bpInfoToMeter = Maps.newConcurrentMap();
+        oltMeterService.bpInfoToMeter = Multimaps.synchronizedSetMultimap(HashMultimap.create());
         oltMeterService.programmedMeters = Sets.newConcurrentHashSet();
         oltMeterService.meterService = new MockMeterService();
     }
@@ -56,7 +56,7 @@
         MeterId dsMeterId = oltMeterService.getMeterIdFromBpMapping(DEVICE_ID_1, dsBpId);
         assert  dsMeterId.equals(this.dsMeterId);
 
-        ImmutableMap<String, Set<MeterKey>> meterMappings = oltMeterService.getBpMeterMappings();
+        ImmutableMap<String, Collection<MeterKey>> meterMappings = oltMeterService.getBpMeterMappings();
         assert  meterMappings.size() == 2;
     }
 
