package com.neverwinterdp.kafka.tool;
import static org.junit.Assert.assertFalse;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.neverwinterdp.kafka.producer.DefaultKafkaWriter;
import com.neverwinterdp.kafka.tool.KafkaTool;
import com.neverwinterdp.kafka.tool.server.KafkaCluster;
public class KafkaToolUnitTest {
private static String topic = "delete-me";
private DefaultKafkaWriter writer;
private Logger logger = Logger.getLogger(getClass());
private KafkaCluster cluster;
private int brokers = 2;
@Before
public void setUp() throws Exception {
cluster = new KafkaCluster("./build/kafka", 1, brokers);
cluster.setReplication(brokers);
cluster.setNumOfPartition(1);
cluster.start();
Thread.sleep(2000);
}
@After
public void tearDown() throws Exception {
logger.info("from here we shutdown");
cluster.shutdown();
Thread.sleep(2000);
}
@Test
public void testDeleteTopic() throws Exception {
KafkaTool tool = new KafkaTool(topic, cluster.getZKConnect());
writer = new DefaultKafkaWriter(topic, cluster.getKafkaConnect());
String message = "sample message";
for (int i = 0; i < 1000; i++) {
writer.send(topic, 0, message + i, message + i, 10000);
}
tool.deleteTopic(topic);
Thread.sleep(brokers * 1000);
assertFalse(tool.topicExits(topic));
tool.close();
}
@Test
public void testDeleteTopicWithData() throws Exception {
KafkaTool tool = new KafkaTool(topic, cluster.getZKConnect());
writer = new DefaultKafkaWriter(topic, cluster.getKafkaConnect());
byte[] data = new byte[500 * 1024];
String message = new String(data);
for (int i = 0; i < 1000; i++) {
writer.send(topic, 0, String.valueOf(i), message + i, 10000);
}
tool.deleteTopic(topic);
Thread.sleep(brokers * 3000);
assertFalse(tool.topicExits(topic));
tool.close();
}
}