Fix Eclipse warnings in config-manager
[controller.git] / opendaylight / config / config-manager / src / test / java / org / opendaylight / controller / config / manager / impl / ConfigRegistryImplLookupTest.java
1 /*
2  * Copyright (c) 2013 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.config.manager.impl;
9
10 import static org.hamcrest.core.Is.is;
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertThat;
13
14 import com.google.common.collect.Sets;
15 import java.lang.management.ManagementFactory;
16 import java.lang.reflect.Field;
17 import java.util.Collections;
18 import java.util.Map;
19 import java.util.Set;
20 import javax.management.InstanceAlreadyExistsException;
21 import javax.management.ObjectName;
22 import org.junit.After;
23 import org.junit.Before;
24 import org.junit.Test;
25 import org.opendaylight.controller.config.api.ModuleIdentifier;
26 import org.opendaylight.controller.config.api.jmx.ObjectNameUtil;
27 import org.opendaylight.controller.config.api.runtime.RuntimeBean;
28 import org.opendaylight.controller.config.manager.impl.jmx.BaseJMXRegistrator;
29 import org.opendaylight.controller.config.manager.impl.jmx.RootRuntimeBeanRegistratorImpl;
30 import org.opendaylight.controller.config.manager.impl.runtimembean.TestingRuntimeBean;
31
32 public class ConfigRegistryImplLookupTest extends
33         AbstractLockedPlatformMBeanServerTest {
34
35     private ConfigRegistryImpl configRegistryImpl;
36     private BaseJMXRegistrator baseJMXRegistrator;
37
38     private static final String moduleNameA = "moduleA";
39     private static final String moduleNameB = "moduleB";
40
41     private static final String instanceNameA = "instA";
42     private static final String instanceNameB = "instB";
43     private static final String instanceNameC = "instC";
44
45     private static final ObjectName name1 = ObjectNameUtil
46             .createReadOnlyModuleON(moduleNameA, instanceNameA);
47     private static final ObjectName name2 = ObjectNameUtil
48             .createReadOnlyModuleON(moduleNameA, instanceNameB);
49     private static final ObjectName name3 = ObjectNameUtil
50             .createReadOnlyModuleON(moduleNameA, instanceNameC);
51     private static final ObjectName name4 = ObjectNameUtil
52             .createReadOnlyModuleON(moduleNameB, instanceNameA);
53
54     private static final ObjectName name5 = ObjectNameUtil
55             .createRuntimeBeanName(moduleNameA, instanceNameA, Collections.<String, String>emptyMap());
56     private static final ObjectName name6 = ObjectNameUtil
57             .createRuntimeBeanName(moduleNameA, instanceNameB, Collections.<String, String>emptyMap());
58     private static final ObjectName name8 = ObjectNameUtil
59             .createRuntimeBeanName(moduleNameB, instanceNameA, Collections.<String, String>emptyMap());
60
61     private static final ObjectName name9 = ObjectNameUtil
62             .createTransactionModuleON("transaction", moduleNameA, instanceNameA);
63
64     @Before
65     public void setUp() throws Exception {
66         configRegistryImpl = new ConfigRegistryImpl(null,
67                 ManagementFactory.getPlatformMBeanServer(), null);
68         Field field = configRegistryImpl.getClass().getDeclaredField(
69                 "baseJMXRegistrator");
70         field.setAccessible(true);
71         baseJMXRegistrator = (BaseJMXRegistrator) field.get(configRegistryImpl);
72
73         registerModuleBean(new TestingRuntimeBean(), baseJMXRegistrator, name1);
74         registerModuleBean(new TestingRuntimeBean(), baseJMXRegistrator, name2);
75         registerModuleBean(new TestingRuntimeBean(), baseJMXRegistrator, name3);
76         registerModuleBean(new TestingRuntimeBean(), baseJMXRegistrator, name4);
77
78         registerRuntimeBean(new TestingRuntimeBean(), baseJMXRegistrator, name5);
79         registerRuntimeBean(new TestingRuntimeBean(), baseJMXRegistrator, name6);
80         registerRuntimeBean(new TestingRuntimeBean(), baseJMXRegistrator, name8);
81
82         baseJMXRegistrator.createTransactionJMXRegistrator("transaction")
83                 .createTransactionModuleJMXRegistrator()
84                 .registerMBean(new TestingRuntimeBean(), name9);
85
86     }
87
88     private static void registerModuleBean(final TestingRuntimeBean testingRuntimeBean,
89             final BaseJMXRegistrator baseJMXRegistrator, final ObjectName objectName)
90             throws InstanceAlreadyExistsException {
91         baseJMXRegistrator.createModuleJMXRegistrator().registerMBean(
92                 testingRuntimeBean, objectName);
93     }
94
95     private static void registerRuntimeBean(final RuntimeBean object, final BaseJMXRegistrator baseJMXRegistrator,
96             final ObjectName runtimeON) throws InstanceAlreadyExistsException {
97         String factoryName = ObjectNameUtil.getFactoryName(runtimeON);
98         String instanceName = ObjectNameUtil.getInstanceName(runtimeON);
99         Map<String, String> properties = ObjectNameUtil
100                 .getAdditionalPropertiesOfRuntimeBeanName(runtimeON);
101
102         RootRuntimeBeanRegistratorImpl runtimeBeanRegistrator = baseJMXRegistrator
103                 .createRuntimeBeanRegistrator(new ModuleIdentifier(factoryName, instanceName));
104
105         assertThat(properties.isEmpty(), is(true));
106
107         runtimeBeanRegistrator.registerRoot(object);
108     }
109
110     @After
111     public void cleanUp() {
112         baseJMXRegistrator.close();
113     }
114
115     @Test
116     public void testLookupConfigBeans() throws Exception {
117         Set<ObjectName> beans = configRegistryImpl.lookupConfigBeans();
118         assertEquals(Sets.newHashSet(name1, name2, name3, name4), beans);
119         beans = configRegistryImpl.lookupConfigBeans();
120         assertEquals(Sets.newHashSet(name1, name2, name3, name4), beans);
121     }
122
123     @Test
124     public void testLookupConfigBeanWithModuleName() throws Exception {
125         Set<ObjectName> bean = configRegistryImpl
126                 .lookupConfigBeans(moduleNameA);
127         assertEquals(Sets.newHashSet(name1, name2, name3), bean);
128     }
129
130     @Test
131     public void testLookupConfigBeanWithModuleNameAndInstanceName()
132             throws Exception {
133         Set<ObjectName> bean = configRegistryImpl.lookupConfigBeans(
134                 moduleNameA, instanceNameA);
135         assertEquals(Sets.newHashSet(name1), bean);
136     }
137
138     @Test
139     public void testLookupRuntimeBeans() throws Exception {
140         Set<ObjectName> beans = configRegistryImpl.lookupRuntimeBeans();
141         assertEquals(Sets.newHashSet(name5, name6, name8), beans);
142         beans = configRegistryImpl.lookupRuntimeBeans(null, null);
143         assertEquals(Sets.newHashSet(name5, name6, name8), beans);
144     }
145
146     @Test
147     public void testLookupRuntimeBeansWithIFcNameAndImplName() throws Exception {
148         Set<ObjectName> beans = configRegistryImpl.lookupRuntimeBeans(
149                 moduleNameA, instanceNameA);
150         assertEquals(Sets.newHashSet(name5), beans);
151     }
152
153 }