@Override public void contextDestroyed(ServletContextEvent servletContextEvent) { close(); super.contextDestroyed(servletContextEvent); }
private ThrottlingGuiceServletConfig createServerAtPort(Config baseConfig, int port) { ThrottlingGuiceServletConfig guiceServletConfig = new ThrottlingGuiceServletConfig(); guiceServletConfig.initialize(baseConfig.withFallback(ConfigFactory.parseMap( ImmutableMap.of(ThrottlingGuiceServletConfig.LISTENING_PORT, port)))); return guiceServletConfig; }
public void initialize(Config config) { try { this._config = config; this._leaderFinder = getLeaderFinder(this._config); if (this._leaderFinder.isPresent()) { this._leaderFinder.get().startAsync(); this._leaderFinder.get().awaitRunning(100, TimeUnit.SECONDS); } this._injector = createInjector(this._config, this._leaderFinder); } catch (URISyntaxException | IOException | TimeoutException exc) { log.error(String.format("Error in %s initialization.", ThrottlingGuiceServletConfig.class.getSimpleName()), exc); throw new RuntimeException(exc); } }
@Test public void test() { ThrottlingGuiceServletConfig guiceServletConfig = new ThrottlingGuiceServletConfig(); guiceServletConfig.initialize(ConfigFactory.empty()); Injector injector = guiceServletConfig.getInjector(); LimiterServerResource limiterServer = injector.getInstance(LimiterServerResource.class); PermitRequest request = new PermitRequest(); request.setPermits(10); request.setResource("myResource"); PermitAllocation allocation = limiterServer.getSync(new ComplexResourceKey<>(request, new EmptyRecord())); Assert.assertTrue(allocation.getPermits() >= 10); }
@Test public void test() { ThrottlingGuiceServletConfig guiceServletConfig = new ThrottlingGuiceServletConfig(); ThrottlingPolicyFactory factory = new ThrottlingPolicyFactory(); SharedLimiterKey res1key = new SharedLimiterKey("res1"); Map<String, String> configMap = avro.shaded.com.google.common.collect.ImmutableMap.<String, String>builder() .put(BrokerConfigurationKeyGenerator.generateKey(factory, res1key, null, ThrottlingPolicyFactory.POLICY_KEY), CountBasedPolicy.FACTORY_ALIAS) .put(BrokerConfigurationKeyGenerator.generateKey(factory, res1key, null, CountBasedPolicy.COUNT_KEY), "100") .build(); guiceServletConfig.initialize(ConfigFactory.parseMap(configMap)); Injector injector = guiceServletConfig.getInjector(); PoliciesResource policiesResource = injector.getInstance(PoliciesResource.class); Policy policy = policiesResource.get("res1"); Assert.assertEquals(policy.getPolicyName(), CountBasedPolicy.class.getSimpleName()); Assert.assertEquals(policy.getResource(), "res1"); Assert.assertEquals(policy.getParameters().get("maxPermits"), "100"); guiceServletConfig.close(); }
@Override public void contextInitialized(ServletContextEvent servletContextEvent) { ServletContext context = servletContextEvent.getServletContext(); Enumeration<String> parameters = context.getInitParameterNames(); Map<String, String> configMap = Maps.newHashMap(); while (parameters.hasMoreElements()) { String key = parameters.nextElement(); configMap.put(key, context.getInitParameter(key)); } initialize(ConfigFactory.parseMap(configMap)); super.contextInitialized(servletContextEvent); }
private PermitAllocation sendRequestToServer(ThrottlingGuiceServletConfig guiceServletConfig, long permits) { return guiceServletConfig.getLimiterResource() .getSync(new ComplexResourceKey<>(createPermitRequest(10), new EmptyRecord())); }
private RestliServer createAndStartServer(Config baseConfig, int port) { ThrottlingGuiceServletConfig guiceServletConfig = new ThrottlingGuiceServletConfig(); guiceServletConfig.initialize(baseConfig.withFallback(ConfigFactory.parseMap(ImmutableMap.of( ThrottlingGuiceServletConfig.LISTENING_PORT, Integer.toString(port) )))); Injector injector = guiceServletConfig.getInjector(); EmbeddedRestliServer server = EmbeddedRestliServer.builder() .resources(Lists.<Class<? extends BaseResource>>newArrayList(LimiterServerResource.class)) .injector(injector) .port(port) .build(); server.startAsync(); server.awaitRunning(); return new RestliServer(server, guiceServletConfig); }
@Override public void contextInitialized(ServletContextEvent servletContextEvent) { ServletContext context = servletContextEvent.getServletContext(); Enumeration<String> parameters = context.getInitParameterNames(); Map<String, String> configMap = Maps.newHashMap(); while (parameters.hasMoreElements()) { String key = parameters.nextElement(); configMap.put(key, context.getInitParameter(key)); } initialize(ConfigFactory.parseMap(configMap)); super.contextInitialized(servletContextEvent); }
Long.toString(targetQps)); ThrottlingGuiceServletConfig guiceServletConfig = new ThrottlingGuiceServletConfig(); guiceServletConfig.initialize(ConfigFactory.parseMap(configMap)); LimiterServerResource limiterServer = guiceServletConfig.getInjector().getInstance(LimiterServerResource.class); guiceServletConfig.getInjector().getInstance(Key.get(SharedResourcesBroker.class, Names.named(LimiterServerResource.BROKER_INJECT_NAME))); ThrottlingPolicy policy = (ThrottlingPolicy) broker.getSharedResource(new ThrottlingPolicyFactory(), new SharedLimiterKey(resourceLimited));
public void close() { this.server.stopAsync(); this.server.awaitTerminated(); this.guiceServletConfig.close(); } }
public void initialize(Config config) { try { this._config = config; this._leaderFinder = getLeaderFinder(this._config); if (this._leaderFinder.isPresent()) { this._leaderFinder.get().startAsync(); this._leaderFinder.get().awaitRunning(100, TimeUnit.SECONDS); } this._injector = createInjector(this._config, this._leaderFinder); } catch (URISyntaxException | IOException | TimeoutException exc) { log.error(String.format("Error in %s initialization.", ThrottlingGuiceServletConfig.class.getSimpleName()), exc); throw new RuntimeException(exc); } }
@Test public void testMetrics() throws Exception { ThrottlingGuiceServletConfig guiceServletConfig = new ThrottlingGuiceServletConfig(); guiceServletConfig.initialize(ConfigFactory.empty()); Injector injector = guiceServletConfig.getInjector(); LimiterServerResource limiterServer = injector.getInstance(LimiterServerResource.class); PermitRequest request = new PermitRequest(); request.setPermits(10); request.setResource("myResource"); limiterServer.getSync(new ComplexResourceKey<>(request, new EmptyRecord())); limiterServer.getSync(new ComplexResourceKey<>(request, new EmptyRecord())); limiterServer.getSync(new ComplexResourceKey<>(request, new EmptyRecord())); MetricContext metricContext = limiterServer.metricContext; Timer timer = metricContext.timer(LimiterServerResource.REQUEST_TIMER_NAME); Assert.assertEquals(timer.getCount(), 3); }
@Test public void test() throws Exception { try(Closer closer = Closer.create()) { Map<String, String> configMap = Maps.newHashMap(); TestingServer zkTestingServer = closer.register(new TestingServer(-1)); configMap.put(ThrottlingGuiceServletConfig.ZK_STRING_KEY, zkTestingServer.getConnectString()); configMap.put(ThrottlingGuiceServletConfig.HA_CLUSTER_NAME, TestFailover.class.getSimpleName() + "_cluster"); Config config = ConfigFactory.parseMap(configMap); ThrottlingGuiceServletConfig server2001 = createServerAtPort(config, 2001); PermitAllocation allocation = sendRequestToServer(server2001, 10); Assert.assertTrue(allocation.getPermits() >= 1); ThrottlingGuiceServletConfig server2002 = createServerAtPort(config, 2002); allocation = sendRequestToServer(server2001, 10); Assert.assertTrue(allocation.getPermits() >= 1); try { sendRequestToServer(server2002, 10); Assert.fail(); } catch (RestLiServiceException exc) { Assert.assertTrue(exc.hasErrorDetails()); Assert.assertTrue(exc.getErrorDetails().containsKey(LimiterServerResource.LOCATION_301)); Assert.assertEquals(new URI(exc.getErrorDetails().get(LimiterServerResource.LOCATION_301).toString()).getPort(), 2001); } server2001.close(); allocation = sendRequestToServer(server2002, 10); Assert.assertTrue(allocation.getPermits() >= 1); } }
.build(); ThrottlingGuiceServletConfig guiceServletConfig = new ThrottlingGuiceServletConfig(); guiceServletConfig.initialize(ConfigFactory.parseMap(configMap)); Injector injector = guiceServletConfig.getInjector();
@Override public void contextDestroyed(ServletContextEvent servletContextEvent) { close(); super.contextDestroyed(servletContextEvent); }
.build(); ThrottlingGuiceServletConfig guiceServletConfig = new ThrottlingGuiceServletConfig(); guiceServletConfig.initialize(ConfigFactory.parseMap(configMap)); Injector injector = guiceServletConfig.getInjector();
.build(); ThrottlingGuiceServletConfig guiceServletConfig = new ThrottlingGuiceServletConfig(); guiceServletConfig.initialize(ConfigFactory.parseMap(configMap)); Injector injector = guiceServletConfig.getInjector();