/*
- * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ * Copyright (c) 2013, 2017 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+
import javax.annotation.Nullable;
-import javax.management.DynamicMBean;
import javax.management.InstanceAlreadyExistsException;
import javax.management.InstanceNotFoundException;
+import javax.management.IntrospectionException;
import javax.management.ObjectName;
+import javax.management.ReflectionException;
import org.junit.Test;
import org.opendaylight.controller.config.api.ValidationException;
import org.opendaylight.controller.config.api.jmx.ObjectNameUtil;
public class TwoInterfacesExportTest extends AbstractScheduledTest {
- private void assertExists(final String moduleName, final String instanceName)
- throws Exception {
+ private void assertExists(final String moduleName, final String instanceName) throws Exception {
assertExists(null, moduleName, instanceName);
}
- private void assertExists(@Nullable final ConfigTransactionJMXClient transaction,
- final String moduleName, final String instanceName)
- throws InstanceNotFoundException {
+ private void assertExists(@Nullable final ConfigTransactionJMXClient transaction, final String moduleName,
+ final String instanceName) throws InstanceNotFoundException, IntrospectionException, ReflectionException {
if (transaction != null) {
transaction.lookupConfigBean(moduleName, instanceName);
// make a dummy call
- configRegistryClient.newMBeanProxy(
- ObjectNameUtil.createTransactionModuleON(
- transaction.getTransactionName(), moduleName,
- instanceName), DynamicMBean.class).getMBeanInfo();
+ platformMBeanServer.getMBeanInfo(ObjectNameUtil.createTransactionModuleON(transaction.getTransactionName(),
+ moduleName, instanceName));
} else {
configRegistryClient.lookupConfigBean(moduleName, instanceName);
// make a dummy call
- configRegistryClient.newMBeanProxy(
- ObjectNameUtil.createReadOnlyModuleON(moduleName,
- instanceName), DynamicMBean.class).getMBeanInfo();
+ platformMBeanServer.getMBeanInfo(ObjectNameUtil.createReadOnlyModuleON(moduleName, instanceName));
}
}
assertNotExists(null, moduleName, instanceName);
}
- private void assertNotExists(
- @Nullable final ConfigTransactionJMXClient transaction,
- final String moduleName, final String instanceName) {
+ private void assertNotExists(@Nullable final ConfigTransactionJMXClient transaction, final String moduleName,
+ final String instanceName) {
if (transaction != null) {
try {
transaction.lookupConfigBean(moduleName, instanceName);
fail();
- } catch (InstanceNotFoundException e) {
-
+ } catch (final InstanceNotFoundException e) {
+ // FIXME: should be empty?
}
} else {
try {
configRegistryClient.lookupConfigBean(moduleName, instanceName);
fail();
- } catch (InstanceNotFoundException e) {
-
+ } catch (final InstanceNotFoundException e) {
+ // FIXME: should be empty?
}
}
}
@Test
public void twoInterfaceNamesAfterCreatingConfigBean() throws Exception {
- ConfigTransactionJMXClient transaction = configRegistryClient
- .createTransaction();
+ ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
// create using TestingThreadPoolIfc:
- ObjectName scheduled1name = transaction.createModule(
- TestingScheduledThreadPoolModuleFactory.NAME, scheduled1);
+ ObjectName scheduled1name = transaction.createModule(TestingScheduledThreadPoolModuleFactory.NAME, SCHEDULED1);
- ObjectName retrievedName = transaction.lookupConfigBean(
- TestingScheduledThreadPoolModuleFactory.NAME, scheduled1);
+ ObjectName retrievedName = transaction.lookupConfigBean(TestingScheduledThreadPoolModuleFactory.NAME,
+ SCHEDULED1);
assertEquals(scheduled1name, retrievedName);
// getExistingConfigBean should resolve moduleName
String moduleName = TestingScheduledThreadPoolModuleFactory.NAME;
- retrievedName = transaction.lookupConfigBean(moduleName, scheduled1);
- ObjectName expected = ObjectNameUtil.createTransactionModuleON(
- transaction.getTransactionName(), moduleName, scheduled1);
+ retrievedName = transaction.lookupConfigBean(moduleName, SCHEDULED1);
+ ObjectName expected = ObjectNameUtil.createTransactionModuleON(transaction.getTransactionName(), moduleName,
+ SCHEDULED1);
assertEquals(expected, retrievedName);
// commit
transaction.commit();
- assertEquals(1, TestingScheduledThreadPoolImpl.allExecutors.size());
- assertFalse(TestingScheduledThreadPoolImpl.allExecutors.get(0)
- .isTerminated());
- assertEquals(0,
- TestingScheduledThreadPoolImpl.getNumberOfCloseMethodCalls());
+ assertEquals(1, TestingScheduledThreadPoolImpl.ALLEXECUTORS.size());
+ assertFalse(TestingScheduledThreadPoolImpl.ALLEXECUTORS.get(0).isTerminated());
+ assertEquals(0, TestingScheduledThreadPoolImpl.getNumberOfCloseMethodCalls());
- assertExists(moduleName, scheduled1);
+ assertExists(moduleName, SCHEDULED1);
// destroy using ThreadPool ifc
transaction = configRegistryClient.createTransaction();
- transaction.destroyModule(ObjectNameUtil.createTransactionModuleON(
- transaction.getTransactionName(), moduleName, scheduled1));
+ transaction.destroyModule(
+ ObjectNameUtil.createTransactionModuleON(transaction.getTransactionName(), moduleName, SCHEDULED1));
transaction.commit();
- assertEquals(1, TestingScheduledThreadPoolImpl.allExecutors.size());
- assertTrue(TestingScheduledThreadPoolImpl.allExecutors.get(0)
- .isTerminated());
- assertEquals(1,
- TestingScheduledThreadPoolImpl.getNumberOfCloseMethodCalls());
+ assertEquals(1, TestingScheduledThreadPoolImpl.ALLEXECUTORS.size());
+ assertTrue(TestingScheduledThreadPoolImpl.ALLEXECUTORS.get(0).isTerminated());
+ assertEquals(1, TestingScheduledThreadPoolImpl.getNumberOfCloseMethodCalls());
// should not be in platform:
- assertNotExists(moduleName, scheduled1);
+ assertNotExists(moduleName, SCHEDULED1);
transaction = configRegistryClient.createTransaction();
// should not be in transaction
- assertNotExists(transaction, moduleName, scheduled1);
+ assertNotExists(transaction, moduleName, SCHEDULED1);
}
@Test
- public void tryToRegisterThreadPoolWithSameName()
- throws InstanceAlreadyExistsException {
- ConfigTransactionJMXClient transaction = configRegistryClient
- .createTransaction();
+ public void tryToRegisterThreadPoolWithSameName() throws InstanceAlreadyExistsException {
+ ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
- transaction.createModule(TestingScheduledThreadPoolModuleFactory.NAME,
- scheduled1);
+ transaction.createModule(TestingScheduledThreadPoolModuleFactory.NAME, SCHEDULED1);
try {
- transaction.createModule(
- TestingScheduledThreadPoolModuleFactory.NAME, scheduled1);
+ transaction.createModule(TestingScheduledThreadPoolModuleFactory.NAME, SCHEDULED1);
fail();
- } catch (InstanceAlreadyExistsException e) {
- assertThat(
- e.getMessage(),
- containsString("There is an instance registered with name ModuleIdentifier{factoryName='scheduled', instanceName='scheduled1'}"));
+ } catch (final InstanceAlreadyExistsException e) {
+ assertThat(e.getMessage(), containsString(
+ "There is an instance registered with name "
+ + "ModuleIdentifier{factoryName='scheduled', instanceName='scheduled1'}"));
}
}
// --
@Test
public void testRegisteringAllIfcNames() throws Exception {
- ConfigTransactionJMXClient transaction = configRegistryClient
- .createTransaction();
- transaction.createModule(TestingScheduledThreadPoolModuleFactory.NAME,
- scheduled1);
+ ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+ transaction.createModule(TestingScheduledThreadPoolModuleFactory.NAME, SCHEDULED1);
transaction.commit();
- assertExists(TestingScheduledThreadPoolModuleFactory.NAME, scheduled1);
+ assertExists(TestingScheduledThreadPoolModuleFactory.NAME, SCHEDULED1);
// another transaction
transaction = configRegistryClient.createTransaction();
- assertExists(transaction, TestingScheduledThreadPoolModuleFactory.NAME,
- scheduled1);
+ assertExists(transaction, TestingScheduledThreadPoolModuleFactory.NAME, SCHEDULED1);
}
@Test
- public void testWithAPSP_useScheduledNames()
- throws InstanceAlreadyExistsException, ValidationException {
- ConfigTransactionJMXClient transaction = configRegistryClient
- .createTransaction();
- ObjectName scheduledName = transaction.createModule(
- TestingScheduledThreadPoolModuleFactory.NAME, scheduled1);
-
- ObjectName apspName = transaction.createModule(
- TestingParallelAPSPModuleFactory.NAME, "apsp1");
- TestingParallelAPSPConfigMXBean apspProxy = transaction.newMBeanProxy(
- apspName, TestingParallelAPSPConfigMXBean.class);
+ public void testWithAPSP_useScheduledNames() throws InstanceAlreadyExistsException, ValidationException {
+ ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+ ObjectName scheduledName = transaction.createModule(TestingScheduledThreadPoolModuleFactory.NAME, SCHEDULED1);
+
+ ObjectName apspName = transaction.createModule(TestingParallelAPSPModuleFactory.NAME, "apsp1");
+ TestingParallelAPSPConfigMXBean apspProxy = transaction.newMXBeanProxy(apspName,
+ TestingParallelAPSPConfigMXBean.class);
apspProxy.setThreadPool(scheduledName);
apspProxy.setSomeParam("someParam");
transaction.validateConfig();
@Test
public void testWithAPSP_useIfcNameMismatch() throws Exception {
- ConfigTransactionJMXClient transaction = configRegistryClient
- .createTransaction();
- transaction.createModule(TestingScheduledThreadPoolModuleFactory.NAME,
- scheduled1);
-
- ObjectName apspName = transaction.createModule(
- TestingParallelAPSPModuleFactory.NAME, "apsp1");
- TestingParallelAPSPConfigMXBean apspProxy = transaction.newMBeanProxy(
- apspName, TestingParallelAPSPConfigMXBean.class);
- apspProxy.setThreadPool(ObjectNameUtil.createReadOnlyModuleON(
- TestingScheduledThreadPoolModuleFactory.NAME, scheduled1));
+ ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
+ transaction.createModule(TestingScheduledThreadPoolModuleFactory.NAME, SCHEDULED1);
+
+ ObjectName apspName = transaction.createModule(TestingParallelAPSPModuleFactory.NAME, "apsp1");
+ TestingParallelAPSPConfigMXBean apspProxy = transaction.newMXBeanProxy(apspName,
+ TestingParallelAPSPConfigMXBean.class);
+ apspProxy.setThreadPool(
+ ObjectNameUtil.createReadOnlyModuleON(TestingScheduledThreadPoolModuleFactory.NAME, SCHEDULED1));
apspProxy.setSomeParam("someParam");
transaction.validateConfig();
transaction.commit();