blob: 2c8ff3546740207a4af65d9f331474db87e5d953 [file] [log] [blame]
Yuta HIGUCHI273dcc82014-10-03 00:32:12 -07001package org.onlab.onos.store.common.impl;
2
3import static org.junit.Assert.*;
4
5import java.nio.ByteBuffer;
6
7import org.junit.Test;
8import org.onlab.onos.store.Timestamp;
Yuta HIGUCHI273dcc82014-10-03 00:32:12 -07009import org.onlab.util.KryoPool;
10
11import com.google.common.testing.EqualsTester;
12
13/**
Madan Jampani58819b42014-10-09 13:48:51 -070014 * Test of {@link DeviceMastershipBasedTimestamp}.
Yuta HIGUCHI273dcc82014-10-03 00:32:12 -070015 */
16public class MastershipBasedTimestampTest {
17
Madan Jampani58819b42014-10-09 13:48:51 -070018 private static final Timestamp TS_1_1 = new DeviceMastershipBasedTimestamp(1, 1);
19 private static final Timestamp TS_1_2 = new DeviceMastershipBasedTimestamp(1, 2);
20 private static final Timestamp TS_2_1 = new DeviceMastershipBasedTimestamp(2, 1);
21 private static final Timestamp TS_2_2 = new DeviceMastershipBasedTimestamp(2, 2);
Yuta HIGUCHI273dcc82014-10-03 00:32:12 -070022
23 @Test
24 public final void testBasic() {
25 final int termNumber = 5;
26 final int sequenceNumber = 6;
Madan Jampani58819b42014-10-09 13:48:51 -070027 DeviceMastershipBasedTimestamp ts = new DeviceMastershipBasedTimestamp(termNumber,
Yuta HIGUCHI273dcc82014-10-03 00:32:12 -070028 sequenceNumber);
29
30 assertEquals(termNumber, ts.termNumber());
31 assertEquals(sequenceNumber, ts.sequenceNumber());
32 }
33
34 @Test
35 public final void testCompareTo() {
36 assertTrue(TS_1_1.compareTo(TS_1_1) == 0);
Madan Jampani58819b42014-10-09 13:48:51 -070037 assertTrue(TS_1_1.compareTo(new DeviceMastershipBasedTimestamp(1, 1)) == 0);
Yuta HIGUCHI273dcc82014-10-03 00:32:12 -070038
39 assertTrue(TS_1_1.compareTo(TS_1_2) < 0);
40 assertTrue(TS_1_2.compareTo(TS_1_1) > 0);
41
42 assertTrue(TS_1_2.compareTo(TS_2_1) < 0);
43 assertTrue(TS_1_2.compareTo(TS_2_2) < 0);
44 assertTrue(TS_2_1.compareTo(TS_1_1) > 0);
45 assertTrue(TS_2_2.compareTo(TS_1_1) > 0);
46 }
47
48 @Test
49 public final void testEqualsObject() {
50 new EqualsTester()
Madan Jampani58819b42014-10-09 13:48:51 -070051 .addEqualityGroup(new DeviceMastershipBasedTimestamp(1, 1),
52 new DeviceMastershipBasedTimestamp(1, 1), TS_1_1)
53 .addEqualityGroup(new DeviceMastershipBasedTimestamp(1, 2),
54 new DeviceMastershipBasedTimestamp(1, 2), TS_1_2)
55 .addEqualityGroup(new DeviceMastershipBasedTimestamp(2, 1),
56 new DeviceMastershipBasedTimestamp(2, 1), TS_2_1)
57 .addEqualityGroup(new DeviceMastershipBasedTimestamp(2, 2),
58 new DeviceMastershipBasedTimestamp(2, 2), TS_2_2)
Yuta HIGUCHI273dcc82014-10-03 00:32:12 -070059 .testEquals();
60 }
61
62 @Test
63 public final void testKryoSerializable() {
64 final ByteBuffer buffer = ByteBuffer.allocate(1 * 1024 * 1024);
65 final KryoPool kryos = KryoPool.newBuilder()
Madan Jampani58819b42014-10-09 13:48:51 -070066 .register(DeviceMastershipBasedTimestamp.class)
Yuta HIGUCHI273dcc82014-10-03 00:32:12 -070067 .build();
68
69 kryos.serialize(TS_2_1, buffer);
70 buffer.flip();
71 Timestamp copy = kryos.deserialize(buffer);
72
73 new EqualsTester()
74 .addEqualityGroup(TS_2_1, copy)
75 .testEquals();
76 }
77
78 @Test
79 public final void testKryoSerializableWithHandcraftedSerializer() {
80 final ByteBuffer buffer = ByteBuffer.allocate(1 * 1024 * 1024);
81 final KryoPool kryos = KryoPool.newBuilder()
Madan Jampani58819b42014-10-09 13:48:51 -070082 .register(DeviceMastershipBasedTimestamp.class, new MastershipBasedTimestampSerializer())
Yuta HIGUCHI273dcc82014-10-03 00:32:12 -070083 .build();
84
85 kryos.serialize(TS_1_2, buffer);
86 buffer.flip();
87 Timestamp copy = kryos.deserialize(buffer);
88
89 new EqualsTester()
90 .addEqualityGroup(TS_1_2, copy)
91 .testEquals();
92 }
93
94}