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.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.Test;
20 public class EntityOwnerSelectionStrategyConfigReaderTest {
23 public void testReadStrategies() {
24 final Map<Object, Object> props = new java.util.HashMap<>();
25 props.put("entity.type.test",
26 "org.opendaylight.controller.cluster.entityownership.selectionstrategy.LastCandidateSelectionStrategy,100");
29 final EntityOwnerSelectionStrategyConfig config = EntityOwnerSelectionStrategyConfigReader
30 .loadStrategyWithConfig(props);
32 assertTrue(config.isStrategyConfigured("test"));
34 final EntityOwnerSelectionStrategy strategy = config.createStrategy("test",
35 Collections.<String, Long>emptyMap());
36 assertTrue(strategy.toString(), strategy instanceof LastCandidateSelectionStrategy);
37 assertEquals(100L, strategy.getSelectionDelayInMillis());
39 final EntityOwnerSelectionStrategy strategy1 = config.createStrategy("test", Collections.emptyMap());
40 assertEquals(strategy, strategy1);
42 config.clearStrategies();
44 final EntityOwnerSelectionStrategy strategy2 = config.createStrategy("test", Collections.emptyMap());
45 assertNotEquals(strategy1, strategy2);
49 public void testReadStrategiesWithEmptyConfiguration() {
51 final Map<Object, Object> props = new HashMap<>();
52 final EntityOwnerSelectionStrategyConfig config = EntityOwnerSelectionStrategyConfigReader
53 .loadStrategyWithConfig(props);
55 assertFalse(config.isStrategyConfigured("test"));
59 public void testReadStrategiesWithNullConfiguration() {
60 final EntityOwnerSelectionStrategyConfig config = EntityOwnerSelectionStrategyConfigReader
61 .loadStrategyWithConfig(null);
62 assertFalse(config.isStrategyConfigured("test"));
65 @Test(expected = IllegalArgumentException.class)
66 public void testReadStrategiesInvalidDelay() {
67 final Map<Object, Object> props = new HashMap<>();
68 props.put("entity.type.test",
69 "org.opendaylight.controller.cluster.entityownership.selectionstrategy.LastCandidateSelectionStrategy,foo");
70 EntityOwnerSelectionStrategyConfigReader.loadStrategyWithConfig(props);
73 @Test(expected = IllegalArgumentException.class)
74 public void testReadStrategiesInvalidClassType() {
75 final Map<Object, Object> props = new HashMap<>();
76 props.put("entity.type.test", "String,100");
77 EntityOwnerSelectionStrategyConfigReader.loadStrategyWithConfig(props);
81 public void testReadStrategiesMissingDelay() {
82 final Map<Object, Object> props = new HashMap<>();
83 props.put("entity.type.test",
84 "org.opendaylight.controller.cluster.entityownership.selectionstrategy.LastCandidateSelectionStrategy,100");
85 props.put("entity.type.test1",
86 "org.opendaylight.controller.cluster.entityownership.selectionstrategy.LastCandidateSelectionStrategy");
89 final EntityOwnerSelectionStrategyConfig config = EntityOwnerSelectionStrategyConfigReader
90 .loadStrategyWithConfig(props);
92 assertEquals(100, config.createStrategy("test", Collections.emptyMap()).getSelectionDelayInMillis());
93 assertEquals(0, config.createStrategy("test2", Collections.emptyMap()).getSelectionDelayInMillis());