use of com.hotels.styx.api.extension.Origin in project styx by ExpediaGroup.
the class OriginsInventoryTest method stopsMonitoringRemovedOrigins.
@Test
public void stopsMonitoringRemovedOrigins() {
Origin originV1 = newOriginBuilder("acme01.com", 80).applicationId(GENERIC_APP).id("acme-01").build();
Origin originV2 = newOriginBuilder("acme02.com", 80).applicationId(GENERIC_APP).id("acme-02").build();
inventory.setOrigins(originV1, originV2);
verify(monitor).monitor(singleton(originV1));
verify(monitor).monitor(singleton(originV2));
inventory.setOrigins(originV1);
verify(monitor).stopMonitoring(singleton(originV2));
}
use of com.hotels.styx.api.extension.Origin in project styx by ExpediaGroup.
the class StyxBackendServiceClientTest method hostHeaderIsOverwrittenWhenOverrideHostHeaderIsTrue.
@Test
public void hostHeaderIsOverwrittenWhenOverrideHostHeaderIsTrue() {
HttpInterceptor.Context requestContext = requestContext();
StyxHostHttpClient hostClient = mock(StyxHostHttpClient.class);
HttpHandler httpHandler = mock(HttpHandler.class);
Origin origin = newOriginBuilder(updatedHostName, 9090).applicationId(GENERIC_APP).build();
RemoteHost remoteHost = remoteHost(origin, httpHandler, hostClient);
LoadBalancer loadBalancer = mockLoadBalancer(Optional.of(remoteHost));
when(httpHandler.handle(any(), any())).thenReturn(Eventual.of(testResponse));
StyxBackendServiceClient styxHttpClient = new StyxBackendServiceClient.Builder(backendService.id()).originStatsFactory(mock(OriginStatsFactory.class)).originsRestrictionCookieName("someCookie").originIdHeader("origin-id").loadBalancer(loadBalancer).retryPolicy(new RetryNTimes(0)).metrics(metrics).overrideHostHeader(true).build();
styxHttpClient.sendRequest(testRequest, requestContext);
ArgumentCaptor<LiveHttpRequest> updatedRequest = ArgumentCaptor.forClass(LiveHttpRequest.class);
verify(httpHandler).handle(updatedRequest.capture(), eq(requestContext));
assertThat(updatedRequest.getValue().header(HttpHeaderNames.HOST).get(), is(updatedHostName));
}
use of com.hotels.styx.api.extension.Origin in project styx by ExpediaGroup.
the class StyxBackendServiceClientTest method prefersStickyOrigins.
@Test
public void prefersStickyOrigins() {
Origin origin = originWithId("localhost:234", "App-X", "Origin-Y");
StyxHostHttpClient hostClient = mockHostClient(Flux.just(response(OK).build()));
LoadBalancer loadBalancer = mockLoadBalancer(Optional.of(remoteHost(origin, toHandler(hostClient), hostClient)));
StyxBackendServiceClient styxHttpClient = new StyxBackendServiceClient.Builder(backendService.id()).loadBalancer(loadBalancer).metrics(metrics).build();
LiveHttpResponse response = Mono.from(styxHttpClient.sendRequest(get("/foo").cookies(requestCookie("styx_origin_" + Id.GENERIC_APP, "Origin-Y")).build(), requestContext())).block();
assertThat(response.status(), is(OK));
ArgumentCaptor<LoadBalancer.Preferences> argCaptor = ArgumentCaptor.forClass(LoadBalancer.Preferences.class);
verify(loadBalancer).choose(argCaptor.capture());
assertThat(argCaptor.getValue().preferredOrigins(), is(Optional.of("Origin-Y")));
}
use of com.hotels.styx.api.extension.Origin in project styx by ExpediaGroup.
the class StyxBackendServiceClientTest method prefersRestrictedOrigins.
@Test
public void prefersRestrictedOrigins() {
Origin origin = originWithId("localhost:234", "App-X", "Origin-Y");
StyxHostHttpClient hostClient = mockHostClient(Flux.just(response(OK).build()));
LoadBalancer loadBalancer = mockLoadBalancer(Optional.of(remoteHost(origin, toHandler(hostClient), hostClient)));
StyxBackendServiceClient styxHttpClient = new StyxBackendServiceClient.Builder(backendService.id()).loadBalancer(loadBalancer).metrics(metrics).originsRestrictionCookieName("restrictedOrigin").build();
LiveHttpResponse response = Mono.from(styxHttpClient.sendRequest(get("/foo").cookies(requestCookie("restrictedOrigin", "Origin-Y")).build(), requestContext())).block();
assertThat(response.status(), is(OK));
ArgumentCaptor<LoadBalancer.Preferences> argCaptor = ArgumentCaptor.forClass(LoadBalancer.Preferences.class);
verify(loadBalancer).choose(argCaptor.capture());
assertThat(argCaptor.getValue().preferredOrigins(), is(Optional.of("Origin-Y")));
}
use of com.hotels.styx.api.extension.Origin in project styx by ExpediaGroup.
the class StyxBackendServiceClientTest method prefersRestrictedOriginsOverStickyOriginsWhenBothAreConfigured.
@Test
public void prefersRestrictedOriginsOverStickyOriginsWhenBothAreConfigured() {
Origin origin = originWithId("localhost:234", "App-X", "Origin-Y");
StyxHostHttpClient hostClient = mockHostClient(Flux.just(response(OK).build()));
LoadBalancer loadBalancer = mockLoadBalancer(Optional.of(remoteHost(origin, toHandler(hostClient), hostClient)));
StyxBackendServiceClient styxHttpClient = new StyxBackendServiceClient.Builder(backendService.id()).originsRestrictionCookieName("restrictedOrigin").loadBalancer(loadBalancer).metrics(metrics).build();
LiveHttpResponse response = Mono.from(styxHttpClient.sendRequest(get("/foo").cookies(requestCookie("restrictedOrigin", "Origin-Y"), requestCookie("styx_origin_" + Id.GENERIC_APP, "Origin-X")).build(), requestContext())).block();
assertThat(response.status(), is(OK));
ArgumentCaptor<LoadBalancer.Preferences> argPreferences = ArgumentCaptor.forClass(LoadBalancer.Preferences.class);
verify(loadBalancer).choose(argPreferences.capture());
assertThat(argPreferences.getValue().preferredOrigins(), is(Optional.of("Origin-Y")));
}
Aggregations