X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fconfig-netconf-connector%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fconfignetconfconnector%2Foperations%2Feditconfig%2FEditConfigTest.java;h=b70a66f5efc7f8eb1a4d779bcb51ca2123d33227;hp=18c8ce5d1546d974f9b8fe11ac62298ba342217b;hb=4eb724db3877173d502ba38c6d83bec780b38bb2;hpb=4f623c74a703a31e787387b536981dcb344ca4f9 diff --git a/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/editconfig/EditConfigTest.java b/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/editconfig/EditConfigTest.java index 18c8ce5d15..b70a66f5ef 100644 --- a/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/editconfig/EditConfigTest.java +++ b/opendaylight/netconf/config-netconf-connector/src/test/java/org/opendaylight/controller/netconf/confignetconfconnector/operations/editconfig/EditConfigTest.java @@ -16,25 +16,29 @@ 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.Config; 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.transactions.TransactionProvider; -import org.opendaylight.controller.netconf.util.xml.XmlElement; 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.anyMapOf; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; @@ -67,6 +71,8 @@ public class EditConfigTest { doNothing().when(provider).abortTestTransaction(any(ObjectName.class)); doReturn(mockOn).when(provider).getOrCreateTransaction(); + doNothing().when(provider).wipeTestTransaction(any(ObjectName.class)); + doReturn(configTransactionClient).when(configRegistry).getConfigTransactionClient(any(ObjectName.class)); doReturn("mockConfigTransactionClient").when(configTransactionClient).toString(); @@ -74,20 +80,15 @@ 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)); - Map> resolvedXmlElements = getMapping(editStrat); - Config cfg = mock(Config.class); - XmlElement xmlElement = mock(XmlElement.class); - doReturn(resolvedXmlElements).when(cfg).fromXml(xmlElement); + doNothing().when(editStrat).executeConfiguration(anyString(), anyString(), anyMapOf(String.class, AttributeConfigElement.class), + any(ConfigTransactionClient.class), any(ServiceRegistryWrapper.class)); - EditConfigExecution editConfigExecution = new EditConfigExecution(null, cfg, xmlElement, - EditConfigXmlParser.TestOption.testThenSet); + EditConfigExecution editConfigExecution = mockExecution(editStrat); edit.getResponseInternal(XmlUtil.newDocument(), editConfigExecution); @@ -98,8 +99,56 @@ 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)); + 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) { + EditConfigExecution mock = mock(EditConfigExecution.class); + 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).getServiceRegistryWrapper(any(ConfigTransactionClient.class)); + doReturn(new Services()).when(mock).getServices(); + return mock; + } + + private Object getMappingDefinition(EditConfigStrategy editStrat) { + Map> result = Maps.newHashMap(); + + Multimap innerMultimap = HashMultimap.create(); + Map 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( + Collections.emptyMap()) + .when(mock).getServiceMapping(); + doReturn("mockedServiceReg").when(mock).toString(); + + return mock; + } + + static ServiceRegistryWrapper mockServices() { + return new ServiceRegistryWrapper(mockServiceRegistry()); } private Map> getMapping(EditConfigStrategy editStrat) {