BUG-6650: ep-sgt/ip, propose initial sxp-ep-provider
[groupbasedpolicy.git] / sxp-integration / sxp-ep-provider / src / test / java / org / opendaylight / groupbasedpolicy / sxp / ep / provider / impl / dao / SimpleCachedDaoImplTest.java
1 /*
2  * Copyright (c) 2016 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.groupbasedpolicy.sxp.ep.provider.impl.dao;
10
11 import com.google.common.base.Optional;
12 import com.google.common.collect.Iterables;
13 import org.junit.Assert;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.opendaylight.yangtools.yang.binding.DataContainer;
17 import org.opendaylight.yangtools.yang.binding.DataObject;
18
19 /**
20  * Test for {@link SimpleCachedDaoImpl}.
21  */
22 public class SimpleCachedDaoImplTest {
23
24     private static final String KEY_1 = "dummyKey1";
25     private static final String KEY_2 = "dummyKey2";
26     private static final DummyDataObject DUMMY_DATA_1 = new DummyDataObject("dummyData1");
27     private static final DummyDataObject DUMMY_DATA_2 = new DummyDataObject("dummyData2");
28
29     private SimpleCachedDaoImpl<String, DummyDataObject> dao;
30
31     @Before
32     public void setUp() throws Exception {
33         dao = new SimpleCachedDaoImpl<>();
34         Assert.assertFalse(dao.find(KEY_1).isPresent());
35     }
36
37     @Test
38     public void testUpdate() throws Exception {
39         dao.update(KEY_1, DUMMY_DATA_1);
40         final Optional<DummyDataObject> dataOpt = dao.find(KEY_1);
41         Assert.assertTrue(dataOpt.isPresent());
42         Assert.assertEquals(DUMMY_DATA_1.getDummyData(), dataOpt.get().getDummyData());
43     }
44
45     @Test
46     public void testInvalidateCache() throws Exception {
47         dao.update(KEY_1, DUMMY_DATA_1);
48         Assert.assertTrue(dao.find(KEY_1).isPresent());
49         dao.invalidateCache();
50         Assert.assertFalse(dao.find(KEY_1).isPresent());
51     }
52
53     @Test
54     public void testIsEmpty() throws Exception {
55         Assert.assertTrue(dao.isEmpty());
56         dao.update(KEY_1, DUMMY_DATA_1);
57         Assert.assertFalse(dao.isEmpty());
58     }
59
60     @Test
61     public void testValues() throws Exception {
62         Assert.assertEquals(0, Iterables.size(dao.values()));
63         dao.update(KEY_1, DUMMY_DATA_1);
64         dao.update(KEY_1, DUMMY_DATA_2);
65         Assert.assertEquals(1, Iterables.size(dao.values()));
66
67         dao.update(KEY_2, DUMMY_DATA_2);
68         Assert.assertEquals(2, Iterables.size(dao.values()));
69     }
70
71     private static final class DummyDataObject implements DataObject {
72         private final String dummyData;
73
74         public DummyDataObject(final String dummyData) {
75             this.dummyData = dummyData;
76         }
77
78         public String getDummyData() {
79             return dummyData;
80         }
81
82         @Override
83         public Class<? extends DataContainer> getImplementedInterface() {
84             return getClass();
85         }
86     }
87 }