From 6b2f7dc6b79287e8cab191f2bba093e1e3fb2a22 Mon Sep 17 00:00:00 2001 From: Maros Marsalek Date: Mon, 21 Jul 2014 12:52:04 +0200 Subject: [PATCH 1/1] Bug-1520 Config subsystem:config modules tests Change-Id: I2ad29ce1eb8ba0d5286c426ab3e61627d8e7a8dc Signed-off-by: Maros Marsalek --- .../config/netconf-config-dispatcher/pom.xml | 32 ++++++ .../NetconfClientDispatcherModuleTest.java | 102 ++++++++++++++++++ .../ImmediateEventExecutorModuleTest.java | 71 ++++++++++++ .../timer/HashedWheelTimerModuleTest.java | 2 +- 4 files changed, 206 insertions(+), 1 deletion(-) create mode 100644 opendaylight/config/netconf-config-dispatcher/src/test/java/org/opendaylight/controller/config/yang/config/netconf/client/dispatcher/NetconfClientDispatcherModuleTest.java create mode 100644 opendaylight/config/netty-event-executor-config/src/test/java/org/opendaylight/controller/config/yang/netty/eventexecutor/ImmediateEventExecutorModuleTest.java rename opendaylight/config/netty-timer-config/src/test/{ => java}/org/opendaylight/controller/config/yang/netty/timer/HashedWheelTimerModuleTest.java (99%) diff --git a/opendaylight/config/netconf-config-dispatcher/pom.xml b/opendaylight/config/netconf-config-dispatcher/pom.xml index b9d218ead1..1e5fcce609 100644 --- a/opendaylight/config/netconf-config-dispatcher/pom.xml +++ b/opendaylight/config/netconf-config-dispatcher/pom.xml @@ -27,6 +27,38 @@ ${project.groupId} netconf-client + + + ${project.groupId} + config-manager + test-jar + test + + + ${project.groupId} + config-manager + test + + + ${project.groupId} + config-util + test + + + ${project.groupId} + netty-threadgroup-config + test + + + ${project.groupId} + netty-timer-config + test + + + org.opendaylight.yangtools + mockito-configuration + test + diff --git a/opendaylight/config/netconf-config-dispatcher/src/test/java/org/opendaylight/controller/config/yang/config/netconf/client/dispatcher/NetconfClientDispatcherModuleTest.java b/opendaylight/config/netconf-config-dispatcher/src/test/java/org/opendaylight/controller/config/yang/config/netconf/client/dispatcher/NetconfClientDispatcherModuleTest.java new file mode 100644 index 0000000000..85477a0237 --- /dev/null +++ b/opendaylight/config/netconf-config-dispatcher/src/test/java/org/opendaylight/controller/config/yang/config/netconf/client/dispatcher/NetconfClientDispatcherModuleTest.java @@ -0,0 +1,102 @@ +package org.opendaylight.controller.config.yang.config.netconf.client.dispatcher; + +import javax.management.InstanceAlreadyExistsException; +import javax.management.InstanceNotFoundException; +import javax.management.ObjectName; +import org.junit.Before; +import org.junit.Test; +import org.opendaylight.controller.config.api.ConflictingVersionException; +import org.opendaylight.controller.config.api.ValidationException; +import org.opendaylight.controller.config.api.jmx.CommitStatus; +import org.opendaylight.controller.config.manager.impl.AbstractConfigTest; +import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver; +import org.opendaylight.controller.config.util.ConfigTransactionJMXClient; +import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgroupModuleFactory; +import org.opendaylight.controller.config.yang.netty.threadgroup.NettyThreadgroupModuleMXBean; +import org.opendaylight.controller.config.yang.netty.timer.HashedWheelTimerModuleFactory; + +public class NetconfClientDispatcherModuleTest extends AbstractConfigTest{ + + private NetconfClientDispatcherModuleFactory factory; + private final String instanceName = "dispatch"; + + @Before + public void setUp() { + factory = new NetconfClientDispatcherModuleFactory(); + super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext,factory, + new NettyThreadgroupModuleFactory(), + new HashedWheelTimerModuleFactory())); + } + + @Test + public void testCreateBean() throws InstanceAlreadyExistsException, ValidationException, ConflictingVersionException { + ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); + + createInstance(transaction, instanceName, "timer", "thGroup"); + createInstance(transaction, instanceName + 2, "timer2", "thGroup2"); + transaction.validateConfig(); + CommitStatus status = transaction.commit(); + + assertBeanCount(2, factory.getImplementationName()); + assertStatus(status, 2 + 4, 0, 0); + } + + @Test + public void testReusingOldInstance() throws InstanceAlreadyExistsException, ConflictingVersionException, ValidationException { + + ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); + createInstance(transaction, instanceName, "timer", "thGroup"); + + transaction.commit(); + + transaction = configRegistryClient.createTransaction(); + assertBeanCount(1, factory.getImplementationName()); + CommitStatus status = transaction.commit(); + + assertBeanCount(1, factory.getImplementationName()); + assertStatus(status, 0, 0, 3); + } + + @Test + public void testReconfigure() throws InstanceAlreadyExistsException, ConflictingVersionException, + ValidationException, InstanceNotFoundException { + + ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); + createInstance(transaction, instanceName, "timer", "thGroup"); + + transaction.commit(); + + transaction = configRegistryClient.createTransaction(); + assertBeanCount(1, factory.getImplementationName()); + NetconfClientDispatcherModuleMXBean mxBean = transaction.newMBeanProxy( + transaction.lookupConfigBean(NetconfClientDispatcherModuleFactory.NAME, instanceName), + NetconfClientDispatcherModuleMXBean.class); + mxBean.setBossThreadGroup(getThreadGroup(transaction, "group2")); + CommitStatus status = transaction.commit(); + + assertBeanCount(1, factory.getImplementationName()); + assertStatus(status, 1, 1, 2); + } + + private ObjectName createInstance(ConfigTransactionJMXClient transaction, String instanceName, String timerName, String threadGroupName) + throws InstanceAlreadyExistsException { + ObjectName nameCreated = transaction.createModule(factory.getImplementationName(), instanceName); + NetconfClientDispatcherModuleMXBean mxBean = transaction.newMBeanProxy(nameCreated, NetconfClientDispatcherModuleMXBean.class); + ObjectName thGroup = getThreadGroup(transaction, threadGroupName); + mxBean.setBossThreadGroup(thGroup); + mxBean.setWorkerThreadGroup(thGroup); + mxBean.setTimer(getTimer(transaction, timerName)); + return nameCreated; + } + + private ObjectName getTimer(ConfigTransactionJMXClient transaction, String name) throws InstanceAlreadyExistsException { + return transaction.createModule(HashedWheelTimerModuleFactory.NAME, name); + } + + private ObjectName getThreadGroup(ConfigTransactionJMXClient transaction, String name) throws InstanceAlreadyExistsException { + ObjectName nameCreated = transaction.createModule(NettyThreadgroupModuleFactory.NAME, name); + NettyThreadgroupModuleMXBean mxBean = transaction.newMXBeanProxy(nameCreated, NettyThreadgroupModuleMXBean.class); + mxBean.setThreadCount(1); + return nameCreated; + } +} diff --git a/opendaylight/config/netty-event-executor-config/src/test/java/org/opendaylight/controller/config/yang/netty/eventexecutor/ImmediateEventExecutorModuleTest.java b/opendaylight/config/netty-event-executor-config/src/test/java/org/opendaylight/controller/config/yang/netty/eventexecutor/ImmediateEventExecutorModuleTest.java new file mode 100644 index 0000000000..4cc9cc3dde --- /dev/null +++ b/opendaylight/config/netty-event-executor-config/src/test/java/org/opendaylight/controller/config/yang/netty/eventexecutor/ImmediateEventExecutorModuleTest.java @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2013 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, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.controller.config.yang.netty.eventexecutor; + +import javax.management.InstanceAlreadyExistsException; +import javax.management.ObjectName; +import org.junit.Before; +import org.junit.Test; +import org.opendaylight.controller.config.api.ConflictingVersionException; +import org.opendaylight.controller.config.api.ValidationException; +import org.opendaylight.controller.config.api.jmx.CommitStatus; +import org.opendaylight.controller.config.manager.impl.AbstractConfigTest; +import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver; +import org.opendaylight.controller.config.util.ConfigTransactionJMXClient; + +public class ImmediateEventExecutorModuleTest extends AbstractConfigTest { + + private GlobalEventExecutorModuleFactory factory; + private final String instanceName = ImmediateEventExecutorModuleFactory.SINGLETON_NAME; + + @Before + public void setUp() { + factory = new GlobalEventExecutorModuleFactory(); + super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext,factory)); + } + + @Test + public void testCreateBean() throws InstanceAlreadyExistsException, ValidationException, + ConflictingVersionException { + ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); + + createInstance(transaction, instanceName); + + transaction.validateConfig(); + CommitStatus status = transaction.commit(); + + assertBeanCount(1, factory.getImplementationName()); + assertStatus(status, 1, 0, 0); + } + + @Test + public void testReusingOldInstance() throws InstanceAlreadyExistsException, ConflictingVersionException, + ValidationException { + + ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction(); + createInstance(transaction, instanceName); + + transaction.commit(); + + transaction = configRegistryClient.createTransaction(); + assertBeanCount(1, factory.getImplementationName()); + CommitStatus status = transaction.commit(); + + assertBeanCount(1, factory.getImplementationName()); + assertStatus(status, 0, 0, 1); + } + + private ObjectName createInstance(ConfigTransactionJMXClient transaction, String instanceName) + throws InstanceAlreadyExistsException { + ObjectName nameCreated = transaction.createModule(factory.getImplementationName(), instanceName); + transaction.newMBeanProxy(nameCreated, ImmediateEventExecutorModuleMXBean.class); + return nameCreated; + } + +} diff --git a/opendaylight/config/netty-timer-config/src/test/org/opendaylight/controller/config/yang/netty/timer/HashedWheelTimerModuleTest.java b/opendaylight/config/netty-timer-config/src/test/java/org/opendaylight/controller/config/yang/netty/timer/HashedWheelTimerModuleTest.java similarity index 99% rename from opendaylight/config/netty-timer-config/src/test/org/opendaylight/controller/config/yang/netty/timer/HashedWheelTimerModuleTest.java rename to opendaylight/config/netty-timer-config/src/test/java/org/opendaylight/controller/config/yang/netty/timer/HashedWheelTimerModuleTest.java index 1b5668b610..5fe5f9496e 100644 --- a/opendaylight/config/netty-timer-config/src/test/org/opendaylight/controller/config/yang/netty/timer/HashedWheelTimerModuleTest.java +++ b/opendaylight/config/netty-timer-config/src/test/java/org/opendaylight/controller/config/yang/netty/timer/HashedWheelTimerModuleTest.java @@ -34,7 +34,7 @@ public class HashedWheelTimerModuleTest extends AbstractConfigTest { public void setUp() { factory = new HashedWheelTimerModuleFactory(); threadFactory = new NamingThreadFactoryModuleFactory(); - super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(factory, threadFactory)); + super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext, factory, threadFactory)); } public void testValidationExceptionTickDuration() throws InstanceAlreadyExistsException { -- 2.36.6