Beneficios del sistema de prueba integrado (BIT)
Descripción general
El sistema de Pruebas Integradas (BIT) es un marco de pruebas integral, modular y extensible, diseñado para sistemas embebidos basados en Linux. Proporciona diagnósticos automatizados de hardware y software mediante una arquitectura basada en plugins, lo que garantiza la fiabilidad, la integridad y la disponibilidad operativa del sistema.
Beneficios clave
🛡️ Mayor confiabilidad del sistema
- Detección proactiva de fallos antes de que afecten las operaciones
- Monitoreo continuo de recursos críticos del sistema
- Sistema de alerta temprana para posible degradación del hardware
⚡ Tiempo de inactividad reducido
- Los diagnósticos automatizados eliminan la sobrecarga de las pruebas manuales
- La ejecución de pruebas programadas se ejecuta en segundo plano
- La notificación inmediata de fallos permite una respuesta rápida
📊 Cobertura integral
- Validación de hardware (PCI, USB, GPIO, Serial, CAN, Ethernet)
- Monitoreo de recursos del sistema (CPU, memoria, disco)
- Verificación de la ruta de datos (TCP, bus CAN, puertos serie)
Arquitectura Plug-and-Play
- Carga dinámica de complementos en tiempo de ejecución
- Parámetros de prueba basados en la configuración
- No se requieren modificaciones del sistema central para agregar nuevas pruebas
Integración con Systemd
- Se ejecuta como un servicio nativo de Linux
- Inicio automático al arrancar
- Gestión de servicios estándar (
systemctl start/stop/status)
Tipos de pruebas y cobertura
El sistema BIT implementa tres categorías de pruebas principales alineadas con las metodologías de prueba integradas estándar de la industria:
BIT de encendido (PBIT)
Pruebas que se ejecutan una vez al iniciar el sistema para verificar la integridad del hardware antes de que comiencen las operaciones normales.
Contrato de Término Continuo (CBIT)
Pruebas que se ejecutan periódicamente durante las operaciones normales para detectar fallas de tiempo de ejecución y agotamiento de recursos.
BIT de fábrica (FBIT)
Pruebas de hardware integrales utilizadas durante la fabricación y el mantenimiento para validar todas las interfaces del sistema.
Tabla de resumen de pruebas
Pruebas de BIT de encendido (PBIT)
| Nombre de la prueba | Descripción | Frecuencia |
|---|---|---|
pbit_bsp_version | Valida que la versión de BSP coincida con la configuración esperada | Una vez en el inicio |
pbit_can | Valida la disponibilidad de la interfaz del bus CAN | Una vez en el inicio |
pbit_checksum | Verifica las sumas de comprobación de archivos para verificar su integridad | Una vez en el inicio |
pbit_cpu_cores | Valida el recuento de núcleos de CPU esperado | Una vez en el inicio |
pbit_cpu_usage | Comprueba que la utilización inicial de la CPU esté dentro de los límites | Una vez en el inicio |
pbit_disk_health | Valida el estado de salud SMART del disco | Una vez en el inicio |
pbit_disk_usage | Comprueba la disponibilidad de espacio en disco durante el arranque | Una vez en el inicio |
pbit_dmesg_check | Analiza dmesg en busca de errores críticos | Una vez en el inicio |
pbit_ethernet | Valida la disponibilidad de la interfaz Ethernet | Una vez en el inicio |
pbit_file_checksum | Verifica la integridad de los archivos críticos del sistema | Una vez en el inicio |
pbit_firewall_configuration | Valida que las reglas del firewall estén configuradas correctamente | Una vez en el inicio |
pbit_gpio | Valida la disponibilidad y el estado del pin GPIO | Una vez en el inicio |
pbit_gpu_loading | Comprueba el controlador de la GPU y la carga inicial | Una vez en el inicio |
pbit_memory_usage | Valida la memoria disponible al inicio | Una vez en el inicio |
pbit_pci_whitelist | Valida dispositivos PCI contra la lista blanca aprobada | Una vez en el inicio |
pbit_permissions_verification | Valida los permisos de archivos/directorios | Una vez en el inicio |
pbit_power_test | Comprueba el estado y los voltajes de la fuente de alimentación. | Una vez en el inicio |
pbit_selinux_apparmor_status | Valida el estado del módulo de seguridad | Una vez en el inicio |
pbit_serial_ports | Valida la disponibilidad del puerto serie | Una vez en el inicio |
pbit_ssh_configuration | Valida la configuración de seguridad SSH | Una vez en el inicio |
pbit_syslog_analysis | Analiza el syslog en busca de errores de inicio críticos | Una vez en el inicio |
pbit_temperature | Comprueba las lecturas térmicas iniciales | Una vez en el inicio |
pbit_usb_whitelist | Valida dispositivos USB contra la lista blanca aprobada | Una vez en el inicio |
Pruebas BIT continuas (CBIT)
| Nombre de la prueba | Descripción | Frecuencia |
|---|---|---|
cbit_bsp_version | Supervisa la consistencia de la versión BSP | Configurable |
cbit_can | Monitorea el estado del bus CAN y los contadores de errores | Configurable |
cbit_checksum | Verificación periódica de la integridad de los archivos | Configurable |
cbit_cpu_cores | Supervisa la disponibilidad del núcleo de la CPU | Configurable |
cbit_cpu_usage | Monitorea la utilización de la CPU durante una ventana móvil | Cada 1s |
cbit_disk_health | Supervisa los atributos SMART del disco | Configurable |
cbit_disk_usage | Monitorea el uso del disco contra umbrales | Cada 30 años |
cbit_dmesg | Monitorea el buffer de mensajes del kernel | Configurable |
cbit_dmesg_check | Detección continua de errores dmesg | Configurable |
cbit_ethernet | Supervisa el estado y los errores del enlace Ethernet | Configurable |
cbit_ethernet_status | Supervisa el estado de la conexión Ethernet | Configurable |
cbit_firewall_configuration | Supervisa la integridad de las reglas del firewall | Configurable |
cbit_gpio | Monitorea los cambios de estado de GPIO | Configurable |
cbit_gpu_loading | Monitorea la utilización de la GPU | Configurable |
cbit_memory_usage | Realiza un seguimiento de los patrones de consumo de memoria | Configurable |
cbit_pci_whitelist | Supervisa los cambios del dispositivo PCI | Configurable |
cbit_permissions | Supervisa los cambios de permisos de archivos | Configurable |
cbit_permissions_verification | Validación continua de permisos | Configurable |
cbit_power_consumption | Monitorea el consumo de energía y la eficiencia | Configurable |
cbit_selinux_apparmor_status | Supervisa el estado del módulo de seguridad | Configurable |
cbit_serial_ports | Monitorea la disponibilidad del puerto serie | Configurable |
cbit_ssh_configuration | Supervisa los cambios de configuración de SSH | Configurable |
cbit_syslog_analysis | Monitoreo continuo de errores de syslog | Configurable |
cbit_temperature | Monitorea lecturas y tendencias térmicas | Configurable |
cbit_usb_whitelist | Monitorea los cambios del dispositivo USB | Configurable |
Pruebas BIT de fábrica (FBIT)
| Nombre de la prueba | Descripción | Frecuencia |
|---|---|---|
fbit_can_data | Prueba la funcionalidad de transmisión/recepción del bus CAN | Configurable |
fbit_gpio_data | Valida la funcionalidad de entrada/salida GPIO | Configurable |
fbit_pci | Enumeración y verificación de dispositivos PCI | Configurable |
fbit_serial_data | Valida la comunicación de bucle invertido del puerto serie | Configurable |
fbit_ssd | Validación del rendimiento de lectura/escritura de SSD | Configurable |
fbit_system_data | Recopilación de información del sistema | Configurable |
fbit_tcp_data | Prueba rutas de datos Ethernet usando iPerf | Configurable |
fbit_usb | Verificación de lectura/escritura del dispositivo USB | Configurable |
fbit_video | Verificación de salida de vídeo | Configurable |
Total: 57 pruebas integradas que cubren la validación de hardware, la supervisión del sistema y la verificación de seguridad.
Arquitectura del complemento
El sistema BIT está construido sobre una potente arquitectura de complementos que permite una extensibilidad perfecta sin modificar el código central del sistema.
Cómo funciona
El sistema BIT utiliza Zenoh como su middleware de mensajería, lo que permite la distribución de resultados de pruebas en tiempo real a los clientes de monitoreo y una integración perfecta con los sistemas GVA (Arquitectura genérica del vehículo) a través de un puente de protocolo.
Arquitectura del flujo de mensajes
Monitoring Service"] end PBIT -->|TestResult| BM CBIT -->|TestResult| BM FBIT -->|TestResult| BM BM -->|"Zenoh Publish
bit/{hostname}/PBIT"| ZS BM -->|"Zenoh Publish
bit/{hostname}/CBIT"| ZS BM -->|"Zenoh Publish
bit/{hostname}/FBIT"| ZS ZS -->|"Subscribe
bit/+/+"| GUI ZS -->|"Subscribe
bit/+/+"| CLI ZS -->|"Subscribe
bit/+/+"| ZDG ZDG -->|"DDS Publish
GVA::HealthStatus"| HUMS
Secuencia de mensajes detallada
Detalles del puente de protocolo
| Componente | Protocolo en | Protocolo fuera | Objetivo |
|---|---|---|---|
| Gerente de BIT | Interno | Zenoh | Publica los resultados de las pruebas |
| Interfaz gráfica de usuario de BIT | Zenoh | — | Muestra resultados en tiempo real |
| CLI DE BIT | Zenoh | — | Monitoreo de línea de comandos |
| Puerta de enlace BIT | Zenoh | Odontólogo dental (GVA) | Puentes a sistemas de vehículos |
| GVA ZUMBIDO | Odontólogo | — | Monitoreo de salud y uso |
Características del complemento
| Característica | Descripción |
|---|---|
| Carga dinámica | Los complementos se cargan como bibliotecas compartidas ( .so ) en tiempo de ejecución |
| Interfaz basada en rasgos | Rasgos TestRun y TestDetails consistentes para todos los complementos |
| Archivos de configuración | Configuración basada en TOML por prueba ( /etc/bit/*.toml ) |
| Seguimiento de versiones | Cada complemento informa la versión y la marca de tiempo de compilación |
| Registro de devoluciones de llamadas | Infraestructura de registro unificada en todas las pruebas |
| Contadores de ejecución | Seguimiento automático de estadísticas de aprobados/reprobados |
Crear un nuevo complemento
Crear un complemento BIT personalizado es sencillo:
- Implementar el rasgo
TestRun:
impl TestRun for MyCustomTest {
fn run(&mut self) {
// Your test logic here
self.base_test.status = TestStatus::Success;
}
}- Exportar la interfaz del complemento:
#[no_mangle]
pub extern "C" fn create_test() -> Box {
Box::new(MyCustomTest::new())
} - Crear un archivo de configuración (opcional):
[my_custom_test]
frequency = 60
enabled = true
threshold = 90- Construya e implemente la biblioteca compartida en
/usr/local/lib/bit_manager/
Características de seguridad del lenguaje Rust
El sistema BIT está implementado en Rust y brinda garantías de seguridad incomparables, fundamentales para sistemas integrados y de seguridad crítica.
Seguridad de la memoria
| Característica | Beneficio |
|---|---|
| Sin punteros nulos | Option Los tipos evitan desreferencias de punteros nulos |
| Sin desbordamientos de búfer | Comprobación de límites en todos los accesos a matrices/vectores |
| Sin uso después de la liberación | El sistema de propiedad garantiza la validez de la memoria |
| No hay carreras de datos | Prevención de errores de acceso concurrente en tiempo de compilación |
¿Por qué Rust para BIT?
🔒 Seguridad en tiempo de compilación
Rust detecta categorías enteras de errores en tiempo de compilación que podrían causar fallas en tiempo de ejecución en C/C++:
- Fugas de memoria
- Desbordamientos de búfer
- Condiciones de carrera
- Desreferencias de punteros nulos
⚡ Abstracciones de costo cero
Las funciones de seguridad de alto nivel se compilan en un código de máquina eficiente sin sobrecarga de tiempo de ejecución , igualando el rendimiento de C/C++.
🔧 Concurrencia sin miedo
El modelo de propiedad permite la ejecución segura de pruebas multiproceso sin carreras de datos:
// Thread-safe shared state with Arc>
let shared_state = Arc::new(Mutex::new(TestState::new())); 📦 Gestión moderna de dependencias
- El administrador de paquetes de carga garantiza compilaciones reproducibles
- Resolución automatizada de dependencias
- Marco de pruebas integrado
🛡️ Configuración de tipos seguros
El análisis de configuración aprovecha el sistema de tipos de Rust para detectar errores de forma temprana:
let threshold: f32 = config.get("threshold")?; // Type-checked at compile timeEstadísticas de seguridad
| Métrico | Rust frente a C/C++ |
|---|---|
| Errores de seguridad de la memoria | Eliminado en tiempo de compilación |
| Clases de vulnerabilidad CVE prevenidas | ~70% de las vulnerabilidades comunes |
| El puntero nulo en tiempo de ejecución se bloquea | Imposible |
| Violaciones de seguridad de subprocesos | Atrapado en tiempo de compilación |
Integración e implementación
Servicio Systemd
# Enable automatic startup
sudo systemctl enable bit_manager
# Start the service
sudo systemctl start bit_manager
# Check status
sudo systemctl status bit_managerInstalación de paquetes Debian
cargo deb -p bit_manager
sudo dpkg -i target/debian/bit_manager_*.debRutas de configuración
| Camino | Objetivo |
|---|---|
/etc/bit/ | Archivos de configuración de prueba (TOML) |
/usr/local/lib/bit_manager/ | Bibliotecas compartidas de complementos |
/var/log/bit_manager/ | Archivos de registro |
Inspección y Monitoreo
La utilidad bit_inspect proporciona información detallada sobre las pruebas cargadas:
# List all available tests
bit_inspect
# Get detailed information about a specific test
bit_inspect cbit_disk_usageEjemplo de salida:
Details:
Long-Name Disk utilization test
Author Ross Newman
Description Check the disk is not nearing full
Status NotRun
Plugin Details:
Plugin Name cbit_disk_usage
Version 1.0.0
Date Built 2025-03-09 01:42:11
Run Frequency Periodic(30s) Resumen
El sistema BIT ofrece:
✅ Diagnóstico completo de hardware y software
✅ Arquitectura de complementos extensible para pruebas personalizadas
✅ Implementación segura para memoria en Rust
✅ Metodología PBIT/CBIT/FBIT estándar de la industria
✅ Integración nativa con Linux/systemd
✅ Parámetros de prueba basados en la configuración
✅ Monitoreo y registro en tiempo real