private List<MessageInfo> getMessagesFromIndexSegmentEntryInOrder(
      Map.Entry<Offset, TreeMap<MockId, TreeSet<IndexValue>>> indexSegmentEntry) {
    List<IndexEntry> indexEntries = new ArrayList<>();
    for (Map.Entry<MockId, TreeSet<IndexValue>> entry : indexSegmentEntry.getValue().entrySet()) {
      StoreKey key = entry.getKey();
      for (IndexValue value : entry.getValue()) {
        indexEntries.add(new IndexEntry(key, value));
      }
    }
    indexEntries.sort((e1, e2) -> e1.getValue().getOffset().compareTo(e2.getValue().getOffset()));
    List<MessageInfo> messageInfos = new ArrayList<>();
    for (IndexEntry entry : indexEntries) {
      StoreKey key = entry.getKey();
      IndexValue value = entry.getValue();
      messageInfos.add(new MessageInfo(key, value.getSize(), value.isDelete(), value.isTtlUpdate(), value.isUndelete(),
          value.getExpiresAtMs(), null, value.getAccountId(), value.getContainerId(), value.getOperationTimeInMs(),
          value.getLifeVersion()));
    }
    return messageInfos;
  }
Verifies that the {@link BlobReadOptions} returned from {@link PersistentIndex#getBlobReadInfo(StoreKey, EnumSet)}
matches the expected value.
@param id the {@link MockId} to use
@param storeGetOptions the {@link StoreGetOptions} to use.
@param expectedErrorCode if this operation is expected to fail, the {@link StoreErrorCodes} expected.
@throws StoreException
ambry-store/src/test/java/com/github/ambry/store/IndexTest.java