List<Pair<String, String>> doDatasetVersionPutGetWithTtlTest(Account account, Container container, List<Dataset> datasets,
      String contentType, String ownerId, int contentSize) throws Exception {
    String accountName = account.getName();
    List<Pair<String, String>> datasetVersions = new ArrayList<>();
    for (Dataset dataset : datasets) {
      for (long ttl : new long[]{-1, TTL_SECS}) {
        //Test put dataset version with default dataset level ttl
        HttpHeaders headers = new DefaultHttpHeaders();
        setAmbryHeadersForPut(headers, ttl, false, accountName, contentType, ownerId, null, null);
        headers.add(RestUtils.Headers.DATASET_VERSION_QUERY_ENABLED, true);
        ByteBuffer content = ByteBuffer.wrap(TestUtils.getRandomBytes(contentSize));
        String version = generateDatasetVersion(dataset);
        if (dataset.getRetentionTimeInSeconds() == null) {
          putDatasetVersionAndVerify(dataset, version, headers, content, contentSize, ttl);
          datasetVersions.add(new Pair<>(dataset.getDatasetName(), version));
        } else {
          putDatasetVersionAndVerify(dataset, version, headers, content, contentSize,
              dataset.getRetentionTimeInSeconds());
          datasetVersions.add(new Pair<>(dataset.getDatasetName(), version));
        }

        //Test put dataset version with dataset level ttl
        headers = new DefaultHttpHeaders();
        setAmbryHeadersForPut(headers, ttl, false, accountName, contentType, ownerId, null, null);
        headers.add(RestUtils.Headers.DATASET_VERSION_QUERY_ENABLED, true);
        headers.add(RestUtils.Headers.DATASET_VERSION_TTL_ENABLED, true);
        version = generateDatasetVersion(dataset);
        putDatasetVersionAndVerify(dataset, version, headers, content, contentSize, ttl);
        datasetVersions.add(new Pair<>(dataset.getDatasetName(), version));
      }
    }
    return datasetVersions;
  }
Verify Named blob List operation.
@param accountName The account name.
@param containerName The container name
@param ownerId The owner id
@param prefix The prefix of blob name.
@param numberOfBlobs The expected number of named blobs returned by list operation.
@throws Exception
ambry-frontend/src/integration-test/java/com/github/ambry/frontend/FrontendIntegrationTestBase.java