ONOS-2091 Installing app when already installed will now raise an error

Change-Id: I4dacd63bf4a99244b23b932d35dd9cbd088548c1
diff --git a/core/store/trivial/src/test/java/org/onosproject/store/trivial/impl/SimpleApplicationStoreTest.java b/core/store/trivial/src/test/java/org/onosproject/store/trivial/impl/SimpleApplicationStoreTest.java
index a6fb24c..0e7a16e 100644
--- a/core/store/trivial/src/test/java/org/onosproject/store/trivial/impl/SimpleApplicationStoreTest.java
+++ b/core/store/trivial/src/test/java/org/onosproject/store/trivial/impl/SimpleApplicationStoreTest.java
@@ -19,6 +19,7 @@
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
+import org.onlab.util.Tools;
 import org.onosproject.app.ApplicationEvent;
 import org.onosproject.app.ApplicationStoreDelegate;
 import org.onosproject.common.app.ApplicationArchive;
@@ -28,6 +29,10 @@
 import org.onosproject.core.ApplicationIdStoreAdapter;
 import org.onosproject.core.DefaultApplicationId;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.Random;
+
 import static org.junit.Assert.assertEquals;
 import static org.onosproject.app.ApplicationEvent.Type.APP_INSTALLED;
 import static org.onosproject.app.ApplicationEvent.Type.APP_DEACTIVATED;
@@ -42,23 +47,33 @@
  */
 public class SimpleApplicationStoreTest {
 
-    private SimpleApplicationStore store = new SimpleApplicationStore();
+    static final String ROOT = "/tmp/app-junit/";
+    static final String STORE = ROOT + new Random().nextInt(1000) + "/foo";
+
+    private TestApplicationStore store = new TestApplicationStore();
     private TestDelegate delegate = new TestDelegate();
+    private static final Object LOCK = new Object();
 
     @Before
     public void setUp() {
         store.idStore = new TestIdStore();
+        store.setRootPath(STORE);
         store.setDelegate(delegate);
         store.activate();
     }
 
     @After
-    public void tearDown() {
+    public void tearDown() throws IOException {
+        if (new File(ROOT).exists()) {
+            Tools.removeDirectory(ROOT);
+        }
         store.deactivate();
     }
 
     private Application createTestApp() {
-        return store.create(ApplicationArchive.class.getResourceAsStream("app.zip"));
+        synchronized (LOCK) {
+            return store.create(ApplicationArchive.class.getResourceAsStream("app.zip"));
+        }
     }
 
     @Test
@@ -132,4 +147,11 @@
             this.event = event;
         }
     }
+
+    private class TestApplicationStore extends SimpleApplicationStore {
+        @Override
+        public void setRootPath(String root) {
+            super.setRootPath(root);
+        }
+    }
 }
\ No newline at end of file