2 * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.controller.cluster.datastore.entityownership.selectionstrategy;
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;
15 import java.util.Collections;
16 import java.util.HashMap;
18 import org.junit.Before;
19 import org.junit.Test;
20 import org.mockito.MockitoAnnotations;
22 public class EntityOwnerSelectionStrategyConfigReaderTest {
26 MockitoAnnotations.initMocks(this);
30 public void testReadStrategies() {
31 final Map<Object, Object> props = new java.util.HashMap<>();
32 props.put("entity.type.test", "org.opendaylight.controller.cluster.datastore.entityownership."
33 + "selectionstrategy.LastCandidateSelectionStrategy,100");
36 final EntityOwnerSelectionStrategyConfig config = EntityOwnerSelectionStrategyConfigReader
37 .loadStrategyWithConfig(props);
39 assertTrue(config.isStrategyConfigured("test"));
41 final EntityOwnerSelectionStrategy strategy = config.createStrategy("test",
42 Collections.<String, Long>emptyMap());
43 assertTrue(strategy.toString(), strategy instanceof LastCandidateSelectionStrategy);
44 assertEquals(100L, strategy.getSelectionDelayInMillis());
46 final EntityOwnerSelectionStrategy strategy1 = config.createStrategy("test", Collections.emptyMap());
47 assertEquals(strategy, strategy1);
49 config.clearStrategies();
51 final EntityOwnerSelectionStrategy strategy2 = config.createStrategy("test", Collections.emptyMap());
52 assertNotEquals(strategy1, strategy2);
56 public void testReadStrategiesWithEmptyConfiguration() {
58 final Map<Object, Object> props = new HashMap<>();
59 final EntityOwnerSelectionStrategyConfig config = EntityOwnerSelectionStrategyConfigReader
60 .loadStrategyWithConfig(props);
62 assertFalse(config.isStrategyConfigured("test"));
66 public void testReadStrategiesWithNullConfiguration() {
67 final EntityOwnerSelectionStrategyConfig config = EntityOwnerSelectionStrategyConfigReader
68 .loadStrategyWithConfig(null);
69 assertFalse(config.isStrategyConfigured("test"));
72 @Test(expected = IllegalArgumentException.class)
73 public void testReadStrategiesInvalidDelay() {
74 final Map<Object, Object> props = new HashMap<>();
75 props.put("entity.type.test", "org.opendaylight.controller.cluster.datastore.entityownership."
76 + "selectionstrategy.LastCandidateSelectionStrategy,foo");
77 EntityOwnerSelectionStrategyConfigReader.loadStrategyWithConfig(props);
80 @Test(expected = IllegalArgumentException.class)
81 public void testReadStrategiesInvalidClassType() {
82 final Map<Object, Object> props = new HashMap<>();
83 props.put("entity.type.test", "String,100");
84 EntityOwnerSelectionStrategyConfigReader.loadStrategyWithConfig(props);
88 public void testReadStrategiesMissingDelay() {
89 final Map<Object, Object> props = new HashMap<>();
90 props.put("entity.type.test", "org.opendaylight.controller.cluster.datastore.entityownership."
91 + "selectionstrategy.LastCandidateSelectionStrategy,100");
92 props.put("entity.type.test1", "org.opendaylight.controller.cluster.datastore.entityownership."
93 + "selectionstrategy.LastCandidateSelectionStrategy");
96 final EntityOwnerSelectionStrategyConfig config = EntityOwnerSelectionStrategyConfigReader
97 .loadStrategyWithConfig(props);
99 assertEquals(100, config.createStrategy("test", Collections.emptyMap()).getSelectionDelayInMillis());
100 assertEquals(0, config.createStrategy("test2", Collections.emptyMap()).getSelectionDelayInMillis());