2009-02-05 20 views
5

Uso Hudson para automatizar las pruebas de un producto muy importante. Quiero que mis hosts de prueba puedan ejecutar tantas compilaciones simultáneas como teóricamente admitirán, a excepción de las pruebas de Excel, que solo deben ejecutarse una por máquina en cualquier momento. Se puede ejecutar cualquier cantidad de pruebas que no sean de Excel al mismo tiempo, sin embargo, como máximo, se debe ejecutar una prueba de Excel a la vez por máquina.¿Cómo me aseguro de que solo una de una determinada categoría de trabajo se ejecute a la vez en Hudson?

Antecedentes:

La mayoría de mis pruebas son unidad de pruebas normales - el tipo de cosa que pueda funcionar fácilmente en paralelo. Lamentablemente, una parte importante y que consume mucho tiempo de mi plan de pruebas de unidad consiste en pruebas que se han implementado en Excel.

Puede pensar que es una locura implementar una prueba en Excel; en realidad, hay una razón importante: la mayoría de nuestros usuarios accede a nuestro sistema a través de un Excel. Excel tiene sus propias formas peculiares de manejar datos, por lo que la única forma de garantizar que nuestras cosas funcionen para los usuarios de Excel es implementar literalmente nuestra prueba de Excel.

He escrito una herramienta de prueba-corredor que me permite disparar fácilmente un grupo de pruebas de Excel: cada prueba es un solo archivo .xls. Cada grupo es una carpeta llena de archivos de Excel. Tengo alrededor de 30 grupos que deben ejecutarse para una prueba de extremo a extremo. Mi herramienta convierte el resultado de cada una de las pruebas en el estilo de JUnit XML que Hudson puede comprender. Las pruebas usan la biblioteca pywin32com para automatizar Excel. Cuando se corren por sí solos son confiables.

Tengo un grupo de computadoras dedicadas a ejecutar pruebas. Cada máquina es de cuatro núcleos y teóricamente puede ejecutar muchas cosas a la vez. Lamentablemente, he descubierto que COM no se puede usar para controlar de forma segura más de 1 Excel por máquina a la vez.

Es decir, si una segunda compilación de estrellas intenta comunicarse con Excel a través de COM podría interferir con la que ya se está ejecutando y hacer que fallen ambas pruebas.

Puedo ejecutar tantos otros procesos que no sean de Excel como la máquina permita, pero necesito encontrar una forma para que Hudson no intente ejecutar más de 1 proceso que requiera Excel en una máquina al mismo tiempo.

+1

posible duplicado de [Cómo prevenir ciertos trabajos Jenkins se ejecute de forma simultánea?] (Http://stackoverflow.com/questions/6276272/how-to-prevent-certain-jenkins-jobs-from- corriendo simultáneamente) –

Respuesta

0

¿No es hudson java?

Dado que ha etiquetado esta publicación python, señalaré que buildbot, tiene para limitar los pasos individuales en esclavos individuales (o úselos como bloqueos más gruesos si lo desea).

+3

Estoy probando una aplicación Python/Excel en Hudson. Hudson está escrito en Java, pero en realidad no estoy haciendo ninguna programación Java. –

Cuestiones relacionadas