2 * Copyright (c) 2014 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
9 package org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig;
11 import static java.util.Arrays.asList;
12 import static org.junit.Assert.assertEquals;
13 import static org.mockito.Mockito.doReturn;
14 import static org.mockito.Mockito.mock;
15 import static org.opendaylight.controller.config.api.jmx.ObjectNameUtil.createReadOnlyModuleON;
17 import com.google.common.base.Optional;
18 import com.google.common.collect.ImmutableMap;
19 import java.util.List;
21 import javax.management.ObjectName;
22 import org.junit.Before;
23 import org.junit.Test;
24 import org.opendaylight.controller.config.facade.xml.mapping.attributes.fromxml.AttributeConfigElement;
25 import org.opendaylight.controller.config.facade.xml.mapping.config.ServiceRegistryWrapper;
26 import org.opendaylight.controller.config.facade.xml.strategy.MergeEditConfigStrategy;
27 import org.opendaylight.controller.config.manager.impl.AbstractConfigTest;
28 import org.opendaylight.controller.config.manager.impl.factoriesresolver.HardcodedModuleFactoriesResolver;
29 import org.opendaylight.controller.config.util.ConfigTransactionJMXClient;
30 import org.opendaylight.controller.config.yang.test.impl.MultipleDependenciesModule;
31 import org.opendaylight.controller.config.yang.test.impl.MultipleDependenciesModuleFactory;
32 import org.opendaylight.controller.config.yang.test.impl.MultipleDependenciesModuleMXBean;
34 public class MergeEditConfigStrategyTest extends AbstractConfigTest {
35 private static final MultipleDependenciesModuleFactory factory = new MultipleDependenciesModuleFactory();
36 public static final String PARENT = "parent";
37 public static final String D1 = "d1";
38 public static final String D2 = "d2";
39 public static final String D3 = "d3";
41 private static final String factoryName = factory.getImplementationName();
44 public void setUp() throws Exception {
45 super.initConfigTransactionManagerImpl(new HardcodedModuleFactoriesResolver(mockedContext, factory));
47 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
48 ObjectName d1 = transaction.createModule(factoryName, D1);
49 ObjectName d2 = transaction.createModule(factoryName, D2);
50 ObjectName parent = transaction.createModule(factoryName, PARENT);
51 MultipleDependenciesModuleMXBean multipleDependenciesModuleMXBean = transaction.newMXBeanProxy(parent,
52 MultipleDependenciesModuleMXBean.class);
53 multipleDependenciesModuleMXBean.setTestingDeps(asList(d1, d2));
54 transaction.createModule(factoryName, D3);
59 public void testMergingOfObjectNames() throws Exception {
60 MergeEditConfigStrategy strategy = new MergeEditConfigStrategy();
61 ConfigTransactionJMXClient transaction = configRegistryClient.createTransaction();
65 AttributeConfigElement attributeConfigElement = mock(AttributeConfigElement.class);
66 doReturn(Optional.of(new ObjectName[] {createReadOnlyModuleON(factoryName, D3)})).when(attributeConfigElement).getResolvedValue();
67 doReturn("mocked").when(attributeConfigElement).toString();
68 String attributeName = MultipleDependenciesModule.testingDepsJmxAttribute.getAttributeName();
69 doReturn(attributeName).when(attributeConfigElement).getJmxName();
70 Map<String, AttributeConfigElement> configuration = ImmutableMap.of(
72 attributeConfigElement);
74 strategy.executeConfiguration(factoryName, PARENT, configuration, transaction,
75 mock(ServiceRegistryWrapper.class));
78 // parent's attribute should contain d1,d2,d3
79 MultipleDependenciesModuleMXBean proxy = configRegistryClient.newMXBeanProxy(
80 createReadOnlyModuleON(factoryName, PARENT),
81 MultipleDependenciesModuleMXBean.class);
82 List<ObjectName> testingDeps = proxy.getTestingDeps();
83 List<ObjectName> expected = asList(createReadOnlyModuleON(factoryName, D1),
84 createReadOnlyModuleON(factoryName, D2),
85 createReadOnlyModuleON(factoryName, D3));
86 assertEquals(expected, testingDeps);