@Override
    public QuotaAction checkAndCharge(boolean shouldCheckExceedAllowed, boolean forceCharge, long chunkSize) {
      return QuotaAction.ALLOW;
    }
Concurrency Test Tool is used to test Ambry Router/Server for concurrent GETs and PUTs in a mixed type of
workload(puts and gets). Also, it issues GET of the same blob N no of times and ensures we get the same blob everytime.

Caution: We might need to be cautious about OOM errors as this tool holds all the blobs(that were injected) in memory
injected until the GETs have reached the threshold for the a particular blob. Its possible to run this tool for thousands
of Puts, but ensure that maxGetCountPerBlob is minimum, so that blobs are garbage collected as we continue running the
tests

Supported features
- Parallel Puts and Gets
- Concurrent GETs for the same blobs

Future work:
- Adding delay between concurrent GETs for same blobs
- Adding delay for GETs to start so that the file cache will only have recently uploaded blobs(and not all)

Example :
Router
 java -cp ambry.jar com.github.ambry.tools.admin.ConcurrencyTestTool --hardwareLayout [HardwareLayoutFile]
 --partitionLayout [PartitionLayoutFile] --putGetHelperFactory com.github.ambry.tools.admin.RouterPutGetHelperFactory
 --maxParallelPutCount 2 --parallelGetCount 4 --burstCountForGet 4 --maxGetCountPerBlob 10
 --totalPutBlobCount 1000 --maxBlobSizeInBytes 1000 --minBlobSizeInBytes 100 --routerPropsFilePath [Path to router props
 file] --deleteAndValidate true

 Few other options that might be useful:
--sleepTimeBetweenBatchGetsInMs long : Time to sleep in ms between batch Gets
--sleepTimeBetweenBatchPutsInMs long : Time to sleep in ms between batch Puts
--burstThreadCountForPut int         : No of concurrent PUTs by each producer thread
ambry-tools/src/main/java/com/github/ambry/tools/admin/ConcurrencyTestTool.java