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=58d6a3de889b8759140b9ee7334719f3ab4780ca;hp=d0a326adff83054ff99cbc9e0b1278dde8ed6ad4;hb=06e889c9c78457590b6a0b62d89a6b9f44242a9f;hpb=30faeb35260541c273a81b8f126b40da94daa825 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 d0a326adff..58d6a3de88 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 @@ -21,23 +21,31 @@ import java.util.Set; import java.util.concurrent.Future; import javassist.ClassPool; import org.opendaylight.controller.md.sal.binding.api.DataBroker; +import org.opendaylight.controller.md.sal.binding.api.MountPointService; +import org.opendaylight.controller.md.sal.binding.compat.HeliumRpcProviderRegistry; +import org.opendaylight.controller.md.sal.binding.compat.HydrogenDataBrokerAdapter; +import org.opendaylight.controller.md.sal.binding.compat.HydrogenMountProvisionServiceAdapter; +import org.opendaylight.controller.md.sal.binding.impl.BindingDOMMountPointServiceAdapter; +import org.opendaylight.controller.md.sal.binding.impl.BindingDOMRpcProviderServiceAdapter; +import org.opendaylight.controller.md.sal.binding.impl.BindingDOMRpcServiceAdapter; import org.opendaylight.controller.md.sal.binding.impl.BindingToNormalizedNodeCodec; -import org.opendaylight.controller.md.sal.binding.impl.ForwardedBackwardsCompatibleDataBroker; import org.opendaylight.controller.md.sal.binding.impl.ForwardedBindingDataBroker; 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.api.DOMMountPointService; +import org.opendaylight.controller.md.sal.dom.api.DOMRpcProviderService; +import org.opendaylight.controller.md.sal.dom.api.DOMRpcService; +import org.opendaylight.controller.md.sal.dom.broker.impl.DOMRpcRouter; +import org.opendaylight.controller.md.sal.dom.broker.impl.SerializedDOMDataBroker; import org.opendaylight.controller.md.sal.dom.broker.impl.compat.BackwardsCompatibleDataBroker; +import org.opendaylight.controller.md.sal.dom.broker.impl.mount.DOMMountPointServiceImpl; import org.opendaylight.controller.md.sal.dom.store.impl.InMemoryDOMDataStore; +import org.opendaylight.controller.sal.binding.api.RpcConsumerRegistry; import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; import org.opendaylight.controller.sal.binding.api.data.DataProviderService; import org.opendaylight.controller.sal.binding.api.mount.MountProviderService; -import org.opendaylight.controller.sal.binding.impl.DataBrokerImpl; import org.opendaylight.controller.sal.binding.impl.NotificationBrokerImpl; -import org.opendaylight.controller.sal.binding.impl.RpcProviderRegistryImpl; -import org.opendaylight.controller.sal.binding.impl.connect.dom.BindingDomConnectorDeployer; -import org.opendaylight.controller.sal.binding.impl.connect.dom.BindingIndependentConnector; -import org.opendaylight.controller.sal.binding.impl.forward.DomForwardedBindingBrokerImpl; +import org.opendaylight.controller.sal.binding.impl.RootBindingAwareBroker; import org.opendaylight.controller.sal.core.api.Broker.ProviderSession; import org.opendaylight.controller.sal.core.api.Broker.RoutedRpcRegistration; import org.opendaylight.controller.sal.core.api.Broker.RpcRegistration; @@ -45,10 +53,8 @@ import org.opendaylight.controller.sal.core.api.BrokerService; import org.opendaylight.controller.sal.core.api.RpcImplementation; import org.opendaylight.controller.sal.core.api.RpcProvisionRegistry; import org.opendaylight.controller.sal.core.api.RpcRegistrationListener; -import org.opendaylight.controller.sal.core.api.mount.MountProvisionService; import org.opendaylight.controller.sal.core.spi.data.DOMStore; import org.opendaylight.controller.sal.dom.broker.BrokerImpl; -import org.opendaylight.controller.sal.dom.broker.MountPointManagerImpl; import org.opendaylight.controller.sal.dom.broker.impl.SchemaAwareRpcBroker; import org.opendaylight.yangtools.binding.data.codec.gen.impl.DataObjectSerializerGenerator; import org.opendaylight.yangtools.binding.data.codec.gen.impl.StreamWriterGenerator; @@ -65,27 +71,20 @@ import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.data.api.CompositeNode; import org.opendaylight.yangtools.yang.data.impl.codec.BindingIndependentMappingService; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; @Beta public class BindingTestContext implements AutoCloseable { - public static final org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier TREE_ROOT = org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier - .builder().toInstance(); - - private static final Logger LOG = LoggerFactory.getLogger(BindingTestContext.class); private RuntimeGeneratedMappingServiceImpl mappingServiceImpl; private BindingToNormalizedNodeCodec codec; - private DomForwardedBindingBrokerImpl baBrokerImpl; - private DataBrokerImpl baDataImpl; + private RootBindingAwareBroker baBrokerImpl; + private NotificationBrokerImpl baNotifyImpl; - private BindingIndependentConnector baConnectImpl; - private org.opendaylight.controller.sal.dom.broker.DataBrokerImpl biDataImpl; - @SuppressWarnings("deprecation") + + @Deprecated private org.opendaylight.controller.sal.core.api.data.DataProviderService biDataLegacyBroker; private BrokerImpl biBrokerImpl; @@ -94,15 +93,14 @@ public class BindingTestContext implements AutoCloseable { private final boolean startWithSchema; - private MountPointManagerImpl biMountImpl; - - + private DOMMountPointService biMountImpl; private ImmutableMap newDatastores; + @Deprecated private BackwardsCompatibleDataBroker biCompatibleBroker; - @SuppressWarnings("deprecation") + @Deprecated private DataProviderService baData; private DOMDataBroker newDOMDataBroker; @@ -111,12 +109,21 @@ public class BindingTestContext implements AutoCloseable { private DataBroker dataBroker; + private RpcConsumerRegistry baConsumerRpc; + + private BindingDOMRpcProviderServiceAdapter baProviderRpc; + private DOMRpcRouter domRouter; + public DOMDataBroker getDomAsyncDataBroker() { return newDOMDataBroker; } + public BindingToNormalizedNodeCodec getCodec() { + return codec; + } + protected BindingTestContext(final ListeningExecutorService executor, final ClassPool classPool, final boolean startWithSchema) { this.executor = executor; this.classPool = classPool; @@ -124,30 +131,24 @@ public class BindingTestContext implements AutoCloseable { } public void startDomDataBroker() { - checkState(executor != null, "Executor needs to be set"); - biDataImpl = new org.opendaylight.controller.sal.dom.broker.DataBrokerImpl(); - biDataImpl.setExecutor(executor); - biDataLegacyBroker = biDataImpl; } public void startNewDataBroker() { checkState(executor != null, "Executor needs to be set"); checkState(newDOMDataBroker != null, "DOM Data Broker must be set"); - dataBroker = new ForwardedBindingDataBroker(newDOMDataBroker, codec, mockSchemaService); + dataBroker = new ForwardedBindingDataBroker(newDOMDataBroker, codec); } public void startNewDomDataBroker() { checkState(executor != null, "Executor needs to be set"); - InMemoryDOMDataStore operStore = new InMemoryDOMDataStore("OPER", executor, - MoreExecutors.sameThreadExecutor()); - InMemoryDOMDataStore configStore = new InMemoryDOMDataStore("CFG", executor, - MoreExecutors.sameThreadExecutor()); + final InMemoryDOMDataStore operStore = new InMemoryDOMDataStore("OPER", MoreExecutors.sameThreadExecutor()); + final InMemoryDOMDataStore configStore = new InMemoryDOMDataStore("CFG", MoreExecutors.sameThreadExecutor()); newDatastores = ImmutableMap.builder() .put(LogicalDatastoreType.OPERATIONAL, operStore) .put(LogicalDatastoreType.CONFIGURATION, configStore) .build(); - newDOMDataBroker = new DOMDataBrokerImpl(newDatastores, executor); + newDOMDataBroker = new SerializedDOMDataBroker(newDatastores, executor); biCompatibleBroker = new BackwardsCompatibleDataBroker(newDOMDataBroker,mockSchemaService); @@ -157,36 +158,30 @@ public class BindingTestContext implements AutoCloseable { } public void startBindingDataBroker() { - 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(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")); + baConsumerRpc = new BindingDOMRpcServiceAdapter(getDomRpcInvoker(), codec); + baProviderRpc = new BindingDOMRpcProviderServiceAdapter(getDomRpcRegistry(), codec); + + baBrokerImpl = new RootBindingAwareBroker("test"); + + final MountPointService mountService = new BindingDOMMountPointServiceAdapter(biMountImpl, codec); + baBrokerImpl.setMountService(mountService); + baBrokerImpl.setLegacyMountManager(new HydrogenMountProvisionServiceAdapter(mountService)); + baBrokerImpl.setRpcBroker(new HeliumRpcProviderRegistry(baConsumerRpc,baProviderRpc)); baBrokerImpl.setLegacyDataBroker(baData); baBrokerImpl.setNotificationBroker(baNotifyImpl); baBrokerImpl.start(); } public void startForwarding() { - 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."); - - baConnectImpl = BindingDomConnectorDeployer.createConnector(getBindingToDomMappingService()); - baConnectImpl.setDomRpcRegistry(getDomRpcRegistry()); - baBrokerImpl.setConnector(baConnectImpl); - baBrokerImpl.setDomProviderContext(createMockContext()); - baBrokerImpl.startForwarding(); + } private ProviderSession createMockContext() { @@ -197,7 +192,7 @@ public class BindingTestContext implements AutoCloseable { // .put(org.opendaylight.controller.sal.core.api.data.DataProviderService.class, biDataLegacyBroker) // .put(RpcProvisionRegistry.class, biBrokerImpl.getRouter()) // - .put(MountProvisionService.class, biMountImpl) // + .put(DOMMountPointService.class, biMountImpl) .build(); return new ProviderSession() { @@ -255,9 +250,9 @@ public class BindingTestContext implements AutoCloseable { mappingServiceImpl = new RuntimeGeneratedMappingServiceImpl(classPool); mockSchemaService.registerSchemaContextListener(mappingServiceImpl); - DataObjectSerializerGenerator generator = StreamWriterGenerator.create(JavassistUtils.forClassPool(classPool)); - BindingNormalizedNodeCodecRegistry codecRegistry = new BindingNormalizedNodeCodecRegistry(generator); - GeneratedClassLoadingStrategy loading = GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy(); + final DataObjectSerializerGenerator generator = StreamWriterGenerator.create(JavassistUtils.forClassPool(classPool)); + final BindingNormalizedNodeCodecRegistry codecRegistry = new BindingNormalizedNodeCodecRegistry(generator); + final GeneratedClassLoadingStrategy loading = GeneratedClassLoadingStrategy.getTCCLClassLoadingStrategy(); codec = new BindingToNormalizedNodeCodec(loading, mappingServiceImpl, codecRegistry); mockSchemaService.registerSchemaContextListener(codec); } @@ -267,7 +262,7 @@ public class BindingTestContext implements AutoCloseable { } private SchemaContext getContext(final ImmutableSet moduleInfos) { - ModuleInfoBackedContext ctx = ModuleInfoBackedContext.create(); + final ModuleInfoBackedContext ctx = ModuleInfoBackedContext.create(); ctx.addModuleInfos(moduleInfos); return ctx.tryToCreateSchemaContext().get(); } @@ -290,20 +285,25 @@ public class BindingTestContext implements AutoCloseable { } public void startNewBindingDataBroker() { - ForwardedBackwardsCompatibleDataBroker forwarded = new ForwardedBackwardsCompatibleDataBroker(newDOMDataBroker, codec,mockSchemaService, executor); + final HydrogenDataBrokerAdapter forwarded = new HydrogenDataBrokerAdapter(dataBroker); baData = forwarded; } private void startDomMountPoint() { - biMountImpl = new MountPointManagerImpl(); - biMountImpl.setDataBroker(getDomDataBroker()); + biMountImpl = new DOMMountPointServiceImpl(); } private void startDomBroker() { checkState(executor != null); - SchemaAwareRpcBroker router = new SchemaAwareRpcBroker("/", mockSchemaService); - ClassToInstanceMap services = MutableClassToInstanceMap.create(); + final SchemaAwareRpcBroker router = new SchemaAwareRpcBroker("/", mockSchemaService); + + domRouter = new DOMRpcRouter(); + mockSchemaService.registerSchemaContextListener(domRouter); + + final ClassToInstanceMap services = MutableClassToInstanceMap.create(); + services.put(DOMRpcService.class, domRouter); + biBrokerImpl = new BrokerImpl(router,services); } @@ -315,16 +315,16 @@ public class BindingTestContext implements AutoCloseable { } public void loadYangSchemaFromClasspath() { - ImmutableSet moduleInfos = BindingReflections.loadModuleInfos(); + final ImmutableSet moduleInfos = BindingReflections.loadModuleInfos(); updateYangSchema(moduleInfos); } - @SuppressWarnings("deprecation") + @Deprecated public DataProviderService getBindingDataBroker() { return baData; } - @SuppressWarnings("deprecation") + @Deprecated public org.opendaylight.controller.sal.core.api.data.DataProviderService getDomDataBroker() { return biDataLegacyBroker; } @@ -337,15 +337,12 @@ public class BindingTestContext implements AutoCloseable { return baBrokerImpl.getRoot(); } - public RpcProvisionRegistry getDomRpcRegistry() { - if (biBrokerImpl == null) { - return null; - } - return biBrokerImpl.getRouter(); + public DOMRpcProviderService getDomRpcRegistry() { + return domRouter; } - public RpcImplementation getDomRpcInvoker() { - return biBrokerImpl.getRouter(); + public DOMRpcService getDomRpcInvoker() { + return domRouter; } @Override @@ -354,10 +351,10 @@ public class BindingTestContext implements AutoCloseable { } public MountProviderService getBindingMountProviderService() { - return baBrokerImpl.getMountManager(); + return baBrokerImpl.getLegacyMount(); } - public MountProvisionService getDomMountProviderService() { + public DOMMountPointService getDomMountProviderService() { return biMountImpl; }