use of com.hotels.styx.api.configuration.Configuration.MapBackedConfiguration in project styx by ExpediaGroup.
the class StyxBackendServiceClientFactoryTest method usesTheOriginSpecifiedInTheOriginsRestrictionCookie.
@Test
public void usesTheOriginSpecifiedInTheOriginsRestrictionCookie() {
MapBackedConfiguration config = new MapBackedConfiguration();
config.set("originRestrictionCookie", ORIGINS_RESTRICTION_COOKIE);
environment = new Environment.Builder().registry(new MicrometerRegistry(new SimpleMeterRegistry())).configuration(new StyxConfig(config)).build();
BackendService backendService = newBackendServiceBuilder().origins(newOriginBuilder("localhost", 9091).id("x").build(), newOriginBuilder("localhost", 9092).id("y").build(), newOriginBuilder("localhost", 9093).id("z").build()).build();
BackendServiceClient styxBackendServiceClient = new StyxBackendServiceClientFactory(environment).createClient(backendService, newOriginsInventoryBuilder(environment.centralisedMetrics(), backendService).hostClientFactory((pool) -> {
if (pool.getOrigin().id().equals(id("x"))) {
return hostClient(response(OK).header("X-Origin-Id", "x").build());
} else if (pool.getOrigin().id().equals(id("y"))) {
return hostClient(response(OK).header("X-Origin-Id", "y").build());
} else {
return hostClient(response(OK).header("X-Origin-Id", "z").build());
}
}).build(), new CachingOriginStatsFactory(environment.centralisedMetrics()));
LiveHttpRequest requestz = get("/some-req").cookies(requestCookie(ORIGINS_RESTRICTION_COOKIE, id("z").toString())).build();
LiveHttpRequest requestx = get("/some-req").cookies(requestCookie(ORIGINS_RESTRICTION_COOKIE, id("x").toString())).build();
LiveHttpRequest requesty = get("/some-req").cookies(requestCookie(ORIGINS_RESTRICTION_COOKIE, id("y").toString())).build();
LiveHttpResponse responsez = Mono.from(styxBackendServiceClient.sendRequest(requestz, requestContext())).block();
LiveHttpResponse responsex = Mono.from(styxBackendServiceClient.sendRequest(requestx, requestContext())).block();
LiveHttpResponse responsey = Mono.from(styxBackendServiceClient.sendRequest(requesty, requestContext())).block();
assertThat(responsex.header("X-Origin-Id").get(), is("x"));
assertThat(responsey.header("X-Origin-Id").get(), is("y"));
assertThat(responsez.header("X-Origin-Id").get(), is("z"));
}
use of com.hotels.styx.api.configuration.Configuration.MapBackedConfiguration in project styx by ExpediaGroup.
the class RetryPolicyFactoryTest method shouldCreateRetryPolicyAccordingToConfiguration.
@Test
public void shouldCreateRetryPolicyAccordingToConfiguration() {
Configuration configuration = new MapBackedConfiguration().set("count", 2);
RetryPolicy retryPolicy = new RetryPolicyFactory().create(environment, configuration);
assertThat(retryPolicy, is(instanceOf(RetryNTimes.class)));
assertThat(((RetryNTimes) retryPolicy).maxAttempts(), is(2));
}
use of com.hotels.styx.api.configuration.Configuration.MapBackedConfiguration in project styx by ExpediaGroup.
the class ResponseInfoFormatTest method canConfigureCustomHeaderFormatWithVersion.
@Test
public void canConfigureCustomHeaderFormatWithVersion() {
StyxHeaderConfig styxHeaderConfig = new StyxHeaderConfig(new StyxHeaderConfig.StyxHeader(null, "{VERSION};{REQUEST_ID};{INSTANCE}"), null, null);
Environment environment = environment(new MapBackedConfiguration().set("styxHeaders", styxHeaderConfig));
String info = new ResponseInfoFormat(environment).format(request);
assertThat(info, is("STYX-dev.0.0;" + request.id() + ";noJvmRouteSet"));
}
use of com.hotels.styx.api.configuration.Configuration.MapBackedConfiguration in project styx by ExpediaGroup.
the class StyxServerTest method styxConfig.
private static StyxConfig styxConfig() {
ProxyServerConfig proxyConfig = new ProxyServerConfig.Builder().setHttpConnector(new HttpConnectorConfig(0)).build();
AdminServerConfig adminConfig = new AdminServerConfig.Builder().setHttpConnector(new HttpConnectorConfig(0)).build();
Configuration config = new MapBackedConfiguration(EMPTY_CONFIGURATION).set("admin", adminConfig).set("proxy", proxyConfig);
return new StyxConfig(config);
}
Aggregations