private void doListBlob(String account, String container, String key) throws Exception {
    // List the blob
    String uri =
        String.format("/s3/%s/%s/?prefix=%s&delimiter=/&max-keys=1&encoding-type=url", account, container, key);
    HttpHeaders headers = new DefaultHttpHeaders();
    FullHttpRequest httpRequest = buildRequest(HttpMethod.GET, uri, headers, null);
    NettyClient.ResponseParts responseParts = nettyClient.sendRequest(httpRequest, null, null).get();
    HttpResponse response = getHttpResponse(responseParts);
    assertEquals("Unexpected status", HttpResponseStatus.OK, response.status());
    assertEquals("Unexpected content type", XML_CONTENT_TYPE, response.headers().get(CONTENT_TYPE));
    int length = response.headers().getInt(CONTENT_LENGTH);
    byte[] content = getContent(responseParts.queue, length).array();

    // Verify results
    ListBucketResult listBucketResult = xmlMapper.readValue(content, ListBucketResult.class);
    Contents contents = listBucketResult.getContents().get(0);
    assertEquals("Mismatch in key name", key, contents.getKey());
    assertEquals("Mismatch in key count", 1, listBucketResult.getKeyCount());
    assertEquals("Mismatch in prefix", key, listBucketResult.getPrefix());
    assertEquals("Mismatch in delimiter", "/", listBucketResult.getDelimiter());
    assertEquals("Mismatch in max key count", 1, listBucketResult.getMaxKeys());
    assertEquals("Mismatch in encoding type", "url", listBucketResult.getEncodingType());
  }
Shuts down the Ambry frontend server.
ambry-frontend/src/integration-test/java/com/github/ambry/frontend/S3IntegrationTest.java