Search in sources :

Example 16 with LoadBalancerTarget

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();
}
Also used : JobLoadBalancer(com.netflix.titus.api.loadbalancer.model.JobLoadBalancer) LoadBalancer(com.netflix.titus.api.connector.cloud.LoadBalancer) LoadBalancerTargetState(com.netflix.titus.api.loadbalancer.model.LoadBalancerTargetState) JobLoadBalancer(com.netflix.titus.api.loadbalancer.model.JobLoadBalancer) LoadBalancerTarget(com.netflix.titus.api.loadbalancer.model.LoadBalancerTarget) Test(org.junit.Test)

Aggregations

LoadBalancerTarget (com.netflix.titus.api.loadbalancer.model.LoadBalancerTarget)16 JobLoadBalancer (com.netflix.titus.api.loadbalancer.model.JobLoadBalancer)14 LoadBalancerTargetState (com.netflix.titus.api.loadbalancer.model.LoadBalancerTargetState)14 Test (org.junit.Test)14 JobLoadBalancerState (com.netflix.titus.api.loadbalancer.model.JobLoadBalancerState)13 LoadBalancer (com.netflix.titus.api.connector.cloud.LoadBalancer)11 Task (com.netflix.titus.api.jobmanager.model.job.Task)9 Collections (java.util.Collections)8 List (java.util.List)8 TimeUnit (java.util.concurrent.TimeUnit)8 Collectors (java.util.stream.Collectors)8 LoadBalancerConnector (com.netflix.titus.api.connector.cloud.LoadBalancerConnector)7 JobManagerException (com.netflix.titus.api.jobmanager.service.JobManagerException)7 LoadBalancerStore (com.netflix.titus.api.loadbalancer.store.LoadBalancerStore)7 CollectionsExt (com.netflix.titus.common.util.CollectionsExt)7 Set (java.util.Set)7 UUID (java.util.UUID)7 Assertions.assertThat (org.assertj.core.api.Assertions.assertThat)7 Mockito.mock (org.mockito.Mockito.mock)7 Mockito.when (org.mockito.Mockito.when)7