From 257c03617a708ca997c0e004e1fcde45949c3435 Mon Sep 17 00:00:00 2001 From: Martin Bobak Date: Thu, 30 Jan 2014 10:19:00 +0100 Subject: [PATCH] updated test coverage for AutodetectDirectoryPersister test coverage raised on config-persister-file-xml-adapter Change-Id: I027fd57baeb233271c88499c29e4708a735bb10d Signed-off-by: Martin Bobak --- .../AutodetectDirectoryPersisterTest.java | 52 ++++++++++++++++++- .../test/resources/bad_controller.xml.config | 10 ++++ .../file/xml/model/CapabilityHandler.java | 47 ----------------- .../file/xml/FileStorageAdapterTest.java | 38 ++++++++++++++ 4 files changed, 99 insertions(+), 48 deletions(-) create mode 100644 opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/bad_controller.xml.config delete mode 100644 opendaylight/config/config-persister-file-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/file/xml/model/CapabilityHandler.java diff --git a/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/AutodetectDirectoryPersisterTest.java b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/AutodetectDirectoryPersisterTest.java index f833460766..bcade93352 100644 --- a/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/AutodetectDirectoryPersisterTest.java +++ b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/directory/autodetect/AutodetectDirectoryPersisterTest.java @@ -8,12 +8,15 @@ package org.opendaylight.controller.config.persist.storage.directory.autodetect; import java.io.File; +import java.io.IOException; import java.util.List; import junit.framework.Assert; import org.junit.Test; import org.junit.matchers.JUnitMatchers; import org.opendaylight.controller.config.persist.api.ConfigSnapshotHolder; import org.opendaylight.controller.config.persist.test.PropertiesProviderTest; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.fail; public class AutodetectDirectoryPersisterTest { @@ -37,5 +40,52 @@ public class AutodetectDirectoryPersisterTest { String snapFromXml = configs.get(1).getConfigSnapshot(); org.junit.Assert.assertThat(snapFromXml, JUnitMatchers.containsString("xml")); - Assert.assertEquals(configs.get(0).getCapabilities(), configs.get(1).getCapabilities()); } + Assert.assertEquals(configs.get(0).getCapabilities(), configs.get(1).getCapabilities()); + } + + @Test + public void testInvalidXml() throws Exception { + File resourcePath = FileTypeTest.getResourceAsFile("/bad_controller.xml.config"); + File parentFile = resourcePath.getParentFile(); + + AutodetectDirectoryStorageAdapter adapter = new AutodetectDirectoryStorageAdapter(); + + PropertiesProviderTest pp = new PropertiesProviderTest(); + pp.addProperty("directoryStorage",parentFile.getPath()); + AutodetectDirectoryPersister persister = (AutodetectDirectoryPersister) adapter.instantiate(pp); + try { + List configs = persister.loadLastConfigs(); + fail("An exception of type " + IllegalStateException.class + " was expected"); + } catch (IllegalStateException ise){ + String message = ise.getMessage(); + assertThat(message, JUnitMatchers.containsString("Unable to restore configuration snapshot from ")); + } + + } + + @Test + public void testPersistConfig() throws Exception { + File resourcePath = FileTypeTest.getResourceAsFile("/combined/1controller.txt.config"); + File parentFile = resourcePath.getParentFile(); + + AutodetectDirectoryStorageAdapter adapter = new AutodetectDirectoryStorageAdapter(); + + PropertiesProviderTest pp = new PropertiesProviderTest(); + pp.addProperty("directoryStorage",parentFile.getPath()); + AutodetectDirectoryPersister persister = (AutodetectDirectoryPersister) adapter.instantiate(pp); + List configs = null; + try { + configs = persister.loadLastConfigs(); + } catch (IOException e) { + fail("An exception of type " + UnsupportedOperationException.class + " was expected"); + } + Assert.assertEquals(2, configs.size()); + try { + persister.persistConfig(configs.get(0)); + } catch (UnsupportedOperationException uoe){ + String message = uoe.getMessage(); + assertThat(message,JUnitMatchers.containsString("This adapter is read only. Please set readonly=true on class")); + } + } + } diff --git a/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/bad_controller.xml.config b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/bad_controller.xml.config new file mode 100644 index 0000000000..3f6a3375d0 --- /dev/null +++ b/opendaylight/config/config-persister-directory-autodetect-adapter/src/test/resources/bad_controller.xml.config @@ -0,0 +1,10 @@ + + + cap2 + capa a + + + xml + + \ No newline at end of file diff --git a/opendaylight/config/config-persister-file-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/file/xml/model/CapabilityHandler.java b/opendaylight/config/config-persister-file-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/file/xml/model/CapabilityHandler.java deleted file mode 100644 index d384df6989..0000000000 --- a/opendaylight/config/config-persister-file-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/file/xml/model/CapabilityHandler.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.controller.config.persist.storage.file.xml.model; - -import javax.xml.bind.ValidationEventHandler; -import javax.xml.bind.annotation.DomHandler; -import javax.xml.transform.Source; -import javax.xml.transform.stream.StreamResult; -import javax.xml.transform.stream.StreamSource; -import java.io.StringReader; -import java.io.StringWriter; - -class CapabilityHandler implements DomHandler { - - private static final String START_TAG = ""; - private static final String END_TAG = ""; - - private StringWriter xmlWriter = new StringWriter(); - - public StreamResult createUnmarshaller(ValidationEventHandler errorHandler) { - xmlWriter.getBuffer().setLength(0); - return new StreamResult(xmlWriter); - } - - public String getElement(StreamResult rt) { - String xml = rt.getWriter().toString(); - int beginIndex = xml.indexOf(START_TAG) + START_TAG.length(); - int endIndex = xml.indexOf(END_TAG); - return xml.substring(beginIndex, endIndex); - } - - public Source marshal(String n, ValidationEventHandler errorHandler) { - try { - String xml = START_TAG + n.trim() + END_TAG; - StringReader xmlReader = new StringReader(xml); - return new StreamSource(xmlReader); - } catch(Exception e) { - throw new RuntimeException(e); - } - } - -} diff --git a/opendaylight/config/config-persister-file-xml-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/file/xml/FileStorageAdapterTest.java b/opendaylight/config/config-persister-file-xml-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/file/xml/FileStorageAdapterTest.java index 0e4cce544f..5322f6357a 100644 --- a/opendaylight/config/config-persister-file-xml-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/file/xml/FileStorageAdapterTest.java +++ b/opendaylight/config/config-persister-file-xml-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/file/xml/FileStorageAdapterTest.java @@ -10,6 +10,8 @@ package org.opendaylight.controller.config.persist.storage.file.xml; import com.google.common.base.Charsets; import java.io.File; +import java.io.FileNotFoundException; +import java.io.IOException; import java.nio.file.Files; import java.util.List; import java.util.SortedSet; @@ -29,6 +31,8 @@ public class FileStorageAdapterTest { private static int i; private File file; + private static final String NON_EXISTENT_DIRECTORY = "./nonExistentDir/"; + private static final String NON_EXISTENT_FILE = "nonExistent.txt"; @Before public void setUp() throws Exception { @@ -39,6 +43,32 @@ public class FileStorageAdapterTest { i = 1; } + @Test + public void testNewFile() throws Exception { + XmlFileStorageAdapter storage = new XmlFileStorageAdapter(); + PropertiesProviderTest pp = new PropertiesProviderTest(); + pp.addProperty("fileStorage",NON_EXISTENT_DIRECTORY+NON_EXISTENT_FILE); + pp.addProperty("numberOfBackups",Integer.toString(Integer.MAX_VALUE)); + storage.instantiate(pp); + + final ConfigSnapshotHolder holder = new ConfigSnapshotHolder() { + @Override + public String getConfigSnapshot() { + return createConfig(); + } + + @Override + public SortedSet getCapabilities() { + return createCaps(); + } + }; + storage.persistConfig(holder); + + storage.persistConfig(holder); + + Assert.assertEquals(storage.toString().replace("\\","/"),"XmlFileStorageAdapter [storage="+NON_EXISTENT_DIRECTORY+NON_EXISTENT_FILE+"]"); + delete(new File(NON_EXISTENT_DIRECTORY)); + } @Test public void testFileAdapter() throws Exception { XmlFileStorageAdapter storage = new XmlFileStorageAdapter(); @@ -191,4 +221,12 @@ public class FileStorageAdapterTest { return "" + i++ + ""; } + private void delete(File f) throws IOException { + if (f.isDirectory()) { + for (File c : f.listFiles()) + delete(c); + } + if (!f.delete()) + throw new FileNotFoundException("Failed to delete file: " + f); + } } -- 2.36.6