public void testIgnoreIdleThreads() throws ExecutionException, InterruptedException {

    // First time, don't ignore idle threads:
    NodesHotThreadsRequestBuilder builder = client().admin().cluster().prepareNodesHotThreads();
    builder.setIgnoreIdleThreads(false);
    builder.setThreads(Integer.MAX_VALUE);
    NodesHotThreadsResponse response = builder.execute().get();

    int totSizeAll = 0;
    for (NodeHotThreads node : response.getNodesMap().values()) {
      totSizeAll += node.getHotThreads().length();
    }

    // Second time, do ignore idle threads:
    builder = client().admin().cluster().prepareNodesHotThreads();
    builder.setThreads(Integer.MAX_VALUE);

    // Make sure default is true:
    assertEquals(true, builder.request().ignoreIdleThreads());
    response = builder.execute().get();

    int totSizeIgnoreIdle = 0;
    for (NodeHotThreads node : response.getNodesMap().values()) {
      totSizeIgnoreIdle += node.getHotThreads().length();
    }

    // The filtered stacks should be smaller than unfiltered ones:
    assertThat(totSizeIgnoreIdle, lessThan(totSizeAll));
  }
  public void testTimestampAndParams() throws ExecutionException, InterruptedException {

    NodesHotThreadsResponse response =
        client().admin().cluster().prepareNodesHotThreads().execute().get();

    for (NodeHotThreads node : response.getNodesMap().values()) {
      String result = node.getHotThreads();
      assertTrue(result.indexOf("Hot threads at") != -1);
      assertTrue(result.indexOf("interval=500ms") != -1);
      assertTrue(result.indexOf("busiestThreads=3") != -1);
      assertTrue(result.indexOf("ignoreIdleThreads=true") != -1);
    }
  }