/*******************************************************************************
* Copyright © 2012-2015 eBay Software Foundation
* This program is dual licensed under the MIT and Apache 2.0 licenses.
* Please see LICENSE for more information.
*******************************************************************************/
package com.ebay.jetstream.event.channel.kafka;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
import kafka.server.KafkaConfig;
import kafka.server.KafkaServerStartable;
import org.apache.commons.io.FileUtils;
import com.google.common.io.Files;
public class TestKafkaServer {
private KafkaConfig kafkaConfig;
private KafkaServerStartable kafkaServer;
private File locate;
public TestKafkaServer(Properties properties) {
String path = properties.getProperty("log.dir");
locate = Files.createTempDir();
File dir = new File(locate, path).getAbsoluteFile();
properties.setProperty("log.dir", dir.getAbsolutePath());
kafkaConfig = new KafkaConfig(properties);
System.out.println("num.partitions =" + kafkaConfig.numPartitions());
System.out.println("background.threads ="
+ kafkaConfig.backgroundThreads());
kafkaServer = new KafkaServerStartable(kafkaConfig);
try {
kafkaServer.startup();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("embedded kafka is up");
}
public TestKafkaServer(String logDir, int port, int brokerId,
String zkConnect, int numPartitions) {
this(createProperties(logDir, port, brokerId, zkConnect, numPartitions));
}
private static Properties createProperties(String logDir, int port,
int brokerId, String zkConnect, int numPartitions) {
Properties properties = new Properties();
properties.put("port", port + "");
properties.put("broker.id", brokerId + "");
properties.put("num.partitions", numPartitions + "");
properties.put("log.dir", logDir);
properties.put("enable.zookeeper", "true");
properties.put("zookeeper.connect", zkConnect);
return properties;
}
public void stop() {
kafkaServer.shutdown();
try {
FileUtils.deleteDirectory(locate);
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("embedded kafka stop");
}
}