/** Test method for {@link BasicMongoClientMetrics#writeTo(PrintWriter)}. */
  @Test
  public void testWriteToPrintWriter() {
    final BasicMongoClientMetrics metrics = new BasicMongoClientMetrics();

    assertThat(
        metrics.toString(),
        is(
            "Global[sentBytes=0, sentCount=0, receivedBytes=0, "
                + "receivedCount=0, lastLatency=0 ms, totalLatency=0 ms]\n\n\n"));

    metrics.close();
  }
  /** Test method for {@link BasicMongoClientMetrics#sent(String, long, Message)}. */
  @Test
  public void testSent() {
    final Message mockSentMessage = createMock(Message.class);

    final BasicMongoClientMetrics metrics = new BasicMongoClientMetrics();

    // One for the DB and one for the collection.
    expect(mockSentMessage.size()).andReturn(101).times(10);
    expect(mockSentMessage.getOperationName()).andReturn("operation").times(2);
    expect(mockSentMessage.getDatabaseName()).andReturn("db").times(2);
    expect(mockSentMessage.getCollectionName()).andReturn("collection").times(2);

    replay(mockSentMessage);

    metrics.sent("server1", 0L, mockSentMessage);
    metrics.sent("server2", 0L, mockSentMessage);

    assertThat(
        metrics.toString(),
        is(
            "Global[sentBytes=202, sentCount=2, receivedBytes=0, "
                + "receivedCount=0, lastLatency=0 ms, totalLatency=0 ms]\n"
                + "Database[db: sentBytes=202, sentCount=2, receivedBytes=0, "
                + "receivedCount=0, lastLatency=0 ms, totalLatency=0 ms]\n"
                + "Collection[collection: sentBytes=202, sentCount=2, receivedBytes=0, "
                + "receivedCount=0, lastLatency=0 ms, totalLatency=0 ms]\n"
                + "Operation[operation: sentBytes=202, sentCount=2, receivedBytes=0, "
                + "receivedCount=0, lastLatency=0 ms, totalLatency=0 ms]\n"
                + "Server[server1: sentBytes=101, sentCount=1, receivedBytes=0, "
                + "receivedCount=0, lastLatency=0 ms, totalLatency=0 ms]\n"
                + "Server[server2: sentBytes=101, sentCount=1, receivedBytes=0, "
                + "receivedCount=0, lastLatency=0 ms, totalLatency=0 ms]"));

    metrics.close();

    verify(mockSentMessage);
  }