@Test
  public void testSimpleBlobGetSuccess() throws Exception {
    short[] expectedLifeVersions = new short[]{0, 1, 2};
    for (int i = 0; i < 10; i++) {
      // blobSize in the range [1, maxChunkSize]
      blobSize = random.nextInt(maxChunkSize) + 1;
      if (this.enableCompression) {
        blobSize = Math.max(blobSize, 1025);
      }
      short expectedLifeVersion = expectedLifeVersions[random.nextInt(expectedLifeVersions.length)];
      doPut();
      changeLifeVersionForBlobId(blobId.getID(), expectedLifeVersion);
      GetBlobOptions.OperationType operationType;
      switch (i % 3) {
        case 0:
          operationType = GetBlobOptions.OperationType.All;
          break;
        case 1:
          operationType = GetBlobOptions.OperationType.Data;
          break;
        default:
          operationType = GetBlobOptions.OperationType.BlobInfo;
          break;
      }
      options = new GetBlobOptionsInternal(new GetBlobOptionsBuilder().operationType(operationType).build(), false,
          routerMetrics.ageAtGet);
      getAndAssertSuccess(false, false, expectedLifeVersion);
      if (!quotaChargeCallback.getQuotaConfig().bandwidthThrottlingFeatureEnabled) {
        Assert.assertEquals(i + 1, quotaChargeCallback.numCheckAndChargeCalls);
      }
      assertEquals(0, routerMetrics.shuffledWithRemoteReplicasForGetDueToFewLocalReplicas.getCount());
    }
  }
Put blobs that result in a single chunk; perform gets of the blob and ensure success.
ambry-router/src/test/java/com/github/ambry/router/GetBlobOperationTest.java