Introducing simple merge strategy for config subsystem
[controller.git] / opendaylight / config / yang-test / src / test / java / org / opendaylight / controller / config / yang / test / impl / MultipleDependenciesModuleTest.java
1 /*
2  * Copyright (c) 2014 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
9 package org.opendaylight.controller.config.yang.test.impl;
10
11 import static java.util.Arrays.asList;
12 import static org.junit.Assert.assertEquals;
13 import static org.junit.Assert.assertNull;
14 import static org.opendaylight.controller.config.api.jmx.ObjectNameUtil.getInstanceName;
15 import static org.opendaylight.controller.config.api.jmx.ObjectNameUtil.getTransactionName;
16
17 import java.util.List;
18 import javax.management.ObjectName;
19 import org.junit.Before;
20 import org.junit.Test;
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
25 public class MultipleDependenciesModuleTest extends AbstractConfigTest {
26     private static final MultipleDependenciesModuleFactory factory = new MultipleDependenciesModuleFactory();
27
28     @Before
29     public void setUp() throws Exception {
30         super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext, factory));
31     }
32
33     @Test
34     public void testMultipleDependencies() throws Exception {
35         ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
36         ObjectName d1 = transaction.createModule(factory.getImplementationName(), "d1");
37         ObjectName d2 = transaction.createModule(factory.getImplementationName(), "d2");
38
39         assertEquals(transaction.getTransactionName(), getTransactionName(d1));
40
41         ObjectName parent = transaction.createModule(factory.getImplementationName(), "parent");
42         MultipleDependenciesModuleMXBean multipleDependenciesModuleMXBean = transaction.newMXBeanProxy(parent, MultipleDependenciesModuleMXBean.class);
43         multipleDependenciesModuleMXBean.setTestingDeps(asList(d1, d2));
44         List<ObjectName> found = multipleDependenciesModuleMXBean.getTestingDeps();
45         ObjectName d1WithoutTxName = found.get(0);
46         assertEquals(getInstanceName(d1), getInstanceName(d1WithoutTxName));
47         // check that transaction name gets stripped automatically from attribute.
48         // d1,2 contained tx name, found doesn't
49         assertNull(getTransactionName(d1WithoutTxName));
50         transaction.commit();
51     }
52 }