我知道测试厨房遵循顺序
创建节点>converge cookbook>运行测试
创建一个假设有很强的外部依赖性的测试的最佳实践是什么?
Kafka食谱就是一个例子https://supermarket.chef.io/cookbooks/kafka. 您可能知道,kafka是一个依赖于zookeeper的消息代理应用程序,zookeeper是一个单独的应用程序,它是消息中心。
经过适当的关注点分离,Kafka食谱不包括zookeeper-它可以安装在同一台主机或不同的机器。
不过,为了验证kafka是否正常工作(即创建一条简单消息),您需要运行zookeeper服务器。
例如,测试可以在安装后运行这三个命令
# creates a message topic
bin/kafka-create-topic.sh --zookeeper localhost:2181 --replica 1 --partition 1 --topic test
# lists existing message topics
bin/kafka-list-topic.sh --zookeeper localhost:2181
# sends a message to this machine
bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test
使用chefspec,有没有一种方法来存根这个外部服务器localhost:2181 part 以上)?
谢谢您!
1条答案
按热度按时间sz81bmfz1#
答案有两部分:第一部分chefspec用于单元测试,与测试厨房和集成测试无关。其次,您需要制定一个最小的测试配方来安装一个单节点zk服务器,并将其用于集成测试。通常你会把一本测试食谱放在下面
test/cookbook
然后用一个path
来源。你可以用一本“真正的”zk食谱,也可以用一些更简单、更专注的东西。只是一个测试的极简主义的例子,看看我的mongodb食谱。在这种情况下,您可能可以对zk使用类似的方法。