package com.neverwinterdp.scribengin.storage.kafka; import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import com.neverwinterdp.scribengin.Record; import com.neverwinterdp.scribengin.storage.kafka.sink.KafkaSink; import com.neverwinterdp.scribengin.storage.kafka.source.KafkaSource; import com.neverwinterdp.scribengin.storage.sink.SinkStream; import com.neverwinterdp.scribengin.storage.sink.SinkStreamWriter; import com.neverwinterdp.scribengin.storage.source.SourceStream; import com.neverwinterdp.scribengin.storage.source.SourceStreamReader; import com.neverwinterdp.kafka.tool.server.KafkaCluster; public class SinkSourceUnitTest { static { System.setProperty("log4j.configuration", "file:src/test/resources/test-log4j.properties"); } private KafkaCluster cluster; @Before public void setUp() throws Exception { cluster = new KafkaCluster("./build/cluster", 1, 1); cluster.setNumOfPartition(5); cluster.start(); Thread.sleep(3000); } @After public void tearDown() throws Exception { cluster.shutdown(); } @Test public void testKafkaSource() throws Exception { String zkConnect = cluster.getZKConnect(); System.out.println("zkConnect = " + zkConnect); String TOPIC = "hello.topic" ; KafkaSink sink = new KafkaSink("hello", zkConnect, TOPIC) ; SinkStream stream = sink.newStream(); SinkStreamWriter writer = stream.getWriter(); for(int i = 0; i < 10; i++) { String hello = "Hello " + i ; Record record = new Record("key-" + i, hello.getBytes()); writer.append(record); } writer.close(); KafkaSource source = new KafkaSource("hello", cluster.getZKConnect(), TOPIC); SourceStream[] streams = source.getStreams(); Assert.assertEquals(5, streams.length); for(int i = 0; i < streams.length; i++) { System.out.println("Stream id: " + streams[i].getDescriptor().getId()); SourceStreamReader reader = streams[i].getReader("kafka"); Record record = null; while((record = reader.next()) != null) { System.out.println("Record: " + new String(record.getData())); } } } }