Added an adapter for PersistenceService to be used in unit tests

Change-Id: Ided127f848b97632b021ea1f1c88d912fe28492c
diff --git a/core/api/src/test/java/org/onosproject/store/persistence/PersistenceServiceAdapter.java b/core/api/src/test/java/org/onosproject/store/persistence/PersistenceServiceAdapter.java
new file mode 100644
index 0000000..3edfcc7
--- /dev/null
+++ b/core/api/src/test/java/org/onosproject/store/persistence/PersistenceServiceAdapter.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.store.persistence;
+
+import org.onosproject.persistence.PersistenceService;
+import org.onosproject.persistence.PersistentMapBuilder;
+import org.onosproject.persistence.PersistentSetBuilder;
+
+/**
+ * Adapter for PersistenceService.
+ */
+public class PersistenceServiceAdapter implements PersistenceService {
+
+    @Override
+    public <K, V> PersistentMapBuilder<K, V> persistentMapBuilder() {
+        return null;
+    }
+
+    @Override
+    public <E> PersistentSetBuilder<E> persistentSetBuilder() {
+        return null;
+    }
+}
diff --git a/core/api/src/test/java/org/onosproject/store/persistence/TestPersistenceService.java b/core/api/src/test/java/org/onosproject/store/persistence/TestPersistenceService.java
new file mode 100644
index 0000000..a6d9745
--- /dev/null
+++ b/core/api/src/test/java/org/onosproject/store/persistence/TestPersistenceService.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2015 Open Networking Laboratory
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.onosproject.store.persistence;
+
+import java.util.Map;
+
+import org.onosproject.persistence.PersistentMapBuilder;
+import org.onosproject.persistence.PersistentSetBuilder;
+import org.onosproject.store.service.Serializer;
+
+import com.google.common.collect.Maps;
+
+/**
+ * PersistenceService that produces in memory maps for use in unit testing.
+ */
+public class TestPersistenceService extends PersistenceServiceAdapter {
+    @Override
+    public <K, V> PersistentMapBuilder<K, V> persistentMapBuilder() {
+        return new TestPersistentMapBuilder<K, V>();
+    }
+
+    @Override
+    public <E> PersistentSetBuilder<E> persistentSetBuilder() {
+        throw new UnsupportedOperationException();
+    }
+
+    private static class TestPersistentMapBuilder<K, V> implements PersistentMapBuilder<K, V> {
+
+        @Override
+        public PersistentMapBuilder<K, V> withName(String name) {
+            return this;
+        }
+
+        @Override
+        public PersistentMapBuilder<K, V> withSerializer(Serializer serializer) {
+            return this;
+        }
+
+        @Override
+        public Map<K, V> build() {
+            return Maps.newConcurrentMap();
+        }
+    }
+}
diff --git a/core/store/dist/src/test/java/org/onosproject/store/ecmap/EventuallyConsistentMapImplTest.java b/core/store/dist/src/test/java/org/onosproject/store/ecmap/EventuallyConsistentMapImplTest.java
index ef8d992..b74aa37 100644
--- a/core/store/dist/src/test/java/org/onosproject/store/ecmap/EventuallyConsistentMapImplTest.java
+++ b/core/store/dist/src/test/java/org/onosproject/store/ecmap/EventuallyConsistentMapImplTest.java
@@ -42,12 +42,13 @@
 import org.onosproject.cluster.DefaultControllerNode;
 import org.onosproject.cluster.NodeId;
 import org.onosproject.event.AbstractEvent;
-import org.onosproject.persistence.impl.PersistenceManager;
+import org.onosproject.persistence.PersistenceService;
 import org.onosproject.store.Timestamp;
 import org.onosproject.store.cluster.messaging.ClusterCommunicationService;
 import org.onosproject.store.cluster.messaging.ClusterCommunicationServiceAdapter;
 import org.onosproject.store.cluster.messaging.MessageSubject;
 import org.onosproject.store.impl.LogicalTimestamp;
+import org.onosproject.store.persistence.TestPersistenceService;
 import org.onosproject.store.serializers.KryoNamespaces;
 import org.onosproject.store.serializers.KryoSerializer;
 import org.onosproject.store.service.EventuallyConsistentMap;
@@ -82,7 +83,7 @@
 
     private EventuallyConsistentMap<String, String> ecMap;
 
-    private PersistenceManager persistenceService;
+    private PersistenceService persistenceService;
     private ClusterService clusterService;
     private ClusterCommunicationService clusterCommunicator;
     private SequentialClockService<String, String> clockService;
@@ -138,8 +139,7 @@
 
         clusterCommunicator = createMock(ClusterCommunicationService.class);
 
-        persistenceService = new PersistenceManager();
-        persistenceService.activate();
+        persistenceService = new TestPersistenceService();
         // Add expectation for adding cluster message subscribers which
         // delegate to our ClusterCommunicationService implementation. This
         // allows us to get a reference to the map's internal cluster message
diff --git a/core/store/persistence/src/main/java/org/onosproject/persistence/impl/PersistenceManager.java b/core/store/persistence/src/main/java/org/onosproject/persistence/impl/PersistenceManager.java
index 3428bce..f1ae5f9 100644
--- a/core/store/persistence/src/main/java/org/onosproject/persistence/impl/PersistenceManager.java
+++ b/core/store/persistence/src/main/java/org/onosproject/persistence/impl/PersistenceManager.java
@@ -46,9 +46,8 @@
 @Service
 public class PersistenceManager implements PersistenceService {
 
-    private static final String DATABASE_PATH = "../data/localDB";
-
-    private static final String ENCLOSING_FOLDER = "../data";
+    private static final String DATABASE_PATH = System.getProperty("karaf.data", "./data/localDB");
+    private static final String ENCLOSING_FOLDER = System.getProperty("karaf.data", "./data");
 
     static final String MAP_PREFIX = "map:";