Merge "BUG-2288: DOMNotification API"
[controller.git] / opendaylight / config / yang-jmx-generator-it / src / test / java / org / opendaylight / controller / config / yangjmxgenerator / it / ITTest.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.controller.config.yangjmxgenerator.it;
9
10 import static org.junit.Assert.fail;
11
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;
27
28 @Ignore
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;
34 // not an interface
35 public class ITTest extends AbstractConfigTest {
36
37     private TestImplModuleFactory factory;
38     private final String instanceName = "instance";
39
40     @Before
41     public void setUp() {
42
43         factory = new TestImplModuleFactory();
44         super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext,
45                 factory));
46     }
47
48     @Test
49     public void testCreateBean() throws InstanceAlreadyExistsException,
50             ValidationException, ConflictingVersionException {
51         ConfigTransactionJMXClient transaction = configRegistryClient
52                 .createTransaction();
53
54         createModule(transaction, instanceName);
55         transaction.validateConfig();
56         CommitStatus status = transaction.commit();
57
58         assertBeanCount(1, factory.getImplementationName());
59         assertStatus(status, 1, 0, 0);
60     }
61
62     @Test
63     public void testReusingOldInstance() throws InstanceAlreadyExistsException,
64             ConflictingVersionException, ValidationException {
65
66         ConfigTransactionJMXClient transaction = configRegistryClient
67                 .createTransaction();
68         createModule(transaction, instanceName);
69
70         transaction.commit();
71
72         assertBeanCount(1, factory.getImplementationName());
73
74         transaction = configRegistryClient.createTransaction();
75         CommitStatus status = transaction.commit();
76
77         assertBeanCount(1, factory.getImplementationName());
78         assertStatus(status, 0, 0, 1);
79
80     }
81
82     @Test
83     public void testInstanceAlreadyExistsException()
84             throws ConflictingVersionException, ValidationException,
85             InstanceAlreadyExistsException {
86         ConfigTransactionJMXClient transaction = configRegistryClient
87                 .createTransaction();
88
89         createModule(transaction, instanceName);
90         transaction.commit();
91
92         transaction = configRegistryClient.createTransaction();
93         try {
94             createModule(transaction, instanceName);
95             fail();
96         } catch (InstanceAlreadyExistsException e) {
97
98         }
99     }
100
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());
111         return nameCreated;
112
113     }
114
115 }