X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-binding-broker%2Fsrc%2Ftest%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fbinding%2Ftest%2Futil%2FBindingTestContext.java;h=1ea56381ef1cf9a4b248d2be2795d6c290f81c0d;hp=2e43b885531b40f1f302bb4fb67d1d0e7be721c4;hb=1f6daaf007e78df276604baa4c515a50037a649d;hpb=59cb3e27630fb1fd965152f9e1584213e89fa62f diff --git a/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/util/BindingTestContext.java b/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/util/BindingTestContext.java index 2e43b88553..1ea56381ef 100644 --- a/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/util/BindingTestContext.java +++ b/opendaylight/md-sal/sal-binding-broker/src/test/java/org/opendaylight/controller/sal/binding/test/util/BindingTestContext.java @@ -17,7 +17,9 @@ import java.util.concurrent.Future; import javassist.ClassPool; +import org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; +import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; import org.opendaylight.controller.md.sal.dom.broker.impl.DOMDataBrokerImpl; import org.opendaylight.controller.md.sal.dom.broker.impl.compat.BackwardsCompatibleDataBroker; import org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStore; @@ -46,7 +48,6 @@ import org.opendaylight.controller.sal.dom.broker.impl.DataStoreStatsWrapper; import org.opendaylight.controller.sal.dom.broker.impl.HashMapDataStore; import org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareDataStoreAdapter; import org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareRpcBroker; -import org.opendaylight.controller.sal.dom.broker.impl.SchemaContextProvider; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.sal.binding.generator.impl.RuntimeGeneratedMappingServiceImpl; import org.opendaylight.yangtools.yang.common.QName; @@ -55,7 +56,6 @@ import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.impl.codec.BindingIndependentMappingService; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl; import org.reflections.Reflections; import org.reflections.scanners.ResourcesScanner; @@ -66,9 +66,10 @@ import com.google.common.base.Predicate; import com.google.common.collect.ClassToInstanceMap; import com.google.common.collect.ImmutableClassToInstanceMap; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.MutableClassToInstanceMap; import com.google.common.util.concurrent.ListeningExecutorService; -public class BindingTestContext implements AutoCloseable, SchemaContextProvider { +public class BindingTestContext implements AutoCloseable { public static final org.opendaylight.yangtools.yang.data.api.InstanceIdentifier TREE_ROOT = org.opendaylight.yangtools.yang.data.api.InstanceIdentifier .builder().toInstance(); @@ -99,17 +100,22 @@ public class BindingTestContext implements AutoCloseable, SchemaContextProvider private MountPointManagerImpl biMountImpl; - private SchemaContext schemaContext; + private ImmutableMap newDatastores; private BackwardsCompatibleDataBroker biCompatibleBroker; - private final List schemaListeners = new ArrayList<>(); + private DataProviderService baData; - @Override - public SchemaContext getSchemaContext() { - return schemaContext; + private DOMDataBroker newDOMDataBroker; + + private final MockSchemaService mockSchemaService = new MockSchemaService(); + + + + public DOMDataBroker getDomAsyncDataBroker() { + return newDOMDataBroker; } protected BindingTestContext(final ListeningExecutorService executor, final ClassPool classPool, final boolean startWithSchema) { @@ -118,6 +124,7 @@ public class BindingTestContext implements AutoCloseable, SchemaContextProvider this.startWithSchema = startWithSchema; } + @Deprecated public void startDomDataStore() { checkState(dataStore == null, "DataStore already started."); checkState(biDataImpl != null, "Dom Data Broker not present"); @@ -130,7 +137,7 @@ public class BindingTestContext implements AutoCloseable, SchemaContextProvider } else { dataStore = schemaAwareDataStore; } - + mockSchemaService.registerSchemaServiceListener(schemaAwareDataStore); biDataImpl.registerConfigurationReader(TREE_ROOT, dataStore); biDataImpl.registerOperationalReader(TREE_ROOT, dataStore); biDataImpl.registerCommitHandler(TREE_ROOT, dataStore); @@ -152,13 +159,12 @@ public class BindingTestContext implements AutoCloseable, SchemaContextProvider .put(LogicalDatastoreType.CONFIGURATION, configStore) .build(); - DOMDataBrokerImpl newBiDataImpl = new DOMDataBrokerImpl(newDatastores, executor); + newDOMDataBroker = new DOMDataBrokerImpl(newDatastores, executor); - biCompatibleBroker = new BackwardsCompatibleDataBroker(newBiDataImpl); + biCompatibleBroker = new BackwardsCompatibleDataBroker(newDOMDataBroker,mockSchemaService); - schemaListeners.add(configStore); - schemaListeners.add(operStore); - schemaListeners.add(biCompatibleBroker); + mockSchemaService.registerSchemaServiceListener(configStore); + mockSchemaService.registerSchemaServiceListener(operStore); biDataLegacyBroker = biCompatibleBroker; } @@ -166,24 +172,25 @@ public class BindingTestContext implements AutoCloseable, SchemaContextProvider checkState(executor != null, "Executor needs to be set"); baDataImpl = new DataBrokerImpl(); baDataImpl.setExecutor(executor); + baData = baDataImpl; } public void startBindingBroker() { checkState(executor != null, "Executor needs to be set"); - checkState(baDataImpl != null, "Binding Data Broker must be started"); + checkState(baData != null, "Binding Data Broker must be started"); checkState(baNotifyImpl != null, "Notification Service must be started"); baBrokerImpl = new DomForwardedBindingBrokerImpl("test"); baBrokerImpl.getMountManager().setDataCommitExecutor(executor); baBrokerImpl.getMountManager().setNotificationExecutor(executor); baBrokerImpl.setRpcBroker(new RpcProviderRegistryImpl("test")); - baBrokerImpl.setDataBroker(baDataImpl); + baBrokerImpl.setLegacyDataBroker(baData); baBrokerImpl.setNotificationBroker(baNotifyImpl); baBrokerImpl.start(); } public void startForwarding() { - checkState(baDataImpl != null, "Binding Data Broker needs to be started"); + checkState(baData != null, "Binding Data Broker needs to be started"); checkState(biDataLegacyBroker != null, "DOM Data Broker needs to be started."); checkState(mappingServiceImpl != null, "DOM Mapping Service needs to be started."); @@ -256,23 +263,12 @@ public class BindingTestContext implements AutoCloseable, SchemaContextProvider public void startBindingToDomMappingService() { checkState(classPool != null, "ClassPool needs to be present"); - mappingServiceImpl = new RuntimeGeneratedMappingServiceImpl(); - mappingServiceImpl.setPool(classPool); - mappingServiceImpl.init(); + mappingServiceImpl = new RuntimeGeneratedMappingServiceImpl(classPool); + mockSchemaService.registerSchemaServiceListener(mappingServiceImpl); } public void updateYangSchema(final String[] files) { - schemaContext = getContext(files); - - if (schemaAwareDataStore != null) { - schemaAwareDataStore.onGlobalContextUpdated(schemaContext); - } - if (mappingServiceImpl != null) { - mappingServiceImpl.onGlobalContextUpdated(schemaContext); - } - for(SchemaContextListener listener : schemaListeners) { - listener.onGlobalContextUpdated(schemaContext); - } + mockSchemaService.changeSchema(getContext(files)); } public static String[] getAllYangFilesOnClasspath() { @@ -315,19 +311,26 @@ public class BindingTestContext implements AutoCloseable, SchemaContextProvider } public void start() { - startBindingDataBroker(); - startBindingNotificationBroker(); - startBindingBroker(); startNewDomDataBroker(); startDomBroker(); startDomMountPoint(); startBindingToDomMappingService(); + startNewBindingDataBroker(); + + startBindingNotificationBroker(); + startBindingBroker(); + startForwarding(); if (startWithSchema) { loadYangSchemaFromClasspath(); } } + public void startNewBindingDataBroker() { + ForwardedBackwardsCompatibleDataBroker forwarded = new ForwardedBackwardsCompatibleDataBroker(newDOMDataBroker, mappingServiceImpl,mockSchemaService, executor); + baData = forwarded; + } + private void startDomMountPoint() { biMountImpl = new MountPointManagerImpl(); biMountImpl.setDataBroker(getDomDataBroker()); @@ -335,9 +338,10 @@ public class BindingTestContext implements AutoCloseable, SchemaContextProvider private void startDomBroker() { checkState(executor != null); - biBrokerImpl = new BrokerImpl(); - biBrokerImpl.setExecutor(executor); - biBrokerImpl.setRouter(new SchemaAwareRpcBroker("/", this)); + + SchemaAwareRpcBroker router = new SchemaAwareRpcBroker("/", mockSchemaService); + ClassToInstanceMap services = MutableClassToInstanceMap.create(); + biBrokerImpl = new BrokerImpl(router,services); } @@ -353,7 +357,7 @@ public class BindingTestContext implements AutoCloseable, SchemaContextProvider } public DataProviderService getBindingDataBroker() { - return baDataImpl; + return baData; } public org.opendaylight.controller.sal.core.api.data.DataProviderService getDomDataBroker() { @@ -413,4 +417,6 @@ public class BindingTestContext implements AutoCloseable, SchemaContextProvider public MountProvisionService getDomMountProviderService() { return biMountImpl; } + + }