diff --git a/core/api/src/test/java/org/onosproject/store/service/TestConsistentMap.java b/core/api/src/test/java/org/onosproject/store/service/TestConsistentMap.java index e34d110c6d..673a5317e2 100644 --- a/core/api/src/test/java/org/onosproject/store/service/TestConsistentMap.java +++ b/core/api/src/test/java/org/onosproject/store/service/TestConsistentMap.java @@ -42,11 +42,13 @@ public final class TestConsistentMap extends ConsistentMapAdapter { private final Map> map; private final String mapName; private final AtomicLong counter = new AtomicLong(0); + private final Serializer serializer; - private TestConsistentMap(String mapName) { + private TestConsistentMap(String mapName, Serializer serializer) { map = new HashMap<>(); listeners = new LinkedList<>(); this.mapName = mapName; + this.serializer = serializer; } private Versioned version(V v) { @@ -111,7 +113,7 @@ public final class TestConsistentMap extends ConsistentMapAdapter { AtomicReference> previousValue = new AtomicReference<>(); Versioned result = map.compute(key, (k, v) -> { updated.set(true); - previousValue.set(v); + previousValue.set(serializer.decode(serializer.encode(v))); return version(remappingFunction.apply(k, Versioned.valueOrNull(v))); }); if (updated.get()) { @@ -127,7 +129,7 @@ public final class TestConsistentMap extends ConsistentMapAdapter { Versioned result = map.compute(key, (k, v) -> { if (v != null) { updated.set(true); - previousValue.set(v); + previousValue.set(serializer.decode(serializer.encode(v))); return version(remappingFunction.apply(k, v.value())); } return v; @@ -145,7 +147,7 @@ public final class TestConsistentMap extends ConsistentMapAdapter { AtomicReference> previousValue = new AtomicReference<>(); Versioned result = map.compute(key, (k, v) -> { if (condition.test(Versioned.valueOrNull(v))) { - previousValue.set(v); + previousValue.set(serializer.decode(serializer.encode(v))); updated.set(true); return version(remappingFunction.apply(k, Versioned.valueOrNull(v))); } @@ -296,7 +298,7 @@ public final class TestConsistentMap extends ConsistentMapAdapter { @Override public ConsistentMap build() { - return new TestConsistentMap<>(name()); + return new TestConsistentMap<>(name(), serializer()); } @Override diff --git a/core/net/src/test/java/org/onosproject/net/meter/impl/MeterManagerTest.java b/core/net/src/test/java/org/onosproject/net/meter/impl/MeterManagerTest.java index 0ac5d85ff3..8de0b5a4c7 100644 --- a/core/net/src/test/java/org/onosproject/net/meter/impl/MeterManagerTest.java +++ b/core/net/src/test/java/org/onosproject/net/meter/impl/MeterManagerTest.java @@ -17,6 +17,7 @@ package org.onosproject.net.meter.impl; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; import com.google.common.collect.Sets; import org.junit.After; import org.junit.Before; @@ -24,6 +25,8 @@ import org.junit.Test; import org.onlab.junit.TestTools; import org.onlab.junit.TestUtils; import org.onlab.packet.IpAddress; +import org.onlab.util.KryoNamespace; +import org.onosproject.TestApplicationId; import org.onosproject.cfg.ComponentConfigAdapter; import org.onosproject.cluster.ClusterServiceAdapter; import org.onosproject.cluster.ControllerNode; @@ -65,6 +68,7 @@ import org.onosproject.net.meter.MeterService; import org.onosproject.net.meter.MeterState; import org.onosproject.net.provider.AbstractProvider; import org.onosproject.net.provider.ProviderId; +import org.onosproject.store.service.Serializer; import org.onosproject.store.service.TestStorageService; import java.util.Collections; @@ -224,6 +228,13 @@ public class MeterManagerTest { TestUtils.setField(meterStore, "clusterService", new TestClusterService()); TestUtils.setField(meterStore, "mastershipService", new TestMastershipService()); TestUtils.setField(meterStore, "driverService", driverService); + + // Inject TestApplicationId into the DistributedMeterStore serializer + KryoNamespace.Builder testKryoBuilder = TestUtils.getField(meterStore, "APP_KRYO_BUILDER"); + testKryoBuilder.register(TestApplicationId.class); + Serializer testSerializer = Serializer.using(Lists.newArrayList(testKryoBuilder.build())); + TestUtils.setField(meterStore, "serializer", testSerializer); + // Activate the store meterStore.activate(); // Init step for the manager 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 b654652e9e..cf4bfcb942 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 @@ -16,6 +16,7 @@ package org.onosproject.incubator.store.meter.impl; import com.google.common.collect.Collections2; +import com.google.common.collect.Lists; import com.google.common.collect.Iterables; import com.google.common.collect.Maps; import org.apache.commons.lang.math.RandomUtils; @@ -25,6 +26,7 @@ import org.apache.felix.scr.annotations.Deactivate; import org.apache.felix.scr.annotations.Reference; import org.apache.felix.scr.annotations.ReferenceCardinality; import org.apache.felix.scr.annotations.Service; +import org.onlab.util.KryoNamespace; import org.onosproject.cluster.ClusterService; import org.onosproject.cluster.NodeId; import org.onosproject.mastership.MastershipService; @@ -90,6 +92,18 @@ public class DistributedMeterStore extends AbstractStoreconsistentMapBuilder() .withName(METERSTORE) - .withSerializer(Serializer.using(KryoNamespaces.API, - MeterKey.class, - MeterData.class, - DefaultMeter.class, - DefaultBand.class, - Band.Type.class, - MeterState.class, - Meter.Unit.class, - MeterFailReason.class)).build(); + .withSerializer(serializer).build(); meters.addListener(mapListener); diff --git a/incubator/store/src/test/java/org/onosproject/incubator/store/meter/impl/DistributedMeterStoreTest.java b/incubator/store/src/test/java/org/onosproject/incubator/store/meter/impl/DistributedMeterStoreTest.java index 94940c4438..f66d3efd2a 100644 --- a/incubator/store/src/test/java/org/onosproject/incubator/store/meter/impl/DistributedMeterStoreTest.java +++ b/incubator/store/src/test/java/org/onosproject/incubator/store/meter/impl/DistributedMeterStoreTest.java @@ -16,12 +16,15 @@ package org.onosproject.incubator.store.meter.impl; +import com.google.common.collect.Lists; import com.google.common.collect.Sets; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.onlab.junit.TestUtils; import org.onlab.packet.IpAddress; +import org.onlab.util.KryoNamespace; +import org.onosproject.TestApplicationId; import org.onosproject.cluster.ClusterServiceAdapter; import org.onosproject.cluster.ControllerNode; import org.onosproject.cluster.DefaultControllerNode; @@ -44,6 +47,7 @@ import org.onosproject.net.meter.MeterFeaturesKey; import org.onosproject.net.meter.MeterId; import org.onosproject.net.meter.MeterKey; import org.onosproject.net.meter.MeterState; +import org.onosproject.store.service.Serializer; import org.onosproject.store.service.TestStorageService; import java.util.Collections; @@ -125,6 +129,13 @@ public class DistributedMeterStoreTest { TestUtils.setField(meterStore, "clusterService", new TestClusterService()); TestUtils.setField(meterStore, "mastershipService", new TestMastershipService()); TestUtils.setField(meterStore, "driverService", new TestDriverService()); + + // Inject TestApplicationId into the DistributedMeterStore serializer + KryoNamespace.Builder testKryoBuilder = TestUtils.getField(meterStore, "APP_KRYO_BUILDER"); + testKryoBuilder.register(TestApplicationId.class); + Serializer testSerializer = Serializer.using(Lists.newArrayList(testKryoBuilder.build())); + TestUtils.setField(meterStore, "serializer", testSerializer); + // Activate the store meterStore.activate(); }