Estoy intentando crear una prueba que simule una falla del sistema para garantizar la integridad de una base de datos Oracle Berkeley DB XML. Actualmente, se está experimentando la pérdida de datos durante una operación de inserción, por lo que me gustaría configurar una prueba que comience a insertar una cantidad arbitraria de documentos y que saque el proceso a lo largo del camino (similar a cuando alguien tira del cable de alimentación). Después de que el proceso muera, quiero generar un nuevo proceso y abrir la base de datos para garantizar que se abra correctamente.JUnit prueba una falla en la base de datos?
La prueba de unidad es una de muchas en una compilación maven y esta prueba debe ejecutarse en entornos Linux y Windows XP. Mi proceso de pensamiento actual es elaborar un script para ambos sistemas operativos ya que puedo usar el script para matar el proceso y comenzar uno nuevo en su lugar. ¿Tengo alguna otra opción? ¿Puedo crear un espacio de proceso/máquina virtual usando JUnit?
¿Quiere probar la base de datos? ¿O quieres probar tu código que usa esa base de datos? –
Quiero que pruebe mi código ya que la base de datos en cuestión está incrustada. La corrupción de datos durante una falla del sistema es un problema conocido con Berkeley DB XML no transaccional (que tenemos que usar). Estoy implementando algunas verificaciones de cordura en mi código contenedor para mitigar la corrupción. – toddk
Luego, querrá escribir pruebas unitarias para demostrar que sus controles de cordura hacen lo que se supone que deben hacer. Puede escribir un simulacro de la interfaz DB y simular varias fallas para que tenga un comportamiento determinista. El problema fundamental es probar que los controles de cordura que implementaste realmente evitan la corrupción que describes. No haría esto en una prueba unitaria a menos que las fallas sean reproducibles en cada ejecución de prueba. Si no lo son, trataría la prueba como una prueba de rendimiento/estabilidad en su lugar. – ShabbyDoo