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;
14 import org.junit.Before;
15 import org.junit.Ignore;
16 import org.junit.Test;
17 import org.opendaylight.controller.config.api.ConflictingVersionException;
18 import org.opendaylight.controller.config.api.ValidationException;
19 import org.opendaylight.controller.config.api.jmx.CommitStatus;
20 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
21 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
22 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
23 import org.opendaylight.controller.config.yang.test.impl.DtoA;
24 import org.opendaylight.controller.config.yang.test.impl.DtoB;
25 import org.opendaylight.controller.config.yang.test.impl.TestImplModuleFactory;
26 import org.opendaylight.controller.config.yang.test.impl.TestImplModuleMXBean;
29 // ietf beans are not JMX compliant beans:
30 // Do not know how to make a
31 // org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev2010924.AsNumber
32 // from a CompositeData: no method from(CompositeData); no constructor has
33 // @ConstructorProperties annotation; does not have a public no-arg constructor;
35 public class ITTest extends AbstractConfigTest {
37 private TestImplModuleFactory factory;
38 private final String instanceName = "instance";
43 factory = new TestImplModuleFactory();
44 super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext,
49 public void testCreateBean() throws InstanceAlreadyExistsException,
50 ValidationException, ConflictingVersionException {
51 ConfigTransactionJMXClient transaction = configRegistryClient
54 createModule(transaction, instanceName);
55 transaction.validateConfig();
56 CommitStatus status = transaction.commit();
58 assertBeanCount(1, factory.getImplementationName());
59 assertStatus(status, 1, 0, 0);
63 public void testReusingOldInstance() throws InstanceAlreadyExistsException,
64 ConflictingVersionException, ValidationException {
66 ConfigTransactionJMXClient transaction = configRegistryClient
68 createModule(transaction, instanceName);
72 assertBeanCount(1, factory.getImplementationName());
74 transaction = configRegistryClient.createTransaction();
75 CommitStatus status = transaction.commit();
77 assertBeanCount(1, factory.getImplementationName());
78 assertStatus(status, 0, 0, 1);
83 public void testInstanceAlreadyExistsException()
84 throws ConflictingVersionException, ValidationException,
85 InstanceAlreadyExistsException {
86 ConfigTransactionJMXClient transaction = configRegistryClient
89 createModule(transaction, instanceName);
92 transaction = configRegistryClient.createTransaction();
94 createModule(transaction, instanceName);
96 } catch (InstanceAlreadyExistsException e) {
101 private ObjectName createModule(ConfigTransactionJMXClient transaction,
102 String instanceName) throws InstanceAlreadyExistsException {
103 ObjectName nameCreated = transaction.createModule(
104 factory.getImplementationName(), instanceName);
105 TestImplModuleMXBean mxBean = transaction.newMBeanProxy(nameCreated,
106 TestImplModuleMXBean.class);
107 mxBean.setSimpleInt((long) 45);
108 // mxBean.setAsNumber(new AsNumber((long) 999));
109 mxBean.setDtoA(new DtoA());
110 mxBean.setDtoB(new DtoB());