blob: 8e74072b2eeef48cbf523433754927ed1a16a03c [file] [log] [blame]
Yuta HIGUCHI533ec322014-09-30 13:29:52 -07001package org.onlab.onos.store.serializers;
2
3import static org.onlab.onos.net.DeviceId.deviceId;
4import static org.onlab.onos.net.PortNumber.portNumber;
5
6import java.net.URI;
7import java.nio.ByteBuffer;
8import java.util.ArrayList;
9import java.util.HashMap;
10
11import org.junit.After;
12import org.junit.Before;
13import org.junit.BeforeClass;
14import org.junit.Test;
15import org.onlab.onos.cluster.NodeId;
16import org.onlab.onos.net.ConnectPoint;
17import org.onlab.onos.net.DefaultDevice;
18import org.onlab.onos.net.DefaultLink;
19import org.onlab.onos.net.DefaultPort;
20import org.onlab.onos.net.Device;
21import org.onlab.onos.net.DeviceId;
22import org.onlab.onos.net.Link;
23import org.onlab.onos.net.LinkKey;
24import org.onlab.onos.net.PortNumber;
25import org.onlab.onos.net.provider.ProviderId;
26import org.onlab.packet.IpPrefix;
27import org.onlab.util.KryoPool;
28
29import com.google.common.collect.ImmutableMap;
30import com.google.common.collect.ImmutableSet;
31import com.google.common.testing.EqualsTester;
32
33import de.javakaffee.kryoserializers.URISerializer;
34
35public class KryoSerializerTests {
36 private static final ProviderId PID = new ProviderId("of", "foo");
37 private static final DeviceId DID1 = deviceId("of:foo");
38 private static final DeviceId DID2 = deviceId("of:bar");
39 private static final PortNumber P1 = portNumber(1);
40 private static final PortNumber P2 = portNumber(2);
41 private static final ConnectPoint CP1 = new ConnectPoint(DID1, P1);
42 private static final ConnectPoint CP2 = new ConnectPoint(DID2, P2);
43 private static final String MFR = "whitebox";
44 private static final String HW = "1.1.x";
45 private static final String SW1 = "3.8.1";
46 private static final String SW2 = "3.9.5";
47 private static final String SN = "43311-12345";
48 private static final Device DEV1 = new DefaultDevice(PID, DID1, Device.Type.SWITCH, MFR, HW, SW1, SN);
49
50 private static KryoPool kryos;
51
52 @BeforeClass
53 public static void setUpBeforeClass() throws Exception {
54 kryos = KryoPool.newBuilder()
55 .register(
56 ArrayList.class,
57 HashMap.class
58 )
59 .register(
60 Device.Type.class,
61 Link.Type.class
62
63// ControllerNode.State.class,
64// DefaultControllerNode.class,
65// MastershipRole.class,
66// Port.class,
67// Element.class,
68 )
69 .register(ConnectPoint.class, new ConnectPointSerializer())
70 .register(DefaultLink.class, new DefaultLinkSerializer())
71 .register(DefaultPort.class, new DefaultPortSerializer())
72 .register(DeviceId.class, new DeviceIdSerializer())
73 .register(ImmutableMap.class, new ImmutableMapSerializer())
74 .register(ImmutableSet.class, new ImmutableSetSerializer())
75 .register(IpPrefix.class, new IpPrefixSerializer())
76 .register(LinkKey.class, new LinkKeySerializer())
77 .register(NodeId.class, new NodeIdSerializer())
78 .register(PortNumber.class, new PortNumberSerializer())
79 .register(ProviderId.class, new ProviderIdSerializer())
80
81 .register(DefaultDevice.class)
82
83 .register(URI.class, new URISerializer())
84 .build();
85 }
86
87 @Before
88 public void setUp() throws Exception {
89 }
90
91 @After
92 public void tearDown() throws Exception {
93 // removing Kryo instance to use fresh Kryo on each tests
94 kryos.getKryo();
95 }
96
97 private static <T> void testSerialized(T original) {
98 ByteBuffer buffer = ByteBuffer.allocate(1 * 1024 * 1024);
99 kryos.serialize(original, buffer);
100 buffer.flip();
101 T copy = kryos.deserialize(buffer);
102
103 new EqualsTester()
104 .addEqualityGroup(original, copy)
105 .testEquals();
106 }
107
108
109 @Test
110 public final void test() {
111 testSerialized(new ConnectPoint(DID1, P1));
112 testSerialized(new DefaultLink(PID, CP1, CP2, Link.Type.DIRECT));
113 testSerialized(new DefaultPort(DEV1, P1, true));
114 testSerialized(DID1);
115 testSerialized(ImmutableMap.of(DID1, DEV1, DID2, DEV1));
116 testSerialized(ImmutableMap.of(DID1, DEV1));
117 testSerialized(ImmutableMap.of());
118 testSerialized(ImmutableSet.of(DID1, DID2));
119 testSerialized(ImmutableSet.of(DID1));
120 testSerialized(ImmutableSet.of());
121 testSerialized(IpPrefix.valueOf("192.168.0.1/24"));
122 testSerialized(new LinkKey(CP1, CP2));
123 testSerialized(new NodeId("SomeNodeIdentifier"));
124 testSerialized(P1);
125 testSerialized(PID);
126 }
127
128}