use of com.hotels.styx.client.OriginStatsFactory in project styx by ExpediaGroup.
the class StyxBackendServiceClientFactoryTest method createsClients.
@Test
public void createsClients() {
StyxBackendServiceClientFactory factory = new StyxBackendServiceClientFactory(environment);
OriginsInventory originsInventory = newOriginsInventoryBuilder(backendService.id()).metrics(environment.centralisedMetrics()).connectionPoolFactory(simplePoolFactory()).initialOrigins(backendService.origins()).build();
OriginStatsFactory originStatsFactory = mock(OriginStatsFactory.class);
BackendServiceClient client = factory.createClient(backendService, originsInventory, originStatsFactory);
assertThat(client, is(instanceOf(StyxBackendServiceClient.class)));
// note: for more meaningful tests, perhaps we need to add package-private accessor methods to StyxBackendServiceClient
// there is also the issue that the Transport class assumes it will get a NettyConnection, so mocks can't be used
// these problems are both outside the scope of the current issue being implemented
// so for the time being, this test is mostly a placeholder
}
use of com.hotels.styx.client.OriginStatsFactory in project styx by ExpediaGroup.
the class BackendServicesRouter method onChange.
@Override
public void onChange(Registry.Changes<BackendService> changes) {
changes.removed().forEach(backendService -> routes.remove(backendService.path()).close());
concatenatedForEach(changes.added(), changes.updated(), backendService -> {
ProxyToClientPipeline pipeline = routes.get(backendService.path());
if (pipeline != null) {
pipeline.close();
}
boolean requestLoggingEnabled = environment.styxConfig().get("request-logging.outbound.enabled", Boolean.class).orElse(false);
boolean longFormat = environment.styxConfig().get("request-logging.outbound.longFormat", Boolean.class).orElse(false);
OriginStatsFactory originStatsFactory = new CachingOriginStatsFactory(environment.centralisedMetrics());
ConnectionPoolSettings poolSettings = backendService.connectionPoolConfig();
Connection.Factory connectionFactory = connectionFactory(backendService, requestLoggingEnabled, longFormat, originStatsFactory, poolSettings.connectionExpirationSeconds());
ConnectionPool.Factory connectionPoolFactory = new SimpleConnectionPoolFactory.Builder().connectionFactory(connectionFactory).connectionPoolSettings(backendService.connectionPoolConfig()).metrics(environment.centralisedMetrics()).build();
OriginHealthStatusMonitor healthStatusMonitor = healthStatusMonitor(backendService);
OriginsInventory inventory = new OriginsInventory.Builder(backendService.id()).eventBus(environment.eventBus()).metrics(environment.centralisedMetrics()).connectionPoolFactory(connectionPoolFactory).originHealthMonitor(healthStatusMonitor).initialOrigins(backendService.origins()).hostClientFactory(StyxHostHttpClient::create).build();
pipeline = new ProxyToClientPipeline(newClientHandler(backendService, inventory, originStatsFactory), () -> {
inventory.close();
healthStatusMonitor.stop();
});
routes.put(backendService.path(), pipeline);
LOG.info("added path={} current routes={}", backendService.path(), routes.keySet());
});
}
Aggregations