예제 #1
0
  /** test main method. Import should print help and call System.exit */
  @Test
  public void testImportMain() throws Exception {
    PrintStream oldPrintStream = System.err;
    SecurityManager SECURITY_MANAGER = System.getSecurityManager();
    LauncherSecurityManager newSecurityManager = new LauncherSecurityManager();
    System.setSecurityManager(newSecurityManager);
    ByteArrayOutputStream data = new ByteArrayOutputStream();
    String[] args = {};
    System.setErr(new PrintStream(data));
    try {
      System.setErr(new PrintStream(data));

      try {
        RowCounter.main(args);
        fail("should be SecurityException");
      } catch (SecurityException e) {
        assertEquals(-1, newSecurityManager.getExitCode());
        assertTrue(data.toString().contains("Wrong number of parameters:"));
        assertTrue(
            data.toString()
                .contains(
                    "Usage: RowCounter [options] <tablename> "
                        + "[--starttime=[start] --endtime=[end] "
                        + "[--range=[startKey],[endKey]] "
                        + "[<column1> <column2>...]"));
        assertTrue(data.toString().contains("-Dhbase.client.scanner.caching=100"));
        assertTrue(data.toString().contains("-Dmapreduce.map.speculative=false"));
      }
      data.reset();
      try {
        args = new String[2];
        args[0] = "table";
        args[1] = "--range=1";
        RowCounter.main(args);
        fail("should be SecurityException");
      } catch (SecurityException e) {
        assertEquals(-1, newSecurityManager.getExitCode());
        assertTrue(
            data.toString()
                .contains(
                    "Please specify range in such format as \"--range=a,b\" or, with only one boundary,"
                        + " \"--range=,b\" or \"--range=a,\""));
        assertTrue(
            data.toString()
                .contains(
                    "Usage: RowCounter [options] <tablename> "
                        + "[--starttime=[start] --endtime=[end] "
                        + "[--range=[startKey],[endKey]] "
                        + "[<column1> <column2>...]"));
      }

    } finally {
      System.setErr(oldPrintStream);
      System.setSecurityManager(SECURITY_MANAGER);
    }
  }
예제 #2
0
 /** Test main method of CopyTable. */
 @Test
 public void testMainMethod() throws Exception {
   String[] emptyArgs = {"-h"};
   PrintStream oldWriter = System.err;
   ByteArrayOutputStream data = new ByteArrayOutputStream();
   PrintStream writer = new PrintStream(data);
   System.setErr(writer);
   SecurityManager SECURITY_MANAGER = System.getSecurityManager();
   LauncherSecurityManager newSecurityManager = new LauncherSecurityManager();
   System.setSecurityManager(newSecurityManager);
   try {
     CopyTable.main(emptyArgs);
     fail("should be exit");
   } catch (SecurityException e) {
     assertEquals(1, newSecurityManager.getExitCode());
   } finally {
     System.setErr(oldWriter);
     System.setSecurityManager(SECURITY_MANAGER);
   }
   assertTrue(data.toString().contains("rs.class"));
   // should print usage information
   assertTrue(data.toString().contains("Usage:"));
 }