2009-02-05 5 views
5

Ich benutze Hudson, um das Testen eines sehr großen wichtigen Produktes zu automatisieren. Ich möchte, dass meine Test-Hosts so viele gleichzeitige Builds ausführen können, wie sie theoretisch unterstützen, mit Ausnahme von Excel-Tests, die nur einen pro Maschine zu einem beliebigen Zeitpunkt ausführen dürfen. Eine beliebige Anzahl von Nicht-Excel-Tests kann gleichzeitig ausgeführt werden, jedoch muss höchstens ein Excel-Test pro Computer ausgeführt werden.Wie stelle ich sicher, dass in Hudson nur eine bestimmte Kategorie von Jobs gleichzeitig ausgeführt wird?

Hintergrund:

Die meisten meiner Tests normal sind Komponententests - die Art von Dingen, die ich leicht parallel ausgeführt werden können. Leider besteht ein wesentlicher und zeitaufwendiger Teil meines Unit-Testing-Plans aus Tests, die in Excel implementiert wurden.

Sie könnten es für verrückt halten, einen Test in Excel zu implementieren - eigentlich gibt es einen wichtigen Grund: Die meisten unserer Benutzer greifen über ein Excel auf unser System zu. Excel hat seine eigenen schrulligen Möglichkeiten, mit Daten umzugehen. Der einzige Weg, um zu garantieren, dass unsere Sachen für Excel-Anwender funktionieren, ist, unseren Reg-Test buchstäblich in unsere Anwendung Excel zu implementieren.

Ich habe ein Test-Runner-Tool geschrieben, mit dem ich problemlos eine Gruppe von Excel-Tests auslösen kann: Jeder Test ist eine einzelne .xls-Datei. Jede Gruppe ist ein Ordner voller Excel-Dateien. Ich habe ungefähr 30 Gruppen, die für einen End-to-End-Test laufen müssen. Mein Tool konvertiert das Ergebnis jedes Tests in JUnit Style XML, das Hudson verstehen kann. Die Tests verwenden die pywin32com-Bibliothek, um Excel zu automatisieren. Wenn sie alleine laufen, sind sie zuverlässig.

Ich habe eine Gruppe von Computern, die zum Ausführen von Tests gewidmet sind. Jede Maschine ist Quad-Core und kann theoretisch eine ganze Menge auf einmal laufen. Leider habe ich festgestellt, dass COM nicht verwendet werden kann, um mehr als 1 Excel pro Maschine gleichzeitig sicher zu steuern.

Das heißt, wenn ein 2. Build-Sternen, die versucht, mit Excel über COM zu kommunizieren, könnte es stören, die bereits ausgeführt wird und beide Tests fehlschlagen.

Ich kann so viele andere non-Excel-Prozesse ausführen, wie es die Maschine zulässt, aber ich muss einen Weg finden, so dass Hudson nicht mehr als einen Prozess starten will, der gleichzeitig auf einer Maschine ausgeführt werden muss.

+1

möglich Duplikat [Wie sicher Jenkins Arbeitsplätze zu verhindern, gleichzeitig vom Laufen?] (Http://stackoverflow.com/questions/6276272/how-to-prevent-certain-jenkins-jobs-from- running-simultan) –

Antwort

0

Ist nicht Hudson Java?

Da Sie dieses Post-Python getaggt haben, werde ich darauf hinweisen, dass buildbot, slave locks zu begrenzen einzelne Schritte auf einzelne Sklaven (oder verwenden Sie sie als grobe Sperren, wenn Sie möchten).

+3

Ich teste eine Python/Excel-Anwendung in Hudson. Hudson ist in Java geschrieben, aber ich mache eigentlich keine Java-Programmierung. –

Verwandte Themen