public static void populateIds(BufferedReader reader, HashMap<String, IndexPayload> hashes) {
    try {
      // read the first 10000 or less blob ids from the log
      synchronized (hashes) {
        System.out.println("Reading ids");
        String line;
        int count = 0;
        for (Map.Entry<String, IndexPayload> payload : hashes.entrySet()) {
          payload.getValue().getIds().clear();
        }
        while ((line = reader.readLine()) != null) {
          if (line.startsWith("blobid")) {
            String[] ids = line.split("-");
            HashSet<String> idsForIndex = hashes.get(ids[1]).getIds();
            idsForIndex.add(ids[2] + "-" + ids[3] + "-" + ids[4] + "-" + ids[5] + "-" + ids[6]);
            System.out.println("Reading id " + ids[2]);
          }
          if (count == 10000) {
            break;
          }
          count++;
        }
      }
    } catch (Exception e) {
      System.out.print("Error when reading from log " + e);
    }
  }
Reads from a file and populates the indexes and issues
random read requests and tracks performance . This test reads 10000 ids
at a time from the index write performance log and does random reads from that list.
After 2 minutes it replaces the input with the next 10000 set.
ambry-tools/src/main/java/com/github/ambry/store/IndexReadPerformance.java