@Test
  public void readVarLong_errorCase() {
    byte[] errorCode = new byte[] {-25, -45, -47, -14, -16, -104, -53, -48, -72, -9};
    Buffer buffer = new FixedBuffer(errorCode);
    try {
      buffer.readVarLong();
      Assert.fail("invalid varLong");
    } catch (IllegalArgumentException ignore) {
    }

    Assert.assertEquals(0, buffer.getOffset());
  }
  private void checkVarLong_bufferSize(long v, int bufferSize) {
    final Buffer buffer = new FixedBuffer(bufferSize);
    buffer.putVar(v);

    buffer.setOffset(0);
    long readV = buffer.readVarLong();
    Assert.assertEquals(readV, v);

    if (logger.isTraceEnabled()) {
      logger.trace("v:{} offset:{}", v, buffer.getOffset());
    }
  }
  //    @Test
  public void find_SVarLong_errorCode() throws Exception {
    Random random = new Random();
    byte[] bytes = new byte[10];

    while (true) {
      random.nextBytes(bytes);
      Buffer buffer = new FixedBuffer(bytes);
      try {
        long i = buffer.readVarLong();
      } catch (IllegalArgumentException e) {
        logger.info(e.getMessage(), e);
        String binaryString = BytesUtils.toString(bytes);
        logger.info(binaryString);
        for (byte aByte : bytes) {
          String code = String.valueOf((int) aByte);
          logger.info(code);
        }
        return;
      }
    }
  }