Este proyecto implementa una herramienta de prueba de estrés para bases de datos SQLite, diseñada para probar la robustez y rendimiento de la base de datos durante operaciones continuas.
- Prueba de escritura continua de datos aleatorios
- Verificación de integridad de datos mediante checksums MD5
- Logging detallado de operaciones y errores
- Reporte detallado al finalizar/interrumpir la prueba
- Tiempo de pausa configurable entre operaciones
- Persistencia de datos entre ejecuciones
- Mantenimiento automático al inicio (power on)
- Sistema de recuperación de errores
- Python 3.x
- Módulos estándar de Python (sqlite3, time, random, datetime, logging, os, hashlib)
- psutil>=5.9.0
- Clona o descarga este repositorio
- Crea un entorno virtual (opcional pero recomendado):
# Windows python -m venv venv .\venv\Scripts\activate # Linux/Mac python3 -m venv venv source venv/bin/activate
- Instala las dependencias:
pip install -r requirements.txt
Para ejecutar el programa con la configuración predeterminada (pausa de 10 segundos, actualización cada 10 segundos):
python SQLiteTest.py
Para especificar un tiempo de pausa personalizado (en segundos):
python SQLiteTest.py --pause 5
Para personalizar el intervalo de actualización del progreso:
python SQLiteTest.py --progress-interval 5
Para personalizar ambos parámetros:
python SQLiteTest.py --pause 5 --progress-interval 5
--pause
: Tiempo de pausa entre operaciones en segundos (default: 10)--progress-interval
: Intervalo de actualización del progreso en segundos (default: 10)
Al iniciar la aplicación, se realiza automáticamente un mantenimiento que incluye:
- Verificación de integridad de la base de datos
- Checkpoint del WAL (Write-Ahead Logging)
- Limpieza de archivos temporales
- Verificación de espacio en disco
- Registro del evento de inicio
Si se detecta algún error durante el mantenimiento:
- Se intenta una recuperación automática
- Se registra el error en la base de datos
- Se genera un log detallado
- La aplicación puede detenerse si el error es crítico
Al interrumpir el programa con Ctrl+C, se generará un reporte detallado que incluye:
- Total de registros en la base de datos
- Fecha del primer registro
- Fecha del último registro
- Tamaño de la base de datos en MB
- Número de registros corruptos (si los hay)
stress_test.db
: Base de datos SQLite con los datos de pruebasqlite_test.log
: Archivo de log con información detallada de la ejecución- Archivos temporales (se limpian automáticamente):
stress_test.db-shm
: Archivo de memoria compartidastress_test.db-wal
: Archivo WALstress_test.db-journal
: Archivo de journal
La base de datos contiene las siguientes tablas:
test_data
: Datos de pruebaid
: Identificador único autoincrementaltimestamp
: Fecha y hora de la inserciónvalue
: Datos aleatorios de pruebachecksum
: Hash MD5 para verificación de integridad
system_events
: Eventos del sistemaid
: Identificador único autoincrementaltimestamp
: Fecha y hora del eventoevent_type
: Tipo de evento (POWER_ON, ERROR, etc.)details
: Detalles del evento
El programa realiza verificaciones de integridad:
- Cada 100 iteraciones durante la ejecución
- Al finalizar/interrumpir la prueba
- Durante el mantenimiento de power on
- Verifica que los checksums MD5 coincidan con los datos almacenados