2016-05-08 9 views
0

Ich verstehe, dass Test-Küche die SequenzTest Kitchen Integrationstests mit Chefspec: Testkochbuch mit Abhängigkeiten

Knoten erstellen folgt> konvergieren Kochbuch> laufen Tests

Was ist die beste Praxis, einen Test zu erstellen, die eine übernimmt starke externe Abhängigkeit? Ein Beispiel ist das Kafka Kochbuch https://supermarket.chef.io/cookbooks/kafka. Wie Sie vielleicht wissen, ist Kafka eine Messaging-Broker-Anwendung, die von Zookeeper abhängt, einer separaten Anwendung, die der Nachrichten-Hub ist.

Nach richtiger Trennung der Bedenken enthält das Kafka-Kochbuch keinen Zookeeper - er kann auf demselben Host oder auf einer anderen Maschine installiert werden.

Um jedoch eine einfache Überprüfung durchzuführen, wenn Kafka funktioniert (d. H. Eine einfache Nachricht erstellen), muss ein Zookeeper-Server ausgeführt werden.

Zum Beispiel könnte der Test

# 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 

Mit Chefspec diese drei Befehle nach der Installation ausgeführt werden, ist es eine Möglichkeit, diese externen Server Stub (der localhost: 2181 Teil oben)?

Vielen Dank!

Antwort

0

Zwei Teile zur Antwort: Zuerst wird ChefSpec für Komponententests verwendet und steht nicht im Zusammenhang mit Test Kitchen und Integrationstests. Zweitens müssen Sie ein minimales Testrezept erstellen, um einen 1-Knoten-ZK-Server zu installieren und diesen für Integrationstests zu verwenden. Im Allgemeinen würden Sie dies tun, indem Sie ein Testkochbuch unter test/cookbook setzen und es dann Ihrem Berksfile mit einer path Quelle hinzufügen. Sie könnten ein "echtes" ZK-Kochbuch verwenden, oder Sie könnten etwas einfacheres und dedizierteres verwenden. Nur ein Beispiel für Minimalismus zum Testen, siehe my MongoDB recipe. Sie können wahrscheinlich etwas ähnliches für ZK in dieser Situation verwenden.

+0

Vielen Dank für Ihre Antwort, und ein großes Lob an die Anwendung Kochbuch! Ich arbeite mit einem .Net-Projekt, werde sehen, ob ich Ihr Kochbuch anstelle der Sequenz von Powershell-Befehlen verwenden kann, die ich gerade verwende. In Bezug auf die Prüfung, ich bevorzuge es, Ihren Ansatz der Aufnahme der abhängigen Rezeptur im Hauptrezept nur für Tests zu vermeiden. Ich werde jedoch versuchen, das Test/Kochbuch zu machen und sehen, ob es das Problem löst. Aktualisieren Sie bald. Prost! –