我正在为使用Spark Streaming和Kafka运行的应用程序设置功能测试。要完成的步骤是
除了简单的bash脚本之外,执行此操作的专业方法是什么?
我认为这是一个非常普遍的问题,与Spark Streaming和Kafka没有严格的关系。也许有一些测试框架支持设置环境,并行运行多个进程以及数据验证/断言。
答案 0 :(得分:1)
也许有一些测试框架支持设置环境,并行运行多个进程以及数据验证/断言。
不幸的是,那里没有一体化的框架。
单行答案是:使用docker-compose和您选择的最简单的单元测试或基于小黄瓜的框架。
将上述步骤考虑为:
启动环境
生成Kafka消息/验证
关闭环境
Docker-Compose将是步骤#1和#3的最佳选择。
version: '2'
services:
kafka:
# this container already has zookeeper built in
image: spotify/kafka
ports:
- 2181:2181
- 9092:9092
# its just some mock-spark container, you'll have to replace it with
# docker container that can host your spark-app
spark:
image: epahomov/docker-spark:lightweighted
depends_on:
- kafka
撰写文件的想法是你可以用一个命令启动你的env:
docker-compose up
环境设置可以在开发机器和构建服务器之间轻松移植。
对于步骤#2,任何测试框架都可以。
场景如下:
谈论框架:
不要让命名"单元测试框架"迷惑你 只有测试环境才能定义测试是单元,模块化,系统还是集成,而不是工具。
如果一个人使用单元测试框架并在那里写
MyZookeeperConnect("192.168.99.100:2181")
它不再是单元测试,即使是单元测试框架也无法帮助它:)
将步骤#1,#2,#3粘合在一起 - 简单的bash将是我的选择。
答案 1 :(得分:1)
考虑使用Citrus(http://citrusframework.org/)测试框架,它可能是您的一体化测试框架。
还考虑使用Fabric8 Docker Maven插件(https://github.com/fabric8io/docker-maven-plugin)在同一构建运行中执行Citrus测试之前设置Docker测试环境。
以下是两个协同工作的示例的示例:https://github.com/christophd/citrus-samples/tree/master/sample-docker