BootstrapStandby implements Tool, Configurable { @Override public int run(String[] args) throws Exception { parseArgs(args); parseConfAndFindOtherNN(); NameNode.checkAllowFormat(conf); InetSocketAddress myAddr = DFSUtilClient.getNNAddress(conf); SecurityUtil.login(conf, DFS_NAMENODE_KEYTAB_FILE_KEY, DFS_NAMENODE_KERBEROS_PRINCIPAL_KEY, myAddr.getHostName()); return SecurityUtil.doAsLoginUserOrFatal(new PrivilegedAction<Integer>() { @Override public Integer run() { try { return doRun(); } catch (IOException e) { throw new RuntimeException(e); } } }); }  @Override int run(String[] args); @Override void setConf(Configuration conf); @Override Configuration getConf(); static int run(String[] argv, Configuration conf);  }
@Test public void testSuccessfulBaseCase() throws Exception { removeStandbyNameDirs(); for (int index = 1; index < maxNNCount; index++) { try { cluster.restartNameNode(index); fail("Did not throw"); } catch (IOException ioe) { GenericTestUtils.assertExceptionContains( "storage directory does not exist or is not accessible", ioe); } int expectedCheckpointTxId = (int)NameNodeAdapter.getNamesystem(nn0) .getFSImage().getMostRecentCheckpointTxId(); int rc = BootstrapStandby.run(new String[] { "-nonInteractive" }, cluster.getConfiguration(index)); assertEquals(0, rc); FSImageTestUtil.assertNNHasCheckpoints(cluster, index, ImmutableList.of(expectedCheckpointTxId)); } restartNameNodesFromIndex(1); }
@Test public void testStandbyDirsAlreadyExist() throws Exception { int rc = BootstrapStandby.run( new String[]{"-nonInteractive"}, cluster.getConfiguration(1)); assertEquals(BootstrapStandby.ERR_CODE_ALREADY_FORMATTED, rc); assertEquals(0, forceBootstrap(1)); }