如何使用Apache Apex对Kafka 0.9运算符进行单元测试?

时间:2016-04-22 14:56:55

标签: apache-kafka apache-apex

从users@apex.incubator.apache.org重新发布

我想使用支持0.9版本协议的新Kafka Operator运行单元测试代码。

在这个过程中,我包括Malhar-Kafka库版本(3.3.1孵化),并使用Apex引擎(版本3.3.0)作为测试/提供。

编译工作正常但我的单元测试无法正常运行“java.lang.ClassNotFoundException:com.datatorrent.lib.util.KryoCloneUtils”异常。

使用与Apex引擎集成的Kafka 0.9操作员进行单元测试的推荐方法是什么?我假设Malhar-contrib库Kafka运算符不符合0.9 ..

单元测试代码如下:

CassandraEventDetailsS​​treamingApp类在下面的代码片段中扩展了AbstractKafkaInputOperator。

lma.getController();

方法中出现异常
@Test
public void testApplication() throws IOException, Exception {
    try {
        LocalMode lma = LocalMode.newInstance();
        Configuration conf = new Configuration(false);
        conf.addResource(this.getClass().getResourceAsStream("/dag-test-props.xml"));
        lma.prepareDAG(new CassandraEventDetailsStreamingApp(), conf);
        LocalMode.Controller lc = lma.getController();
        lc.run();
    } catch (ConstraintViolationException e) {
        Assert.fail("constraint violations: " + e.getConstraintViolations());
    }
}

1 个答案:

答案 0 :(得分:1)

我能够通过从Apex引擎的依赖部分apex-api中排除Malhar-library和Malhar-contrib的依赖关系来解决这个问题。

这使得Malhar的3.3.1孵化版本进入了类路径,随后是具有3.3.1孵化版本的Malhar-Kafka库。