@Test
 public void testIssetTArray() {
   Assert.assertFalse(TempletonUtils.isset((Long[]) null));
   Assert.assertFalse(TempletonUtils.isset(new String[0]));
   String[] parts = new String("hello.world").split("\\.");
   Assert.assertTrue(TempletonUtils.isset(parts));
 }
 @Test
 public void testHadoopFsListAsString() {
   try {
     String tmpFileName1 = "/tmp/testHadoopFsListAsString1";
     String tmpFileName2 = "/tmp/testHadoopFsListAsString2";
     File tmpFile1 = new File(tmpFileName1);
     File tmpFile2 = new File(tmpFileName2);
     tmpFile1.createNewFile();
     tmpFile2.createNewFile();
     Assert.assertTrue(TempletonUtils.hadoopFsListAsString(null, null, null) == null);
     Assert.assertTrue(TempletonUtils.hadoopFsListAsString("/tmp,/usr", null, null) == null);
     Assert.assertEquals(
         "file:" + tmpFileName1 + ",file:" + tmpFileName2,
         TempletonUtils.hadoopFsListAsString(
             tmpFileName1 + "," + tmpFileName2, new Configuration(), null));
   } catch (FileNotFoundException e) {
     Assert.fail("Couldn't find name for " + tmpFile.toURI().toString());
   } catch (Exception e) {
     // Something else is wrong
     e.printStackTrace();
   }
   try {
     TempletonUtils.hadoopFsListAsString("/scoobydoo/teddybear,joe", new Configuration(), null);
     Assert.fail("Should not have found /scoobydoo/teddybear");
   } catch (FileNotFoundException e) {
     // Should go here.
   } catch (Exception e) {
     // Something else is wrong.
     e.printStackTrace();
   }
 }
 @Test
 public void testHadoopFsPath() {
   try {
     TempletonUtils.hadoopFsPath(null, null, null);
     TempletonUtils.hadoopFsPath(tmpFile.toURI().toString(), null, null);
     TempletonUtils.hadoopFsPath(tmpFile.toURI().toString(), new Configuration(), null);
   } catch (FileNotFoundException e) {
     Assert.fail("Couldn't find " + tmpFile.toURI().toString());
   } catch (Exception e) {
     // This is our problem -- it means the configuration was wrong.
     e.printStackTrace();
   }
   try {
     TempletonUtils.hadoopFsPath("/scoobydoo/teddybear", new Configuration(), null);
     Assert.fail("Should not have found /scoobydoo/teddybear");
   } catch (FileNotFoundException e) {
     // Should go here.
   } catch (Exception e) {
     // This is our problem -- it means the configuration was wrong.
     e.printStackTrace();
   }
   try {
     TempletonUtils.hadoopFsPath("a", new Configuration(), "teddybear");
     Assert.fail("Should not have found /user/teddybear/a");
   } catch (FileNotFoundException e) {
     Assert.assertTrue(e.getMessage().contains("/user/teddybear/a"));
   } catch (Exception e) {
     // This is our problem -- it means the configuration was wrong.
     e.printStackTrace();
     Assert.fail("Get wrong exception: " + e.getMessage());
   }
 }
  @Test
  public void testExtractPercentComplete() {
    Assert.assertNull(TempletonUtils.extractPercentComplete("fred"));
    for (String line : CONTROLLER_LINES) {
      Assert.assertNull(TempletonUtils.extractPercentComplete(line));
    }

    String fifty =
        "2011-12-15 18:12:36,333 [main] INFO  org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 50% complete";
    Assert.assertEquals("50% complete", TempletonUtils.extractPercentComplete(fifty));
  }
 @Test
 public void testDecodeArray() {
   Assert.assertTrue(TempletonUtils.encodeArray((String[]) null) == null);
   String[] tmp = new String[3];
   tmp[0] = "fred";
   tmp[1] = null;
   tmp[2] = "peter,lisa,, barney";
   String[] tmp2 = TempletonUtils.decodeArray(TempletonUtils.encodeArray(tmp));
   try {
     for (int i = 0; i < tmp.length; i++) {
       Assert.assertEquals((String) tmp[i], (String) tmp2[i]);
     }
   } catch (Exception e) {
     Assert.fail("Arrays were not equal" + e.getMessage());
   }
 }
 @Test
 public void testEncodeArray() {
   Assert.assertEquals(null, TempletonUtils.encodeArray((String[]) null));
   String[] tmp = new String[0];
   Assert.assertTrue(TempletonUtils.encodeArray(new String[0]).length() == 0);
   tmp = new String[3];
   tmp[0] = "fred";
   tmp[1] = null;
   tmp[2] = "peter,lisa,, barney";
   Assert.assertEquals(
       "fred,,peter"
           + StringUtils.ESCAPE_CHAR
           + ",lisa"
           + StringUtils.ESCAPE_CHAR
           + ","
           + StringUtils.ESCAPE_CHAR
           + ", barney",
       TempletonUtils.encodeArray(tmp));
 }
  @Test
  public void testConstructingUserHomeDirectory() throws Exception {
    String[] sources =
        new String[] {
          "output+",
          "/user/hadoop/output",
          "hdfs://container",
          "hdfs://container/",
          "hdfs://container/path",
          "output#link",
          "hdfs://cointaner/output#link",
          "hdfs://container@acc/test"
        };
    String[] expectedResults =
        new String[] {
          "/user/webhcat/output+",
          "/user/hadoop/output",
          "hdfs://container/user/webhcat",
          "hdfs://container/",
          "hdfs://container/path",
          "/user/webhcat/output#link",
          "hdfs://cointaner/output#link",
          "hdfs://container@acc/test"
        };
    for (int i = 0; i < sources.length; i++) {
      String source = sources[i];
      String expectedResult = expectedResults[i];
      String result = TempletonUtils.addUserHomeDirectoryIfApplicable(source, "webhcat");
      Assert.assertEquals(result, expectedResult);
    }

    String badUri = "c:\\some\\path";
    try {
      TempletonUtils.addUserHomeDirectoryIfApplicable(badUri, "webhcat");
      Assert.fail("addUserHomeDirectoryIfApplicable should fail for bad URI: " + badUri);
    } catch (URISyntaxException ex) {
    }
  }
 @Test
 public void testIssetString() {
   Assert.assertFalse(TempletonUtils.isset((String) null));
   Assert.assertFalse(TempletonUtils.isset(""));
   Assert.assertTrue(TempletonUtils.isset("hello"));
 }