From: Tony Tkacik Date: Mon, 19 May 2014 09:07:59 +0000 (+0000) Subject: Merge "Bug 1029: Remove dead code: sal-dom-demo" X-Git-Tag: autorelease-tag-v20140601202136_82eb3f9~74 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=4b3cfdf12d5f1d5b79b675913b48b4114d72277d;hp=d6c7e80b4372f994640863af3066039527c8d3e9 Merge "Bug 1029: Remove dead code: sal-dom-demo" --- diff --git a/opendaylight/md-sal/clustered-data-store/implementation/pom.xml b/opendaylight/md-sal/clustered-data-store/implementation/pom.xml deleted file mode 100644 index fe0b516a8b..0000000000 --- a/opendaylight/md-sal/clustered-data-store/implementation/pom.xml +++ /dev/null @@ -1,127 +0,0 @@ - - - 4.0.0 - - org.opendaylight.controller - sal-parent - 1.1-SNAPSHOT - ../.. - - - scm:git:ssh://git.opendaylight.org:29418/controller.git - scm:git:ssh://git.opendaylight.org:29418/controller.git - https://wiki.opendaylight.org/view/OpenDaylight_Controller:Main - HEAD - - - clustered-datastore-implementation - 0.4.1-SNAPSHOT - bundle - - - - - org.apache.felix - maven-bundle-plugin - true - - - - ${project.basedir}/META-INF - - - - org.opendaylight.yangtools - yang-maven-plugin - - - - generate-sources - - - - - - org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator - - ${project.build.directory}/generated-sources/config - - - urn:opendaylight:params:xml:ns:yang:controller==org.opendaylight.controller.config.yang - - - - - org.opendaylight.yangtools.yang.unified.doc.generator.maven.DocumentationGeneratorImpl - target/site/models - - - true - - - - - - org.opendaylight.controller - yang-jmx-generator-plugin - 0.2.3-SNAPSHOT - - - org.opendaylight.yangtools - maven-sal-api-gen-plugin - ${yangtools.version} - jar - - - - - - - - - com.google.guava - guava - - - org.opendaylight.controller - sal-core-api - - - org.opendaylight.controller - sal-common-util - - - org.opendaylight.controller - config-api - - - - org.opendaylight.controller - sal - - - org.opendaylight.controller - clustering.services - - - junit - junit - test - - - org.mockito - mockito-all - test - - - org.opendaylight.yangtools - yang-binding - - - org.opendaylight.yangtools - yang-data-api - - - - diff --git a/opendaylight/md-sal/clustered-data-store/implementation/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/cluster/store/ClusteredDataStoreImplModule.java b/opendaylight/md-sal/clustered-data-store/implementation/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/cluster/store/ClusteredDataStoreImplModule.java deleted file mode 100644 index 5fc2c015ed..0000000000 --- a/opendaylight/md-sal/clustered-data-store/implementation/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/cluster/store/ClusteredDataStoreImplModule.java +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -/** -* Generated file - -* Generated from: yang module name: odl-sal-dom-clustered-store-cfg yang module local name: dom-clustered-store-impl -* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator -* Generated at: Wed Nov 27 17:09:17 CET 2013 -* -* Do not modify this file unless it is present under src/main directory -*/ -package org.opendaylight.controller.config.yang.md.sal.dom.cluster.store; - -import org.opendaylight.controller.datastore.internal.ClusteredDataStoreManager; -import org.osgi.framework.BundleContext; - -/** -* -*/ -public final class ClusteredDataStoreImplModule extends org.opendaylight.controller.config.yang.md.sal.dom.cluster.store.AbstractClusteredDataStoreImplModule -{ - - private BundleContext bundleContext; - - public ClusteredDataStoreImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) { - super(identifier, dependencyResolver); - } - - public ClusteredDataStoreImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, ClusteredDataStoreImplModule oldModule, java.lang.AutoCloseable oldInstance) { - super(identifier, dependencyResolver, oldModule, oldInstance); - } - - @Override - public void validate(){ - super.validate(); - // Add custom validation for module attributes here. - } - - @Override - public java.lang.AutoCloseable createInstance() { - ClusteredDataStoreManager manager = new ClusteredDataStoreManager(); - manager.setContext(bundleContext); - manager.start(); - return manager; - } - - public void setBundleContext(BundleContext bundleContext) { - this.bundleContext = bundleContext; - } -} diff --git a/opendaylight/md-sal/clustered-data-store/implementation/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/cluster/store/ClusteredDataStoreImplModuleFactory.java b/opendaylight/md-sal/clustered-data-store/implementation/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/cluster/store/ClusteredDataStoreImplModuleFactory.java deleted file mode 100644 index 40c558726d..0000000000 --- a/opendaylight/md-sal/clustered-data-store/implementation/src/main/java/org/opendaylight/controller/config/yang/md/sal/dom/cluster/store/ClusteredDataStoreImplModuleFactory.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -/** -* Generated file - -* Generated from: yang module name: odl-sal-dom-clustered-store-cfg yang module local name: dom-clustered-store-impl -* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator -* Generated at: Wed Nov 27 17:09:17 CET 2013 -* -* Do not modify this file unless it is present under src/main directory -*/ -package org.opendaylight.controller.config.yang.md.sal.dom.cluster.store; - -import org.opendaylight.controller.config.api.DependencyResolver; -import org.opendaylight.controller.config.api.DynamicMBeanWithInstance; -import org.opendaylight.controller.config.spi.Module; -import org.osgi.framework.BundleContext; - -/** -* -*/ -public class ClusteredDataStoreImplModuleFactory extends org.opendaylight.controller.config.yang.md.sal.dom.cluster.store.AbstractClusteredDataStoreImplModuleFactory -{ - - @Override - public Module createModule(String instanceName, DependencyResolver dependencyResolver, BundleContext bundleContext) { - ClusteredDataStoreImplModule module = - (ClusteredDataStoreImplModule) super.createModule(instanceName, dependencyResolver, bundleContext); - module.setBundleContext(bundleContext); - return module; - } - - @Override - public Module createModule(String instanceName, DependencyResolver dependencyResolver, - DynamicMBeanWithInstance old, BundleContext bundleContext) throws Exception { - ClusteredDataStoreImplModule module = - (ClusteredDataStoreImplModule) super.createModule(instanceName, dependencyResolver, old, bundleContext); - module.setBundleContext(bundleContext); - return module; - } - -} diff --git a/opendaylight/md-sal/clustered-data-store/implementation/src/main/java/org/opendaylight/controller/datastore/ClusteredDataStore.java b/opendaylight/md-sal/clustered-data-store/implementation/src/main/java/org/opendaylight/controller/datastore/ClusteredDataStore.java deleted file mode 100644 index 1aecb967f1..0000000000 --- a/opendaylight/md-sal/clustered-data-store/implementation/src/main/java/org/opendaylight/controller/datastore/ClusteredDataStore.java +++ /dev/null @@ -1,22 +0,0 @@ - -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ - - -package org.opendaylight.controller.datastore; - -import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler; -import org.opendaylight.controller.md.sal.common.api.data.DataReader; -import org.opendaylight.controller.sal.core.api.data.DataStore; -import org.opendaylight.yangtools.yang.data.api.CompositeNode; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; - -public interface ClusteredDataStore extends DataStore { - - -} diff --git a/opendaylight/md-sal/clustered-data-store/implementation/src/main/java/org/opendaylight/controller/datastore/internal/ClusteredDataStoreImpl.java b/opendaylight/md-sal/clustered-data-store/implementation/src/main/java/org/opendaylight/controller/datastore/internal/ClusteredDataStoreImpl.java deleted file mode 100644 index 0809ba347b..0000000000 --- a/opendaylight/md-sal/clustered-data-store/implementation/src/main/java/org/opendaylight/controller/datastore/internal/ClusteredDataStoreImpl.java +++ /dev/null @@ -1,160 +0,0 @@ - -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ - -package org.opendaylight.controller.datastore.internal; - -import com.google.common.base.Preconditions; - -import org.opendaylight.controller.clustering.services.CacheConfigException; -import org.opendaylight.controller.clustering.services.CacheExistException; -import org.opendaylight.controller.clustering.services.IClusterGlobalServices; -import org.opendaylight.controller.clustering.services.IClusterServices; -import org.opendaylight.controller.datastore.ClusteredDataStore; -import org.opendaylight.controller.md.sal.common.api.data.DataModification; -import org.opendaylight.controller.sal.common.util.Rpcs; -import org.opendaylight.yangtools.yang.common.RpcError; -import org.opendaylight.yangtools.yang.common.RpcResult; -import org.opendaylight.yangtools.yang.data.api.CompositeNode; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.Collections; -import java.util.EnumSet; -import java.util.Set; -import java.util.concurrent.ConcurrentMap; - -/** - * The ClusteredDataStoreImpl stores global data to be shared across a controller cluster. It uses Clustering Services. - */ -public class ClusteredDataStoreImpl implements ClusteredDataStore { - - - public static final String OPERATIONAL_DATA_CACHE = "clustered_data_store.operational_data_cache"; - public static final String CONFIGURATION_DATA_CACHE = "clustered_data_store.configuration_data_cache"; - - private final ConcurrentMap operationalDataCache; - private final ConcurrentMap configurationDataCache; - - private Logger logger = LoggerFactory.getLogger(ClusteredDataStoreImpl.class); - - public ClusteredDataStoreImpl(IClusterGlobalServices clusterGlobalServices) throws CacheConfigException { - logger.trace("Constructing clustered data store"); - Preconditions.checkNotNull(clusterGlobalServices, "clusterGlobalServices cannot be null"); - - operationalDataCache = getOrCreateCache(clusterGlobalServices, OPERATIONAL_DATA_CACHE); - - Preconditions.checkNotNull(operationalDataCache, "operationalDataCache cannot be null"); - - configurationDataCache = getOrCreateCache(clusterGlobalServices, CONFIGURATION_DATA_CACHE); - - Preconditions.checkNotNull(configurationDataCache, "configurationDataCache cannot be null"); - } - - @Override - public DataCommitTransaction requestCommit(DataModification modification) { - return new ClusteredDataStoreTransaction(modification); - } - - @Override - public CompositeNode readOperationalData(InstanceIdentifier path) { - Preconditions.checkNotNull(path, "path cannot be null"); - return operationalDataCache.get(path); - } - - @Override - public boolean containsConfigurationPath(InstanceIdentifier path) { - return configurationDataCache.containsKey(path); - } - - @Override - public boolean containsOperationalPath(InstanceIdentifier path) { - return operationalDataCache.containsKey(path); - } - - @Override - public Iterable getStoredConfigurationPaths() { - return configurationDataCache.keySet(); - } - - @Override - public Iterable getStoredOperationalPaths() { - return operationalDataCache.keySet(); - } - - - - @Override - public CompositeNode readConfigurationData(InstanceIdentifier path) { - Preconditions.checkNotNull(path, "path cannot be null"); - return configurationDataCache.get(path); - } - - private RpcResult finish(final ClusteredDataStoreTransaction transaction) { - final DataModification modification = transaction.getModification(); - - this.configurationDataCache.putAll(modification.getUpdatedConfigurationData()); - this.operationalDataCache.putAll(modification.getUpdatedOperationalData()); - - for (final InstanceIdentifier removal : modification.getRemovedConfigurationData()) { - this.configurationDataCache.remove(removal); - } - - for (final InstanceIdentifier removal : modification.getRemovedOperationalData()) { - this.operationalDataCache.remove(removal ); - } - - Set _emptySet = Collections.emptySet(); - return Rpcs.getRpcResult(true, null, _emptySet); - } - - private RpcResult rollback(final ClusteredDataStoreTransaction transaction) { - Set _emptySet = Collections.emptySet(); - return Rpcs.getRpcResult(true, null, _emptySet); - } - - - private ConcurrentMap getOrCreateCache(IClusterGlobalServices clusterGlobalServices, String name) throws CacheConfigException { - ConcurrentMap cache = clusterGlobalServices.getCache(name); - - if(cache == null) { - try { - cache = clusterGlobalServices.createCache(name, EnumSet.of(IClusterServices.cacheMode.TRANSACTIONAL)); - } catch (CacheExistException e) { - cache = clusterGlobalServices.getCache(name); - } - } - return cache; - } - - private class ClusteredDataStoreTransaction implements DataCommitTransaction { - private final DataModification modification; - - public ClusteredDataStoreTransaction(DataModification modification){ - Preconditions.checkNotNull(modification, "modification cannot be null"); - - this.modification = modification; - } - - @Override - public DataModification getModification() { - return this.modification; - } - - @Override - public RpcResult finish() throws IllegalStateException { - return ClusteredDataStoreImpl.this.finish(this); - } - - @Override - public RpcResult rollback() throws IllegalStateException { - return ClusteredDataStoreImpl.this.rollback(this); - } - } -} diff --git a/opendaylight/md-sal/clustered-data-store/implementation/src/main/java/org/opendaylight/controller/datastore/internal/ClusteredDataStoreManager.java b/opendaylight/md-sal/clustered-data-store/implementation/src/main/java/org/opendaylight/controller/datastore/internal/ClusteredDataStoreManager.java deleted file mode 100644 index b0a099ff90..0000000000 --- a/opendaylight/md-sal/clustered-data-store/implementation/src/main/java/org/opendaylight/controller/datastore/internal/ClusteredDataStoreManager.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ - -package org.opendaylight.controller.datastore.internal; - -import java.util.Hashtable; - -import com.google.common.base.Preconditions; - -import org.opendaylight.controller.clustering.services.CacheConfigException; -import org.opendaylight.controller.clustering.services.IClusterGlobalServices; -import org.opendaylight.controller.datastore.ClusteredDataStore; -import org.opendaylight.controller.md.sal.common.api.data.DataModification; -import org.opendaylight.yangtools.yang.data.api.CompositeNode; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceReference; -import org.osgi.util.tracker.ServiceTracker; -import org.osgi.util.tracker.ServiceTrackerCustomizer; - -public class ClusteredDataStoreManager implements // - ClusteredDataStore, // - ServiceTrackerCustomizer, // - AutoCloseable { - - private ClusteredDataStore clusteredDataStore = null; - private IClusterGlobalServices clusterGlobalServices = null; - private BundleContext context; - - private ServiceReference firstClusterGlobalReference; - private ServiceTracker clusterTracker; - - @Override - public DataCommitTransaction requestCommit( - DataModification modification) { - Preconditions.checkState(clusteredDataStore != null, "clusteredDataStore cannot be null"); - return clusteredDataStore.requestCommit(modification); - } - - @Override - public CompositeNode readOperationalData(InstanceIdentifier path) { - Preconditions.checkState(clusteredDataStore != null, "clusteredDataStore cannot be null"); - return clusteredDataStore.readOperationalData(path); - } - - @Override - public CompositeNode readConfigurationData(InstanceIdentifier path) { - Preconditions.checkState(clusteredDataStore != null, "clusteredDataStore cannot be null"); - return clusteredDataStore.readConfigurationData(path); - } - - public Iterable getStoredConfigurationPaths() { - Preconditions.checkState(clusteredDataStore != null, "clusteredDataStore cannot be null"); - return clusteredDataStore.getStoredConfigurationPaths(); - } - - public Iterable getStoredOperationalPaths() { - Preconditions.checkState(clusteredDataStore != null, "clusteredDataStore cannot be null"); - return clusteredDataStore.getStoredOperationalPaths(); - } - - public boolean containsConfigurationPath(InstanceIdentifier path) { - Preconditions.checkState(clusteredDataStore != null, "clusteredDataStore cannot be null"); - return clusteredDataStore.containsConfigurationPath(path); - } - - public boolean containsOperationalPath(InstanceIdentifier path) { - Preconditions.checkState(clusteredDataStore != null, "clusteredDataStore cannot be null"); - return clusteredDataStore.containsOperationalPath(path); - } - - public void setClusterGlobalServices(IClusterGlobalServices clusterGlobalServices) { - this.clusterGlobalServices = clusterGlobalServices; - try { - // Adding creation of the clustered data store in its own method - // to make the method unit testable - clusteredDataStore = createClusteredDataStore(); - } catch (CacheConfigException e) { - throw new IllegalStateException("could not construct clusteredDataStore"); - } - } - - @Override - public IClusterGlobalServices addingService(ServiceReference reference) { - if (clusterGlobalServices == null) { - setClusterGlobalServices(context.getService(reference)); - return clusterGlobalServices; - } - return null; - } - - @Override - public void modifiedService(ServiceReference reference, IClusterGlobalServices service) { - - } - - @Override - public void removedService(ServiceReference reference, IClusterGlobalServices service) { - if (clusterGlobalServices == service) { - clusterGlobalServices = null; - clusteredDataStore = null; - } - } - - public BundleContext getContext() { - return context; - } - - public void setContext(BundleContext context) { - this.context = context; - } - - - /** - * Function called by the dependency manager when all the required - * dependencies are satisfied - * - */ - public void start() { - if (context != null) { - clusterTracker = new ServiceTracker<>(context, IClusterGlobalServices.class, this); - clusterTracker.open(); - - context.registerService(ClusteredDataStore.class, this, new Hashtable()); - } - } - - protected ClusteredDataStore createClusteredDataStore() throws CacheConfigException { - return new ClusteredDataStoreImpl(clusterGlobalServices); - } - - @Override - public void close() throws Exception { - clusterTracker.close(); - } -} diff --git a/opendaylight/md-sal/clustered-data-store/implementation/src/main/yang/odl-sal-dom-clustered-store-cfg.yang b/opendaylight/md-sal/clustered-data-store/implementation/src/main/yang/odl-sal-dom-clustered-store-cfg.yang deleted file mode 100644 index 95a26d7f41..0000000000 --- a/opendaylight/md-sal/clustered-data-store/implementation/src/main/yang/odl-sal-dom-clustered-store-cfg.yang +++ /dev/null @@ -1,29 +0,0 @@ -module odl-sal-dom-clustered-store-cfg { - yang-version 1; - namespace "urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:cluster:store"; - prefix "binding-impl"; - - import config { prefix config; revision-date 2013-04-05; } - import opendaylight-md-sal-dom {prefix sal;} - - description - "Service definition for MD-SAL Clustered Store."; - - revision "2013-10-28" { - description - "Initial revision"; - } - - identity dom-clustered-store-impl { - base config:module-type; - config:provided-service sal:dom-data-store; - config:java-name-prefix ClusteredDataStoreImpl; - } - - augment "/config:modules/config:module/config:state" { - case dom-clustered-store-impl { - when "/config:modules/config:module/config:type = 'dom-clustered-store-impl'"; - } - } - -} \ No newline at end of file diff --git a/opendaylight/md-sal/clustered-data-store/implementation/src/test/java/org/opendaylight/controller/datastore/internal/ClusteredDataStoreImplTest.java b/opendaylight/md-sal/clustered-data-store/implementation/src/test/java/org/opendaylight/controller/datastore/internal/ClusteredDataStoreImplTest.java deleted file mode 100644 index 4c97b19bac..0000000000 --- a/opendaylight/md-sal/clustered-data-store/implementation/src/test/java/org/opendaylight/controller/datastore/internal/ClusteredDataStoreImplTest.java +++ /dev/null @@ -1,281 +0,0 @@ -/* - * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ -package org.opendaylight.controller.datastore.internal; - -import org.junit.Before; -import org.junit.Test; -import org.mockito.Mockito; -import org.opendaylight.controller.clustering.services.CacheConfigException; -import org.opendaylight.controller.clustering.services.CacheExistException; -import org.opendaylight.controller.clustering.services.IClusterGlobalServices; -import org.opendaylight.controller.clustering.services.IClusterServices; -import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler; -import org.opendaylight.controller.md.sal.common.api.data.DataModification; -import org.opendaylight.yangtools.yang.data.api.CompositeNode; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; - -import java.util.EnumSet; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -import static junit.framework.Assert.assertEquals; -import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.assertNull; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -public class ClusteredDataStoreImplTest { - @Before - public void setUp(){ - - } - - @Test - public void constructor_WhenPassedANullClusteringServices_ShouldThrowANullPointerException() throws CacheExistException, CacheConfigException { - try { - new ClusteredDataStoreImpl(null); - } catch(NullPointerException npe){ - assertEquals("clusterGlobalServices cannot be null", npe.getMessage()); - } - } - - @Test - public void constructor_WhenClusteringServicesReturnsANullOperationalDataCache_ShouldThrowANullPointerException() throws CacheExistException, CacheConfigException { - try { - new ClusteredDataStoreImpl(mock(IClusterGlobalServices.class)); - } catch(NullPointerException npe){ - assertEquals("operationalDataCache cannot be null", npe.getMessage()); - } - } - - @Test - public void constructor_WhenClusteringServicesReturnsANullOConfigurationDataCache_ShouldThrowANullPointerException() throws CacheExistException, CacheConfigException { - IClusterGlobalServices mockClusterGlobalServices = mock(IClusterGlobalServices.class); - - // Confused about the following line? - // See this http://stackoverflow.com/questions/10952629/a-strange-generics-edge-case-with-mockito-when-and-generic-type-inference - Mockito.>when(mockClusterGlobalServices.createCache(ClusteredDataStoreImpl.OPERATIONAL_DATA_CACHE, EnumSet.of(IClusterServices.cacheMode.TRANSACTIONAL))).thenReturn(new ConcurrentHashMap()); - - - try { - new ClusteredDataStoreImpl(mockClusterGlobalServices); - } catch(NullPointerException npe){ - assertEquals("configurationDataCache cannot be null", npe.getMessage()); - } - } - - @Test - public void constructor_WhenOperationalDataCacheIsAlreadyPresent_ShouldNotAttemptToCreateCache() throws CacheExistException, CacheConfigException { - IClusterGlobalServices mockClusterGlobalServices = mock(IClusterGlobalServices.class); - - Mockito.>when(mockClusterGlobalServices.getCache(ClusteredDataStoreImpl.OPERATIONAL_DATA_CACHE)).thenReturn(new ConcurrentHashMap()); - Mockito.>when(mockClusterGlobalServices.getCache(ClusteredDataStoreImpl.CONFIGURATION_DATA_CACHE)).thenReturn(new ConcurrentHashMap()); - - new ClusteredDataStoreImpl(mockClusterGlobalServices); - - verify(mockClusterGlobalServices, never()).createCache(ClusteredDataStoreImpl.OPERATIONAL_DATA_CACHE, EnumSet.of(IClusterServices.cacheMode.TRANSACTIONAL)); - } - - @Test - public void constructor_WhenConfigurationDataCacheIsAlreadyPresent_ShouldNotAttemptToCreateCache() throws CacheExistException, CacheConfigException { - IClusterGlobalServices mockClusterGlobalServices = mock(IClusterGlobalServices.class); - - Mockito.>when(mockClusterGlobalServices.getCache(ClusteredDataStoreImpl.OPERATIONAL_DATA_CACHE)).thenReturn(new ConcurrentHashMap()); - Mockito.>when(mockClusterGlobalServices.getCache(ClusteredDataStoreImpl.CONFIGURATION_DATA_CACHE)).thenReturn(new ConcurrentHashMap()); - - new ClusteredDataStoreImpl(mockClusterGlobalServices); - - verify(mockClusterGlobalServices, never()).createCache(ClusteredDataStoreImpl.CONFIGURATION_DATA_CACHE, EnumSet.of(IClusterServices.cacheMode.TRANSACTIONAL)); - } - - - @Test - public void constructor_WhenPassedAValidClusteringServices_ShouldNotThrowAnyExceptions() throws CacheExistException, CacheConfigException { - IClusterGlobalServices mockClusterGlobalServices = createClusterGlobalServices(); - - new ClusteredDataStoreImpl(mockClusterGlobalServices); - } - - - @Test - public void readOperationalData_WhenPassedANullPath_ShouldThrowANullPointerException() throws CacheExistException, CacheConfigException { - IClusterGlobalServices mockClusterGlobalServices = createClusterGlobalServices(); - - ClusteredDataStoreImpl store = new ClusteredDataStoreImpl(mockClusterGlobalServices); - - try { - store.readOperationalData(null); - } catch(NullPointerException npe){ - assertEquals("path cannot be null", npe.getMessage()); - } - } - - @Test - public void readOperationalData_WhenPassedAKeyThatDoesNotExistInTheCache_ShouldReturnNull() throws CacheExistException, CacheConfigException { - InstanceIdentifier path = InstanceIdentifier.builder().toInstance(); - - IClusterGlobalServices mockClusterGlobalServices = createClusterGlobalServices(); - - ClusteredDataStoreImpl store = new ClusteredDataStoreImpl(mockClusterGlobalServices); - - assertNull(store.readOperationalData(path)); - } - - @Test - public void readOperationalData_WhenPassedAKeyThatDoesExistInTheCache_ShouldReturnTheValueObject() throws CacheExistException, CacheConfigException { - InstanceIdentifier path = InstanceIdentifier.builder().toInstance(); - - IClusterGlobalServices mockClusterGlobalServices = createClusterGlobalServices(); - - ConcurrentMap mockOperationalDataCache = mock(ConcurrentMap.class); - - CompositeNode valueObject = mock(CompositeNode.class); - - when(mockOperationalDataCache.get(path)).thenReturn(valueObject); - - Mockito.>when(mockClusterGlobalServices.createCache(ClusteredDataStoreImpl.OPERATIONAL_DATA_CACHE, EnumSet.of(IClusterServices.cacheMode.TRANSACTIONAL))).thenReturn(mockOperationalDataCache); - Mockito.>when(mockClusterGlobalServices.createCache(ClusteredDataStoreImpl.CONFIGURATION_DATA_CACHE, EnumSet.of(IClusterServices.cacheMode.TRANSACTIONAL))).thenReturn(new ConcurrentHashMap()); - - - ClusteredDataStoreImpl store = new ClusteredDataStoreImpl(mockClusterGlobalServices); - - assertEquals(valueObject, store.readOperationalData(path)); - } - - - - @Test - public void readConfigurationData_WhenPassedANullPath_ShouldThrowANullPointerException() throws CacheExistException, CacheConfigException { - - IClusterGlobalServices mockClusterGlobalServices = createClusterGlobalServices(); - - ClusteredDataStoreImpl store = new ClusteredDataStoreImpl(mockClusterGlobalServices); - - try { - store.readConfigurationData(null); - } catch(NullPointerException npe){ - assertEquals("path cannot be null", npe.getMessage()); - } - } - - - @Test - public void readConfigurationData_WhenPassedAKeyThatDoesNotExistInTheCache_ShouldReturnNull() throws CacheExistException, CacheConfigException { - InstanceIdentifier path = InstanceIdentifier.builder().toInstance(); - - IClusterGlobalServices mockClusterGlobalServices = createClusterGlobalServices(); - - ClusteredDataStoreImpl store = new ClusteredDataStoreImpl(mockClusterGlobalServices); - - assertNull(store.readConfigurationData(path)); - } - - @Test - public void readConfigurationData_WhenPassedAKeyThatDoesExistInTheCache_ShouldReturnTheValueObject() throws CacheExistException, CacheConfigException { - InstanceIdentifier path = InstanceIdentifier.builder().toInstance(); - - IClusterGlobalServices mockClusterGlobalServices = createClusterGlobalServices(); - - ConcurrentMap mockConfigurationDataCache = mock(ConcurrentMap.class); - - CompositeNode valueObject = mock(CompositeNode.class); - - when(mockConfigurationDataCache.get(path)).thenReturn(valueObject); - - Mockito.>when(mockClusterGlobalServices.createCache(ClusteredDataStoreImpl.OPERATIONAL_DATA_CACHE, EnumSet.of(IClusterServices.cacheMode.TRANSACTIONAL))).thenReturn(mock(ConcurrentMap.class)); - Mockito.>when(mockClusterGlobalServices.createCache(ClusteredDataStoreImpl.CONFIGURATION_DATA_CACHE, EnumSet.of(IClusterServices.cacheMode.TRANSACTIONAL))).thenReturn(mockConfigurationDataCache); - - - ClusteredDataStoreImpl store = new ClusteredDataStoreImpl(mockClusterGlobalServices); - - assertEquals(valueObject, store.readConfigurationData(path)); - } - - - @Test - public void requestCommit_ShouldReturnADataTransaction() throws CacheExistException, CacheConfigException { - IClusterGlobalServices mockClusterGlobalServices = createClusterGlobalServices(); - - ClusteredDataStoreImpl store = new ClusteredDataStoreImpl(mockClusterGlobalServices); - - assertNotNull(store.requestCommit(mock(DataModification.class))); - - - } - - @Test - public void finishingADataTransaction_ShouldUpdateTheUnderlyingCache() throws CacheExistException, CacheConfigException { - IClusterGlobalServices mockClusterGlobalServices = mock(IClusterGlobalServices.class); - - ConcurrentMap mockConfigurationDataCache = mock(ConcurrentMap.class); - ConcurrentMap mockOperationalDataCache = mock(ConcurrentMap.class); - - Mockito.>when(mockClusterGlobalServices.createCache(ClusteredDataStoreImpl.OPERATIONAL_DATA_CACHE, EnumSet.of(IClusterServices.cacheMode.TRANSACTIONAL))).thenReturn(mockOperationalDataCache); - Mockito.>when(mockClusterGlobalServices.createCache(ClusteredDataStoreImpl.CONFIGURATION_DATA_CACHE, EnumSet.of(IClusterServices.cacheMode.TRANSACTIONAL))).thenReturn(mockConfigurationDataCache); - - ClusteredDataStoreImpl store = new ClusteredDataStoreImpl(mockClusterGlobalServices); - - DataModification mockModification = mock(DataModification.class); - - Map configurationData = mock(Map.class); - Map operationalData = mock(Map.class); - - when(mockModification.getUpdatedConfigurationData()).thenReturn(configurationData); - when(mockModification.getUpdatedOperationalData()).thenReturn(operationalData); - - DataCommitHandler.DataCommitTransaction transaction = store.requestCommit(mockModification); - - transaction.finish(); - - verify(mockConfigurationDataCache).putAll(mockModification.getUpdatedConfigurationData()); - verify(mockOperationalDataCache).putAll(mockModification.getUpdatedOperationalData()); - } - - - @Test - public void rollingBackADataTransaction_ShouldDoNothing() throws CacheExistException, CacheConfigException { - IClusterGlobalServices mockClusterGlobalServices = mock(IClusterGlobalServices.class); - - ConcurrentMap mockConfigurationDataCache = mock(ConcurrentMap.class); - ConcurrentMap mockOperationalDataCache = mock(ConcurrentMap.class); - - Mockito.>when(mockClusterGlobalServices.createCache(ClusteredDataStoreImpl.OPERATIONAL_DATA_CACHE, EnumSet.of(IClusterServices.cacheMode.TRANSACTIONAL))).thenReturn(mockOperationalDataCache); - Mockito.>when(mockClusterGlobalServices.createCache(ClusteredDataStoreImpl.CONFIGURATION_DATA_CACHE, EnumSet.of(IClusterServices.cacheMode.TRANSACTIONAL))).thenReturn(mockConfigurationDataCache); - - ClusteredDataStoreImpl store = new ClusteredDataStoreImpl(mockClusterGlobalServices); - - DataModification mockModification = mock(DataModification.class); - - Map configurationData = mock(Map.class); - Map operationalData = mock(Map.class); - - when(mockModification.getUpdatedConfigurationData()).thenReturn(configurationData); - when(mockModification.getUpdatedOperationalData()).thenReturn(operationalData); - - DataCommitHandler.DataCommitTransaction transaction = store.requestCommit(mockModification); - - transaction.rollback(); - - verify(mockConfigurationDataCache, never()).putAll(mockModification.getUpdatedConfigurationData()); - verify(mockOperationalDataCache, never()).putAll(mockModification.getUpdatedOperationalData()); - - } - - - private IClusterGlobalServices createClusterGlobalServices() throws CacheExistException, CacheConfigException { - IClusterGlobalServices mockClusterGlobalServices = mock(IClusterGlobalServices.class); - - Mockito.>when(mockClusterGlobalServices.createCache(ClusteredDataStoreImpl.OPERATIONAL_DATA_CACHE, EnumSet.of(IClusterServices.cacheMode.TRANSACTIONAL))).thenReturn(mock(ConcurrentMap.class)); - Mockito.>when(mockClusterGlobalServices.createCache(ClusteredDataStoreImpl.CONFIGURATION_DATA_CACHE, EnumSet.of(IClusterServices.cacheMode.TRANSACTIONAL))).thenReturn(mock(ConcurrentMap.class)); - - return mockClusterGlobalServices; - } -} diff --git a/opendaylight/md-sal/clustered-data-store/implementation/src/test/java/org/opendaylight/controller/datastore/internal/ClusteredDataStoreManagerTest.java b/opendaylight/md-sal/clustered-data-store/implementation/src/test/java/org/opendaylight/controller/datastore/internal/ClusteredDataStoreManagerTest.java deleted file mode 100644 index 10f9622c7a..0000000000 --- a/opendaylight/md-sal/clustered-data-store/implementation/src/test/java/org/opendaylight/controller/datastore/internal/ClusteredDataStoreManagerTest.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ - -package org.opendaylight.controller.datastore.internal; - -import java.util.concurrent.ConcurrentHashMap; - -import org.apache.felix.dm.Component; -import org.junit.BeforeClass; -import org.junit.Test; -import org.opendaylight.controller.clustering.services.CacheConfigException; -import org.opendaylight.controller.clustering.services.CacheExistException; -import org.opendaylight.controller.clustering.services.IClusterGlobalServices; -import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler.DataCommitTransaction; -import org.opendaylight.controller.md.sal.common.api.data.DataModification; -import org.opendaylight.yangtools.yang.data.api.CompositeNode; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; - -import static junit.framework.Assert.assertNotNull; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.doThrow; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.spy; -import static org.mockito.Mockito.when; - -public class ClusteredDataStoreManagerTest { - - private static ClusteredDataStoreManager clusteredDSMgr = null; - private IClusterGlobalServices icClusterGlbServices = mock(IClusterGlobalServices.class); - - @BeforeClass - public static void construct() { - clusteredDSMgr = new ClusteredDataStoreManager(); - assertNotNull(clusteredDSMgr); - } - - @Test - public void construct_OnSetClusterGlobalServices_AssertNoException() { - doReturn(new ConcurrentHashMap()).when(icClusterGlbServices).getCache(ClusteredDataStoreImpl.CONFIGURATION_DATA_CACHE); - doReturn(new ConcurrentHashMap()).when(icClusterGlbServices).getCache(ClusteredDataStoreImpl.OPERATIONAL_DATA_CACHE); - clusteredDSMgr.setClusterGlobalServices(icClusterGlbServices); - } - - @Test - public void construct_init_AssertNoException() throws CacheExistException, CacheConfigException { - ClusteredDataStoreImpl clusteredDSImpl = mock(ClusteredDataStoreImpl.class); - - ClusteredDataStoreManager clusteredDSManager = spy(new ClusteredDataStoreManager()); - doReturn(clusteredDSImpl).when(clusteredDSManager).createClusteredDataStore(); - clusteredDSManager.start(); - } - - - @Test - public void construct_readOperationalData_AssertNoException() throws CacheExistException, CacheConfigException { - ClusteredDataStoreImpl clusteredDSImpl = mock(ClusteredDataStoreImpl.class); - - ClusteredDataStoreManager clusteredDSManager = spy(new ClusteredDataStoreManager()); - doReturn(clusteredDSImpl).when(clusteredDSManager).createClusteredDataStore(); - Component c = mock(Component.class); - - clusteredDSManager.start(); - clusteredDSManager.setClusterGlobalServices(icClusterGlbServices); - CompositeNode o = mock(CompositeNode.class); - - when(clusteredDSImpl.readOperationalData(any(InstanceIdentifier.class))).thenReturn(o); - assertEquals(o, clusteredDSManager.readOperationalData(any(InstanceIdentifier.class))); - } - - @Test - public void construct_readConfigurationData_AssertNoException() throws CacheExistException, CacheConfigException { - ClusteredDataStoreImpl clusteredDSImpl = mock(ClusteredDataStoreImpl.class); - - ClusteredDataStoreManager clusteredDSManager = spy(new ClusteredDataStoreManager()); - doReturn(clusteredDSImpl).when(clusteredDSManager).createClusteredDataStore(); - Component c = mock(Component.class); - - clusteredDSManager.start(); - clusteredDSManager.setClusterGlobalServices(icClusterGlbServices); - - CompositeNode o = mock(CompositeNode.class); - - when(clusteredDSImpl.readConfigurationData(any(InstanceIdentifier.class))).thenReturn(o); - assertEquals(o, clusteredDSManager.readConfigurationData(any(InstanceIdentifier.class))); - } - - @Test - public void construct_requestCommit_AssertNoException() throws CacheExistException, CacheConfigException { - ClusteredDataStoreImpl clusteredDSImpl = mock(ClusteredDataStoreImpl.class); - - ClusteredDataStoreManager clusteredDSManager = spy(new ClusteredDataStoreManager()); - doReturn(clusteredDSImpl).when(clusteredDSManager).createClusteredDataStore(); - IClusterGlobalServices globalServices = mock(IClusterGlobalServices.class); - clusteredDSManager.setClusterGlobalServices(globalServices); - clusteredDSManager.start(); - DataCommitTransaction dataCommitTransaction = mock(DataCommitTransaction.class); - - when(clusteredDSImpl.requestCommit(any(DataModification.class))).thenReturn(dataCommitTransaction); - assertEquals(dataCommitTransaction, clusteredDSManager.requestCommit(any(DataModification.class))); - } -} diff --git a/opendaylight/md-sal/clustered-data-store/integrationtest/pom.xml b/opendaylight/md-sal/clustered-data-store/integrationtest/pom.xml deleted file mode 100644 index 2d68b47869..0000000000 --- a/opendaylight/md-sal/clustered-data-store/integrationtest/pom.xml +++ /dev/null @@ -1,358 +0,0 @@ - - - 4.0.0 - - org.opendaylight.controller - commons.integrationtest - 0.5.1-SNAPSHOT - ../../../commons/integrationtest - - - scm:git:ssh://git.opendaylight.org:29418/controller.git - scm:git:ssh://git.opendaylight.org:29418/controller.git - https://wiki.opendaylight.org/view/OpenDaylight_Controller:Main - - - clustered-datastore.integrationtest - 0.4.0-SNAPSHOT - - - - - xml-apis - xml-apis - 1.4.01 - - - - - - - com.google.guava - guava - - - org.opendaylight.controller - sal-binding-it - 1.0-SNAPSHOT - - - org.opendaylight.controller - sal-common-api - 1.0-SNAPSHOT - - - org.opendaylight.controller - sal-common-util - 1.0-SNAPSHOT - - - org.opendaylight.controller - sal-common-impl - 1.0-SNAPSHOT - - - org.opendaylight.controller - sal-binding-broker-impl - 1.0-SNAPSHOT - - - xml-apis - xml-apis - - - reflections - org.reflections - - - - - org.opendaylight.controller - sal - 0.7.0-SNAPSHOT - - - org.opendaylight.controller - clustering.services - 0.5.0-SNAPSHOT - - - org.opendaylight.yangtools - yang-binding - - - org.opendaylight.yangtools.thirdparty - antlr4-runtime-osgi-nohead - 4.0 - - - org.opendaylight.controller - protocol_plugins.stub - 0.4.1-SNAPSHOT - - - org.opendaylight.controller - sal.implementation - 0.4.1-SNAPSHOT - - - org.opendaylight.controller - containermanager - 0.5.1-SNAPSHOT - - - org.opendaylight.controller - containermanager.it.implementation - 0.5.1-SNAPSHOT - - - org.opendaylight.controller - clustering.stub - 0.4.1-SNAPSHOT - - - org.opendaylight.controller - clustered-datastore-implementation - 0.4.1-SNAPSHOT - - - org.opendaylight.yangtools.thirdparty - xtend-lib-osgi - 2.4.3 - test - - - org.opendaylight.controller - sal-binding-broker-impl - 1.0-SNAPSHOT - provided - - - org.ops4j.pax.exam - pax-exam-container-native - ${exam.version} - test - - - org.ops4j.pax.exam - pax-exam-junit4 - ${exam.version} - test - - - org.opendaylight.controller - config-netconf-connector - ${netconf.version} - test - - - xml-apis - xml-apis - - - - - org.opendaylight.controller - logback-config - - - org.opendaylight.controller - config-persister-impl - - - org.opendaylight.controller - config-persister-file-xml-adapter - - - org.opendaylight.controller - netconf-impl - ${netconf.version} - - - org.opendaylight.controller - netconf-client - ${netconf.version} - - - org.opendaylight.controller - sal-common - 1.0-SNAPSHOT - - - org.opendaylight.yangtools - yang-common - - - org.opendaylight.yangtools - concepts - - - org.opendaylight.yangtools - yang-data-api - - - org.mockito - mockito-all - 1.9.5 - test - - - org.opendaylight.controller - config-manager - 0.2.3-SNAPSHOT - - - org.opendaylight.controller.model - model-flow-management - 1.0-SNAPSHOT - provided - - - org.opendaylight.yangtools.thirdparty - antlr4-runtime-osgi-nohead - 4.0 - - - org.opendaylight.yangtools.thirdparty - xtend-lib-osgi - 2.4.3 - test - - - org.opendaylight.controller - sal-binding-broker-impl - 1.0-SNAPSHOT - provided - - - org.ops4j.pax.exam - pax-exam-container-native - ${exam.version} - test - - - org.ops4j.pax.exam - pax-exam-junit4 - ${exam.version} - test - - - org.opendaylight.controller - config-netconf-connector - ${netconf.version} - test - - - - org.opendaylight.yangtools - yang-parser-impl - ${yangtools.version} - - - org.opendaylight.yangtools - yang-model-util - ${yangtools.version} - - - - org.opendaylight.controller - logback-config - - - org.opendaylight.controller - config-persister-impl - - - org.opendaylight.controller - netconf-impl - ${netconf.version} - - - org.opendaylight.controller - netconf-client - ${netconf.version} - - - org.ops4j.pax.exam - pax-exam-link-mvn - ${exam.version} - test - - - equinoxSDK381 - org.eclipse.osgi - 3.8.1.v20120830-144521 - test - - - org.slf4j - log4j-over-slf4j - 1.7.2 - - - ch.qos.logback - logback-core - 1.0.9 - - - ch.qos.logback - logback-classic - 1.0.9 - - - org.opendaylight.controller.model - model-flow-service - 1.0-SNAPSHOT - provided - - - org.opendaylight.controller - config-manager - 0.2.3-SNAPSHOT - - - org.opendaylight.controller.model - model-flow-management - 1.0-SNAPSHOT - provided - - - org.opendaylight.yangtools.thirdparty - antlr4-runtime-osgi-nohead - 4.0 - - - - - ../implementation/target/jacoco.exec - ../implementaiton/target/jacoco-it.exec - - - - - org.jacoco - jacoco-maven-plugin - - ../implementation/target/jacoco-it.exec - org.opendaylight.controller.* - - - - pre-test - - prepare-agent - - - - post-test - - true - - - - - - - diff --git a/opendaylight/md-sal/clustered-data-store/integrationtest/src/test/java/org/opendaylight/controller/datastore/ClusteredDataStoreIT.java b/opendaylight/md-sal/clustered-data-store/integrationtest/src/test/java/org/opendaylight/controller/datastore/ClusteredDataStoreIT.java deleted file mode 100644 index a1fa9e31b8..0000000000 --- a/opendaylight/md-sal/clustered-data-store/integrationtest/src/test/java/org/opendaylight/controller/datastore/ClusteredDataStoreIT.java +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. - * - * This program and the accompanying materials are made available under the - * terms of the Eclipse Public License v1.0 which accompanies this distribution, - * and is available at http://www.eclipse.org/legal/epl-v10.html - */ - -package org.opendaylight.controller.datastore; - -import static junit.framework.Assert.assertNotNull; -import static junit.framework.Assert.assertNull; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.when; -import static org.ops4j.pax.exam.CoreOptions.junitBundles; -import static org.ops4j.pax.exam.CoreOptions.mavenBundle; -import static org.ops4j.pax.exam.CoreOptions.options; -import static org.ops4j.pax.exam.CoreOptions.systemPackages; -import static org.ops4j.pax.exam.CoreOptions.systemProperty; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.inject.Inject; - -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler.DataCommitTransaction; -import org.opendaylight.controller.md.sal.common.api.data.DataModification; -import org.opendaylight.controller.test.sal.binding.it.TestHelper; -import org.opendaylight.yangtools.yang.data.api.CompositeNode; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; -import org.ops4j.pax.exam.Configuration; -import org.ops4j.pax.exam.Option; -import org.ops4j.pax.exam.junit.PaxExam; -import org.ops4j.pax.exam.util.Filter; -import org.ops4j.pax.exam.util.PathUtils; -import org.osgi.framework.Bundle; -import org.osgi.framework.BundleContext; -import org.osgi.framework.ServiceReference; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -@RunWith(PaxExam.class) -//@ExamReactorStrategy(PerClass.class) -public class ClusteredDataStoreIT { - private Logger log = LoggerFactory.getLogger(ClusteredDataStoreIT.class); - // get the OSGI bundle context - @Inject - private BundleContext bc; - @Inject - @Filter(timeout=60*1000) - private ClusteredDataStore clusteredDS; - - // Configure the OSGi container - @Configuration - public Option[] config() { - return options( - // - systemProperty("logback.configurationFile").value( - "file:" + PathUtils.getBaseDir() + "/src/test/resources/logback.xml"), - // To start OSGi console for inspection remotely - systemProperty("osgi.console").value("2401"), - // Set the systemPackages (used by clustering) - systemPackages("sun.reflect", "sun.reflect.misc", "sun.misc"), - systemProperty("org.ops4j.pax.logging.DefaultServiceLog.level").value("DEBUG"), - // List framework bundles - mavenBundle("equinoxSDK381", "org.eclipse.equinox.console").versionAsInProject(), - mavenBundle("equinoxSDK381", "org.eclipse.equinox.util").versionAsInProject(), - mavenBundle("equinoxSDK381", "org.eclipse.osgi.services").versionAsInProject(), - mavenBundle("equinoxSDK381", "org.eclipse.equinox.ds").versionAsInProject(), - mavenBundle("equinoxSDK381", "org.apache.felix.gogo.command").versionAsInProject(), - mavenBundle("equinoxSDK381", "org.apache.felix.gogo.runtime").versionAsInProject(), - mavenBundle("equinoxSDK381", "org.apache.felix.gogo.shell").versionAsInProject(), - // List logger bundles - mavenBundle("org.slf4j", "slf4j-api").versionAsInProject(), - mavenBundle("org.slf4j", "log4j-over-slf4j").versionAsInProject(), - mavenBundle("ch.qos.logback", "logback-core").versionAsInProject(), - mavenBundle("ch.qos.logback", "logback-classic").versionAsInProject(), - // needed by statisticsmanager - mavenBundle("org.opendaylight.controller", "containermanager").versionAsInProject(), - mavenBundle("org.opendaylight.controller", "containermanager.it.implementation").versionAsInProject(), - mavenBundle("org.opendaylight.controller", "clustering.services").versionAsInProject(), - mavenBundle("org.opendaylight.controller", "clustering.stub").versionAsInProject(), - - // List all the bundles on which the test case depends - mavenBundle("org.opendaylight.controller", "sal").versionAsInProject(), - TestHelper.baseModelBundles(), - TestHelper.configMinumumBundles(), - TestHelper.bindingIndependentSalBundles(), - TestHelper.bindingAwareSalBundles(), - TestHelper.mdSalCoreBundles(), - mavenBundle("org.opendaylight.controller", "config-api").versionAsInProject(), - mavenBundle("org.opendaylight.controller", "sal.implementation").versionAsInProject(), - mavenBundle("org.opendaylight.controller", "protocol_plugins.stub").versionAsInProject(), - - mavenBundle("org.osgi", "org.osgi.core").versionAsInProject(), - // adding new maven bundles - mavenBundle("org.mockito", "mockito-all").versionAsInProject(), - - // needed by hosttracker - mavenBundle("org.opendaylight.controller", "clustered-datastore-implementation").versionAsInProject(), - mavenBundle("org.jboss.spec.javax.transaction", "jboss-transaction-api_1.1_spec").versionAsInProject(), - mavenBundle("org.apache.commons", "commons-lang3").versionAsInProject(), - mavenBundle("org.apache.felix", "org.apache.felix.dependencymanager").versionAsInProject(), - junitBundles()); - } - - private String stateToString(int state) { - switch (state) { - case Bundle.ACTIVE: - return "ACTIVE"; - case Bundle.INSTALLED: - return "INSTALLED"; - case Bundle.RESOLVED: - return "RESOLVED"; - case Bundle.UNINSTALLED: - return "UNINSTALLED"; - default: - return "Not CONVERTED"; - } - } - - @Test - public void testBundleContextClusteredDS_NotNull() throws Exception { - ServiceReference serviceReference = bc.getServiceReference(ClusteredDataStore.class); - ClusteredDataStore store = ClusteredDataStore.class.cast(bc.getService(serviceReference)); - assertNotNull(store); - } - - @Test - public void testInjected_ClusteredDS_NotNull() { - assertNotNull(clusteredDS); - } - - @Test - public void requestCommit_readConfigurationData_ShouldVerifyDataAndNoException() { - DataModification dataModification = mock(DataModification.class); - HashMap map = new HashMap(); - List list = new ArrayList(); - list.add("key"); - InstanceIdentifier key = new InstanceIdentifier(list); - map.put(key, mock(CompositeNode.class)); - when(dataModification.getUpdatedConfigurationData()).thenReturn(map); - DataCommitTransaction dataCommitTrans = clusteredDS.requestCommit(dataModification); - dataCommitTrans.finish(); - Object value = clusteredDS.readConfigurationData(key); - Assert.assertNotNull(value); - } - - @Test(expected = NullPointerException.class) - public void requestCommit_ShouldThrowException() { - DataModification dataModification = null; - DataCommitTransaction dataCommitTrans = clusteredDS.requestCommit(dataModification); - dataCommitTrans.finish(); - } - - @Test - public void requestCommit_readOperationalData_ShouldVerifyDataAndNoException() { - DataModification dataModification = mock(DataModification.class); - HashMap map = new HashMap(); - List list = new ArrayList(); - list.add("key"); - InstanceIdentifier key = new InstanceIdentifier(list); - map.put(key, mock(CompositeNode.class)); - when(dataModification.getUpdatedOperationalData()).thenReturn(map); - DataCommitTransaction dataCommitTrans = clusteredDS.requestCommit(dataModification); - dataCommitTrans.finish(); - Object value = clusteredDS.readOperationalData(key); - Assert.assertNotNull(value); - } - - @Test - public void requestCommit_readConfigurationData_NonExistingKey_ShouldVerifyNoMappedValueAndNoException() { - DataModification dataModification = mock(DataModification.class); - HashMap map = new HashMap(); - List list = new ArrayList(); - list.add("key"); - InstanceIdentifier key = new InstanceIdentifier(list); - map.put(key, "value"); - when(dataModification.getUpdatedConfigurationData()).thenReturn(map); - DataCommitTransaction dataCommitTrans = clusteredDS.requestCommit(dataModification); - dataCommitTrans.finish(); - list = new ArrayList(); - list.add("key1"); - InstanceIdentifier key1 = new InstanceIdentifier(list); - - Object value = clusteredDS.readConfigurationData(key1); - assertNull(value); - } - - @Test - public void requestCommit_readOperationalData_NonExistingKey_ShouldVerifyNoMappedValueAndNoException() { - DataModification dataModification = mock(DataModification.class); - HashMap map = new HashMap(); - List list = new ArrayList(); - list.add("key"); - InstanceIdentifier key = new InstanceIdentifier(list); - map.put(key, mock(CompositeNode.class)); - when(dataModification.getUpdatedOperationalData()).thenReturn(map); - DataCommitTransaction dataCommitTrans = clusteredDS.requestCommit(dataModification); - dataCommitTrans.finish(); - list = new ArrayList(); - list.add("key1"); - InstanceIdentifier key1 = new InstanceIdentifier(list); - - Object value = clusteredDS.readOperationalData(key1); - assertNull(value); - } - - @Test(expected = NullPointerException.class) - public void requestCommit_readConfigurationData_WithNullPathShouldThrowException() { - DataModification dataModification = mock(DataModification.class); - HashMap map = new HashMap(); - List list = new ArrayList(); - list.add("key"); - InstanceIdentifier key = new InstanceIdentifier(list); - map.put(key, "value"); - when(dataModification.getUpdatedConfigurationData()).thenReturn(map); - DataCommitTransaction dataCommitTrans = clusteredDS.requestCommit(dataModification); - dataCommitTrans.finish(); - Object value = clusteredDS.readConfigurationData(null); - } - - @Test(expected = NullPointerException.class) - public void requestCommit_readOperationalData_WithNullPathShouldThrowException() { - DataModification dataModification = mock(DataModification.class); - HashMap map = new HashMap(); - List list = new ArrayList(); - list.add("key"); - InstanceIdentifier key = new InstanceIdentifier(list); - map.put(key, "value"); - when(dataModification.getOriginalOperationalData()).thenReturn(map); - DataCommitTransaction dataCommitTrans = clusteredDS.requestCommit(dataModification); - dataCommitTrans.finish(); - Object value = clusteredDS.readOperationalData(null); - } - -} diff --git a/opendaylight/md-sal/clustered-data-store/integrationtest/src/test/resources/controller.xml b/opendaylight/md-sal/clustered-data-store/integrationtest/src/test/resources/controller.xml deleted file mode 100644 index 5f43ddc16d..0000000000 --- a/opendaylight/md-sal/clustered-data-store/integrationtest/src/test/resources/controller.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom:cluster:store?module=odl-sal-dom-clustered-store-cfg&revision=2013-10-28 - - - - - - - - - prefix:dom-clustered-store-impl - - cluster-data-store - - - - - - - - - - - - diff --git a/opendaylight/md-sal/clustered-data-store/integrationtest/src/test/resources/logback.xml b/opendaylight/md-sal/clustered-data-store/integrationtest/src/test/resources/logback.xml deleted file mode 100644 index 5246f01d05..0000000000 --- a/opendaylight/md-sal/clustered-data-store/integrationtest/src/test/resources/logback.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - diff --git a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/NodeMapping.java b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/NodeMapping.java index c4c1ee9351..9276238e01 100644 --- a/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/NodeMapping.java +++ b/opendaylight/md-sal/compatibility/sal-compatibility/src/main/java/org/opendaylight/controller/sal/compatibility/NodeMapping.java @@ -54,10 +54,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.No import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; -import org.opendaylight.yangtools.yang.binding.Identifier; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem; -import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument; import com.google.common.base.Objects; import com.google.common.base.Preconditions; @@ -83,32 +80,20 @@ public final class NodeMapping { return new org.opendaylight.controller.sal.core.Node(NodeMapping.MD_SAL_TYPE, aDNodeId); } - public static NodeId toNodeId(final InstanceIdentifier node) { - Preconditions.>checkNotNull(node); - List path = node.getPath(); - Preconditions.>checkNotNull(path); - int size = path.size(); - Preconditions.checkArgument(size >= 2); - final PathArgument arg = path.get(1); - final IdentifiableItem item = Arguments.checkInstanceOf(arg, IdentifiableItem.class); - Identifier key = item.getKey(); - final NodeKey nodeKey = Arguments.checkInstanceOf(key, NodeKey.class); - return nodeKey.getId(); + public static NodeId toNodeId(final InstanceIdentifier id) { + final NodeKey key = id.firstKeyOf(Node.class, NodeKey.class); + Preconditions.checkArgument(key != null, "No node identifier found in %s", id); + return key.getId(); } public static String toADNodeId(final NodeId nodeId) { - Preconditions.checkNotNull(nodeId); return nodeId.getValue(); } public static org.opendaylight.controller.sal.core.NodeConnector toADNodeConnector(final NodeConnectorRef source) throws ConstructionException { - Preconditions.checkNotNull(source); - final InstanceIdentifier path = Preconditions.>checkNotNull(source.getValue()); - Preconditions.checkArgument(path.getPath().size() >= 3); - final PathArgument arg = path.getPath().get(2); - final IdentifiableItem item = Arguments.checkInstanceOf(arg,IdentifiableItem.class); - final NodeConnectorKey connectorKey = Arguments.checkInstanceOf(item.getKey(), NodeConnectorKey.class); - return NodeMapping.toADNodeConnector(connectorKey.getId(), NodeMapping.toNodeId(path)); + final InstanceIdentifier id = Preconditions.checkNotNull(source.getValue()); + final NodeConnectorKey key = id.firstKeyOf(NodeConnector.class, NodeConnectorKey.class); + return NodeMapping.toADNodeConnector(key.getId(), NodeMapping.toNodeId(id)); } public static org.opendaylight.controller.sal.core.NodeConnector toADNodeConnector(final NodeConnectorId ncid, final NodeId nid) throws ConstructionException { @@ -161,6 +146,7 @@ public final class NodeMapping { public static NodeConnectorRef toNodeConnectorRef(final org.opendaylight.controller.sal.core.NodeConnector nodeConnector) { final NodeRef node = NodeMapping.toNodeRef(nodeConnector.getNode()); + @SuppressWarnings("unchecked") final InstanceIdentifier nodePath = ((InstanceIdentifier) node.getValue()); NodeConnectorId nodeConnectorId = null; diff --git a/opendaylight/md-sal/pom.xml b/opendaylight/md-sal/pom.xml index a13d2bb06f..644e904e23 100644 --- a/opendaylight/md-sal/pom.xml +++ b/opendaylight/md-sal/pom.xml @@ -57,8 +57,6 @@ remoterpc-routingtable/implementation sal-remoterpc-connector/implementation - sal-rest-docgen diff --git a/opendaylight/md-sal/sal-common-util/src/main/java/org/opendaylight/controller/sal/common/util/Arguments.java b/opendaylight/md-sal/sal-common-util/src/main/java/org/opendaylight/controller/sal/common/util/Arguments.java index 902665d1a6..a4017c23a8 100644 --- a/opendaylight/md-sal/sal-common-util/src/main/java/org/opendaylight/controller/sal/common/util/Arguments.java +++ b/opendaylight/md-sal/sal-common-util/src/main/java/org/opendaylight/controller/sal/common/util/Arguments.java @@ -7,16 +7,16 @@ */ package org.opendaylight.controller.sal.common.util; -public class Arguments { +public final class Arguments { private Arguments() { throw new UnsupportedOperationException("Utility class"); } - + /** * Checks if value is instance of provided class - * - * + * + * * @param value Value to check * @param type Type to check * @return Reference which was checked @@ -24,7 +24,7 @@ public class Arguments { @SuppressWarnings("unchecked") public static T checkInstanceOf(Object value, Class type) { if(!type.isInstance(value)) - throw new IllegalArgumentException(); + throw new IllegalArgumentException(String.format("Value %s is not of type %s", value, type)); return (T) value; } } diff --git a/opendaylight/md-sal/sal-data-api/pom.xml b/opendaylight/md-sal/sal-data-api/pom.xml deleted file mode 100644 index 6b73e29e7d..0000000000 --- a/opendaylight/md-sal/sal-data-api/pom.xml +++ /dev/null @@ -1,15 +0,0 @@ - - 4.0.0 - - org.opendaylight.controller - sal-parent - 1.0-SNAPSHOT - - sal-data-api - - scm:git:ssh://git.opendaylight.org:29418/controller.git - scm:git:ssh://git.opendaylight.org:29418/controller.git - https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL - - - diff --git a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/inventory/InventoryService.java b/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/inventory/InventoryService.java index a12f394e66..1ec65e8f81 100644 --- a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/inventory/InventoryService.java +++ b/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/inventory/InventoryService.java @@ -21,7 +21,11 @@ import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology. import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Link; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; -import java.util.*; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Set; /** * InventoryService provides functions related to Nodes & NodeConnectors. diff --git a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/packet/PacketHandler.java b/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/packet/PacketHandler.java index ecf116b171..b4ea94242c 100644 --- a/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/packet/PacketHandler.java +++ b/opendaylight/md-sal/samples/l2switch/implementation/src/main/java/org/opendaylight/controller/sample/l2switch/md/packet/PacketHandler.java @@ -19,7 +19,8 @@ import org.opendaylight.controller.sal.packet.RawPacket; import org.opendaylight.controller.sal.utils.HexEncode; import org.opendaylight.controller.sal.utils.NetUtils; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress; -import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.*; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef; +import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.address.tracker.rev140402.l2.addresses.L2Address;