2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 package org.opendaylight.controller.netconf.persist.impl;
11 import com.google.common.base.Optional;
12 import org.junit.Before;
13 import org.junit.Test;
14 import org.mockito.Mock;
15 import org.mockito.MockitoAnnotations;
16 import org.opendaylight.controller.config.persist.api.Persister;
17 import org.opendaylight.controller.config.persist.api.storage.StorageAdapter;
18 import org.opendaylight.controller.config.persist.storage.file.FileStorageAdapter;
19 import org.opendaylight.controller.config.stat.ConfigProvider;
22 import java.io.IOException;
24 import static org.junit.Assert.*;
25 import static org.junit.matchers.JUnitMatchers.containsString;
26 import static org.mockito.Matchers.any;
27 import static org.mockito.Mockito.*;
29 public class PersisterImplTest {
31 ConfigProvider mockedConfigProvider;
34 public void setUpMocks() {
35 MockitoAnnotations.initMocks(this);
39 public void testFromProperties() throws Exception {
40 doReturn(MockAdapter.class.getName()).when(mockedConfigProvider).getProperty(
41 PersisterImpl.STORAGE_ADAPTER_CLASS_PROP);
43 PersisterImpl persisterImpl = PersisterImpl.createFromProperties(mockedConfigProvider).get();
44 persisterImpl.persistConfig(null);
45 persisterImpl.loadLastConfig();
46 persisterImpl.persistConfig(null);
47 persisterImpl.loadLastConfig();
49 assertEquals(2, MockAdapter.persist);
50 assertEquals(2, MockAdapter.load);
51 assertEquals(1, MockAdapter.props);
55 public void testFromProperties2() throws Exception {
56 mockedConfigProvider = mock(ConfigProvider.class);
57 doReturn(FileStorageAdapter.class.getName()).when(mockedConfigProvider).getProperty(
58 PersisterImpl.STORAGE_ADAPTER_CLASS_PROP);
59 doReturn("target" + File.separator + "generated-test-sources" + File.separator + "testFile").when(
60 mockedConfigProvider).getProperty(FileStorageAdapter.FILE_STORAGE_PROP);
61 doReturn("mockedConfigProvider").when(mockedConfigProvider).toString();
62 doReturn(null).when(mockedConfigProvider).getProperty("numberOfBackups");
64 PersisterImpl persisterImpl = PersisterImpl.createFromProperties(mockedConfigProvider).get();
65 assertTrue(persisterImpl.getStorage() instanceof FileStorageAdapter);
69 public void testFromProperties3() throws Exception {
70 mockedConfigProvider = mock(ConfigProvider.class);
71 doReturn(FileStorageAdapter.class.getName()).when(mockedConfigProvider).getProperty(
72 PersisterImpl.STORAGE_ADAPTER_CLASS_PROP);
73 doReturn("target" + File.separator + "generated-test-sources" + File.separator + "testFile").when(
74 mockedConfigProvider).getProperty(FileStorageAdapter.FILE_STORAGE_PROP);
75 doReturn("mockedConfigProvider").when(mockedConfigProvider).toString();
76 doReturn("0").when(mockedConfigProvider).getProperty("numberOfBackups");
78 PersisterImpl.createFromProperties(mockedConfigProvider).get();
80 } catch (RuntimeException e) {
83 containsString("numberOfBackups property should be either set to positive value, or ommited. Can not be set to 0."));
88 public void test() throws Exception {
89 StorageAdapter storage = mock(StorageAdapter.class);
90 doReturn(null).when(storage).loadLastConfig();
91 doNothing().when(storage).persistConfig(any(Persister.ConfigSnapshotHolder.class));
92 PersisterImpl persister = new PersisterImpl(storage);
93 persister.loadLastConfig();
94 persister.persistConfig(null);
96 verify(storage).loadLastConfig();
97 verify(storage).persistConfig(any(Persister.ConfigSnapshotHolder.class));
100 public static class MockAdapter implements StorageAdapter {
102 static int persist = 0;
105 public void persistConfig(ConfigSnapshotHolder holder) throws IOException {
112 public Optional<ConfigSnapshotHolder> loadLastConfig() throws IOException {
117 static int props = 0;
120 public void setProperties(ConfigProvider configProvider) {
125 public void close() throws IOException {
126 // TODO Auto-generated method stub