@Test
  public void testUpperCaseKey() throws Exception {
    Configuration conf = new Configuration();
    Properties props = new Properties();

    props.put(serdeConstants.LIST_COLUMNS, "empid,name");
    props.put(serdeConstants.LIST_COLUMN_TYPES, "int,string");
    JsonSerDe rjsd = new JsonSerDe();
    rjsd.initialize(conf, props, null);

    Text text1 = new Text("{ \"empId\" : 123, \"name\" : \"John\" } ");
    Text text2 = new Text("{ \"empId\" : 456, \"name\" : \"Jane\" } ");

    HCatRecord expected1 = new DefaultHCatRecord(Arrays.<Object>asList(123, "John"));
    HCatRecord expected2 = new DefaultHCatRecord(Arrays.<Object>asList(456, "Jane"));

    assertTrue(HCatDataCheckUtil.recordsEqual((HCatRecord)rjsd.deserialize(text1), expected1));
    assertTrue(HCatDataCheckUtil.recordsEqual((HCatRecord)rjsd.deserialize(text2), expected2));

  }
This test tests that our json deserialization is not too strict, as per HIVE-6166

i.e, if our schema is "s:struct<a:int,b:string>,k:int", and we pass in
data that looks like : {
                           "x" : "abc" ,
                           "t" : {
                               "a" : "1",
                               "b" : "2",
                               "c" : [
                                   { "x" : 2 , "y" : 3 } ,
                                   { "x" : 3 , "y" : 2 }
                               ]
                           } ,
                           "s" : {
                               "a" : 2 ,
                               "b" : "blah",
                               "c": "woo"
                           }
                       }

Then it should still work, and ignore the "x" and "t" field and "c" subfield of "s", and it
should read k as null.
hcatalog/core/src/test/java/org/apache/hive/hcatalog/data/TestJsonSerDe.java