@Test(timeout = 30000)
public void testNameNodeGetReconfigurationStatus() throws IOException,
    InterruptedException, TimeoutException {

  ReconfigurationUtil ru = mock(ReconfigurationUtil.class);
  namenode.setReconfigurationUtil(ru);
  final String address = namenode.getHostAndPort();
  List<ReconfigurationUtil.PropertyChange> changes =
      new ArrayList<>();
  changes.add(new ReconfigurationUtil.PropertyChange(
      DFS_HEARTBEAT_INTERVAL_KEY, String.valueOf(6),
      namenode.getConf().get(DFS_HEARTBEAT_INTERVAL_KEY)));
  changes.add(new ReconfigurationUtil.PropertyChange(
      "randomKey", "new123", "old456"));
  when(ru.parseChangedProperties(any(Configuration.class),
      any(Configuration.class))).thenReturn(changes);
  assertThat(admin.startReconfiguration("namenode", address), is(0));
  final List<String> outs = Lists.newArrayList();
  final List<String> errs = Lists.newArrayList();
  awaitReconfigurationFinished("namenode", address, outs, errs);
  // verify change
  assertEquals(
      DFS_HEARTBEAT_INTERVAL_KEY + " has wrong value",
      6,
      namenode
        .getConf()
        .getLong(DFS_HEARTBEAT_INTERVAL_KEY,
              DFS_HEARTBEAT_INTERVAL_DEFAULT));
  assertEquals(DFS_HEARTBEAT_INTERVAL_KEY + " has wrong value",
      6,
      namenode
        .getNamesystem()
        .getBlockManager()
        .getDatanodeManager()
        .getHeartbeatInterval());
  int offset = 1;
  assertThat(outs.get(offset), containsString("SUCCESS: Changed property "
      + DFS_HEARTBEAT_INTERVAL_KEY));
  assertThat(outs.get(offset + 1),
      is(allOf(containsString("From:"), containsString("3"))));
  assertThat(outs.get(offset + 2),
      is(allOf(containsString("To:"), containsString("6"))));
}