2016-05-08 88 views
0

据我所知,测试厨房后面的序列与Chefspec测试厨房集成测试:测试菜谱与依赖

创建节点>收敛食谱>运行测试

什么是创建一个测试,假设一个最好的做法强大的外部依赖性?

一个例子是卡夫卡食谱https://supermarket.chef.io/cookbooks/kafka。您可能知道,Kafka是一个依赖于Zookeeper的消息传递代理应用程序,它是一个独立的应用程序,它是消息中心。

继顾虑分开后,Kafka食谱不包括Zookeeper - 它可以安装在同一个主机或不同的机器上。

然而,为了做一个简单的验证,如果卡夫卡正在工作(即创建一个简单的消息),您需要运行一个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后运行这三个命令,是有办法末梢该外部服务器(本地主机:2181以上部分)?

谢谢!

回答

0

答案的两个部分:第一个ChefSpec用于单元测试,与测试厨房和集成测试无关。其次,您需要制定最低限度的测试配方来安装单节点ZK服务器并将其用于集成测试。一般来说,您可以通过将测试菜谱放在test/cookbook下,然后使用path源将其添加到您的Berksfile中。你可以使用“真正的”ZK食谱,或者你可以使用更简单,更专注的东西。只是测试极简主义的一个例子,请参阅my MongoDB recipe。在这种情况下,你可以使用类似于ZK的东西。

+0

非常感谢您的回答,以及对应用食谱的赞誉!我正在与.Net项目合作,看看我是否可以使用您的食谱,而不是我目前使用的PowerShell命令序列。 关于测试,我宁愿避免将测试中的依赖性配方包含在主要配方中。不过,我会尝试做测试/食谱,看看它是否能解决问题。尽快更新。干杯! –