Add UnsignedLongBitmap
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / persisted / FrontendShardDataTreeSnapshotMetadataTest.java
index f99cf6fc41bb9af30314e7ccb614c067e0805c8b..7daafcd78605200e3e4b2d98bc401e9be1923d8f 100644 (file)
@@ -10,10 +10,9 @@ package org.opendaylight.controller.cluster.datastore.persisted;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertThrows;
 import static org.junit.Assert.assertTrue;
-import com.google.common.collect.Range;
-import com.google.common.collect.RangeSet;
-import com.google.common.collect.TreeRangeSet;
+
 import com.google.common.primitives.UnsignedLong;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -21,8 +20,6 @@ import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -31,32 +28,35 @@ import org.opendaylight.controller.cluster.access.concepts.ClientIdentifier;
 import org.opendaylight.controller.cluster.access.concepts.FrontendIdentifier;
 import org.opendaylight.controller.cluster.access.concepts.FrontendType;
 import org.opendaylight.controller.cluster.access.concepts.MemberName;
+import org.opendaylight.controller.cluster.datastore.utils.ImmutableUnsignedLongSet;
+import org.opendaylight.controller.cluster.datastore.utils.MutableUnsignedLongSet;
+import org.opendaylight.controller.cluster.datastore.utils.UnsignedLongBitmap;
 
 public class FrontendShardDataTreeSnapshotMetadataTest {
 
-    @Test(expected = NullPointerException.class)
-    public final void testCreateMetadataSnapshotNullInput() {
-        new FrontendShardDataTreeSnapshotMetadata(null);
+    @Test
+    public void testCreateMetadataSnapshotNullInput() {
+        assertThrows(NullPointerException.class, () -> new FrontendShardDataTreeSnapshotMetadata(null));
     }
 
     @Test
-    public final void testCreateMetadataSnapshotEmptyInput() throws Exception {
+    public void testCreateMetadataSnapshotEmptyInput() throws Exception {
         final FrontendShardDataTreeSnapshotMetadata emptyOrigSnapshot = createEmptyMetadataSnapshot();
-        final FrontendShardDataTreeSnapshotMetadata emptyCopySnapshot = copy(emptyOrigSnapshot);
+        final FrontendShardDataTreeSnapshotMetadata emptyCopySnapshot = copy(emptyOrigSnapshot, 127);
         testMetadataSnapshotEqual(emptyOrigSnapshot, emptyCopySnapshot);
     }
 
     @Test
-    public final void testSerializeMetadataSnapshotWithOneClient() throws Exception {
+    public void testSerializeMetadataSnapshotWithOneClient() throws Exception {
         final FrontendShardDataTreeSnapshotMetadata origSnapshot = createMetadataSnapshot(1);
-        final FrontendShardDataTreeSnapshotMetadata copySnapshot = copy(origSnapshot);
+        final FrontendShardDataTreeSnapshotMetadata copySnapshot = copy(origSnapshot, 162);
         testMetadataSnapshotEqual(origSnapshot, copySnapshot);
     }
 
     @Test
-    public final void testSerializeMetadataSnapshotWithMoreClients() throws Exception {
+    public void testSerializeMetadataSnapshotWithMoreClients() throws Exception {
         final FrontendShardDataTreeSnapshotMetadata origSnapshot = createMetadataSnapshot(5);
-        final FrontendShardDataTreeSnapshotMetadata copySnapshot = copy(origSnapshot);
+        final FrontendShardDataTreeSnapshotMetadata copySnapshot = copy(origSnapshot, 314);
         testMetadataSnapshotEqual(origSnapshot, copySnapshot);
     }
 
@@ -66,7 +66,7 @@ public class FrontendShardDataTreeSnapshotMetadataTest {
         final List<FrontendClientMetadata> origClientList = origSnapshot.getClients();
         final List<FrontendClientMetadata> copyClientList = copySnapshot.getClients();
 
-        assertTrue(origClientList.size() == copyClientList.size());
+        assertEquals(origClientList.size(), copyClientList.size());
 
         final Map<ClientIdentifier, FrontendClientMetadata> origIdent = new HashMap<>();
         final Map<ClientIdentifier, FrontendClientMetadata> copyIdent = new HashMap<>();
@@ -79,40 +79,40 @@ public class FrontendShardDataTreeSnapshotMetadataTest {
         origIdent.values().forEach(client -> {
             final FrontendClientMetadata copyClient = copyIdent.get(client.getIdentifier());
             testObject(client.getIdentifier(), copyClient.getIdentifier());
-            assertTrue(client.getPurgedHistories().equals(copyClient.getPurgedHistories()));
-            assertTrue(client.getCurrentHistories().equals(copyClient.getCurrentHistories()));
+            assertEquals(client.getPurgedHistories(), copyClient.getPurgedHistories());
+            assertEquals(client.getCurrentHistories(), copyClient.getCurrentHistories());
         });
     }
 
     private static FrontendShardDataTreeSnapshotMetadata createEmptyMetadataSnapshot() {
-        return new FrontendShardDataTreeSnapshotMetadata(Collections.<FrontendClientMetadata> emptyList());
+        return new FrontendShardDataTreeSnapshotMetadata(List.of());
     }
 
     private static FrontendShardDataTreeSnapshotMetadata createMetadataSnapshot(final int size) {
-        final List<FrontendClientMetadata> clients = new ArrayList<>();
+        final List<FrontendClientMetadata> clients = new ArrayList<>(size);
         for (long i = 0; i < size; i++) {
             clients.add(createFrontedClientMetadata(i));
         }
         return new FrontendShardDataTreeSnapshotMetadata(clients);
     }
 
-    private static FrontendClientMetadata createFrontedClientMetadata(final long i) {
-        final String index = String.valueOf(i);
+    private static FrontendClientMetadata createFrontedClientMetadata(final long num) {
+        final String index = String.valueOf(num);
         final String indexName = "test_" + index;
         final FrontendIdentifier frontendIdentifier = FrontendIdentifier.create(MemberName.forName(indexName),
                 FrontendType.forName(index));
-        final ClientIdentifier clientIdentifier = ClientIdentifier.create(frontendIdentifier, i);
+        final ClientIdentifier clientIdentifier = ClientIdentifier.create(frontendIdentifier, num);
 
-        final RangeSet<UnsignedLong> purgedHistories = TreeRangeSet.create();
-        purgedHistories.add(Range.closed(UnsignedLong.ZERO, UnsignedLong.ONE));
+        final MutableUnsignedLongSet tmp = MutableUnsignedLongSet.of();
+        tmp.add(0);
+        final ImmutableUnsignedLongSet purgedHistories = tmp.immutableCopy();
 
-        final Collection<FrontendHistoryMetadata> currentHistories = Collections
-                .singleton(new FrontendHistoryMetadata(i, i, i, true));
-
-        return new FrontendClientMetadata(clientIdentifier, purgedHistories, currentHistories);
+        return new FrontendClientMetadata(clientIdentifier, purgedHistories.immutableCopy(), List.of(
+            new FrontendHistoryMetadata(num, num, true,
+                UnsignedLongBitmap.copyOf(Map.of(UnsignedLong.ZERO, Boolean.TRUE)), purgedHistories)));
     }
 
-    private static final <T> void testObject(final T object, final T equalObject) {
+    private static <T> void testObject(final T object, final T equalObject) {
         assertEquals(object.hashCode(), equalObject.hashCode());
         assertTrue(object.equals(object));
         assertTrue(object.equals(equalObject));
@@ -121,13 +121,16 @@ public class FrontendShardDataTreeSnapshotMetadataTest {
     }
 
     @SuppressWarnings("unchecked")
-    private static <T> T copy(final T o) throws IOException, ClassNotFoundException {
+    private static <T> T copy(final T obj, final int expectedSize) throws IOException, ClassNotFoundException {
         final ByteArrayOutputStream bos = new ByteArrayOutputStream();
         try (ObjectOutputStream oos = new ObjectOutputStream(bos)) {
-            oos.writeObject(o);
+            oos.writeObject(obj);
         }
 
-        try (ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray()))) {
+        final byte[] bytes = bos.toByteArray();
+        assertEquals(expectedSize, bytes.length);
+
+        try (ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(bytes))) {
             return (T) ois.readObject();
         }
     }