2 * Copyright (c) 2013 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.config.threadpool.eventbus;
10 import static org.hamcrest.CoreMatchers.containsString;
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertThat;
13 import static org.junit.Assert.fail;
15 import javax.management.InstanceAlreadyExistsException;
16 import javax.management.ObjectName;
17 import org.junit.Before;
18 import org.junit.Test;
19 import org.opendaylight.controller.config.api.ConflictingVersionException;
20 import org.opendaylight.controller.config.api.ValidationException;
21 import org.opendaylight.controller.config.api.jmx.CommitStatus;
22 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
23 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
24 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
25 import org.opendaylight.controller.config.yang.threadpool.impl.EventBusModuleFactory;
27 public class SyncEventBusConfigBeanTest extends AbstractConfigTest {
29 private EventBusModuleFactory factory;
30 private final String instanceName = "sync1";
35 factory = new EventBusModuleFactory();
36 super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext,factory));
40 public void testCreateBean() throws InstanceAlreadyExistsException, ValidationException,
41 ConflictingVersionException {
42 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
44 createSynced(transaction, instanceName);
45 transaction.validateConfig();
46 CommitStatus status = transaction.commit();
48 assertEquals(1, configRegistry.lookupConfigBeans(factory.getImplementationName()).size());
49 assertEquals(1, status.getNewInstances().size());
50 assertEquals(0, status.getRecreatedInstances().size());
51 assertEquals(0, status.getReusedInstances().size());
52 // TODO test dead event collector
56 public void testReusingOldInstance() throws InstanceAlreadyExistsException, ConflictingVersionException,
59 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
60 createSynced(transaction, instanceName);
64 assertEquals(1, configRegistry.lookupConfigBeans(factory.getImplementationName()).size());
66 transaction = configRegistryClient.createTransaction();
67 CommitStatus status = transaction.commit();
69 assertEquals(1, configRegistry.lookupConfigBeans(factory.getImplementationName()).size());
70 assertEquals(0, status.getNewInstances().size());
71 assertEquals(0, status.getRecreatedInstances().size());
72 assertEquals(1, status.getReusedInstances().size());
77 public void testInstanceAlreadyExistsException() throws ConflictingVersionException, ValidationException {
78 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
81 createSynced(transaction, instanceName);
83 } catch (InstanceAlreadyExistsException e1) {
87 transaction = configRegistryClient.createTransaction();
89 createSynced(transaction, instanceName);
91 } catch (InstanceAlreadyExistsException e) {
94 containsString("There is an instance registered with name ModuleIdentifier{factoryName='eventbus', instanceName='sync1'}"));
98 private ObjectName createSynced(ConfigTransactionJMXClient transaction, String instanceName)
99 throws InstanceAlreadyExistsException {
100 ObjectName nameCreated = transaction.createModule(factory.getImplementationName(), instanceName);