En cuanto a la sección 3.1 (OOM):
prueba OOM se logra mediante la simulación de errores OOM. SQLite permite una aplicación para sustituir implementación alternativa malloc() mediante la interfaz sqlite3_config (SQLITE_CONFIG_MALLOC, ...) . Los arneses de la prueba TCL y TH3 son ambos capaces de insertando una versión modificada de malloc() que puede manipularse para que falle después de un cierto número de asignaciones. Estos mallocs instrumentados se pueden configurar para que fallen solo una vez y luego comiencen volviendo a funcionar, o para continuar fallando después de la primera falla. Las pruebas de OOM son hechas en un bucle. En la primera iteración del ciclo, el malloc instrumentado está preparado para fallar en la primera asignación .A continuación, se lleva a cabo alguna operación SQLite y se realizan comprobaciones en asegúrese de que SQLite manejó correctamente el error OOM . Luego, el contador de tiempo de falla en el malloc instrumentado es aumentado en uno y la prueba es repetida. El ciclo continúa hasta que la operación completa se ejecuta hasta el final sin encontrar nunca una falla OOM simulada . Pruebas como esta se ejecutan dos veces, una vez con el malloc instrumentado para fallar solo una vez, y nuevamente con el conjunto malloc instrumentado para fallar continuamente después de la primera falla .
Tenga en cuenta que la sección 7 establece explícitamente la cobertura del 100% del núcleo según lo determinado por gcov. Estoy de acuerdo con Donal Fellows que el marco de prueba es en gran parte responsable de la cobertura de la prueba más allá de lo que sugeriría un gráfico de llamadas. Es muy diferente ver que malloc() ingresó nn nn y escribir una prueba para la misma que escribir docenas de pruebas orientadas a simular entornos donde es probable que falle malloc().
Sí, la cobertura resultante es un artefacto de diligencia, sin embargo, también lo es la selección de un marco de prueba que permita ese tipo de diligencia.
Finalmente, reiterando lo obvio, malloc()
toma solo un único puntero de vacío. Esto sugiere que las pruebas escritas a su alrededor son deliberadamente diseñadas, no generadas automáticamente.
Solo como comparación, 45 MLOC es aproximadamente del mismo tamaño que Windows XP. Por supuesto, como expongo a continuación, es más fácil escribir una línea de código de prueba (y hasta el día de hoy) que escribir una línea de código de producción y sobrevivir hasta el día de hoy. Podría decirse que el "código de prueba" para XP incluye todas las líneas de código en Office 95, 98 y 2000 :-) –