use of com.netflix.titus.api.loadbalancer.model.LoadBalancerTarget in project titus-control-plane by Netflix.
the class DefaultLoadBalancerServiceTest method backfillsCurrentTargetsToStore.
@Test(timeout = 30_000)
public void backfillsCurrentTargetsToStore() {
String jobId = UUID.randomUUID().toString();
String associatedId = "lb-" + UUID.randomUUID().toString();
String dissociatedId = "lb-" + UUID.randomUUID().toString();
String removedId = "lb-" + UUID.randomUUID().toString();
LoadBalancerConfiguration configuration = LoadBalancerTests.mockConfiguration(MIN_TIME_IN_QUEUE_MS);
when(configuration.isTargetsToStoreBackfillEnabled()).thenReturn(true);
when(configuration.getStoreBackfillConcurrencyLimit()).thenReturn(10);
when(configuration.getStoreBackfillTimeoutMs()).thenReturn(5000L);
// current load balancer state (targets)
when(client.getLoadBalancer(associatedId)).thenReturn(Single.just(new LoadBalancer(associatedId, LoadBalancer.State.ACTIVE, CollectionsExt.asSet("1.1.1.1", "2.2.2.2", "3.3.3.3"))));
when(client.getLoadBalancer(dissociatedId)).thenReturn(Single.just(new LoadBalancer(dissociatedId, LoadBalancer.State.ACTIVE, CollectionsExt.asSet("4.4.4.4", "5.5.5.5", "6.6.6.6"))));
when(client.getLoadBalancer(removedId)).thenReturn(Single.just(new LoadBalancer(removedId, LoadBalancer.State.REMOVED, Collections.emptySet())));
// current load balancers we are managing
loadBalancerStore.addOrUpdateLoadBalancer(new JobLoadBalancer(jobId, associatedId), JobLoadBalancer.State.ASSOCIATED).await();
loadBalancerStore.addOrUpdateLoadBalancer(new JobLoadBalancer(jobId, dissociatedId), JobLoadBalancer.State.DISSOCIATED).await();
loadBalancerStore.addOrUpdateLoadBalancer(new JobLoadBalancer(jobId, removedId), JobLoadBalancer.State.ASSOCIATED).await();
DefaultLoadBalancerService service = new DefaultLoadBalancerService(runtime, configuration, client, loadBalancerStore, loadBalancerJobOperations, reconciler, validator, testScheduler);
service.backfillTargetsToStore();
assertThat(loadBalancerStore.getLoadBalancerTargets(associatedId).collectList().block()).containsExactlyInAnyOrder(new LoadBalancerTargetState(new LoadBalancerTarget(associatedId, "BACKFILLED", "1.1.1.1"), REGISTERED), new LoadBalancerTargetState(new LoadBalancerTarget(associatedId, "BACKFILLED", "2.2.2.2"), REGISTERED), new LoadBalancerTargetState(new LoadBalancerTarget(associatedId, "BACKFILLED", "3.3.3.3"), REGISTERED));
assertThat(loadBalancerStore.getLoadBalancerTargets(dissociatedId).collectList().block()).containsExactlyInAnyOrder(new LoadBalancerTargetState(new LoadBalancerTarget(dissociatedId, "BACKFILLED", "4.4.4.4"), REGISTERED), new LoadBalancerTargetState(new LoadBalancerTarget(dissociatedId, "BACKFILLED", "5.5.5.5"), REGISTERED), new LoadBalancerTargetState(new LoadBalancerTarget(dissociatedId, "BACKFILLED", "6.6.6.6"), REGISTERED));
assertThat(loadBalancerStore.getLoadBalancerTargets(removedId).collectList().block()).isEmpty();
}
Aggregations