blob: 9832483d0c89ab7ce754042afc26c482c59088b4 [file] [log] [blame]
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07001/*
2 * Copyright 2014 Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
Yuta HIGUCHI8ce08732014-10-11 10:40:45 -070016package org.onlab.onos.store.impl;
Yuta HIGUCHI273dcc82014-10-03 00:32:12 -070017
18import static org.junit.Assert.*;
19
20import java.nio.ByteBuffer;
21
22import org.junit.Test;
23import org.onlab.onos.store.Timestamp;
Yuta HIGUCHI60a190b2014-11-07 16:24:47 -080024import org.onlab.onos.store.serializers.impl.MastershipBasedTimestampSerializer;
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -070025import org.onlab.util.KryoNamespace;
Yuta HIGUCHI273dcc82014-10-03 00:32:12 -070026
27import com.google.common.testing.EqualsTester;
28
29/**
30 * Test of {@link MastershipBasedTimestamp}.
31 */
32public class MastershipBasedTimestampTest {
33
34 private static final Timestamp TS_1_1 = new MastershipBasedTimestamp(1, 1);
35 private static final Timestamp TS_1_2 = new MastershipBasedTimestamp(1, 2);
36 private static final Timestamp TS_2_1 = new MastershipBasedTimestamp(2, 1);
37 private static final Timestamp TS_2_2 = new MastershipBasedTimestamp(2, 2);
38
39 @Test
40 public final void testBasic() {
41 final int termNumber = 5;
42 final int sequenceNumber = 6;
43 MastershipBasedTimestamp ts = new MastershipBasedTimestamp(termNumber,
44 sequenceNumber);
45
46 assertEquals(termNumber, ts.termNumber());
47 assertEquals(sequenceNumber, ts.sequenceNumber());
48 }
49
50 @Test
51 public final void testCompareTo() {
52 assertTrue(TS_1_1.compareTo(TS_1_1) == 0);
53 assertTrue(TS_1_1.compareTo(new MastershipBasedTimestamp(1, 1)) == 0);
54
55 assertTrue(TS_1_1.compareTo(TS_1_2) < 0);
56 assertTrue(TS_1_2.compareTo(TS_1_1) > 0);
57
58 assertTrue(TS_1_2.compareTo(TS_2_1) < 0);
59 assertTrue(TS_1_2.compareTo(TS_2_2) < 0);
60 assertTrue(TS_2_1.compareTo(TS_1_1) > 0);
61 assertTrue(TS_2_2.compareTo(TS_1_1) > 0);
62 }
63
64 @Test
65 public final void testEqualsObject() {
66 new EqualsTester()
67 .addEqualityGroup(new MastershipBasedTimestamp(1, 1),
68 new MastershipBasedTimestamp(1, 1), TS_1_1)
69 .addEqualityGroup(new MastershipBasedTimestamp(1, 2),
70 new MastershipBasedTimestamp(1, 2), TS_1_2)
71 .addEqualityGroup(new MastershipBasedTimestamp(2, 1),
72 new MastershipBasedTimestamp(2, 1), TS_2_1)
73 .addEqualityGroup(new MastershipBasedTimestamp(2, 2),
74 new MastershipBasedTimestamp(2, 2), TS_2_2)
75 .testEquals();
76 }
77
78 @Test
79 public final void testKryoSerializable() {
80 final ByteBuffer buffer = ByteBuffer.allocate(1 * 1024 * 1024);
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -070081 final KryoNamespace kryos = KryoNamespace.newBuilder()
Yuta HIGUCHI273dcc82014-10-03 00:32:12 -070082 .register(MastershipBasedTimestamp.class)
83 .build();
84
85 kryos.serialize(TS_2_1, buffer);
86 buffer.flip();
87 Timestamp copy = kryos.deserialize(buffer);
88
89 new EqualsTester()
90 .addEqualityGroup(TS_2_1, copy)
91 .testEquals();
92 }
93
94 @Test
95 public final void testKryoSerializableWithHandcraftedSerializer() {
96 final ByteBuffer buffer = ByteBuffer.allocate(1 * 1024 * 1024);
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -070097 final KryoNamespace kryos = KryoNamespace.newBuilder()
Yuta HIGUCHI91768e32014-11-22 05:06:35 -080098 .register(new MastershipBasedTimestampSerializer(), MastershipBasedTimestamp.class)
Yuta HIGUCHI273dcc82014-10-03 00:32:12 -070099 .build();
100
101 kryos.serialize(TS_1_2, buffer);
102 buffer.flip();
103 Timestamp copy = kryos.deserialize(buffer);
104
105 new EqualsTester()
106 .addEqualityGroup(TS_1_2, copy)
107 .testEquals();
108 }
109
110}