public void testMainResponseSerialization() throws IOException {
    final String nodeName = "node1";
    final ClusterName clusterName = new ClusterName("cluster1");
    final boolean available = randomBoolean();
    final Version version = Version.CURRENT;
    final Build build = Build.CURRENT;

    final MainResponse mainResponse =
        new MainResponse(nodeName, version, clusterName, build, available);
    BytesStreamOutput streamOutput = new BytesStreamOutput();
    mainResponse.writeTo(streamOutput);
    final MainResponse serialized = new MainResponse();
    serialized.readFrom(new ByteBufferStreamInput(ByteBuffer.wrap(streamOutput.bytes().toBytes())));

    assertThat(serialized.getNodeName(), equalTo(nodeName));
    assertThat(serialized.getClusterName(), equalTo(clusterName));
    assertThat(serialized.getBuild(), equalTo(build));
    assertThat(serialized.isAvailable(), equalTo(available));
    assertThat(serialized.getVersion(), equalTo(version));
  }
  public void testMainResponseXContent() throws IOException {
    final MainResponse mainResponse =
        new MainResponse(
            "node1", Version.CURRENT, new ClusterName("cluster1"), Build.CURRENT, false);
    final String expected =
        "{\"name\":\"node1\",\"cluster_name\":\"cluster1\",\"version\":{\"number\":\""
            + Version.CURRENT.toString()
            + "\",\"build_hash\":\""
            + Build.CURRENT.shortHash()
            + "\",\"build_date\":\""
            + Build.CURRENT.date()
            + "\","
            + "\"build_snapshot\":"
            + Build.CURRENT.isSnapshot()
            + ",\"lucene_version\":\""
            + Version.CURRENT.luceneVersion.toString()
            + "\"},\"tagline\":\"You Know, for Search\"}";

    XContentBuilder builder = XContentFactory.jsonBuilder();
    mainResponse.toXContent(builder, ToXContent.EMPTY_PARAMS);
    String xContent = builder.string();

    assertEquals(expected, xContent);
  }