1 package org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy;
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertFalse;
5 import static org.junit.Assert.assertTrue;
6 import static org.mockito.Mockito.doReturn;
7 import static org.mockito.Mockito.doThrow;
8 import java.io.IOException;
9 import java.util.Hashtable;
10 import org.junit.Before;
11 import org.junit.Test;
12 import org.mockito.Mock;
13 import org.mockito.MockitoAnnotations;
14 import org.osgi.framework.BundleContext;
15 import org.osgi.framework.ServiceReference;
16 import org.osgi.service.cm.Configuration;
17 import org.osgi.service.cm.ConfigurationAdmin;
19 public class EntityOwnerSelectionStrategyConfigReaderTest {
21 private BundleContext mockBundleContext;
24 private ServiceReference<ConfigurationAdmin> mockConfigAdminServiceRef;
27 private ConfigurationAdmin mockConfigAdmin;
30 private Configuration mockConfig;
33 public void setup() throws IOException {
34 MockitoAnnotations.initMocks(this);
36 doReturn(mockConfigAdminServiceRef).when(mockBundleContext).getServiceReference(ConfigurationAdmin.class);
37 doReturn(mockConfigAdmin).when(mockBundleContext).getService(mockConfigAdminServiceRef);
39 doReturn(mockConfig).when(mockConfigAdmin).getConfiguration(EntityOwnerSelectionStrategyConfigReader.CONFIG_ID);
43 public void testReadStrategies(){
44 Hashtable<String, Object> props = new Hashtable<>();
45 props.put("test", "org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy.LastCandidateSelectionStrategy,100");
47 doReturn(props).when(mockConfig).getProperties();
49 EntityOwnerSelectionStrategyConfig config = new EntityOwnerSelectionStrategyConfigReader(mockBundleContext).getConfig();
51 assertTrue(config.isStrategyConfigured("test"));
53 EntityOwnerSelectionStrategy strategy = config.createStrategy("test");
54 assertTrue(strategy instanceof LastCandidateSelectionStrategy);
55 assertEquals(100L, strategy.getSelectionDelayInMillis());
59 public void testReadStrategiesWithIOException() throws IOException {
60 doThrow(IOException.class).when(mockConfigAdmin).getConfiguration(EntityOwnerSelectionStrategyConfigReader.CONFIG_ID);
62 EntityOwnerSelectionStrategyConfig config = new EntityOwnerSelectionStrategyConfigReader(mockBundleContext).getConfig();
64 assertFalse(config.isStrategyConfigured("test"));
68 public void testReadStrategiesWithNullConfiguration() throws IOException {
69 doReturn(null).when(mockConfigAdmin).getConfiguration(EntityOwnerSelectionStrategyConfigReader.CONFIG_ID);
71 EntityOwnerSelectionStrategyConfig config = new EntityOwnerSelectionStrategyConfigReader(mockBundleContext).getConfig();
73 assertFalse(config.isStrategyConfigured("test"));
77 public void testReadStrategiesWithNullConfigurationProperties() throws IOException {
78 doReturn(null).when(mockConfig).getProperties();
80 EntityOwnerSelectionStrategyConfig config = new EntityOwnerSelectionStrategyConfigReader(mockBundleContext).getConfig();
82 assertFalse(config.isStrategyConfigured("test"));
86 public void testReadStrategiesInvalidDelay(){
87 Hashtable<String, Object> props = new Hashtable<>();
88 props.put("test", "org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy.LastCandidateSelectionStrategy,foo");
90 doReturn(props).when(mockConfig).getProperties();
92 EntityOwnerSelectionStrategyConfig config = new EntityOwnerSelectionStrategyConfigReader(mockBundleContext).getConfig();
94 assertFalse(config.isStrategyConfigured("test"));
98 public void testReadStrategiesInvalidClassType(){
99 Hashtable<String, Object> props = new Hashtable<>();
100 props.put("test", "String,100");
102 doReturn(props).when(mockConfig).getProperties();
104 EntityOwnerSelectionStrategyConfig config = new EntityOwnerSelectionStrategyConfigReader(mockBundleContext).getConfig();
106 assertFalse(config.isStrategyConfigured("test"));
110 public void testReadStrategiesMissingDelay(){
111 Hashtable<String, Object> props = new Hashtable<>();
112 props.put("test", "org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy.LastCandidateSelectionStrategy,100");
113 props.put("test1", "org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy.LastCandidateSelectionStrategy");
115 doReturn(props).when(mockConfig).getProperties();
117 EntityOwnerSelectionStrategyConfig config = new EntityOwnerSelectionStrategyConfigReader(mockBundleContext).getConfig();
119 assertEquals(100, config.createStrategy("test").getSelectionDelayInMillis());
120 assertEquals(0, config.createStrategy("test2").getSelectionDelayInMillis());