private void doCatchupStatusTest(PartitionId id, long acceptableLagInBytes, short numReplicasCaughtUpPerPartition,
      ServerErrorCode expectedServerErrorCode, boolean expectedIsCaughtUp) throws InterruptedException, IOException {
    int correlationId = TestUtils.RANDOM.nextInt();
    String clientId = TestUtils.getRandomString(10);
    AdminRequest adminRequest = new AdminRequest(AdminRequestOrResponseType.CatchupStatus, id, correlationId, clientId);
    CatchupStatusAdminRequest catchupStatusRequest =
        new CatchupStatusAdminRequest(acceptableLagInBytes, numReplicasCaughtUpPerPartition, adminRequest);
    Response response = sendRequestGetResponse(catchupStatusRequest, expectedServerErrorCode);
    assertTrue("Response not of type CatchupStatusAdminResponse", response instanceof CatchupStatusAdminResponse);
    CatchupStatusAdminResponse adminResponse = (CatchupStatusAdminResponse) response;
    assertEquals("Catchup status not as expected", expectedIsCaughtUp, adminResponse.isCaughtUp());
    response.release();
  }
Does the test for {@link AdminRequestOrResponseType#CatchupStatus} by checking that the request is correctly
deserialized in {@link AmbryRequests} and the necessary info obtained from {@link ReplicationManager}.
@param id the {@link PartitionId} to disable replication on. Can be {@code null}.
@param acceptableLagInBytes the value of acceptable lag to set in the {@link CatchupStatusAdminRequest}.
@param numReplicasCaughtUpPerPartition the value of num replicas caught up per partition to set in the
                         {@link CatchupStatusAdminRequest}.
@param expectedServerErrorCode the {@link ServerErrorCode} expected in the response.
@param expectedIsCaughtUp the expected return from {@link CatchupStatusAdminResponse#isCaughtUp()}.
@throws InterruptedException
@throws IOException
ambry-server/src/test/java/com/github/ambry/server/AmbryServerRequestsTest.java