private byte[] addMessage(Store store, StoreKey key, long expiryTimeMs, boolean isDelete, boolean isTtlUpdate,
      short accountId, short containerId, long operationTimeMs) throws IOException, StoreException {
    int size = PUT_RECORD_SIZE;
    MessageInfo messageInfo =
        new MessageInfo(key, size, isDelete, isTtlUpdate, expiryTimeMs, accountId, containerId, operationTimeMs);
    byte[] data = TestUtils.getRandomBytes(size);
    MessageFormatWriteSet writeSet =
        new MessageFormatWriteSet(new ByteArrayInputStream(data), Collections.singletonList(messageInfo), false);
    if (isDelete) {
      store.delete(writeSet.getMessageSetInfo());
    } else if (isTtlUpdate) {
      store.updateTtl(writeSet.getMessageSetInfo());
    } else {
      store.put(writeSet);
    }
    return data;
  }
Adds a message to the given {@code store}.
@param store the {@link Store} to add the message to.
@param key the {@link StoreKey} associated with the message.
@param expiryTimeMs the expiry time associated with the message.
@param isDelete {@code true} if this is a delete message, {@code false} otherwise.
@param isTtlUpdate {@code true} if this is a ttl update message or if {@code isDelete} is true and the created
                   {@link MessageInfo} needs to indicate that a TTL update had occurred, {@code false} otherwise.
@param accountId accountId of the blob
@param containerId containerId of the blob
@param operationTimeMs operationTime in ms of put or delete
@return the message that was written.
@throws IOException
@throws StoreException
ambry-tools/src/test/java/com/github/ambry/store/StoreCopierTest.java