Unit test for Kryo namespaces to prevent people overflowing the namespaces.
Change-Id: If37283da60d59558c87e2997690b4578952ad3bf
diff --git a/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java b/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
index 67d9df1..76167eb 100644
--- a/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
+++ b/core/store/serializers/src/main/java/org/onosproject/store/serializers/KryoNamespaces.java
@@ -234,6 +234,7 @@
public final class KryoNamespaces {
+ public static final int BASIC_MAX_SIZE = 50;
public static final KryoNamespace BASIC = KryoNamespace.newBuilder()
.nextId(KryoNamespace.FLOATING_ID)
.register(byte[].class)
@@ -284,6 +285,7 @@
/**
* KryoNamespace which can serialize ON.lab misc classes.
*/
+ public static final int MISC_MAX_SIZE = 30;
public static final KryoNamespace MISC = KryoNamespace.newBuilder()
.nextId(KryoNamespace.FLOATING_ID)
.register(new IpPrefixSerializer(), IpPrefix.class)
@@ -302,20 +304,15 @@
.build("MISC");
/**
- * Kryo registration Id for user custom registration.
- */
- public static final int BEGIN_USER_CUSTOM_ID = 500;
-
- // TODO: Populate other classes
- /**
* KryoNamespace which can serialize API bundle classes.
*/
+ public static final int API_MAX_SIZE = 499;
public static final KryoNamespace API = KryoNamespace.newBuilder()
.nextId(KryoNamespace.INITIAL_ID)
.register(BASIC)
- .nextId(KryoNamespace.INITIAL_ID + 50)
+ .nextId(KryoNamespace.INITIAL_ID + BASIC_MAX_SIZE)
.register(MISC)
- .nextId(KryoNamespace.INITIAL_ID + 50 + 30)
+ .nextId(KryoNamespace.INITIAL_ID + BASIC_MAX_SIZE + MISC_MAX_SIZE)
.register(
Instructions.MeterInstruction.class,
MeterId.class,
@@ -552,6 +549,10 @@
.register(new ImmutableByteSequenceSerializer(), ImmutableByteSequence.class)
.build("API");
+ /**
+ * Kryo registration Id for user custom registration.
+ */
+ public static final int BEGIN_USER_CUSTOM_ID = API_MAX_SIZE + 1;
// not to be instantiated
private KryoNamespaces() {