Search in sources :

Example 6 with AssignmentConfigs

use of org.apache.kafka.streams.processor.internals.assignment.AssignorConfiguration.AssignmentConfigs in project kafka by apache.

the class HighAvailabilityTaskAssignorTest method shouldAssignWarmUpTasksIfStatefulActiveTasksBalancedOverStreamThreadsButNotOverClients.

@Test
public void shouldAssignWarmUpTasksIfStatefulActiveTasksBalancedOverStreamThreadsButNotOverClients() {
    final Set<TaskId> allTaskIds = mkSet(TASK_0_0, TASK_0_1, TASK_1_0, TASK_1_1);
    final Map<TaskId, Long> lagsForCaughtUpClient = allTaskIds.stream().collect(Collectors.toMap(k -> k, k -> 0L));
    final Map<TaskId, Long> lagsForNotCaughtUpClient = allTaskIds.stream().collect(Collectors.toMap(k -> k, k -> Long.MAX_VALUE));
    final ClientState caughtUpClientState = new ClientState(allTaskIds, emptySet(), lagsForCaughtUpClient, 5);
    final ClientState notCaughtUpClientState1 = new ClientState(emptySet(), emptySet(), lagsForNotCaughtUpClient, 5);
    final ClientState notCaughtUpClientState2 = new ClientState(emptySet(), emptySet(), lagsForNotCaughtUpClient, 5);
    final Map<UUID, ClientState> clientStates = getClientStatesMap(caughtUpClientState, notCaughtUpClientState1, notCaughtUpClientState2);
    final boolean unstable = new HighAvailabilityTaskAssignor().assign(clientStates, allTaskIds, allTaskIds, new AssignmentConfigs(0L, allTaskIds.size() / 3 + 1, 0, 60_000L));
    assertThat(unstable, is(true));
    assertThat(notCaughtUpClientState1.standbyTaskCount(), greaterThanOrEqualTo(allTaskIds.size() / 3));
    assertThat(notCaughtUpClientState2.standbyTaskCount(), greaterThanOrEqualTo(allTaskIds.size() / 3));
    assertValidAssignment(0, allTaskIds.size() / 3 + 1, allTaskIds, emptySet(), clientStates, new StringBuilder());
}
Also used : TaskId(org.apache.kafka.streams.processor.TaskId) AssignmentConfigs(org.apache.kafka.streams.processor.internals.assignment.AssignorConfiguration.AssignmentConfigs) CoreMatchers.equalTo(org.hamcrest.CoreMatchers.equalTo) Matchers.not(org.hamcrest.Matchers.not) HashMap(java.util.HashMap) HashSet(java.util.HashSet) Utils.mkMap(org.apache.kafka.common.utils.Utils.mkMap) AssignmentTestUtils.analyzeTaskAssignmentBalance(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.analyzeTaskAssignmentBalance) Collections.singleton(java.util.Collections.singleton) Map(java.util.Map) AssignmentTestUtils.hasStandbyTasks(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.hasStandbyTasks) Collections.singletonMap(java.util.Collections.singletonMap) Assert.fail(org.junit.Assert.fail) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) UUID_1(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.UUID_1) AssignmentTestUtils.hasAssignedTasks(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.hasAssignedTasks) UUID_3(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.UUID_3) AssignmentTestUtils.assertValidAssignment(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.assertValidAssignment) UUID_2(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.UUID_2) Matchers.empty(org.hamcrest.Matchers.empty) Matchers.greaterThanOrEqualTo(org.hamcrest.Matchers.greaterThanOrEqualTo) Collections.emptySet(java.util.Collections.emptySet) TASK_0_0(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_0) Utils.mkSet(org.apache.kafka.common.utils.Utils.mkSet) TASK_0_1(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_1) TASK_1_1(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_1_1) TASK_2_0(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_2_0) Set(java.util.Set) TASK_0_2(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_2) TASK_1_0(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_1_0) Test(org.junit.Test) TASK_0_3(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_3) TASK_1_3(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_1_3) TASK_2_2(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_2_2) UUID(java.util.UUID) TASK_1_2(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_1_2) TASK_2_1(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_2_1) AssignmentTestUtils.assertBalancedActiveAssignment(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.assertBalancedActiveAssignment) Collectors(java.util.stream.Collectors) EMPTY_TASKS(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.EMPTY_TASKS) AssignmentTestUtils.getClientStatesMap(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.getClientStatesMap) Utils.mkEntry(org.apache.kafka.common.utils.Utils.mkEntry) AssignmentTestUtils.assertBalancedStatefulAssignment(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.assertBalancedStatefulAssignment) Matchers.is(org.hamcrest.Matchers.is) AssignmentTestUtils.hasActiveTasks(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.hasActiveTasks) AssignmentTestUtils.assertBalancedTasks(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.assertBalancedTasks) TaskId(org.apache.kafka.streams.processor.TaskId) AssignmentConfigs(org.apache.kafka.streams.processor.internals.assignment.AssignorConfiguration.AssignmentConfigs) UUID(java.util.UUID) Test(org.junit.Test)

Example 7 with AssignmentConfigs

use of org.apache.kafka.streams.processor.internals.assignment.AssignorConfiguration.AssignmentConfigs in project kafka by apache.

the class HighAvailabilityTaskAssignorTest method shouldEvenlyAssignActiveStatefulTasksIfClientsAreWarmedUpToBalanceTaskOverClients.

@Test
public void shouldEvenlyAssignActiveStatefulTasksIfClientsAreWarmedUpToBalanceTaskOverClients() {
    final Set<TaskId> allTaskIds = mkSet(TASK_0_0, TASK_0_1, TASK_1_0, TASK_1_1);
    final Set<TaskId> warmedUpTaskIds1 = mkSet(TASK_0_1);
    final Set<TaskId> warmedUpTaskIds2 = mkSet(TASK_1_0);
    final Map<TaskId, Long> lagsForCaughtUpClient = allTaskIds.stream().collect(Collectors.toMap(k -> k, k -> 0L));
    final Map<TaskId, Long> lagsForWarmedUpClient1 = allTaskIds.stream().collect(Collectors.toMap(k -> k, k -> Long.MAX_VALUE));
    lagsForWarmedUpClient1.put(TASK_0_1, 0L);
    final Map<TaskId, Long> lagsForWarmedUpClient2 = allTaskIds.stream().collect(Collectors.toMap(k -> k, k -> Long.MAX_VALUE));
    lagsForWarmedUpClient2.put(TASK_1_0, 0L);
    final ClientState caughtUpClientState = new ClientState(allTaskIds, emptySet(), lagsForCaughtUpClient, 5);
    final ClientState warmedUpClientState1 = new ClientState(emptySet(), warmedUpTaskIds1, lagsForWarmedUpClient1, 5);
    final ClientState warmedUpClientState2 = new ClientState(emptySet(), warmedUpTaskIds2, lagsForWarmedUpClient2, 5);
    final Map<UUID, ClientState> clientStates = getClientStatesMap(caughtUpClientState, warmedUpClientState1, warmedUpClientState2);
    final boolean unstable = new HighAvailabilityTaskAssignor().assign(clientStates, allTaskIds, allTaskIds, new AssignmentConfigs(0L, allTaskIds.size() / 3 + 1, 0, 60_000L));
    assertThat(unstable, is(false));
    assertValidAssignment(0, allTaskIds, emptySet(), clientStates, new StringBuilder());
    assertBalancedActiveAssignment(clientStates, new StringBuilder());
    assertBalancedStatefulAssignment(allTaskIds, clientStates, new StringBuilder());
    assertBalancedTasks(clientStates);
}
Also used : TaskId(org.apache.kafka.streams.processor.TaskId) AssignmentConfigs(org.apache.kafka.streams.processor.internals.assignment.AssignorConfiguration.AssignmentConfigs) CoreMatchers.equalTo(org.hamcrest.CoreMatchers.equalTo) Matchers.not(org.hamcrest.Matchers.not) HashMap(java.util.HashMap) HashSet(java.util.HashSet) Utils.mkMap(org.apache.kafka.common.utils.Utils.mkMap) AssignmentTestUtils.analyzeTaskAssignmentBalance(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.analyzeTaskAssignmentBalance) Collections.singleton(java.util.Collections.singleton) Map(java.util.Map) AssignmentTestUtils.hasStandbyTasks(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.hasStandbyTasks) Collections.singletonMap(java.util.Collections.singletonMap) Assert.fail(org.junit.Assert.fail) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) UUID_1(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.UUID_1) AssignmentTestUtils.hasAssignedTasks(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.hasAssignedTasks) UUID_3(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.UUID_3) AssignmentTestUtils.assertValidAssignment(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.assertValidAssignment) UUID_2(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.UUID_2) Matchers.empty(org.hamcrest.Matchers.empty) Matchers.greaterThanOrEqualTo(org.hamcrest.Matchers.greaterThanOrEqualTo) Collections.emptySet(java.util.Collections.emptySet) TASK_0_0(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_0) Utils.mkSet(org.apache.kafka.common.utils.Utils.mkSet) TASK_0_1(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_1) TASK_1_1(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_1_1) TASK_2_0(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_2_0) Set(java.util.Set) TASK_0_2(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_2) TASK_1_0(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_1_0) Test(org.junit.Test) TASK_0_3(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_3) TASK_1_3(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_1_3) TASK_2_2(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_2_2) UUID(java.util.UUID) TASK_1_2(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_1_2) TASK_2_1(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_2_1) AssignmentTestUtils.assertBalancedActiveAssignment(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.assertBalancedActiveAssignment) Collectors(java.util.stream.Collectors) EMPTY_TASKS(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.EMPTY_TASKS) AssignmentTestUtils.getClientStatesMap(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.getClientStatesMap) Utils.mkEntry(org.apache.kafka.common.utils.Utils.mkEntry) AssignmentTestUtils.assertBalancedStatefulAssignment(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.assertBalancedStatefulAssignment) Matchers.is(org.hamcrest.Matchers.is) AssignmentTestUtils.hasActiveTasks(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.hasActiveTasks) AssignmentTestUtils.assertBalancedTasks(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.assertBalancedTasks) TaskId(org.apache.kafka.streams.processor.TaskId) AssignmentConfigs(org.apache.kafka.streams.processor.internals.assignment.AssignorConfiguration.AssignmentConfigs) UUID(java.util.UUID) Test(org.junit.Test)

Example 8 with AssignmentConfigs

use of org.apache.kafka.streams.processor.internals.assignment.AssignorConfiguration.AssignmentConfigs in project kafka by apache.

the class HighAvailabilityTaskAssignorTest method shouldAssignActiveStatefulTasksEvenlyOverClientsWhereNumberOfClientsNotIntegralDivisorOfNumberOfTasks.

@Test
public void shouldAssignActiveStatefulTasksEvenlyOverClientsWhereNumberOfClientsNotIntegralDivisorOfNumberOfTasks() {
    final Set<TaskId> allTaskIds = mkSet(TASK_0_0, TASK_0_1, TASK_0_2, TASK_1_0, TASK_1_1, TASK_1_2, TASK_2_0, TASK_2_1, TASK_2_2);
    final Map<TaskId, Long> lags = allTaskIds.stream().collect(Collectors.toMap(k -> k, k -> 10L));
    final ClientState clientState1 = new ClientState(emptySet(), emptySet(), lags, 1);
    final ClientState clientState2 = new ClientState(emptySet(), emptySet(), lags, 1);
    final Map<UUID, ClientState> clientStates = getClientStatesMap(clientState1, clientState2);
    final boolean unstable = new HighAvailabilityTaskAssignor().assign(clientStates, allTaskIds, allTaskIds, new AssignmentConfigs(0L, 1, 0, 60_000L));
    assertThat(unstable, is(false));
    assertValidAssignment(0, allTaskIds, emptySet(), clientStates, new StringBuilder());
    assertBalancedActiveAssignment(clientStates, new StringBuilder());
    assertBalancedStatefulAssignment(allTaskIds, clientStates, new StringBuilder());
    assertBalancedTasks(clientStates);
}
Also used : TaskId(org.apache.kafka.streams.processor.TaskId) AssignmentConfigs(org.apache.kafka.streams.processor.internals.assignment.AssignorConfiguration.AssignmentConfigs) CoreMatchers.equalTo(org.hamcrest.CoreMatchers.equalTo) Matchers.not(org.hamcrest.Matchers.not) HashMap(java.util.HashMap) HashSet(java.util.HashSet) Utils.mkMap(org.apache.kafka.common.utils.Utils.mkMap) AssignmentTestUtils.analyzeTaskAssignmentBalance(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.analyzeTaskAssignmentBalance) Collections.singleton(java.util.Collections.singleton) Map(java.util.Map) AssignmentTestUtils.hasStandbyTasks(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.hasStandbyTasks) Collections.singletonMap(java.util.Collections.singletonMap) Assert.fail(org.junit.Assert.fail) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) UUID_1(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.UUID_1) AssignmentTestUtils.hasAssignedTasks(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.hasAssignedTasks) UUID_3(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.UUID_3) AssignmentTestUtils.assertValidAssignment(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.assertValidAssignment) UUID_2(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.UUID_2) Matchers.empty(org.hamcrest.Matchers.empty) Matchers.greaterThanOrEqualTo(org.hamcrest.Matchers.greaterThanOrEqualTo) Collections.emptySet(java.util.Collections.emptySet) TASK_0_0(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_0) Utils.mkSet(org.apache.kafka.common.utils.Utils.mkSet) TASK_0_1(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_1) TASK_1_1(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_1_1) TASK_2_0(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_2_0) Set(java.util.Set) TASK_0_2(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_2) TASK_1_0(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_1_0) Test(org.junit.Test) TASK_0_3(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_3) TASK_1_3(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_1_3) TASK_2_2(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_2_2) UUID(java.util.UUID) TASK_1_2(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_1_2) TASK_2_1(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_2_1) AssignmentTestUtils.assertBalancedActiveAssignment(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.assertBalancedActiveAssignment) Collectors(java.util.stream.Collectors) EMPTY_TASKS(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.EMPTY_TASKS) AssignmentTestUtils.getClientStatesMap(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.getClientStatesMap) Utils.mkEntry(org.apache.kafka.common.utils.Utils.mkEntry) AssignmentTestUtils.assertBalancedStatefulAssignment(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.assertBalancedStatefulAssignment) Matchers.is(org.hamcrest.Matchers.is) AssignmentTestUtils.hasActiveTasks(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.hasActiveTasks) AssignmentTestUtils.assertBalancedTasks(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.assertBalancedTasks) TaskId(org.apache.kafka.streams.processor.TaskId) AssignmentConfigs(org.apache.kafka.streams.processor.internals.assignment.AssignorConfiguration.AssignmentConfigs) UUID(java.util.UUID) Test(org.junit.Test)

Example 9 with AssignmentConfigs

use of org.apache.kafka.streams.processor.internals.assignment.AssignorConfiguration.AssignmentConfigs in project kafka by apache.

the class HighAvailabilityTaskAssignorTest method shouldAssignActiveStatefulTasksEvenlyOverClientsWhereNumberOfClientsIntegralDivisorOfNumberOfTasks.

@Test
public void shouldAssignActiveStatefulTasksEvenlyOverClientsWhereNumberOfClientsIntegralDivisorOfNumberOfTasks() {
    final Set<TaskId> allTaskIds = mkSet(TASK_0_0, TASK_0_1, TASK_0_2, TASK_1_0, TASK_1_1, TASK_1_2, TASK_2_0, TASK_2_1, TASK_2_2);
    final Map<TaskId, Long> lags = allTaskIds.stream().collect(Collectors.toMap(k -> k, k -> 10L));
    final ClientState clientState1 = new ClientState(emptySet(), emptySet(), lags, 1);
    final ClientState clientState2 = new ClientState(emptySet(), emptySet(), lags, 1);
    final ClientState clientState3 = new ClientState(emptySet(), emptySet(), lags, 1);
    final Map<UUID, ClientState> clientStates = getClientStatesMap(clientState1, clientState2, clientState3);
    final boolean unstable = new HighAvailabilityTaskAssignor().assign(clientStates, allTaskIds, allTaskIds, new AssignmentConfigs(0L, 1, 0, 60_000L));
    assertThat(unstable, is(false));
    assertValidAssignment(0, allTaskIds, emptySet(), clientStates, new StringBuilder());
    assertBalancedActiveAssignment(clientStates, new StringBuilder());
    assertBalancedStatefulAssignment(allTaskIds, clientStates, new StringBuilder());
    assertBalancedTasks(clientStates);
}
Also used : TaskId(org.apache.kafka.streams.processor.TaskId) AssignmentConfigs(org.apache.kafka.streams.processor.internals.assignment.AssignorConfiguration.AssignmentConfigs) CoreMatchers.equalTo(org.hamcrest.CoreMatchers.equalTo) Matchers.not(org.hamcrest.Matchers.not) HashMap(java.util.HashMap) HashSet(java.util.HashSet) Utils.mkMap(org.apache.kafka.common.utils.Utils.mkMap) AssignmentTestUtils.analyzeTaskAssignmentBalance(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.analyzeTaskAssignmentBalance) Collections.singleton(java.util.Collections.singleton) Map(java.util.Map) AssignmentTestUtils.hasStandbyTasks(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.hasStandbyTasks) Collections.singletonMap(java.util.Collections.singletonMap) Assert.fail(org.junit.Assert.fail) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) UUID_1(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.UUID_1) AssignmentTestUtils.hasAssignedTasks(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.hasAssignedTasks) UUID_3(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.UUID_3) AssignmentTestUtils.assertValidAssignment(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.assertValidAssignment) UUID_2(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.UUID_2) Matchers.empty(org.hamcrest.Matchers.empty) Matchers.greaterThanOrEqualTo(org.hamcrest.Matchers.greaterThanOrEqualTo) Collections.emptySet(java.util.Collections.emptySet) TASK_0_0(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_0) Utils.mkSet(org.apache.kafka.common.utils.Utils.mkSet) TASK_0_1(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_1) TASK_1_1(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_1_1) TASK_2_0(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_2_0) Set(java.util.Set) TASK_0_2(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_2) TASK_1_0(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_1_0) Test(org.junit.Test) TASK_0_3(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_3) TASK_1_3(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_1_3) TASK_2_2(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_2_2) UUID(java.util.UUID) TASK_1_2(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_1_2) TASK_2_1(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_2_1) AssignmentTestUtils.assertBalancedActiveAssignment(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.assertBalancedActiveAssignment) Collectors(java.util.stream.Collectors) EMPTY_TASKS(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.EMPTY_TASKS) AssignmentTestUtils.getClientStatesMap(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.getClientStatesMap) Utils.mkEntry(org.apache.kafka.common.utils.Utils.mkEntry) AssignmentTestUtils.assertBalancedStatefulAssignment(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.assertBalancedStatefulAssignment) Matchers.is(org.hamcrest.Matchers.is) AssignmentTestUtils.hasActiveTasks(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.hasActiveTasks) AssignmentTestUtils.assertBalancedTasks(org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.assertBalancedTasks) TaskId(org.apache.kafka.streams.processor.TaskId) AssignmentConfigs(org.apache.kafka.streams.processor.internals.assignment.AssignorConfiguration.AssignmentConfigs) UUID(java.util.UUID) Test(org.junit.Test)

Example 10 with AssignmentConfigs

use of org.apache.kafka.streams.processor.internals.assignment.AssignorConfiguration.AssignmentConfigs in project kafka by apache.

the class HighAvailabilityTaskAssignorTest method shouldBeStickyForActiveAndStandbyTasksWhileWarmingUp.

@Test
public void shouldBeStickyForActiveAndStandbyTasksWhileWarmingUp() {
    final Set<TaskId> allTaskIds = mkSet(TASK_0_0, TASK_0_1, TASK_0_2, TASK_1_0, TASK_1_1, TASK_1_2, TASK_2_0, TASK_2_1, TASK_2_2);
    final ClientState clientState1 = new ClientState(allTaskIds, emptySet(), allTaskIds.stream().collect(Collectors.toMap(k -> k, k -> 0L)), 1);
    final ClientState clientState2 = new ClientState(emptySet(), allTaskIds, allTaskIds.stream().collect(Collectors.toMap(k -> k, k -> 10L)), 1);
    final ClientState clientState3 = new ClientState(emptySet(), emptySet(), allTaskIds.stream().collect(Collectors.toMap(k -> k, k -> Long.MAX_VALUE)), 1);
    final Map<UUID, ClientState> clientStates = mkMap(mkEntry(UUID_1, clientState1), mkEntry(UUID_2, clientState2), mkEntry(UUID_3, clientState3));
    final boolean unstable = new HighAvailabilityTaskAssignor().assign(clientStates, allTaskIds, allTaskIds, new AssignmentConfigs(11L, 2, 1, 60_000L));
    assertThat(clientState1, hasAssignedTasks(allTaskIds.size()));
    assertThat(clientState2, hasAssignedTasks(allTaskIds.size()));
    assertThat(clientState3, hasAssignedTasks(2));
    assertThat(unstable, is(true));
}
Also used : TaskId(org.apache.kafka.streams.processor.TaskId) AssignmentConfigs(org.apache.kafka.streams.processor.internals.assignment.AssignorConfiguration.AssignmentConfigs) UUID(java.util.UUID) Test(org.junit.Test)

Aggregations

AssignmentConfigs (org.apache.kafka.streams.processor.internals.assignment.AssignorConfiguration.AssignmentConfigs)21 Test (org.junit.Test)20 UUID (java.util.UUID)17 TaskId (org.apache.kafka.streams.processor.TaskId)17 HashMap (java.util.HashMap)13 HashSet (java.util.HashSet)13 Collections.emptySet (java.util.Collections.emptySet)9 Collections.singleton (java.util.Collections.singleton)9 Collections.singletonMap (java.util.Collections.singletonMap)9 Map (java.util.Map)9 Set (java.util.Set)9 Collectors (java.util.stream.Collectors)9 Utils.mkEntry (org.apache.kafka.common.utils.Utils.mkEntry)9 Utils.mkMap (org.apache.kafka.common.utils.Utils.mkMap)9 Utils.mkSet (org.apache.kafka.common.utils.Utils.mkSet)9 EMPTY_TASKS (org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.EMPTY_TASKS)9 TASK_0_0 (org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_0)9 TASK_0_1 (org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_1)9 TASK_0_2 (org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_2)9 TASK_0_3 (org.apache.kafka.streams.processor.internals.assignment.AssignmentTestUtils.TASK_0_3)9