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);
46 public void testReadStrategies(){
47 Hashtable<String, Object> props = new Hashtable<>();
48 props.put("test", "org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy.LastCandidateSelectionStrategy,100");
50 doReturn(props).when(mockConfig).getProperties();
52 EntityOwnerSelectionStrategyConfig config = new EntityOwnerSelectionStrategyConfigReader(mockBundleContext).getConfig();
54 assertTrue(config.isStrategyConfigured("test"));
56 EntityOwnerSelectionStrategy strategy = config.createStrategy("test");
57 assertTrue(strategy instanceof LastCandidateSelectionStrategy);
58 assertEquals(100L, strategy.getSelectionDelayInMillis());
62 public void testReadStrategiesForNonExistentFile() throws IOException {
63 doThrow(IOException.class).when(mockConfigAdmin).getConfiguration(EntityOwnerSelectionStrategyConfigReader.CONFIG_ID);
65 EntityOwnerSelectionStrategyConfig config = new EntityOwnerSelectionStrategyConfigReader(mockBundleContext).getConfig();
67 assertFalse(config.isStrategyConfigured("test"));
71 public void testReadStrategiesInvalidDelay(){
72 Hashtable<String, Object> props = new Hashtable<>();
73 props.put("test", "org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy.LastCandidateSelectionStrategy,foo");
75 doReturn(props).when(mockConfig).getProperties();
77 EntityOwnerSelectionStrategyConfig config = new EntityOwnerSelectionStrategyConfigReader(mockBundleContext).getConfig();
79 assertFalse(config.isStrategyConfigured("test"));
83 public void testReadStrategiesInvalidClassType(){
84 Hashtable<String, Object> props = new Hashtable<>();
85 props.put("test", "String,100");
87 doReturn(props).when(mockConfig).getProperties();
89 EntityOwnerSelectionStrategyConfig config = new EntityOwnerSelectionStrategyConfigReader(mockBundleContext).getConfig();
91 assertFalse(config.isStrategyConfigured("test"));
95 public void testReadStrategiesMissingDelay(){
96 Hashtable<String, Object> props = new Hashtable<>();
97 props.put("test", "org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy.LastCandidateSelectionStrategy,100");
98 props.put("test1", "org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy.LastCandidateSelectionStrategy");
100 doReturn(props).when(mockConfig).getProperties();
102 EntityOwnerSelectionStrategyConfig config = new EntityOwnerSelectionStrategyConfigReader(mockBundleContext).getConfig();
104 assertEquals(100, config.createStrategy("test").getSelectionDelayInMillis());
105 assertEquals(0, config.createStrategy("test2").getSelectionDelayInMillis());