Author: brock
Date: Tue Dec 23 16:02:47 2014
New Revision: 1647603

URL: http://svn.apache.org/r1647603
Log:
HIVE-8773 - Fix TestWebHCatE2e#getStatus for Java8 (Mohit Sabharwal via Brock)

Modified:
    
hive/trunk/hcatalog/webhcat/svr/src/test/java/org/apache/hive/hcatalog/templeton/TestWebHCatE2e.java

Modified: 
hive/trunk/hcatalog/webhcat/svr/src/test/java/org/apache/hive/hcatalog/templeton/TestWebHCatE2e.java
URL: 
http://svn.apache.org/viewvc/hive/trunk/hcatalog/webhcat/svr/src/test/java/org/apache/hive/hcatalog/templeton/TestWebHCatE2e.java?rev=1647603&r1=1647602&r2=1647603&view=diff
==============================================================================
--- 
hive/trunk/hcatalog/webhcat/svr/src/test/java/org/apache/hive/hcatalog/templeton/TestWebHCatE2e.java
 (original)
+++ 
hive/trunk/hcatalog/webhcat/svr/src/test/java/org/apache/hive/hcatalog/templeton/TestWebHCatE2e.java
 Tue Dec 23 16:02:47 2014
@@ -18,7 +18,6 @@
  */
 package org.apache.hive.hcatalog.templeton;
 
-import junit.framework.Assert;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.HttpMethod;
 import org.apache.commons.httpclient.NameValuePair;
@@ -28,6 +27,8 @@ import org.apache.commons.httpclient.met
 import org.apache.commons.httpclient.methods.StringRequestEntity;
 import org.apache.hadoop.hive.metastore.MetaStoreUtils;
 import org.apache.hadoop.hive.ql.ErrorMsg;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.type.TypeReference;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.Ignore;
@@ -35,11 +36,14 @@ import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.eclipse.jetty.http.HttpStatus;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.TreeMap;
+import junit.framework.Assert;
 
 /**
  * A set of tests exercising e2e WebHCat DDL APIs.  These tests are somewhat
@@ -64,6 +68,7 @@ public class TestWebHCatE2e {
   private static final String ERROR_CODE = "errorCode";
   private static Main templetonServer;
   private static final String charSet = "UTF-8";
+
   @BeforeClass
   public static void startHebHcatInMem() {
     int webhcatPort = 50111;
@@ -81,6 +86,7 @@ public class TestWebHCatE2e {
     templetonServer.run();
     LOG.info("Main started");
   }
+
   @AfterClass
   public static void stopWebHcatInMem() {
     if(templetonServer != null) {
@@ -89,14 +95,33 @@ public class TestWebHCatE2e {
       LOG.info("Main stopped");
     }
   }
+
+  private static Map<String, String> jsonStringToSortedMap(String jsonStr) {
+    Map<String, String> sortedMap;
+    try {
+      sortedMap = (new ObjectMapper()).readValue(jsonStr,
+          new TypeReference<TreeMap<String, String>>() {});
+    } catch (Exception ex) {
+      throw new RuntimeException(
+          "Exception converting json string to sorted map " + ex, ex);
+    }
+
+    return sortedMap;
+  }
+
   @Test
   public void getStatus() throws IOException {
     LOG.debug("+getStatus()");
     MethodCallRetVal p = doHttpCall(templetonBaseUrl + "/status", 
HTTP_METHOD_TYPE.GET);
     Assert.assertEquals(p.getAssertMsg(), HttpStatus.OK_200, p.httpStatusCode);
-    Assert.assertEquals(p.getAssertMsg(), 
"{\"status\":\"ok\",\"version\":\"v1\"}", p.responseBody);
+    // Must be deterministic order map for comparison across Java versions
+    Assert.assertTrue(p.getAssertMsg(),
+        jsonStringToSortedMap("{\"status\":\"ok\",\"version\":\"v1\"}").equals(
+            jsonStringToSortedMap(p.responseBody)));
+
     LOG.debug("-getStatus()");
   }
+
   @Ignore("not ready due to HIVE-4824")
   @Test
   public void listDataBases() throws IOException {
@@ -106,6 +131,7 @@ public class TestWebHCatE2e {
     Assert.assertEquals(p.getAssertMsg(), "{\"databases\":[\"default\"]}", 
p.responseBody);
     LOG.debug("-listDataBases()");
   }
+
   /**
    * Check that we return correct status code when the URL doesn't map to any 
method
    * in {@link Server}
@@ -118,6 +144,7 @@ public class TestWebHCatE2e {
   /**
    * tries to drop table in a DB that doesn't exist
    */
+
   @Ignore("not ready due to HIVE-4824")
   @Test
   public void dropTableNoSuchDB() throws IOException {
@@ -128,6 +155,7 @@ public class TestWebHCatE2e {
       ErrorMsg.DATABASE_NOT_EXISTS.getErrorCode(),
       getErrorCode(p.responseBody));
   }
+
   /**
    * tries to drop table in a DB that doesn't exist
    */
@@ -140,6 +168,7 @@ public class TestWebHCatE2e {
     Assert.assertEquals(p.getAssertMsg(), HttpStatus.NOT_FOUND_404, 
p.httpStatusCode);
     Assert.assertEquals(p.getAssertMsg(), 
ErrorMsg.DATABASE_NOT_EXISTS.getErrorCode(), getErrorCode(p.responseBody));
   }
+
   /**
    * tries to drop table that doesn't exist (with ifExists=true)
   */
@@ -151,6 +180,7 @@ public class TestWebHCatE2e {
       {new NameValuePair("ifExists", "true")});
     Assert.assertEquals(p.getAssertMsg(), HttpStatus.OK_200, p.httpStatusCode);
   }
+
   @Ignore("not ready due to HIVE-4824")
   @Test
   public void createDataBase() throws IOException {
@@ -164,6 +194,7 @@ public class TestWebHCatE2e {
     MethodCallRetVal p = doHttpCall(templetonBaseUrl + "/ddl/database/newdb", 
HTTP_METHOD_TYPE.PUT, props, null);
     Assert.assertEquals(p.getAssertMsg(), HttpStatus.OK_200, p.httpStatusCode);
   }
+
   @Ignore("not ready due to HIVE-4824")
   @Test
   public void createTable() throws IOException {
@@ -186,6 +217,7 @@ public class TestWebHCatE2e {
     MethodCallRetVal descTbl = doHttpCall(templetonBaseUrl + 
"/ddl/database/default/table/test_table", HTTP_METHOD_TYPE.GET);
     Assert.assertEquals(descTbl.getAssertMsg(), HttpStatus.OK_200, 
descTbl.httpStatusCode);
   }
+
   @Ignore("not ready due to HIVE-4824")
   @Test
   public void describeNoSuchTable() throws IOException {
@@ -245,6 +277,7 @@ public class TestWebHCatE2e {
     }
     return hiveRetCode;
   }
+
   /**
    * Encapsulates information from HTTP method call
    */
@@ -263,10 +296,12 @@ public class TestWebHCatE2e {
       return methodName + " " + submittedURL + " " + responseBody;
     }
   }
+
   private static enum HTTP_METHOD_TYPE {GET, POST, DELETE, PUT}
   private static MethodCallRetVal doHttpCall(String uri, HTTP_METHOD_TYPE 
type) throws IOException {
     return doHttpCall(uri, type, null, null);
   }
+
   /**
    * Does a basic HTTP GET and returns Http Status code + response body
    * Will add the dummy user query string
@@ -321,4 +356,4 @@ public class TestWebHCatE2e {
     }
     return new MethodCallRetVal(-1, "Http " + type + " failed; see log file 
for details", actualUri, method.getName());
   }
-}
+}
\ No newline at end of file


Reply via email to