/// <summary> /// Tests the Quota grate with the basic API endpoint. /// </summary> /// <returns>Whether or not the test was successful along with the response.</returns> private static TestResult TestQuotaGrateWithSimple() { const int timeout = 500; var getRoute = $"/ratetest/get/simple/TestQuotaGrateWithSimple/{timeout}"; var evalRoute = $"/ratetest/eval/simple/TestQuotaGrateWithSimple/{timeout}"; var clearRoute = $"/ratetest/clear/simple/TestQuotaGrateWithSimple/{timeout}"; var token = "demoToken"; Get(clearRoute); var grate = new QuotaGrate<string>(1, TimeSpan.FromMilliseconds(timeout)); for (var i = 0; i < 10; i++) { grate.Wait(token); Get(getRoute); grate.Release(token); } // @todo timing check here return GetAsBool(evalRoute); }
/// <summary> /// Tests the Quota grate with the bucketed API endpoint. /// </summary> /// <returns>Whether or not the test was successful along with the response.</returns> private static TestResult TestQuotaGrateWithBucketed() { const int bucketSize = 5; const int expirationTime = 5000; var getRoute = $"/ratetest/get/bucketed/TestQuotaGrateWithBucketed/{bucketSize}/{expirationTime}"; var evalRoute = $"/ratetest/eval/bucketed/TestQuotaGrateWithBucketed/{bucketSize}/{expirationTime}"; var clearRoute = $"/ratetest/clear/bucketed/TestQuotaGrateWithBucketed/{bucketSize}/{expirationTime}"; var token = "demoToken"; Get(clearRoute); var grate = new QuotaGrate<string>(bucketSize, TimeSpan.FromMilliseconds(expirationTime)); for (var i = 0; i < 10; i++) { grate.Wait(token); Get(getRoute); grate.Release(token); } // @todo timing check here return GetAsBool(evalRoute); }