public synchronized Account generateRandomAccount(QuotaResourceType quotaResourceType) {
    short refAccountId;
    String refAccountName;
    do {
      refAccountId = Utils.getRandomShort(TestUtils.RANDOM);
      refAccountName = TestUtils.getRandomString(10);
    } while (idToAccountMap.containsKey(refAccountId) || nameToAccountMap.containsKey(refAccountName));
    Account.AccountStatus refAccountStatus = Account.AccountStatus.ACTIVE;
    Container randomContainer = getRandomContainer(refAccountId);
    Container publicContainer =
        new ContainerBuilder(Container.DEFAULT_PUBLIC_CONTAINER).setParentAccountId(refAccountId)
            .setNamedBlobMode(Container.NamedBlobMode.OPTIONAL)
            .build();
    Container privateContainer =
        new ContainerBuilder(Container.DEFAULT_PRIVATE_CONTAINER).setParentAccountId(refAccountId)
            .setNamedBlobMode(Container.NamedBlobMode.OPTIONAL)
            .build();
    return new AccountBuilder(refAccountId, refAccountName, refAccountStatus, quotaResourceType).addOrUpdateContainer(
        publicContainer).addOrUpdateContainer(privateContainer).addOrUpdateContainer(randomContainer).build();
  }
Generates an {@link Account} but does not add it to this {@link AccountService}. The account will contain one
container with {@link Container#DEFAULT_PUBLIC_CONTAINER_ID}, one with
{@link Container#DEFAULT_PRIVATE_CONTAINER_ID} and one other random {@link Container}.
@param quotaResourceType {@link QuotaResourceType} for the account.
@return the {@link Account} that was created.
ambry-test-utils/src/main/java/com/github/ambry/account/InMemAccountService.java