Merge "(Bug 2035) - Increasing default Akka config for auto-down of unreachable nodes...
[controller.git] / opendaylight / netconf / config-netconf-connector / src / test / java / org / opendaylight / controller / netconf / confignetconfconnector / operations / editconfig / EditConfigTest.java
index 6e7a225f38452250ca4803c17ac56a2d2999822f..ad57f897e01d00e4105b8460b222078f71877863 100644 (file)
@@ -8,45 +8,47 @@
 
 package org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig;
 
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.anyMapOf;
+import static org.mockito.Matchers.anyString;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
 import com.google.common.base.Optional;
 import com.google.common.collect.HashMultimap;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Multimap;
+import java.util.Collections;
+import java.util.Map;
+import javax.management.ObjectName;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.opendaylight.controller.config.api.ServiceReferenceReadableRegistry;
+import org.opendaylight.controller.config.api.ValidationException;
 import org.opendaylight.controller.config.util.ConfigRegistryClient;
 import org.opendaylight.controller.config.util.ConfigTransactionClient;
-import org.opendaylight.controller.config.yang.store.api.YangStoreSnapshot;
 import org.opendaylight.controller.netconf.api.NetconfDocumentedException;
 import org.opendaylight.controller.netconf.confignetconfconnector.mapping.attributes.fromxml.AttributeConfigElement;
 import org.opendaylight.controller.netconf.confignetconfconnector.mapping.config.InstanceConfigElementResolved;
+import org.opendaylight.controller.netconf.confignetconfconnector.mapping.config.ModuleElementDefinition;
 import org.opendaylight.controller.netconf.confignetconfconnector.mapping.config.ModuleElementResolved;
+import org.opendaylight.controller.netconf.confignetconfconnector.mapping.config.ServiceRegistryWrapper;
 import org.opendaylight.controller.netconf.confignetconfconnector.mapping.config.Services;
 import org.opendaylight.controller.netconf.confignetconfconnector.operations.ValidateTest;
 import org.opendaylight.controller.netconf.confignetconfconnector.operations.editconfig.EditConfigXmlParser.EditConfigExecution;
+import org.opendaylight.controller.netconf.confignetconfconnector.osgi.YangStoreContext;
 import org.opendaylight.controller.netconf.confignetconfconnector.transactions.TransactionProvider;
 import org.opendaylight.controller.netconf.util.xml.XmlUtil;
 
-import javax.management.ObjectName;
-import java.util.Collections;
-import java.util.Map;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyMap;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.doNothing;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
 public class EditConfigTest {
 
     @Mock
-    private YangStoreSnapshot yangStoreSnapshot;
+    private YangStoreContext yangStoreSnapshot;
     @Mock
     private TransactionProvider provider;
     @Mock
@@ -77,13 +79,13 @@ public class EditConfigTest {
     }
 
     @Test
-    public void test() throws NetconfDocumentedException {
+    public void test() throws NetconfDocumentedException, ValidationException {
         EditConfig edit = new EditConfig(yangStoreSnapshot, provider, configRegistry,
                 ValidateTest.NETCONF_SESSION_ID_FOR_REPORTING);
         EditConfigStrategy editStrat = mock(EditConfigStrategy.class);
 
-        doNothing().when(editStrat).executeConfiguration(anyString(), anyString(), anyMap(),
-                any(ConfigTransactionClient.class), any(Services.class));
+        doNothing().when(editStrat).executeConfiguration(anyString(), anyString(), anyMapOf(String.class, AttributeConfigElement.class),
+                any(ConfigTransactionClient.class), any(ServiceRegistryWrapper.class));
 
         EditConfigExecution editConfigExecution = mockExecution(editStrat);
 
@@ -96,20 +98,44 @@ public class EditConfigTest {
         verify(provider).getOrCreateTransaction();
 
         // For every instance execute strat
-        verify(editStrat, times(2/* Test */+ 2/* Set */)).executeConfiguration(anyString(), anyString(), anyMap(),
-                any(ConfigTransactionClient.class), any(Services.class));
+        verify(editStrat, times(2/* Test */+ 2/* Set */ + 2/*Handle missing instance Test*/ + 2 /*Handle missing instance Set*/)).executeConfiguration(anyString(),
+                anyString(), anyMapOf(String.class, AttributeConfigElement.class),
+                any(ConfigTransactionClient.class), any(ServiceRegistryWrapper.class));
     }
 
-    private EditConfigExecution mockExecution(EditConfigStrategy editStrat) {
+    private EditConfigExecution mockExecution(EditConfigStrategy editStrat) throws NetconfDocumentedException {
         EditConfigExecution mock = mock(EditConfigExecution.class);
-        doReturn(getMapping(editStrat)).when(mock).getResolvedXmlElements();
+        doReturn(getMapping(editStrat)).when(mock).getResolvedXmlElements(any(ConfigTransactionClient.class));
+        doReturn(getMappingDefinition(editStrat)).when(mock).getModulesDefinition(any(ConfigTransactionClient.class));
         doReturn(EditStrategyType.merge).when(mock).getDefaultStrategy();
         doReturn(true).when(mock).shouldSet();
         doReturn(true).when(mock).shouldTest();
-        doReturn(mockServices()).when(mock).getServices();
+        doReturn(mockServices()).when(mock).getServiceRegistryWrapper(any(ConfigTransactionClient.class));
+        doReturn(new Services()).when(mock).getServices();
         return mock;
     }
 
+    private Object getMappingDefinition(EditConfigStrategy editStrat) {
+        Map<String, Multimap<String, ModuleElementDefinition>> result = Maps.newHashMap();
+
+        Multimap<String, ModuleElementDefinition> innerMultimap = HashMultimap.create();
+        Map<String, AttributeConfigElement> attributes = getSimpleAttributes();
+
+        ModuleElementDefinition mockedDefinition = mock(ModuleElementDefinition.class);
+        doReturn(editStrat).when(mockedDefinition).getEditStrategy();
+        doReturn("i1").when(mockedDefinition).getInstanceName();
+        innerMultimap.put("m1", mockedDefinition);
+
+        ModuleElementDefinition mockedDefinition2 = mock(ModuleElementDefinition.class);
+        doReturn(editStrat).when(mockedDefinition2).getEditStrategy();
+        doReturn("i2").when(mockedDefinition2).getInstanceName();
+        innerMultimap.put("m1", mockedDefinition2);
+
+        result.put("n1", innerMultimap);
+
+        return result;
+    }
+
     private static ServiceReferenceReadableRegistry mockServiceRegistry() {
         ServiceReferenceReadableRegistry mock = mock(ServiceReferenceReadableRegistry.class);
         doReturn(
@@ -120,8 +146,8 @@ public class EditConfigTest {
         return mock;
     }
 
-    static Services mockServices() {
-        return new Services(mockServiceRegistry());
+    static ServiceRegistryWrapper mockServices() {
+        return new ServiceRegistryWrapper(mockServiceRegistry());
     }
 
     private Map<String, Multimap<String, ModuleElementResolved>> getMapping(EditConfigStrategy editStrat) {