private void verifyGetters(BlobReadOptions options, LogSegment logSegment, long offset, boolean verifyInMemFields,
      MessageInfo msgInfo) {
    assertEquals("LogSegment name not as expected", logSegment.getName(), options.getLogSegmentName());
    assertEquals("Offset not as expected", offset, options.getOffset());
    assertEquals("Size not as expected", msgInfo.getSize(), options.getMessageInfo().getSize());
    assertEquals("ExpiresAtMs not as expected", msgInfo.getExpirationTimeInMs(),
        options.getMessageInfo().getExpirationTimeInMs());
    assertEquals("StoreKey not as expected", msgInfo.getStoreKey(), options.getMessageInfo().getStoreKey());
    if (verifyInMemFields) {
      assertEquals("Crc not as expected ", msgInfo.getCrc().longValue(), options.getMessageInfo().getCrc().longValue());
      assertEquals("AccountId not as expected", msgInfo.getAccountId(), options.getMessageInfo().getAccountId());
      assertEquals("ContainerId not as expected", msgInfo.getContainerId(), options.getMessageInfo().getContainerId());
      assertEquals("OperationTimeMs not as expected", msgInfo.getOperationTimeMs(),
          options.getMessageInfo().getOperationTimeMs());
    } else {
      assertEquals("AccountId not as expected", Account.UNKNOWN_ACCOUNT_ID, options.getMessageInfo().getAccountId());
      assertEquals("ContainerId not as expected", Container.UNKNOWN_CONTAINER_ID,
          options.getMessageInfo().getContainerId());
      assertEquals("OperationTimeMs not as expected", Utils.Infinite_Time,
          options.getMessageInfo().getOperationTimeMs());
    }
    MessageInfo messageInfo = options.getMessageInfo();
    assertEquals("Size not as expected", msgInfo.getSize(), messageInfo.getSize());
    assertEquals("ExpiresAtMs not as expected", msgInfo.getExpirationTimeInMs(), messageInfo.getExpirationTimeInMs());
    assertEquals("StoreKey not as expected", msgInfo.getStoreKey(), messageInfo.getStoreKey());
    if (verifyInMemFields) {
      assertEquals("Crc not as expected ", msgInfo.getCrc(), messageInfo.getCrc());
      assertEquals("AccountId not as expected", msgInfo.getAccountId(), messageInfo.getAccountId());
      assertEquals("ContainerId not as expected", msgInfo.getContainerId(), messageInfo.getContainerId());
      assertEquals("OperationTimeMs not as expected", msgInfo.getOperationTimeMs(), messageInfo.getOperationTimeMs());
      assertEquals("Deleted not as expected", msgInfo.isDeleted(), messageInfo.isDeleted());
      assertEquals("TtlUpdated not as expected", msgInfo.isTtlUpdated(), messageInfo.isTtlUpdated());
    } else {
      assertEquals("AccountId not as expected", Account.UNKNOWN_ACCOUNT_ID, messageInfo.getAccountId());
      assertEquals("ContainerId not as expected", Container.UNKNOWN_CONTAINER_ID, messageInfo.getContainerId());
      assertEquals("OperationTimeMs not as expected", Utils.Infinite_Time, messageInfo.getOperationTimeMs());
    }
    Pair<File, FileChannel> fileAndFileChannel = logSegment.getView();
    assertEquals("File instance not as expected", fileAndFileChannel.getFirst(), options.getFile());
    assertEquals("FileChannel instance not as expected", fileAndFileChannel.getSecond(), options.getChannel());
    logSegment.closeView();
  }
Verifies getters of {@link BlobReadOptions} for correctness.
@param options the {@link BlobReadOptions} to check.
@param logSegment the expected {@link LogSegment} which {@code options} should refer to.
@param offset the expected offset inside {@code logSegment} which {@code options} should refer to.
@param verifyInMemFields {@code true} when in memory fields needs to be verified. {@code false} otherwise
@param msgInfo {@link MessageInfo} from which values need to be verified against
ambry-store/src/test/java/com/github/ambry/store/StoreMessageReadSetTest.java