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.yangjmxgenerator.it;
10 import static org.junit.Assert.fail;
12 import javax.management.InstanceAlreadyExistsException;
13 import javax.management.ObjectName;
15 import org.junit.Before;
16 import org.junit.Ignore;
17 import org.junit.Test;
18 import org.opendaylight.controller.config.api.ConflictingVersionException;
19 import org.opendaylight.controller.config.api.ValidationException;
20 import org.opendaylight.controller.config.api.jmx.CommitStatus;
21 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
22 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
23 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
24 import org.opendaylight.controller.config.yang.test.impl.DtoA;
25 import org.opendaylight.controller.config.yang.test.impl.DtoB;
26 import org.opendaylight.controller.config.yang.test.impl.TestImplModuleFactory;
27 import org.opendaylight.controller.config.yang.test.impl.TestImplModuleMXBean;
30 // ietf beans are not JMX compliant beans:
31 // Do not know how to make a
32 // org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev2010924.AsNumber
33 // from a CompositeData: no method from(CompositeData); no constructor has
34 // @ConstructorProperties annotation; does not have a public no-arg constructor;
36 public class ITTest extends AbstractConfigTest {
38 private TestImplModuleFactory factory;
39 private final String instanceName = "instance";
44 factory = new TestImplModuleFactory();
45 super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(
50 public void testCreateBean() throws InstanceAlreadyExistsException,
51 ValidationException, ConflictingVersionException {
52 ConfigTransactionJMXClient transaction = configRegistryClient
55 createModule(transaction, instanceName);
56 transaction.validateConfig();
57 CommitStatus status = transaction.commit();
59 assertBeanCount(1, factory.getImplementationName());
60 assertStatus(status, 1, 0, 0);
64 public void testReusingOldInstance() throws InstanceAlreadyExistsException,
65 ConflictingVersionException, ValidationException {
67 ConfigTransactionJMXClient transaction = configRegistryClient
69 createModule(transaction, instanceName);
73 assertBeanCount(1, factory.getImplementationName());
75 transaction = configRegistryClient.createTransaction();
76 CommitStatus status = transaction.commit();
78 assertBeanCount(1, factory.getImplementationName());
79 assertStatus(status, 0, 0, 1);
84 public void testInstanceAlreadyExistsException()
85 throws ConflictingVersionException, ValidationException,
86 InstanceAlreadyExistsException {
87 ConfigTransactionJMXClient transaction = configRegistryClient
90 createModule(transaction, instanceName);
93 transaction = configRegistryClient.createTransaction();
95 createModule(transaction, instanceName);
97 } catch (InstanceAlreadyExistsException e) {
102 private ObjectName createModule(ConfigTransactionJMXClient transaction,
103 String instanceName) throws InstanceAlreadyExistsException {
104 ObjectName nameCreated = transaction.createModule(
105 factory.getImplementationName(), instanceName);
106 TestImplModuleMXBean mxBean = transaction.newMBeanProxy(nameCreated,
107 TestImplModuleMXBean.class);
108 mxBean.setSimpleInt((long) 45);
109 // mxBean.setAsNumber(new AsNumber((long) 999));
110 mxBean.setDtoA(new DtoA());
111 mxBean.setDtoB(new DtoB());