package com.github.projectflink.streaming.utils; import org.junit.Assert; import org.junit.Test; public class TestFixedPartitioning { /** * Flink Sinks: Kafka Partitions * 1 ----------------> 1 * 2 --------------/ * 3 -------------/ * 4 ------------/ */ @Test public void testMoreFlinkThanBrokers() { FixedPartitioning<String> part = new FixedPartitioning<String>(); int[] partitions = new int[]{0}; part.prepare(0, 4, partitions); Assert.assertEquals(0, part.partition("abc1")); part.prepare(1, 4, partitions); Assert.assertEquals(0, part.partition("abc2")); part.prepare(2, 4, partitions); Assert.assertEquals(0, part.partition("abc3")); Assert.assertEquals(0, part.partition("abc3")); // check if it is changing ;) part.prepare(3, 4, partitions); Assert.assertEquals(0, part.partition("abc4")); } /* * Flink Sinks: Kafka Partitions * 1 ----------------> 1 * 2 ----------------> 2 * 3 * 4 * 5 */ @Test public void testFewerPartitions() { FixedPartitioning<String> part = new FixedPartitioning<String>(); int[] partitions = new int[]{0, 1, 2, 3, 4}; part.prepare(0, 2, partitions); Assert.assertEquals(0, part.partition("abc1")); Assert.assertEquals(0, part.partition("abc1")); part.prepare(1, 2, partitions); Assert.assertEquals(1, part.partition("abc1")); Assert.assertEquals(1, part.partition("abc1")); } /* * Flink Sinks: Kafka Partitions * 1 ------------>---> 1 * 2 -----------/----> 2 * 3 ----------/ */ @Test public void testMixedCase() { FixedPartitioning<String> part = new FixedPartitioning<String>(); int[] partitions = new int[]{0,1}; part.prepare(0, 3, partitions); Assert.assertEquals(0, part.partition("abc1")); part.prepare(1, 3, partitions); Assert.assertEquals(1, part.partition("abc1")); part.prepare(2, 3, partitions); Assert.assertEquals(0, part.partition("abc1")); } }