abdullah alamoudi has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/797

Change subject: Remove Installed Libraries before Unit Tests
......................................................................

Remove Installed Libraries before Unit Tests

Change-Id: I9dea8c8fc46a717acd0b86ac7b07e0276bb5e95c
---
M 
asterixdb/asterix-app/src/main/java/org/apache/asterix/app/external/FeedWorkCollection.java
M 
asterixdb/asterix-app/src/test/java/org/apache/asterix/app/external/TestLibrarian.java
M 
asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/ExecutionTest.java
M 
asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/ITestLibrarian.java
M 
asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalLibraryManager.java
M 
asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/ClassAdParser.java
6 files changed, 45 insertions(+), 6 deletions(-)


  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/97/797/1

diff --git 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/external/FeedWorkCollection.java
 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/external/FeedWorkCollection.java
index 53b9792..b5c59e6 100644
--- 
a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/external/FeedWorkCollection.java
+++ 
b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/external/FeedWorkCollection.java
@@ -99,7 +99,7 @@
                     if (LOGGER.isLoggable(Level.SEVERE)) {
                         LOGGER.severe("Exception in executing " + request);
                     }
-                    throw new RuntimeException(e);
+                    e.printStackTrace();
                 }
             }
         }
diff --git 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/app/external/TestLibrarian.java
 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/app/external/TestLibrarian.java
index 4f8fa6f..3416a77 100644
--- 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/app/external/TestLibrarian.java
+++ 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/app/external/TestLibrarian.java
@@ -22,12 +22,15 @@
 import java.io.IOException;
 import java.rmi.RemoteException;
 import java.util.HashMap;
+import java.util.List;
 
 import org.apache.asterix.common.exceptions.ACIDException;
 import org.apache.asterix.common.exceptions.AsterixException;
 import org.apache.asterix.event.service.AsterixEventServiceUtil;
+import org.apache.asterix.external.library.ExternalLibraryManager;
 import org.apache.asterix.test.aql.ITestLibrarian;
 import org.apache.commons.io.FileUtils;
+import org.apache.hyracks.algebricks.common.utils.Pair;
 import org.apache.hyracks.api.exceptions.HyracksDataException;
 
 public class TestLibrarian implements ITestLibrarian {
@@ -64,6 +67,7 @@
     @Override
     public void uninstall(String dvName, String libName) throws 
RemoteException, AsterixException, ACIDException {
         ExternalLibraryUtils.uninstallLibrary(dvName, libName);
+        ExternalLibraryManager.deregisterLibraryClassLoader(dvName, libName);
     }
 
     public static void removeLibraryDir() throws IOException {
@@ -73,4 +77,12 @@
         }
         FileUtils.deleteQuietly(installLibDir);
     }
+
+    public static void cleanup() throws AsterixException, RemoteException, 
ACIDException {
+        List<Pair<String, String>> libs = 
ExternalLibraryManager.getAllLibraries();
+        for (Pair<String, String> dvAndLib : libs) {
+            ExternalLibraryUtils.uninstallLibrary(dvAndLib.first, 
dvAndLib.second);
+            
ExternalLibraryManager.deregisterLibraryClassLoader(dvAndLib.first, 
dvAndLib.second);
+        }
+    }
 }
diff --git 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/ExecutionTest.java
 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/ExecutionTest.java
index e372d31..dfb61c2 100644
--- 
a/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/ExecutionTest.java
+++ 
b/asterixdb/asterix-app/src/test/java/org/apache/asterix/test/runtime/ExecutionTest.java
@@ -102,6 +102,7 @@
 
     @Test
     public void test() throws Exception {
+        TestLibrarian.cleanup();
         testExecutor.executeTest(PATH_ACTUAL, tcCtx, null, false, 
ExecutionTestUtil.FailedGroup);
     }
 }
diff --git 
a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/ITestLibrarian.java
 
b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/ITestLibrarian.java
index bbbd14e..c3740b1 100644
--- 
a/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/ITestLibrarian.java
+++ 
b/asterixdb/asterix-common/src/test/java/org/apache/asterix/test/aql/ITestLibrarian.java
@@ -25,6 +25,7 @@
 import org.apache.asterix.common.exceptions.AsterixException;
 
 public interface ITestLibrarian {
+
     public void install(String dvName, String libName, String libPath) throws 
IOException, Exception;
 
     public void uninstall(String dvName, String libName) throws 
RemoteException, AsterixException, ACIDException;
diff --git 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalLibraryManager.java
 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalLibraryManager.java
index db85e2f..0283bf2 100755
--- 
a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalLibraryManager.java
+++ 
b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/library/ExternalLibraryManager.java
@@ -18,8 +18,13 @@
  */
 package org.apache.asterix.external.library;
 
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.Map.Entry;
+
+import org.apache.hyracks.algebricks.common.utils.Pair;
 
 public class ExternalLibraryManager {
 
@@ -34,17 +39,27 @@
     public static void registerLibraryClassLoader(String dataverseName, String 
libraryName, ClassLoader classLoader) {
         String key = getKey(dataverseName, libraryName);
         synchronized (libraryClassLoaders) {
-            if (libraryClassLoaders.get(dataverseName) != null) {
+            if (libraryClassLoaders.get(key) != null) {
                 throw new IllegalStateException("Library class loader already 
registered!");
             }
             libraryClassLoaders.put(key, classLoader);
         }
     }
 
+    public static List<Pair<String, String>> getAllLibraries() {
+        ArrayList<Pair<String, String>> libs = new ArrayList<>();
+        synchronized (libraryClassLoaders) {
+            for (Entry<String, ClassLoader> entry : 
libraryClassLoaders.entrySet()) {
+                libs.add(getDataverseAndLibararyName(entry.getKey()));;
+            }
+        }
+        return libs;
+    }
+
     public static void deregisterLibraryClassLoader(String dataverseName, 
String libraryName) {
         String key = getKey(dataverseName, libraryName);
         synchronized (libraryClassLoaders) {
-            if (libraryClassLoaders.get(dataverseName) != null) {
+            if (libraryClassLoaders.get(key) != null) {
                 libraryClassLoaders.remove(key);
             }
         }
@@ -52,13 +67,18 @@
 
     public static ClassLoader getLibraryClassLoader(String dataverseName, 
String libraryName) {
         String key = getKey(dataverseName, libraryName);
-        synchronized (libraryClassLoaders) {
-            return libraryClassLoaders.get(key);
-        }
+        return libraryClassLoaders.get(key);
     }
 
     private static String getKey(String dataverseName, String libraryName) {
         return dataverseName + "." + libraryName;
     }
 
+    private static Pair<String, String> getDataverseAndLibararyName(String 
key) {
+        int index = key.indexOf(".");
+        String dataverse = key.substring(0, index);
+        String library = key.substring(index + 1);
+        return new Pair<String, String>(dataverse, library);
+    }
+
 }
diff --git 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/ClassAdParser.java
 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/ClassAdParser.java
index 93b31ca..3c22241 100644
--- 
a/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/ClassAdParser.java
+++ 
b/asterixdb/asterix-external-data/src/test/java/org/apache/asterix/external/library/ClassAdParser.java
@@ -385,6 +385,11 @@
                 throw new HyracksDataException("Unknown Expression type 
detected: " + tree.getKind());
         }
 
+        if (fieldType != null) {
+            if (NonTaggedFormatUtil.isOptional(fieldType)) {
+                fieldType = ((AUnionType) fieldType).getNullableType();
+            }
+        }
         switch (val.getValueType()) {
             case ABSOLUTE_TIME_VALUE:
                 if (checkType(ATypeTag.DATETIME, fieldType)) {

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/797
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I9dea8c8fc46a717acd0b86ac7b07e0276bb5e95c
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: abdullah alamoudi <[email protected]>

Reply via email to