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

flowchart LR subgraph Server["🖥️ BIT Server"] BM["BIT Manager"] PBIT["PBIT Plugins"] CBIT["CBIT Plugins"] FBIT["FBIT Plugins"] end subgraph Zenoh["🌐 Zenoh Network"] ZS["Zenoh Session"] end subgraph Clients["📱 BIT Clients"] GUI["BIT GUI"] CLI["BIT CLI"] end subgraph Gateway["🔗 BIT Gateway"] ZDG["Zenoh-DDS Bridge"] end subgraph GVA["🎖️ GVA Domain (DDS)"] HUMS["Health & Usage
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

sequenceDiagram participant Plugin as Test Plugin participant BM as BIT Manager participant Zenoh as Zenoh Router participant GUI as BIT GUI participant Gateway as BIT Gateway participant HUMS as GVA HUMS (DDS) Note over Plugin,HUMS: Test Execution & Result Distribution Plugin->>BM: Execute Test BM->>BM: Encode BuiltInTestResult (Protobuf) BM->>Zenoh: Publish to bit/{hostname}/CBIT par Parallel Distribution Zenoh-->>GUI: Forward Result GUI->>GUI: Display in Dashboard and Zenoh-->>Gateway: Forward Result Gateway->>Gateway: Zenoh → DDS Transform Gateway->>HUMS: Publish GVA::HealthStatus HUMS->>HUMS: Update Vehicle Health Record end Note over GUI,HUMS: Real-time monitoring on both systems

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:

  1. Implementar el rasgo TestRun :
 impl TestRun for MyCustomTest {
    fn run(&mut self) {
        // Your test logic here
        self.base_test.status = TestStatus::Success;
    }
}
  1. Exportar la interfaz del complemento:
 #[no_mangle]
pub extern "C" fn create_test() -> Box {
    Box::new(MyCustomTest::new())
}
  1. Crear un archivo de configuración (opcional):
 [my_custom_test]
frequency = 60
enabled = true
threshold = 90
  1. 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 time

Estadí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_manager

Instalación de paquetes Debian

 cargo deb -p bit_manager
sudo dpkg -i target/debian/bit_manager_*.deb

Rutas 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_usage

Ejemplo 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