Initial code drop of netconf protocol implementation
[controller.git] / opendaylight / netconf / config-persister-impl / src / test / java / org / opendaylight / controller / netconf / persist / impl / PersisterImplTest.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8
9 package org.opendaylight.controller.netconf.persist.impl;
10
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;
20
21 import java.io.File;
22 import java.io.IOException;
23
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.*;
28
29 public class PersisterImplTest {
30     @Mock
31     ConfigProvider mockedConfigProvider;
32
33     @Before
34     public void setUpMocks() {
35         MockitoAnnotations.initMocks(this);
36     }
37
38     @Test
39     public void testFromProperties() throws Exception {
40         doReturn(MockAdapter.class.getName()).when(mockedConfigProvider).getProperty(
41                 PersisterImpl.STORAGE_ADAPTER_CLASS_PROP);
42
43         PersisterImpl persisterImpl = PersisterImpl.createFromProperties(mockedConfigProvider).get();
44         persisterImpl.persistConfig(null);
45         persisterImpl.loadLastConfig();
46         persisterImpl.persistConfig(null);
47         persisterImpl.loadLastConfig();
48
49         assertEquals(2, MockAdapter.persist);
50         assertEquals(2, MockAdapter.load);
51         assertEquals(1, MockAdapter.props);
52     }
53
54     @Test
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");
63
64         PersisterImpl persisterImpl = PersisterImpl.createFromProperties(mockedConfigProvider).get();
65         assertTrue(persisterImpl.getStorage() instanceof FileStorageAdapter);
66     }
67
68     @Test
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");
77         try {
78             PersisterImpl.createFromProperties(mockedConfigProvider).get();
79             fail();
80         } catch (RuntimeException e) {
81             assertThat(
82                     e.getMessage(),
83                     containsString("numberOfBackups property should be either set to positive value, or ommited. Can not be set to 0."));
84         }
85     }
86
87     @Test
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);
95
96         verify(storage).loadLastConfig();
97         verify(storage).persistConfig(any(Persister.ConfigSnapshotHolder.class));
98     }
99
100     public static class MockAdapter implements StorageAdapter {
101
102         static int persist = 0;
103
104         @Override
105         public void persistConfig(ConfigSnapshotHolder holder) throws IOException {
106             persist++;
107         }
108
109         static int load = 0;
110
111         @Override
112         public Optional<ConfigSnapshotHolder> loadLastConfig() throws IOException {
113             load++;
114             return null;// ?
115         }
116
117         static int props = 0;
118
119         @Override
120         public void setProperties(ConfigProvider configProvider) {
121             props++;
122         }
123
124         @Override
125         public void close() throws IOException {
126             // TODO Auto-generated method stub
127
128         }
129
130     }
131
132 }