graph LR
Test_Record_Serializer["Test Record Serializer"]
Protobuf_Converter["Protobuf Converter"]
MfgInspector_Reporter["MfgInspector Reporter"]
Web_GUI_Server["Web GUI Server"]
Dashboard_Server["Dashboard Server"]
Station_Server["Station Server"]
Station_Watcher["Station Watcher"]
Pub_Sub_System["Pub/Sub System"]
Test_Record_Serializer -- "Provides serialized data for external reporting" --> MfgInspector_Reporter
Protobuf_Converter -- "Supplies Protocol Buffer formatted data for MfgInspector uploads" --> MfgInspector_Reporter
MfgInspector_Reporter -- "Consumes serialized test records" --> Test_Record_Serializer
MfgInspector_Reporter -- "Utilizes Protobuf for data formatting" --> Protobuf_Converter
Web_GUI_Server -- "Serves as the underlying web platform for the dashboard" --> Dashboard_Server
Web_GUI_Server -- "Provides the web infrastructure for individual station interfaces" --> Station_Server
Dashboard_Server -- "Relies on the Web GUI Server for serving content" --> Web_GUI_Server
Dashboard_Server -- "Utilizes Pub/Sub for real-time updates to connected clients" --> Pub_Sub_System
Station_Server -- "Built upon the Web GUI Server's capabilities" --> Web_GUI_Server
Station_Server -- "Relies on the Station Watcher for monitoring test state" --> Station_Watcher
Station_Server -- "Uses Pub/Sub for pushing real-time updates to clients" --> Pub_Sub_System
Station_Watcher -- "Provides real-time test state updates to the Station Server" --> Station_Server
Pub_Sub_System -- "Used by the Dashboard Server to publish updates" --> Dashboard_Server
Pub_Sub_System -- "Used by the Station Server to publish updates" --> Station_Server
The Reporting & User Interface subsystem in OpenHTF is responsible for transforming raw test data into consumable reports and providing interactive web-based dashboards for real-time monitoring and analysis. This subsystem leverages a modular design, separating concerns between data serialization, external reporting integrations, core web serving, and specific dashboard functionalities.
Converts internal TestRecord objects into various output formats, primarily JSON, and manages the persistence of these serialized records to files. It acts as the initial data formatter for reporting.
Related Classes/Methods:
openhtf.output.callbacks.json_factoryopenhtf.output.callbacks.OutputToFile(1:1)
Translates OpenHTF's internal test data structures into standardized Protocol Buffer messages. This is crucial for efficient and structured data exchange, especially for integrations with other systems.
Related Classes/Methods:
openhtf.output.proto.mfg_event_converteropenhtf.output.proto.test_runs_converter
Manages the integration with the MfgInspector service. It takes processed test records, converts them into a compatible format (often via Protobuf), and handles the secure upload of this data to the MfgInspector platform.
Related Classes/Methods:
openhtf.output.callbacks.mfg_inspector
Provides the foundational web server capabilities for the entire user interface. It handles HTTP requests, manages WebSocket connections for real-time communication, and serves static web assets (HTML, CSS, JavaScript) using the Tornado web framework.
Related Classes/Methods:
Manages the high-level OpenHTF dashboard. This includes discovering and publishing information about available test stations and presenting an aggregated view of test status and progress across the system.
Related Classes/Methods:
openhtf.output.servers.dashboard_server
Offers a dedicated web interface for a specific test station. It provides real-time monitoring of the current test, detailed information about individual test phases, and access to test attachments.
Related Classes/Methods:
openhtf.output.servers.station_server
Actively monitors the state of the currently executing test on a specific station. It polls for updates to the test's status and triggers notifications or events when changes occur, ensuring the UI reflects the latest state.
Related Classes/Methods:
Facilitates real-time, asynchronous communication between server-side components and connected web clients. It enables a publish-subscribe model for pushing updates (e.g., test progress, status changes) to multiple subscribers without direct polling.
Related Classes/Methods: