private void ensureTagsAreValid(Map<String, ?> tagMap) { ensureInitialized(); tagMap.keySet().forEach(tag -> Preconditions.checkArgument(tagToRateLimiterMap.containsKey(tag), "Invalid tag: " + tag)); }
@Override public void acquire(Map<String, Integer> tagToCreditsMap) { ensureTagsAreValid(tagToCreditsMap); tagToCreditsMap.forEach((tag, numberOfCredits) -> tagToRateLimiterMap.get(tag).acquire(numberOfCredits)); }
private RateLimiter createRateLimiter() { Map<String, Integer> tagToTargetRateMap = new HashMap<>(); tagToTargetRateMap.put("red", TARGET_RATE_RED); tagToTargetRateMap.put("green", TARGET_RATE_GREEN); RateLimiter rateLimiter = new EmbeddedTaggedRateLimiter(tagToTargetRateMap); initRateLimiter(rateLimiter); return rateLimiter; }
@Test(expected = IllegalStateException.class) public void testFailsWhenUninitialized() { new EmbeddedTaggedRateLimiter(100).acquire(1); }
@Test(expected = IllegalArgumentException.class) public void testFailsWhenNotUsingTags() { Map<String, Integer> tagToCredits = new HashMap<>(); tagToCredits.put("red", 1); tagToCredits.put("green", 1); RateLimiter rateLimiter = new EmbeddedTaggedRateLimiter(tagToCredits); initRateLimiter(rateLimiter); rateLimiter.acquire(1); }
@Test(expected = IllegalStateException.class) public void testFailsWhenUninitializedTagged() { Map<String, Integer> tagToTargetRateMap = new HashMap<>(); tagToTargetRateMap.put("red", 1000); tagToTargetRateMap.put("green", 2000); new EmbeddedTaggedRateLimiter(tagToTargetRateMap).acquire(tagToTargetRateMap); }
@Override public void acquire(int numberOfCredits) { ensureTagsAreValid(DEFAULT_TAG_MAP); tagToRateLimiterMap.get(DEFAULT_TAG).acquire(numberOfCredits); }
new EmbeddedTaggedRateLimiter(tagCreditsMap))); } else if (rateLimiter != null) { tableSpecConfig.put(RemoteTableProvider.RATE_LIMITER, SerdeUtils.serialize("rate limiter", rateLimiter));
private void ensureTagsAreValid(Map<String, ?> tagMap) { ensureInitialized(); tagMap.keySet().forEach(tag -> Preconditions.checkArgument(tagToRateLimiterMap.containsKey(tag), "Invalid tag: " + tag)); }
@Override public void acquire(Map<String, Integer> tagToCreditsMap) { ensureTagsAreValid(tagToCreditsMap); tagToCreditsMap.forEach((tag, numberOfCredits) -> tagToRateLimiterMap.get(tag).acquire(numberOfCredits)); }
new EmbeddedTaggedRateLimiter(tagCreditsMap))); } else if (rateLimiter != null) { tableSpecConfig.put(RemoteTableProvider.RATE_LIMITER, SerdeUtils.serialize("rate limiter", rateLimiter));
private void ensureTagsAreValid(Map<String, ?> tagMap) { ensureInitialized(); tagMap.keySet().forEach(tag -> Preconditions.checkArgument(tagToRateLimiterMap.containsKey(tag), "Invalid tag: " + tag)); }
@Override public void acquire(int numberOfCredits) { ensureTagsAreValid(DEFAULT_TAG_MAP); tagToRateLimiterMap.get(DEFAULT_TAG).acquire(numberOfCredits); }
new EmbeddedTaggedRateLimiter(tagCreditsMap))); } else if (rateLimiter != null) { tableSpecConfig.put(RemoteTableProvider.RATE_LIMITER, SerdeUtils.serialize("rate limiter", rateLimiter));
private void ensureTagsAreValid(Map<String, ?> tagMap) { ensureInitialized(); tagMap.keySet().forEach(tag -> Preconditions.checkArgument(tagToRateLimiterMap.containsKey(tag), "Invalid tag: " + tag)); }
@Override public int acquire(int numberOfCredit, long timeout, TimeUnit unit) { ensureTagsAreValid(DEFAULT_TAG_MAP); return tagToRateLimiterMap.get(DEFAULT_TAG).tryAcquire(numberOfCredit, timeout, unit) ? numberOfCredit : 0; }
new EmbeddedTaggedRateLimiter(tagCreditsMap))); } else if (rateLimiter != null) { tableSpecConfig.put(RemoteTableProvider.RATE_LIMITER, SerdeUtils.serialize("rate limiter", rateLimiter));
private void ensureTagsAreValid(Map<String, ?> tagMap) { ensureInitialized(); tagMap.keySet().forEach(tag -> Preconditions.checkArgument(tagToRateLimiterMap.containsKey(tag), "Invalid tag: " + tag)); }
@Override public void acquire(int numberOfCredits) { ensureTagsAreValid(DEFAULT_TAG_MAP); tagToRateLimiterMap.get(DEFAULT_TAG).acquire(numberOfCredits); }
@Test(expected = IllegalArgumentException.class) public void testFailsWhenUsingTags() { RateLimiter rateLimiter = new EmbeddedTaggedRateLimiter(10); initRateLimiter(rateLimiter); Map<String, Integer> tagToCredits = new HashMap<>(); tagToCredits.put("red", 1); tagToCredits.put("green", 1); rateLimiter.acquire(tagToCredits); }