package mil.nga.giat.geowave.test.kafka;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import kafka.server.KafkaConfig;
import kafka.server.KafkaServerStartable;
import mil.nga.giat.geowave.test.TestEnvironment;
import mil.nga.giat.geowave.test.ZookeeperTestEnvironment;
public class KafkaTestEnvironment implements
TestEnvironment
{
private static KafkaTestEnvironment singletonInstance;
public static synchronized KafkaTestEnvironment getInstance() {
if (singletonInstance == null) {
singletonInstance = new KafkaTestEnvironment();
}
return singletonInstance;
}
private final static Logger LOGGER = LoggerFactory.getLogger(KafkaTestEnvironment.class);
private KafkaServerStartable kafkaServer;
private KafkaTestEnvironment() {}
@Override
public void setup()
throws Exception {
LOGGER.info("Starting up Kafka Server...");
final boolean success = KafkaTestUtils.DEFAULT_LOG_DIR.mkdir();
if (!success) {
LOGGER.warn("Unable to create Kafka log dir [" + KafkaTestUtils.DEFAULT_LOG_DIR.getAbsolutePath() + "]");
}
final KafkaConfig config = KafkaTestUtils.getKafkaBrokerConfig();
kafkaServer = new KafkaServerStartable(
config);
kafkaServer.startup();
Thread.sleep(3000);
}
@Override
public void tearDown()
throws Exception {
LOGGER.info("Shutting down Kafka Server...");
kafkaServer.shutdown();
final boolean success = KafkaTestUtils.DEFAULT_LOG_DIR.delete();
if (!success) {
LOGGER.warn("Unable to delete Kafka log dir [" + KafkaTestUtils.DEFAULT_LOG_DIR.getAbsolutePath() + "]");
}
}
@Override
public TestEnvironment[] getDependentEnvironments() {
return new TestEnvironment[] {
ZookeeperTestEnvironment.getInstance()
};
}
}