Merge "Fix for Bug 3"
[controller.git] / opendaylight / config / config-persister-file-adapter / src / test / java / org / opendaylight / controller / config / persist / storage / file / FileStorageAdapterTest.java
index c7d37dcbd8c65b3cea42541943ebf3d8eae0870d..0366dbcaed26a52cbea110e4118bf9b5e6ff37b3 100644 (file)
@@ -9,23 +9,21 @@
 package org.opendaylight.controller.config.persist.storage.file;
 
 import com.google.common.base.Charsets;
-import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Collections2;
-import com.google.common.collect.Sets;
+import java.io.File;
+import java.nio.file.Files;
+import java.util.Collection;
+import java.util.List;
+import java.util.SortedSet;
+import java.util.TreeSet;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mockito;
+import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder;
 import org.opendaylight.controller.config.persist.api.Persister;
-
-import java.io.File;
-import java.nio.file.Files;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Set;
-
+import org.opendaylight.controller.config.persist.test.PropertiesProviderTest;
 import static junit.framework.Assert.assertFalse;
-import static junit.framework.Assert.assertTrue;
 import static org.hamcrest.CoreMatchers.is;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
@@ -44,19 +42,62 @@ public class FileStorageAdapterTest {
         i = 1;
     }
 
+
+    @Test
+    public void testFileAdapterAsPersister() throws Exception {
+        FileStorageAdapter storage = new FileStorageAdapter();
+        PropertiesProviderTest pp = new PropertiesProviderTest();
+        pp.addProperty("fileStorage",file.getPath());
+        pp.addProperty("numberOfBackups",Integer.toString(Integer.MAX_VALUE));
+
+        Persister configPersister = storage.instantiate(pp);
+        final ConfigSnapshotHolder holder = new ConfigSnapshotHolder() {
+            @Override
+            public String getConfigSnapshot() {
+                return createConfig();
+            }
+
+            @Override
+            public SortedSet<String> getCapabilities() {
+                return createCaps();
+            }
+        };
+        configPersister.persistConfig(holder);
+
+        configPersister.persistConfig(holder);
+
+        Collection<String> readLines = Collections2.filter(com.google.common.io.Files.readLines(file, Charsets.UTF_8),
+                new Predicate<String>() {
+
+                    @Override
+                    public boolean apply(String input) {
+                        if (input.equals(""))
+                            return false;
+                        return true;
+                    }
+                });
+        assertEquals(14, readLines.size());
+
+        List<ConfigSnapshotHolder> lastConf = storage.loadLastConfigs();
+        assertEquals(1, lastConf.size());
+        ConfigSnapshotHolder configSnapshotHolder = lastConf.get(0);
+        assertEquals("<config>2</config>",
+                configSnapshotHolder.getConfigSnapshot().replaceAll("\\s", ""));
+        assertEquals(createCaps(), configSnapshotHolder.getCapabilities());
+    }
     @Test
     public void testFileAdapter() throws Exception {
         FileStorageAdapter storage = new FileStorageAdapter();
         storage.setFileStorage(file);
         storage.setNumberOfBackups(Integer.MAX_VALUE);
-        final Persister.ConfigSnapshotHolder holder = new Persister.ConfigSnapshotHolder() {
+        final ConfigSnapshotHolder holder = new ConfigSnapshotHolder() {
             @Override
             public String getConfigSnapshot() {
                 return createConfig();
             }
 
             @Override
-            public Set<String> getCapabilities() {
+            public SortedSet<String> getCapabilities() {
                 return createCaps();
             }
         };
@@ -76,15 +117,16 @@ public class FileStorageAdapterTest {
                 });
         assertEquals(14, readLines.size());
 
-        Optional<Persister.ConfigSnapshotHolder> lastConf = storage.loadLastConfig();
-        assertTrue(lastConf.isPresent());
+        List<ConfigSnapshotHolder> lastConf = storage.loadLastConfigs();
+        assertEquals(1, lastConf.size());
+        ConfigSnapshotHolder configSnapshotHolder = lastConf.get(0);
         assertEquals("<config>2</config>",
-                lastConf.get().getConfigSnapshot().replaceAll("\\s", ""));
-        assertEquals(createCaps(), lastConf.get().getCapabilities());
+                configSnapshotHolder.getConfigSnapshot().replaceAll("\\s", ""));
+        assertEquals(createCaps(), configSnapshotHolder.getCapabilities());
     }
 
-    private Set<String> createCaps() {
-        Set<String> caps = Sets.newHashSet();
+    private SortedSet<String> createCaps() {
+        SortedSet<String> caps = new TreeSet<>();
 
         caps.add("cap1");
         caps.add("cap2");
@@ -97,14 +139,14 @@ public class FileStorageAdapterTest {
         FileStorageAdapter storage = new FileStorageAdapter();
         storage.setFileStorage(file);
         storage.setNumberOfBackups(1);
-        final Persister.ConfigSnapshotHolder holder = new Persister.ConfigSnapshotHolder() {
+        final ConfigSnapshotHolder holder = new ConfigSnapshotHolder() {
             @Override
             public String getConfigSnapshot() {
                 return createConfig();
             }
 
             @Override
-            public Set<String> getCapabilities() {
+            public SortedSet<String> getCapabilities() {
                 return createCaps();
             }
         };
@@ -124,10 +166,11 @@ public class FileStorageAdapterTest {
                 });
         assertEquals(7, readLines.size());
 
-        Optional<Persister.ConfigSnapshotHolder> lastConf = storage.loadLastConfig();
-        assertTrue(lastConf.isPresent());
+        List<ConfigSnapshotHolder> lastConf = storage.loadLastConfigs();
+        assertEquals(1, lastConf.size());
+        ConfigSnapshotHolder configSnapshotHolder = lastConf.get(0);
         assertEquals("<config>2</config>",
-                lastConf.get().getConfigSnapshot().replaceAll("\\s", ""));
+                configSnapshotHolder.getConfigSnapshot().replaceAll("\\s", ""));
     }
 
     @Test
@@ -135,14 +178,14 @@ public class FileStorageAdapterTest {
         FileStorageAdapter storage = new FileStorageAdapter();
         storage.setFileStorage(file);
         storage.setNumberOfBackups(2);
-        final Persister.ConfigSnapshotHolder holder = new Persister.ConfigSnapshotHolder() {
+        final ConfigSnapshotHolder holder = new ConfigSnapshotHolder() {
             @Override
             public String getConfigSnapshot() {
                 return createConfig();
             }
 
             @Override
-            public Set<String> getCapabilities() {
+            public SortedSet<String> getCapabilities() {
                 return createCaps();
             }
         };
@@ -164,10 +207,11 @@ public class FileStorageAdapterTest {
 
         assertEquals(14, readLines.size());
 
-        Optional<Persister.ConfigSnapshotHolder> lastConf = storage.loadLastConfig();
-        assertTrue(lastConf.isPresent());
+        List<ConfigSnapshotHolder> lastConf = storage.loadLastConfigs();
+        assertEquals(1, lastConf.size());
+        ConfigSnapshotHolder configSnapshotHolder = lastConf.get(0);
         assertEquals("<config>3</config>",
-               lastConf.get().getConfigSnapshot().replaceAll("\\s", ""));
+                configSnapshotHolder.getConfigSnapshot().replaceAll("\\s", ""));
         assertFalse(readLines.contains(holder.getConfigSnapshot()));
     }
 
@@ -179,28 +223,28 @@ public class FileStorageAdapterTest {
         FileStorageAdapter storage = new FileStorageAdapter();
         storage.setFileStorage(file);
 
-        Optional<Persister.ConfigSnapshotHolder> elementOptional = storage.loadLastConfig();
-        assertThat(elementOptional.isPresent(), is(false));
+        List<ConfigSnapshotHolder> elementOptional = storage.loadLastConfigs();
+        assertThat(elementOptional.size(), is(0));
     }
 
     @Test(expected = NullPointerException.class)
     public void testNoProperties() throws Exception {
         FileStorageAdapter storage = new FileStorageAdapter();
-        storage.loadLastConfig();
+        storage.loadLastConfigs();
     }
 
     @Test(expected = NullPointerException.class)
     public void testNoProperties2() throws Exception {
         FileStorageAdapter storage = new FileStorageAdapter();
-        storage.persistConfig(new Persister.ConfigSnapshotHolder() {
+        storage.persistConfig(new ConfigSnapshotHolder() {
             @Override
             public String getConfigSnapshot() {
                 return Mockito.mock(String.class);
             }
 
             @Override
-            public Set<String> getCapabilities() {
-                return Collections.<String> emptySet();
+            public SortedSet<String> getCapabilities() {
+                return new TreeSet<>();
             }
         } );
     }