Интеграционные тесты Test Kitchen с Chefspec: тестирование кулинарной книги с зависимостями

Я понимаю, что Test Kitchen следует последовательности

создать узел > объединить поваренную книгу > запустить тесты

Как лучше всего создать тест, предполагающий сильную внешнюю зависимость?

Примером может служить кулинарная книга Кафки https://supermarket.chef.io/cookbooks/kafka. Как вы, возможно, знаете, Kafka — это брокерское приложение для обмена сообщениями, которое зависит от 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 выше)?

Спасибо!


person Stenio Ferreira    schedule 08.05.2016    source источник


Ответы (1)


Две части ответа: первая ChefSpec используется для модульного тестирования и не имеет отношения к Test Kitchen и интеграционному тестированию. Во-вторых, вам нужно будет создать минимальный тестовый рецепт для установки ZK-сервера с 1 узлом и использовать его для интеграционного тестирования. Как правило, вы делаете это, помещая тестовую кулинарную книгу под test/cookbook, а затем добавляя ее в свой Berksfile с источником path. Вы можете использовать «настоящую» поваренную книгу ZK или использовать что-то более простое и специализированное. Просто пример минимализма для тестирования, см. мой рецепт MongoDB. Вы, вероятно, можете использовать что-то подобное для ZK в этой ситуации.

person coderanger    schedule 08.05.2016
comment
Спасибо за ваш ответ и спасибо за кулинарную книгу приложений! Я работаю над проектом .Net, посмотрю, смогу ли я использовать вашу поваренную книгу вместо последовательности команд powershell, которые я использую в настоящее время. Что касается тестирования, я предпочитаю избегать вашего подхода к включению зависимого рецепта в основной рецепт только ради тестов. Однако я попробую сделать тест/поваренную книгу и посмотреть, решит ли это проблему. Обновление в ближайшее время. Ваше здоровье! - person Stenio Ferreira; 14.05.2016