Fix unit test CS warnings in sal-distributed-datastore
[controller.git] / opendaylight / md-sal / sal-distributed-datastore / src / test / java / org / opendaylight / controller / cluster / datastore / entityownership / selectionstrategy / EntityOwnerSelectionStrategyConfigReaderTest.java
1 /*
2  * Copyright (c) 2015 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 package org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy;
9
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertNotEquals;
13 import static org.junit.Assert.assertTrue;
14 import static org.mockito.Mockito.doReturn;
15 import static org.mockito.Mockito.doThrow;
16
17 import java.io.IOException;
18 import java.util.Collections;
19 import java.util.Hashtable;
20 import org.junit.Before;
21 import org.junit.Test;
22 import org.mockito.Mock;
23 import org.mockito.MockitoAnnotations;
24 import org.osgi.framework.BundleContext;
25 import org.osgi.framework.ServiceReference;
26 import org.osgi.service.cm.Configuration;
27 import org.osgi.service.cm.ConfigurationAdmin;
28
29 public class EntityOwnerSelectionStrategyConfigReaderTest {
30     @Mock
31     private BundleContext mockBundleContext;
32
33     @Mock
34     private ServiceReference<ConfigurationAdmin> mockConfigAdminServiceRef;
35
36     @Mock
37     private ConfigurationAdmin mockConfigAdmin;
38
39     @Mock
40     private Configuration mockConfig;
41
42     @Before
43     public void setup() throws IOException {
44         MockitoAnnotations.initMocks(this);
45
46         doReturn(mockConfigAdminServiceRef).when(mockBundleContext).getServiceReference(ConfigurationAdmin.class);
47         doReturn(mockConfigAdmin).when(mockBundleContext).getService(mockConfigAdminServiceRef);
48
49         doReturn(mockConfig).when(mockConfigAdmin).getConfiguration(EntityOwnerSelectionStrategyConfigReader.CONFIG_ID);
50     }
51
52     private EntityOwnerSelectionStrategyConfig loadStrategyConfig() {
53         return EntityOwnerSelectionStrategyConfigReader.loadStrategyWithConfig(mockBundleContext);
54     }
55
56     @Test
57     public void testReadStrategies() {
58         Hashtable<String, Object> props = new Hashtable<>();
59         props.put("entity.type.test", "org.opendaylight.controller.cluster.datastore.entityownership."
60                 + "selectionstrategy.LastCandidateSelectionStrategy,100");
61
62         doReturn(props).when(mockConfig).getProperties();
63
64         EntityOwnerSelectionStrategyConfig config = loadStrategyConfig();
65
66         assertTrue(config.isStrategyConfigured("test"));
67
68         EntityOwnerSelectionStrategy strategy = config.createStrategy("test", Collections.<String, Long>emptyMap());
69         assertTrue(strategy.toString(), strategy instanceof LastCandidateSelectionStrategy);
70         assertEquals(100L, strategy.getSelectionDelayInMillis());
71
72         final EntityOwnerSelectionStrategy strategy1 = config.createStrategy("test", Collections.emptyMap());
73         assertEquals(strategy, strategy1);
74
75         config.clearStrategies();
76
77         final EntityOwnerSelectionStrategy strategy2 = config.createStrategy("test", Collections.emptyMap());
78         assertNotEquals(strategy1, strategy2);
79     }
80
81     @Test
82     public void testReadStrategiesWithIOException() throws IOException {
83         doThrow(IOException.class).when(mockConfigAdmin).getConfiguration(
84                 EntityOwnerSelectionStrategyConfigReader.CONFIG_ID);
85
86         EntityOwnerSelectionStrategyConfig config = loadStrategyConfig();
87
88         assertFalse(config.isStrategyConfigured("test"));
89     }
90
91     @Test
92     public void testReadStrategiesWithNullConfiguration() throws IOException {
93         doReturn(null).when(mockConfigAdmin).getConfiguration(EntityOwnerSelectionStrategyConfigReader.CONFIG_ID);
94
95         EntityOwnerSelectionStrategyConfig config = loadStrategyConfig();
96
97         assertFalse(config.isStrategyConfigured("test"));
98     }
99
100     @Test
101     public void testReadStrategiesWithNullConfigurationProperties() throws IOException {
102         doReturn(null).when(mockConfig).getProperties();
103
104         EntityOwnerSelectionStrategyConfig config = loadStrategyConfig();
105
106         assertFalse(config.isStrategyConfigured("test"));
107     }
108
109     @Test(expected = IllegalArgumentException.class)
110     public void testReadStrategiesInvalidDelay() {
111         Hashtable<String, Object> props = new Hashtable<>();
112         props.put("entity.type.test", "org.opendaylight.controller.cluster.datastore.entityownership."
113                 + "selectionstrategy.LastCandidateSelectionStrategy,foo");
114
115         doReturn(props).when(mockConfig).getProperties();
116
117         loadStrategyConfig();
118     }
119
120     @Test(expected = IllegalArgumentException.class)
121     public void testReadStrategiesInvalidClassType() {
122         Hashtable<String, Object> props = new Hashtable<>();
123         props.put("entity.type.test", "String,100");
124
125         doReturn(props).when(mockConfig).getProperties();
126
127         loadStrategyConfig();
128     }
129
130     @Test
131     public void testReadStrategiesMissingDelay() {
132         Hashtable<String, Object> props = new Hashtable<>();
133         props.put("entity.type.test", "org.opendaylight.controller.cluster.datastore.entityownership."
134                 + "selectionstrategy.LastCandidateSelectionStrategy,100");
135         props.put("entity.type.test1", "org.opendaylight.controller.cluster.datastore.entityownership."
136                 + "selectionstrategy.LastCandidateSelectionStrategy");
137
138         doReturn(props).when(mockConfig).getProperties();
139
140         EntityOwnerSelectionStrategyConfig config = loadStrategyConfig();
141
142         assertEquals(100, config.createStrategy("test", Collections.emptyMap()).getSelectionDelayInMillis());
143         assertEquals(0, config.createStrategy("test2", Collections.emptyMap()).getSelectionDelayInMillis());
144     }
145 }