2009-02-05 11 views
5

Uso Hudson per automatizzare il test di un prodotto molto importante. Voglio che i miei host di test siano in grado di eseguire un numero di build simultanei che teoricamente supportano con l'eccezione dei test excel che devono essere eseguiti solo uno per macchina in qualsiasi momento. Qualsiasi numero di test non-excel può essere eseguito contemporaneamente, tuttavia al massimo un test excel alla volta deve essere eseguito per computer.Come faccio a garantire che solo una di una determinata categoria di lavori venga eseguita contemporaneamente in Hudson?

Background:

La maggior parte dei miei test sono normali unità di test - il genere di cosa che posso facilmente eseguito in parallelo. Sfortunatamente una parte sostanziale e che richiede tempo del mio piano di test unitario consiste in test che sono stati implementati in Excel.

Si potrebbe pensare che sia pazzesco implementare un test in Excel, in realtà c'è una ragione importante: la maggior parte dei nostri utenti accede al nostro sistema tramite Excel. Excel ha i suoi modi eccentrici per gestire i dati, quindi l'unico modo per garantire che le nostre cose funzionino per gli utenti di Excel è di implementare letteralmente il nostro registro di test dell'applicazione Excel.

Ho scritto uno strumento di test runner che mi consente di sparare facilmente da un gruppo di test excel: ogni test è un singolo file .xls. Ogni gruppo è una cartella piena di file excel. Ho circa 30 gruppi che devono essere eseguiti per un test end-to-end. Il mio strumento converte il risultato di ciascuno dei test in XML in stile JUnit che Hudson è in grado di comprendere. I test utilizzano la libreria pywin32com per automatizzare Excel. Se gestiti da soli, sono affidabili.

Ho un gruppo di computer dedicati all'esecuzione di test. Ogni macchina è quad-core e in teoria può eseguire un bel po 'di roba alla volta. Sfortunatamente ho scoperto che COM non può essere utilizzato per controllare in sicurezza più di 1 Excel per macchina alla volta.

Vale a dire se una seconda generazione di stelle che tenta di comunicare con Excel tramite COM potrebbe interferire con quella che è già in esecuzione e causare il fallimento di entrambi i test.

Sono in grado di eseguire tutti gli altri processi non-excel consentiti dalla macchina, ma ho bisogno di trovare un modo in modo che Hudson non tenti di avviare più di 1 processo che richiede di eccellere su una macchina contemporaneamente.

+1

possibile duplicato di [Come prevenire certi lavori Jenkins esecuzione contemporaneamente?] (Http://stackoverflow.com/questions/6276272/how-to-prevent-certain-jenkins-jobs-from- esecuzione simultanea) –

risposta

0

Non è hudson java?

Dato che hai codificato questo post python, ti faccio notare che buildbot, ha slave locks per limitare i singoli passaggi su singoli slave (o usarli come blocchi più grossolani, se lo desideri).

+3

Sto testando un'applicazione Python/Excel in Hudson. Hudson è scritto in Java, ma in realtà non sto facendo alcuna programmazione Java. –

Problemi correlati