private Pair<List<MockId>, Long> createStateWithPutAndTtlUpdate() throws Exception {
    refreshState(false, false, false);
    int numPuts = (int) ((state.log.getSegmentCapacity() - LogSegment.HEADER_SIZE) / (2 * PUT_RECORD_SIZE));
    long expiryTimeMs = getInvalidationTime(1);
    List<IndexEntry> entries = state.addPutEntries(numPuts, PUT_RECORD_SIZE, expiryTimeMs);
    List<MockId> ids = new ArrayList<>(entries.size());
    for (IndexEntry entry : entries) {
      MockId id = (MockId) entry.getKey();
      state.makePermanent(id, false);
      ids.add(id);
    }
    state.advanceTime(expiryTimeMs + 1 - state.time.milliseconds());
    // add put entries so that the log segment rolls over
    writeDataToMeetRequiredSegmentCount(state.index.getLogSegmentCount() + 1, null);
    // reload index to make sure journal is on only the latest log segment
    state.reloadIndex(true, false);
    return new Pair<>(ids, expiryTimeMs);
  }
Creates state required for some TTL update specific tests that need PUTs and TTL updates
@return a pair of ids of newly added PUTs and expiry time associated with them.
@throws Exception
ambry-store/src/test/java/com/github/ambry/store/BlobStoreCompactorTest.java