Używam Hudson do automatyzacji testowania bardzo dużego ważnego produktu. Chcę, aby moje testowe hosty były w stanie uruchomić tyle współbieżnych kompilacji, jakie teoretycznie będą wspierać, z wyjątkiem testów excel, które w każdej chwili mogą uruchomić tylko jedną na maszynę. Dowolna liczba testów innych niż excel może być uruchomiona jednocześnie, jednak co najwyżej jeden test excel na raz musi być uruchamiany na maszynie.Jak mogę zagwarantować, że tylko jedna z pewnej kategorii prac zostanie uruchomiona w Hudson?
Tło:
Większość moich badań są normalne unit-testy - rodzaj rzeczy, które można łatwo uruchomić równolegle. Niestety znaczna i czasochłonna część mojego planu testów jednostkowych składa się z testów zaimplementowanych w Excelu.
Możesz pomyśleć, że to szalone, aby zaimplementować test w Excelu - tak naprawdę jest ważny powód: Większość naszych użytkowników uzyskuje dostęp do naszego systemu za pomocą programu Excel. Excel ma swoje własne dziwne sposoby obsługi danych, więc jedynym sposobem, aby zagwarantować, że nasze rzeczy działają dla użytkowników Excela, jest dosłowne zaimplementowanie naszego reg-testu naszej aplikacji Excel.
Napisałem test-runner narzędzie, które pozwala mi łatwo odpalić grupę testów excel: Każdy test jest pojedynczym plikiem .xls. Każda grupa jest folderem pełnym plików Excel. Mam około 30 grup, które należy uruchomić w celu przeprowadzenia testu end-to-end. Moje narzędzie konwertuje wynik każdego z testów na XML w stylu JUnit, który Hudson jest w stanie zrozumieć. Testy wykorzystują bibliotekę pywin32com do automatyzacji programu Excel. Po uruchomieniu na własną rękę są niezawodne.
Mam grupę komputerów przeznaczonych do przeprowadzania testów. Każda maszyna jest czterordzeniowa i może teoretycznie uruchomić wiele rzeczy naraz. Niestety odkryłem, że COM nie może być używany do bezpiecznego kontrolowania więcej niż 1 Excela na maszynę naraz.
Oznacza to, że jeśli druga gwiazda układu, która próbuje komunikować się z programem Excel za pośrednictwem COM, może zakłócać działanie tego, który już działa i spowodować, że oba testy zakończą się niepowodzeniem.
Mogę uruchomić tak wiele innych procesów niezwiązanych z programem Excel, jak zezwala na to maszyna, ale muszę znaleźć sposób, aby Hudson nie próbował uruchomić więcej niż jednego procesu, który wymaga programu Excel jednocześnie na jednej maszynie.
możliwe duplikat [Jak uniknąć pewnych miejsc pracy Jenkins Od uruchomiony jednocześnie?] (Http://stackoverflow.com/questions/6276272/how-to-prevent-certain-jenkins-jobs-from- działający jednocześnie) –