
{"id":9737,"date":"2022-06-21T13:53:06","date_gmt":"2022-06-21T13:53:06","guid":{"rendered":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/documentation\/rdk_broadband_documentation\/components\/testanddiagnostic\/"},"modified":"2026-05-04T10:02:36","modified_gmt":"2026-05-04T10:02:36","slug":"testanddiagnostic","status":"publish","type":"page","link":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/testanddiagnostic\/","title":{"rendered":"Test And Diagnostic"},"content":{"rendered":"\n<p>The Test and Diagnostic component is a comprehensive RDK-B middleware module that provides essential network connectivity testing, self-healing capabilities, system health monitoring, and diagnostic services for broadband gateway devices. This component serves as the central hub for proactive device health management, ensuring optimal network performance and automatic issue resolution.<\/p>\n\n\n\n<p>The component operates as three distinct service layers: First, it provides network diagnostic capabilities including ping, traceroute, DNS lookup, upload\/download testing, and WAN connectivity monitoring to validate network paths and performance. Second, it implements intelligent self-healing mechanisms that automatically detect and remediate common connectivity issues, memory leaks, and service failures without user intervention. Third, it offers comprehensive system health monitoring including CPU\/memory usage tracking, thermal management, latency measurements, and device prioritization services.<\/p>\n\n\n\n<p>At the module level, the component integrates deeply with the RDK-B ecosystem through RBus messaging for real-time event publishing, TR-181 data model compliance for standardized parameter access, HAL layer integration for hardware-specific operations, and persistent configuration management. It coordinates with other RDK-B components like CcspCr (Component Registry), CcspPandM (Provisioning and Management), and OneWifi for holistic device management while maintaining loose coupling through well-defined interfaces.<\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">graph LR\n    subgraph External2 [\"External Systems\"]\n        FW2[Firmware Upgrade Server]\n        WEB2[Web UI\/ACS Server] \n        DNS2[DNS Servers]\n        SPEED2[Speed Test Servers]\n    end\n\n    subgraph RemoteMgmt [\"Remote Management\"]\n        ProtocolAgents[Protocol Agents&lt;br\/>TR-069, WebPA, USP etc.]\n    end\n\n    subgraph TandDComp [\"Test and Diagnostics\"]\n        TANDD2[Test &amp; Diagnostic&lt;br\/>Component]\n    end\n\n    subgraph RDKMiddleware [\"RDK Middleware Components\"]\n        CR2[CcspCr]\n        PANDM2[CcspPandM]\n        WIFI2[OneWifi]\n        PSM2[CcspPsm]\n    end\n\n    subgraph PlatformLayer [\"Platform Layer\"]\n        HAL2[Platform HAL]\n        LINUX[Linux]\n    end\n\n    %% External connections\n    WEB2 -->|TR-069\/HTTP| ProtocolAgents\n    FW2 -->|Health Checks| ProtocolAgents\n    DNS2 -->|DNS Queries| TANDD2\n    SPEED2 -->|Speed Tests| TANDD2\n\n    %% Remote Management to Test &amp; Diagnostics\n    ProtocolAgents &lt;-->|Commands\/Status| TANDD2\n\n    %% Test &amp; Diagnostics to RDK Middleware\n    TANDD2 &lt;-->|RBus Events| CR2\n    TANDD2 &lt;-->|Config\/Status| PANDM2\n    TANDD2 &lt;-->|WiFi Diagnostics| WIFI2\n    TANDD2 &lt;-->|Persistent Data| PSM2\n\n    %% RDK Middleware to Platform Layer\n    CR2 -->|System Calls| HAL2\n    PANDM2 -->|Configuration| HAL2\n    WIFI2 -->|HAL APIs| HAL2\n    PSM2 -->|Storage Operations| LINUX\n    TANDD2 -->|HAL APIs| HAL2\n\n    %% Platform Layer interactions\n    HAL2 &lt;-->|Driver Interfaces| LINUX\n\n    classDef external fill:#fff3e0,stroke:#ef6c00,stroke-width:2px\n    classDef remotemgmt fill:#fce4ec,stroke:#c2185b,stroke-width:2px\n    classDef tanddsystem fill:#e3f2fd,stroke:#1976d2,stroke-width:3px\n    classDef middleware fill:#e1f5fe,stroke:#0277bd,stroke-width:2px\n    classDef platform fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px\n\n    class WEB2,FW2,DNS2,SPEED2 external\n    class ProtocolAgents remotemgmt\n    class TANDD2 tanddsystem\n    class CR2,PANDM2,WIFI2,PSM2 middleware\n    class HAL2,LINUX platform<\/pre><\/div>\n\n\n\n<p><strong>Key Features &amp; Responsibilities<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Network Connectivity Diagnostics<\/strong>: Provides comprehensive network testing tools including ICMP ping, UDP echo, traceroute, DNS lookup, and bandwidth testing to validate end-to-end connectivity and diagnose network issues<\/li>\n\n\n\n<li><strong>Self-Healing &amp; Recovery Mechanisms<\/strong>: Implements intelligent automatic recovery systems that detect and remediate connectivity failures, memory leaks, process crashes, and configuration corruption without manual intervention<\/li>\n\n\n\n<li><strong>System Health Monitoring<\/strong>: Continuously monitors critical system metrics including CPU utilization, memory usage, thermal conditions, and device performance to ensure optimal operation and prevent system degradation<\/li>\n\n\n\n<li><strong>WAN Connectivity Validation<\/strong>: Performs periodic WAN connectivity checks with configurable test intervals, failure thresholds, and automatic failover mechanisms to maintain reliable internet access<\/li>\n\n\n\n<li><strong>Latency Measurement &amp; Analysis<\/strong>: Measures network latency across different paths and protocols to optimize routing decisions and detect performance degradation<\/li>\n\n\n\n<li><strong>Image Health Verification<\/strong>: Validates firmware integrity and performs health checks on system images to detect corruption and ensure system stability<\/li>\n\n\n\n<li><strong>Resource Monitoring &amp; Alerting<\/strong>: Tracks system resources, generates health reports, and publishes critical events to enable proactive maintenance and troubleshooting<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"TestAndDiagnostic-Design\">Design<\/h2>\n\n\n\n<p>The Test and Diagnostic component follows a modular, event-driven architecture designed for high reliability and scalability in broadband gateway environments. The design emphasizes separation of concerns with distinct modules handling diagnostics, self-healing, monitoring, and control functions while maintaining unified coordination through a central service manager. The architecture ensures minimal performance impact on the primary networking functions while providing comprehensive health monitoring and automatic remediation capabilities.<\/p>\n\n\n\n<p>The component&#8217;s design integrates seamlessly with the RDK-B middleware ecosystem through standardized interfaces and messaging protocols. It leverages the RBus messaging framework for real-time event propagation, enabling other components to subscribe to health and diagnostic events. The TR-181 data model compliance ensures consistent parameter access patterns and remote management capabilities through standard CWMP protocols. The modular design allows individual diagnostic and monitoring functions to operate independently, providing fault isolation and enabling selective feature activation based on device capabilities and configuration requirements.<\/p>\n\n\n\n<p>The IPC mechanisms are strategically designed to minimize system overhead while ensuring reliable communication. The component uses RBus for high-frequency event publishing and parameter synchronization, System V message queues for inter-module communication within parts of the component, and direct HAL API calls for hardware interactions. Data persistence is achieved through integration with CcspPsm for configuration parameters and local file-based storage for diagnostic logs and temporary data, ensuring data integrity across system reboots and component restarts.<\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">flowchart LR\n\n%% ----------------- CLASS DEFINITIONS ----------------- %%\nclassDef manager fill:#e3f2fd,stroke:#1976d2,stroke-width:3px;\nclassDef diagnostic fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px;\nclassDef health fill:#fff3e0,stroke:#ef6c00,stroke-width:2px;\nclassDef recovery fill:#e8f5e8,stroke:#2e7d32,stroke-width:2px;\nclassDef data fill:#fce4ec,stroke:#c2185b,stroke-width:2px;\n\n%% ----------------- DATA MODEL LAYER ----------------- %%\nsubgraph DataModelLayer [Data Model Layer]\n    DML[TR-181 DML\/TAD]\n    RBus[RBus Interface]\nend\n\n%% ----------------- MAIN CONTROLLER ----------------- %%\nTDS[TandDSsp Service Manager]\n\n%% ----------------- RESOURCE MONITOR ----------------- %%\nsubgraph RMGroup [Resource &amp; Self-Heal]\n    RM[Resource Monitor]\n    SHE[Self-Heal Engine]\n    WAN[WAN Connectivity Checker]\n    PRIORITY[Device Prioritization]\n    TEMP[Temperature Alerts]\n    PERF[Performance Data]\n    CPUMON[CPU Load Monitor&lt;br\/>resource_monitor.sh]\n    MEMMON[Memory Usage Monitor&lt;br\/>log_mem_cpu_info.sh]\n    PROCMON[Process Health Monitor&lt;br\/>task_health_monitor.sh]\n    CPUMEMFRAG[CPU Memory Fragmentation&lt;br\/>CpuMemFrag module]\nend\n\n%% ----------------- HEALTH MONITOR ----------------- %%\nsubgraph HMGroup [Health Monitoring]\n    HM[System Health Check]\n    THERM[Thermal Control]\n    LAT[Latency Measurement]\n    IMG[Image Health Checker]\n    SYSRES[System Resource Tracker]\n    PROCTRACK[Process Tracking &amp; Stats]\nend\n\n%% ----------------- DIAGNOSTIC ENGINE ----------------- %%\nsubgraph DiagnosticGroup [Diagnostic Modules]\n    DE[Diagnostic Engine]\n    PING[IP Ping]\n    TRACE[Traceroute]\n    DNS[DNS Lookup]\n    SPEED[Speed Test]\nend\n\n%% ----------------- FINAL RECOVERY BLOCK ----------------- %%\nRCA[Recovery &amp; Corrective Action]\n\n%% ----------------- CONNECTIONS ----------------- %%\nDML --> TDS\nRBus --> TDS\n\n%% TDS to main components\nTDS --> RM\nTDS --> HM\nTDS --> DE\n\n%% Resource Monitor Outputs\nRM --> SHE\nRM --> TEMP\nRM --> PERF\nRM --> CPUMON\nRM --> MEMMON\nRM --> PROCMON\nRM --> CPUMEMFRAG\nSHE --> WAN\nSHE --> PRIORITY\n\n%% Health Monitor Outputs\nHM --> THERM\nHM --> LAT\nHM --> IMG\nHM --> SYSRES\nHM --> PROCTRACK\n\n%% Diagnostic Outputs\nDE --> PING\nDE --> TRACE\nDE --> DNS\nDE --> SPEED\n\n%% ---- Connect all 3 main sections to Recovery &amp; Corrective Action ---- %%\nRMGroup --> RCA\nHMGroup --> RCA\nDiagnosticGroup --> RCA\n\n%% ----------------- CLASS ASSIGNMENTS ----------------- %%\nclass TDS manager;\nclass DE,PING,TRACE,DNS,SPEED diagnostic;\nclass HM,THERM,LAT,IMG,SYSRES,PROCTRACK health;\nclass RM,SHE,WAN,PRIORITY,TEMP,PERF,CPUMON,MEMMON,PROCMON,CPUMEMFRAG recovery;\nclass DML,RBus data;\nclass RCA recovery;<\/pre><\/div>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"TestAndDiagnostic-PrerequisitesandDependencies\">Prerequisites and Dependencies<\/h3>\n\n\n\n<p><strong>Build-Time Flags and Configuration:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Configure Option<\/strong><\/td><td><strong>DISTRO Feature<\/strong><\/td><td><strong>Build Flag<\/strong><\/td><td><strong>Purpose<\/strong><\/td><td><strong>Default<\/strong><\/td><\/tr><tr><td><code>--enable-mta<\/code><\/td><td>N\/A<\/td><td><code>ENABLE_MTA<\/code><\/td><td>Enable Media Terminal Adapter (MTA) support for cable modem diagnostics<\/td><td>Enabled<\/td><\/tr><tr><td><code>--enable-core_net_lib_feature_support<\/code><\/td><td><code>core-net-lib<\/code><\/td><td><code>CORE_NET_LIB_FEATURE_SUPPORT<\/code><\/td><td>Enable advanced networking library support for enhanced diagnostics<\/td><td>Disabled<\/td><\/tr><tr><td><code>--enable-rdk_scheduler<\/code><\/td><td><code>enable_rdkscheduler<\/code><\/td><td><code>RDK_SCHEDULER_ENABLED<\/code><\/td><td>Enable RDK Scheduler integration for task management<\/td><td>Disabled<\/td><\/tr><tr><td><code>--enable-device_prioritization<\/code><\/td><td><code>enable_device_prioritization<\/code><\/td><td><code>DEVICE_PRIORITIZATION_ENABLED<\/code><\/td><td>Enable device prioritization and QoS management features<\/td><td>Disabled<\/td><\/tr><tr><td><code>--enable-resourceoptimization<\/code><\/td><td>N\/A<\/td><td><code>RESOURCE_OPTIMIZATION_ENABLED<\/code><\/td><td>Enable resource optimization algorithms and memory management<\/td><td>Disabled<\/td><\/tr><tr><td><code>--enable-warehousediagnostics<\/code><\/td><td>N\/A<\/td><td><code>WAREHOUSE_DIAGNOSTICS_ENABLED<\/code><\/td><td>Enable warehouse-specific diagnostic tests and validation procedures<\/td><td>Disabled<\/td><\/tr><tr><td><code>--enable-unitTestDockerSupport<\/code><\/td><td>N\/A<\/td><td><code>UNIT_TEST_DOCKER_SUPPORT<\/code><\/td><td>Enable Docker-based unit testing framework integration<\/td><td>Disabled<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>RDK-B Platform and Integration Requirements (MUST):<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>RDK-B Components<\/strong>: CcspCommonLibrary (message bus), CcspCr (component registry), CcspPsm (persistent storage), CcspPandM (provisioning)<\/li>\n\n\n\n<li><strong>HAL Dependencies<\/strong>: Platform HAL v2.0+, Network HAL, Thermal HAL (if thermal monitoring enabled)<\/li>\n\n\n\n<li><strong>Systemd Services<\/strong>: ccsp-msg-bus.service, ccsp-cr.service, ccsp-psm.service must be active before\u00a0<code>CcspTandDSsp<\/code>\u00a0(on some platforms\/packages, this TandD component may instead be installed as\u00a0<code>test-and-diagnostic.service<\/code>)<\/li>\n\n\n\n<li><strong>Message Bus<\/strong>: RBus registration for &#8220;Device.SelfHeal.&#8221;, &#8220;Device.IP.Diagnostics.&#8221;, &#8220;Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.&#8221; namespaces<\/li>\n\n\n\n<li><strong>Configuration Files<\/strong>:\u00a0<code>\/etc\/ccsp_msg.cfg<\/code>,\u00a0<code>\/nvram\/syscfg.db<\/code>, TR-181 data model XML configuration in\u00a0<code>config\/TestAndDiagnostic_arm.XML<\/code><\/li>\n\n\n\n<li><strong>Startup Order<\/strong>: Initialize after message bus and component registry, before user-facing services like WiFi and WAN components<\/li>\n<\/ul>\n\n\n\n<p><strong>Threading Model<\/strong><\/p>\n\n\n\n<p>The Test and Diagnostic component implements a multi-threaded architecture using POSIX pthreads for concurrent diagnostic operations, latency measurements, and system monitoring. The component creates multiple background threads to handle different aspects of network diagnostics and system health monitoring.<\/p>\n\n\n\n<p><strong>Note<\/strong>: The threading table lists the most important threads in the Test and Diagnostic component. Some threads are part of core functionality (Main, Ping Test, WAN connectivity threads, Diagnostic Task) while others are conditionally compiled based on build flags (Time Update thread for ethwan\/extender mode, Monitor Service thread for latency measurement, RDK Test Monitor for RDK testing features). Additional auxiliary threads for latency measurement (like hash cleanup, subscription retry, sysevent handlers) are created as needed but are not listed as they are implementation details of the latency measurement subsystem.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Thread &amp; Function<\/strong><\/td><td><strong>Purpose<\/strong><\/td><td><strong>Cycle\/Timeout<\/strong><\/td><td><strong>Synchronization<\/strong><\/td><\/tr><tr><td><strong>Main Thread<\/strong><br><code>main()<\/code>&nbsp;\/&nbsp;<code>ssp_main()<\/code><\/td><td>Component initialization, RBus message processing, TR-181 parameter handling<\/td><td>Event-driven message loop, RBus callbacks, SSP lifecycle management<\/td><td>RBus async callbacks, pthread mutexes<\/td><\/tr><tr><td><strong>Ping Test Thread<\/strong><br><code>COSAIP_pingtest_ProcessThread()<\/code><\/td><td>Network connectivity testing through ping operations<\/td><td>On-demand execution via TR-181 ping test requests<\/td><td>pthread_create(), result synchronization<\/td><\/tr><tr><td><strong>WAN Query Now Thread<\/strong><br><code>wancnctvty_chk_querynow_thread()<\/code><\/td><td>WAN connectivity immediate query processing<\/td><td>On-demand execution for immediate connectivity validation<\/td><td>pthread_create() per query request<\/td><\/tr><tr><td><strong>WAN Passive Monitor Thread<\/strong><br><code>wancnctvty_chk_passive_thread()<\/code><\/td><td>Passive WAN connectivity monitoring without active probing<\/td><td>Continuous monitoring with configurable intervals<\/td><td>pthread_create(), interface state monitoring<\/td><\/tr><tr><td><strong>WAN Active Monitor Thread<\/strong><br><code>wancnctvty_chk_active_thread()<\/code><\/td><td>Active WAN connectivity monitoring with network probing<\/td><td>Periodic active connectivity tests and validation<\/td><td>pthread_create(), active probe synchronization<\/td><\/tr><tr><td><strong>Diagnostic Task Thread<\/strong><br><code>diag_task()<\/code><\/td><td>Generic diagnostic task execution with timeout management<\/td><td>Per-diagnostic operation with configurable timeouts<\/td><td>pthread_mutex_t, pthread_timedjoin_np() for timeout handling<\/td><\/tr><tr><td><strong>Time Update Thread<\/strong><br><code>updateTimeThread()<\/code><\/td><td>Continuous time synchronization for ethwan mode, build epoch validation<\/td><td>Periodic time updates with sleep intervals (conditional on ethwan\/extender)<\/td><td>pthread_detach(), time state validation<\/td><\/tr><tr><td><strong>Monitor Service Thread<\/strong><br><code>LatencyMeasurement_MonitorService()<\/code><\/td><td>Primary latency measurement service monitoring and coordination<\/td><td>Continuous monitoring loop with configurable intervals<\/td><td>pthread_mutex_t, pthread_cond_t synchronization<\/td><\/tr><tr><td><strong>RDK Test Monitor Thread<\/strong><br><code>monitor_thread()<\/code><\/td><td>RDK test monitoring and result collection<\/td><td>Continuous monitoring during active RDK test operations<\/td><td>pthread synchronization with test execution<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"TestAndDiagnostic-ComponentStateFlow\">Component State Flow<\/h3>\n\n\n\n<p><strong>Initialization to Active State<\/strong><\/p>\n\n\n\n<p>The Test and Diagnostic component follows a structured initialization sequence ensuring all dependencies are available and properly configured before entering active monitoring and diagnostic operations. The component validates its environment, establishes communication channels, and performs initial health checks before becoming fully operational.<\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant System as System Startup\n    participant TandD as Test &amp; Diagnostic\n    participant RBus as Message Bus\n    participant Config as Configuration\n    participant HAL as Platform HAL\n    participant Modules as Internal Modules\n\n    System->>TandD: Start Service (systemd)\n    Note over TandD: State: Initializing&lt;br\/>Parse command line args, setup logging\n\n    TandD->>Config: Load Configuration Files\n    Config-->>TandD: Configuration Loaded (\/etc\/test_and_diagnostic.conf)\n    Note over TandD: State: LoadingConfig \u2192 RegisteringBus\n\n    TandD->>RBus: Initialize RBus Connection (tadRbusInit)\n    RBus-->>TandD: Connection Established\n    TandD->>RBus: Register TR-181 Data Models\n    RBus-->>TandD: Registration Complete\n    Note over TandD: State: RegisteringBus \u2192 InitializingModules\n\n    TandD->>Modules: Initialize Latency Measurement (LatencyMeasurementInit)\n    Modules-->>TandD: Latency Measurement Ready\n    TandD->>Modules: Initialize Device Prioritization (DevicePrioInit, conditional)\n    Modules-->>TandD: Device Prioritization Ready\n    TandD->>Modules: Create Time Update Thread (updateTimeThread_create, conditional)\n    Modules-->>TandD: Time Update Thread Created\n    Note over TandD: State: InitializingModules \u2192 Active\n\n    TandD->>System: Initialization Complete\n    Note over TandD: State: Active&lt;br\/>Start periodic monitoring &amp; diagnostics\n\n    loop Runtime Operations\n        TandD->>TandD: Process RBus Events\n        TandD->>TandD: Execute Scheduled Diagnostics\n        TandD->>TandD: Monitor System Health\n        TandD->>TandD: Perform Self-Healing Actions\n    end\n\n    System->>TandD: Stop Request (SIGTERM)\n    Note over TandD: State: Active \u2192 Shutdown\n    TandD->>Modules: Shutdown All Modules\n    TandD->>RBus: Unregister &amp; Disconnect\n    TandD->>System: Shutdown Complete<\/pre><\/div>\n\n\n\n<p><strong>Runtime State Changes and Context Switching<\/strong><\/p>\n\n\n\n<p>The component maintains several operational contexts that can dynamically change based on system conditions, configuration updates, and external triggers.<\/p>\n\n\n\n<p><strong>State Change Triggers:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Connectivity Loss Detection<\/strong>: Transitions to enhanced monitoring mode when WAN connectivity failures are detected, increasing diagnostic frequency and activating aggressive self-healing procedures<\/li>\n\n\n\n<li><strong>Resource Threshold Breach<\/strong>: Switches to resource conservation mode when CPU or memory usage exceeds configured thresholds, reducing diagnostic frequency and disabling non-critical features<\/li>\n\n\n\n<li><strong>Configuration Updates<\/strong>: Dynamically reconfigures operational parameters when TR-181 configuration changes are received via RBus, without requiring service restart<\/li>\n\n\n\n<li><strong>Emergency Recovery Mode<\/strong>: Activates when critical system failures are detected, prioritizing essential connectivity restoration over comprehensive diagnostics<\/li>\n<\/ul>\n\n\n\n<p><strong>Context Switching Scenarios:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Normal to Diagnostic Mode<\/strong>: When scheduled or triggered diagnostic tests are initiated, the component allocates additional resources and temporarily increases logging verbosity<\/li>\n\n\n\n<li><strong>Failover Context<\/strong>: During WAN connectivity failures, switches from passive monitoring to active recovery procedures including interface resets and alternative path validation<\/li>\n\n\n\n<li><strong>Maintenance Mode<\/strong>: Enters low-impact operation during firmware updates or system maintenance, suspending non-critical diagnostics while maintaining essential monitoring functions<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"TestAndDiagnostic-CallFlow\">Call Flow<\/h3>\n\n\n\n<p><strong>Initialization Call Flow:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant Init as systemd\n    participant TandD as Test &amp; Diagnostic\n    participant RBus as Message Bus\n    participant PSM as CcspPsm\n    participant HAL as Platform HAL\n\n    Init->>TandD: Start Service\n    TandD->>TandD: Parse Args &amp; Setup Logging\n    TandD->>PSM: Load Persistent Configuration\n    PSM-->>TandD: Configuration Data\n    TandD->>RBus: Initialize RBus Handle\n    RBus-->>TandD: Handle Created\n    TandD->>RBus: Register Data Model Elements\n    RBus-->>TandD: Registration Successful\n    TandD->>HAL: Initialize HAL Interfaces\n    HAL-->>TandD: HAL Ready\n    TandD->>TandD: Start Worker Threads\n    TandD->>Init: Service Ready (Active State)<\/pre><\/div>\n\n\n\n<p><strong>Network Diagnostic Request Processing Call Flow:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant Client as External Client\/WebUI\n    participant TandD as Test &amp; Diagnostic\n    participant DiagEngine as Diagnostic Engine\n    participant HAL as Network HAL\n    participant Network as External Network\n\n    Client->>TandD: RBus Request (Device.IP.Diagnostics.IPPing)\n    Note over TandD: Validate parameters &amp; permissions\n    TandD->>DiagEngine: Queue Diagnostic Test\n    Note over DiagEngine: Create diagnostic context\n    DiagEngine->>HAL: Get Network Interface Status\n    HAL-->>DiagEngine: Interface Information\n    DiagEngine->>Network: Execute ICMP Ping\n    Network-->>DiagEngine: Ping Response\/Timeout\n    DiagEngine->>DiagEngine: Process Results &amp; Generate Report\n    DiagEngine-->>TandD: Diagnostic Results\n    TandD->>TandD: Update TR-181 Parameters\n    TandD-->>Client: RBus Response (Success\/Results)\n    Note over TandD: Publish diagnostic completion event<\/pre><\/div>\n\n\n\n<p><strong>Self-Healing Event Processing Call Flow:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant Monitor as Health Monitor\n    participant TandD as Test &amp; Diagnostic\n    participant SelfHeal as Self-Heal Engine\n    participant HAL as Platform HAL\n    participant External as Other RDK-B Components\n\n    Monitor->>TandD: Health Threshold Exceeded\n    Note over TandD: Evaluate severity &amp; trigger conditions\n    TandD->>SelfHeal: Initiate Recovery Procedure\n    SelfHeal->>HAL: Collect System Diagnostics\n    HAL-->>SelfHeal: System State Information\n    SelfHeal->>SelfHeal: Determine Recovery Actions\n    SelfHeal->>HAL: Execute Recovery Commands\n    HAL-->>SelfHeal: Command Results\n    SelfHeal->>TandD: Recovery Status Update\n    TandD->>External: Publish Recovery Event (RBus)\n    TandD->>TandD: Log Recovery Action &amp; Update Metrics<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"TestAndDiagnostic-InternalModules\">Internal Modules<\/h2>\n\n\n\n<p>The Test and Diagnostic component is structured into specialized modules that handle distinct aspects of system health, network diagnostics, and automated recovery. Each module operates semi-independently while coordinating through the central service manager for unified operation and event correlation.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Module\/Class<\/strong><\/td><td><strong>Description<\/strong><\/td><td><strong>Key Files<\/strong><\/td><\/tr><tr><td><strong>TandDSsp<\/strong><\/td><td>Service Support Platform that manages component lifecycle, RBus registration, TR-181 data model implementation, and coordination between all internal modules<\/td><td><code>ssp_main.c<\/code>,&nbsp;<code>ssp_messagebus_interface.c<\/code>,&nbsp;<code>ssp_action.c<\/code><\/td><\/tr><tr><td><strong>Diagnostic Engine<\/strong><\/td><td>Core network diagnostic functionality including ping, traceroute, DNS lookup, speed testing, and upload\/download validation with result processing and reporting<\/td><td><code>bbhm_diag_lib.c<\/code>,&nbsp;<code>BbhmDiagIpPing\/<\/code>,&nbsp;<code>BbhmDiagIpTraceroute\/<\/code>,&nbsp;<code>BbhmDiagNSLookup\/<\/code><\/td><\/tr><tr><td><strong>DML\/TAD Layer<\/strong><\/td><td>TR-181 Data Model Layer providing standardized parameter access for diagnostic results, self-heal configuration, and system health metrics with CWMP compliance<\/td><td><code>cosa_diagnostic_apis.c<\/code>,&nbsp;<code>cosa_dns_dml.c<\/code>,&nbsp;<code>cosa_ip_dml.c<\/code><\/td><\/tr><tr><td><strong>Self-Heal Engine<\/strong><\/td><td>Intelligent system recovery module that monitors connectivity, detects failures, and executes automated remediation procedures including interface resets and service recovery<\/td><td><code>selfheal_bootup.sh<\/code>,&nbsp;<code>selfheal_aggressive.sh<\/code>,&nbsp;<code>self_heal_connectivity_test.sh<\/code><\/td><\/tr><tr><td><strong>Health Monitor<\/strong><\/td><td>Comprehensive system health monitoring including CPU\/memory usage, thermal conditions, resource availability, and performance metrics with threshold-based alerting<\/td><td><code>resource_monitor.sh<\/code>,&nbsp;<code>task_health_monitor.sh<\/code>,&nbsp;<code>log_mem_cpu_info.sh<\/code><\/td><\/tr><tr><td><strong>WAN Connectivity Checker<\/strong><\/td><td>Specialized module for WAN connectivity validation, failure detection, and automatic recovery coordination with configurable test parameters and thresholds<\/td><td><code>cosa_wanconnectivity_apis.c<\/code>,&nbsp;<code>cosa_wanconnectivity_rbus_apis.c<\/code><\/td><\/tr><tr><td><strong>Thermal Control<\/strong><\/td><td>Temperature monitoring and thermal management with fan control, performance throttling, and over-temperature protection for hardware preservation<\/td><td><code>ThermalCtrl\/<\/code>&nbsp;directory modules<\/td><\/tr><tr><td><strong>Latency Measurement<\/strong><\/td><td>Network latency analysis and measurement services for performance optimization and quality assessment with statistical analysis and reporting<\/td><td><code>LatencyMeasurement\/<\/code>&nbsp;directory modules<\/td><\/tr><tr><td><strong>Image Health Checker<\/strong><\/td><td>Firmware integrity validation and system image health verification to detect corruption and ensure system stability<\/td><td><code>ImageHealthChecker\/<\/code>&nbsp;directory modules<\/td><\/tr><tr><td><strong>Device Prioritization<\/strong><\/td><td>Bandwidth allocation and QoS management based on device priorities and traffic classification for optimal network resource utilization<\/td><td><code>DevicePrioritization\/<\/code>&nbsp;directory modules<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"TestAndDiagnostic-ComponentInteractions\">Component Interactions<\/h2>\n\n\n\n<p>The Test and Diagnostic component maintains extensive interactions across the RDK-B ecosystem, serving as both a consumer of system health data and a provider of diagnostic services and automated recovery capabilities. These interactions span multiple layers from external management systems down to hardware abstraction layers.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"TestAndDiagnostic-InteractionMatrix\">Interaction Matrix<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Target Component\/Layer<\/strong><\/td><td><strong>Interaction Purpose<\/strong><\/td><td><strong>Key APIs\/Endpoints<\/strong><\/td><\/tr><tr><td><strong>RDK-B Middleware Components<\/strong><\/td><td><\/td><td><\/td><\/tr><tr><td>CcspCr (Component Registry)<\/td><td>Component registration, health reporting, event subscription<\/td><td><code>registerComponent()<\/code>,&nbsp;<code>componentHealthEvent<\/code><\/td><\/tr><tr><td>CcspPandM (Provisioning &amp; Management)<\/td><td>Configuration synchronization, factory reset coordination<\/td><td><code>Device.DeviceInfo.<\/code>,&nbsp;<code>Device.ManagementServer.<\/code><\/td><\/tr><tr><td>OneWifi<\/td><td>WiFi interface diagnostics, connectivity validation<\/td><td><code>Device.WiFi.<\/code>,&nbsp;<code>wifiHealthCheckTrigger<\/code><\/td><\/tr><tr><td>CcspPsm<\/td><td>Persistent storage of diagnostic results, configuration<\/td><td><code>PSM_Set_Record_Value()<\/code>,&nbsp;<code>PSM_Get_Record_Value()<\/code><\/td><\/tr><tr><td>WAN Manager<\/td><td>WAN connectivity monitoring, interface status<\/td><td><code>Device.X_RDK_WanManager.<\/code>,&nbsp;<code>wanConnectionStatus<\/code><\/td><\/tr><tr><td>Ethernet Agent<\/td><td>Ethernet interface diagnostics, link status<\/td><td><code>Device.Ethernet.Interface.<\/code>,&nbsp;<code>linkStatusChange<\/code><\/td><\/tr><tr><td><strong>System &amp; HAL Layers<\/strong><\/td><td><\/td><td><\/td><\/tr><tr><td>Platform HAL<\/td><td>System resource monitoring, hardware health<\/td><td><code>platform_hal_GetMemoryStatus()<\/code>,&nbsp;<code>platform_hal_GetCPUTemperature()<\/code><\/td><\/tr><tr><td>Network HAL<\/td><td>Network interface statistics, configuration<\/td><td><code>nethal_getInterfaceStats()<\/code>,&nbsp;<code>nethal_configureInterface()<\/code><\/td><\/tr><tr><td>Thermal HAL<\/td><td>Temperature monitoring, thermal management<\/td><td><code>thermal_hal_getCurrentTemperature()<\/code>,&nbsp;<code>thermal_hal_setFanSpeed()<\/code><\/td><\/tr><tr><td>System Services<\/td><td>Process monitoring, service control, log management<\/td><td><code>systemctl status<\/code>,&nbsp;<code>\/proc\/meminfo<\/code>,&nbsp;<code>\/sys\/class\/thermal\/<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><strong>Events Published by Test &amp; Diagnostic:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Event Name<\/strong><\/td><td><strong>Event Topic\/Path<\/strong><\/td><td><strong>Trigger Condition<\/strong><\/td><td><strong>Subscriber Components<\/strong><\/td><\/tr><tr><td>DeviceHealthEvent<\/td><td><code>Device.DeviceInfo.X_RDKCENTRAL-COM_xOpsDeviceMgmt.Logging.xOpsDMUploadLogsNow<\/code><\/td><td>Health threshold violations, critical failures<\/td><td>CcspPandM, Telemetry, WebUI<\/td><\/tr><tr><td>ConnectivityStatusEvent<\/td><td><code>Device.SelfHeal.ConnectivityTest.X_RDKCENTRAL-COM_pingStatus<\/code><\/td><td>WAN connectivity changes, ping test results<\/td><td>WAN Manager, CcspPandM<\/td><\/tr><tr><td>DiagnosticCompleteEvent<\/td><td><code>Device.IP.Diagnostics.X_RDKCENTRAL-COM_DiagnosticsState<\/code><\/td><td>Completion of diagnostic tests (ping, traceroute, etc.)<\/td><td>WebUI, ACS Server, NMS<\/td><\/tr><tr><td>SelfHealActionEvent<\/td><td><code>Device.SelfHeal.ResourceMonitor.X_RDKCENTRAL-COM_UsageComputeWindow<\/code><\/td><td>Self-heal actions triggered and completed<\/td><td>CcspPandM, Logging Services<\/td><\/tr><tr><td>ThermalAlertEvent<\/td><td><code>Device.DeviceInfo.X_RDKCENTRAL-COM_ThermalProtection.Enable<\/code><\/td><td>Temperature threshold breaches<\/td><td>All middleware components<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"TestAndDiagnostic-IPCFlowPatterns\">IPC Flow Patterns<\/h3>\n\n\n\n<p><strong>Primary IPC Flow &#8211; Diagnostic Test Execution:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant WebUI as Web UI\/ACS\n    participant TandD as Test &amp; Diagnostic\n    participant DiagModule as Diagnostic Module\n    participant NetHAL as Network HAL\n    participant PSM as CcspPsm\n\n    WebUI->>TandD: RBus Method Call (Device.IP.Diagnostics.IPPing.DiagnosticsState=Requested)\n    Note over TandD: Validate request parameters &amp; permissions\n    TandD->>DiagModule: Queue Ping Test (target, count, timeout)\n    DiagModule->>NetHAL: Get Interface Status &amp; Configuration\n    NetHAL-->>DiagModule: Interface Details &amp; IP Configuration\n    DiagModule->>DiagModule: Execute ICMP Ping Test\n    DiagModule-->>TandD: Test Results (packets sent\/received, RTT, loss%)\n    TandD->>PSM: Store Results (Device.IP.Diagnostics.IPPing.SuccessCount, etc.)\n    PSM-->>TandD: Storage Confirmation\n    TandD-->>WebUI: RBus Response (DiagnosticsState=Complete)\n    Note over TandD: Publish diagnostic completion event<\/pre><\/div>\n\n\n\n<p><strong>Self-Healing Event Flow:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant Monitor as Resource Monitor\n    participant TandD as Test &amp; Diagnostic\n    participant SelfHeal as Self-Heal Engine\n    participant WanMgr as WAN Manager\n    participant HAL as Platform HAL\n\n    Monitor->>TandD: Health Alert (High CPU\/Memory usage detected)\n    Note over TandD: Evaluate alert severity &amp; determine response\n    TandD->>SelfHeal: Trigger Recovery Procedure (resource_optimization)\n    SelfHeal->>HAL: Collect System Diagnostics (CPU\/Memory details)\n    HAL-->>SelfHeal: System Resource Statistics\n    SelfHeal->>SelfHeal: Determine Recovery Actions (restart services, clear cache)\n    SelfHeal->>HAL: Execute Recovery Commands\n    HAL-->>SelfHeal: Command Execution Results\n    SelfHeal->>WanMgr: Request Connectivity Validation\n    WanMgr-->>SelfHeal: Connectivity Status\n    SelfHeal-->>TandD: Recovery Status (Success\/Failure with details)\n    Note over TandD: Log recovery action &amp; update health metrics\n    TandD->>TandD: Publish Self-Heal Event (RBus)<\/pre><\/div>\n\n\n\n<p><strong>Health Monitoring Event Flow:<\/strong><\/p>\n\n\n\n<div class=\"wp-block-merpress-mermaidjs diagram-source-mermaid\"><pre class=\"mermaid\">sequenceDiagram\n    participant Timer as Periodic Timer\n    participant TandD as Test &amp; Diagnostic\n    participant HealthMon as Health Monitor\n    participant ThermalHAL as Thermal HAL\n    participant Subscribers as Event Subscribers\n\n    Timer->>TandD: Periodic Health Check Trigger (every 30 seconds)\n    TandD->>HealthMon: Collect System Health Metrics\n    HealthMon->>ThermalHAL: Get Current Temperature\n    ThermalHAL-->>HealthMon: Temperature Reading (\u00b0C)\n    HealthMon->>HealthMon: Check Against Thermal Thresholds\n\n    alt Temperature > Critical Threshold\n        HealthMon->>TandD: Critical Thermal Alert\n        TandD->>Subscribers: Publish Thermal Alert Event (RBus)\n        Note over TandD: Trigger thermal protection measures\n    else Temperature Normal\n        HealthMon-->>TandD: Normal Health Status\n        TandD->>TandD: Update Health Metrics\n    end<\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"TestAndDiagnostic-ImplementationDetails\">Implementation Details<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"TestAndDiagnostic-MajorHALAPIsIntegration\">Major HAL APIs Integration<\/h3>\n\n\n\n<p>The Test and Diagnostic component may interact with platform-specific HAL layers to access hardware-specific functionality and system resources in deployed integrations. However, the HAL symbols and paths are platform-dependent and are not defined in this repository as direct, repo-verified implementations.<\/p>\n\n\n\n<p><strong>External \/ platform-provided HAL examples (illustrative, not in-tree implementation mappings):<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>HAL API<\/strong><\/td><td><strong>Purpose<\/strong><\/td><td><strong>Provider\/Notes<\/strong><\/td><\/tr><tr><td><code>platform_hal_GetMemoryStatus()<\/code><\/td><td>Example platform API for retrieving system memory statistics including total, free, and usage percentages<\/td><td>Platform\/vendor HAL; not mapped here to an in-tree source file<\/td><\/tr><tr><td><code>platform_hal_GetCPUTemperature()<\/code><\/td><td>Example platform API for obtaining CPU temperature for thermal monitoring<\/td><td>Platform\/vendor HAL; not mapped here to an in-tree source file<\/td><\/tr><tr><td><code>nethal_getInterfaceStats()<\/code><\/td><td>Example network HAL API for collecting interface statistics for connectivity analysis<\/td><td>Platform\/vendor HAL; not mapped here to an in-tree source file<\/td><\/tr><tr><td><code>nethal_configureInterface()<\/code><\/td><td>Example network HAL API for configuring interfaces during recovery procedures<\/td><td>Platform\/vendor HAL; not mapped here to an in-tree source file<\/td><\/tr><tr><td><code>thermal_hal_getCurrentTemperature()<\/code><\/td><td>Example thermal HAL API for monitoring current thermal conditions<\/td><td>Platform\/vendor HAL; not mapped here to an in-tree source file<\/td><\/tr><tr><td><code>thermal_hal_setFanSpeed()<\/code><\/td><td>Example thermal HAL API for controlling fan speed where supported<\/td><td>Platform\/vendor HAL; not mapped here to an in-tree source file<\/td><\/tr><tr><td><code>platform_hal_getSystemUptime()<\/code><\/td><td>Example platform API for obtaining system uptime for health calculations and boot diagnostics<\/td><td>Platform\/vendor HAL; not mapped here to an in-tree source file<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"TestAndDiagnostic-KeyImplementationLogic\">Key Implementation Logic<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>State Machine Engine<\/strong>: The core diagnostic and self-healing state machine is implemented across multiple coordinated modules with centralized state management\n<ul class=\"wp-block-list\">\n<li>Main implementation in\u00a0<code>source\/TandDSsp\/ssp_main.c<\/code>\u00a0for component lifecycle and coordination<\/li>\n\n\n\n<li>State transition handlers in\u00a0<code>source\/dmltad\/cosa_diagnostic_apis.c<\/code>\u00a0for diagnostic test state management<\/li>\n\n\n\n<li>Self-healing state logic in shell scripts under\u00a0<code>scripts\/selfheal_*.sh<\/code>\u00a0for recovery procedures<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Event Processing<\/strong>: Hardware events and system alerts are processed through a multi-layered event handling system\n<ul class=\"wp-block-list\">\n<li>Hardware interrupt handling via HAL callback registration for thermal and network events<\/li>\n\n\n\n<li>Event queue management using RBus subscription model for inter-component communication<\/li>\n\n\n\n<li>Asynchronous event processing with dedicated worker threads for non-blocking operation<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Error Handling Strategy<\/strong>: Comprehensive error detection and recovery with multiple escalation levels\n<ul class=\"wp-block-list\">\n<li>HAL error code mapping with retry logic for transient hardware interface failures<\/li>\n\n\n\n<li>Recovery mechanisms for failed diagnostic tests including parameter validation and timeout handling<\/li>\n\n\n\n<li>Timeout handling and retry logic with exponential backoff for network operations and self-healing procedures<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li><strong>Logging &amp; Debugging<\/strong>: Multi-level logging system with configurable verbosity and specialized debugging tools\n<ul class=\"wp-block-list\">\n<li>Diagnostic test logging with detailed parameter tracking and result correlation<\/li>\n\n\n\n<li>HAL API call tracing with performance metrics and error rate monitoring<\/li>\n\n\n\n<li>Debug hooks for troubleshooting connectivity issues including packet capture integration and network path analysis<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"TestAndDiagnostic-KeyConfigurationFiles\">Key Configuration Files<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Configuration File<\/strong><\/td><td><strong>Purpose<\/strong><\/td><td><strong>Override Mechanisms<\/strong><\/td><\/tr><tr><td><code>\/nvram\/syscfg.db<\/code><\/td><td>Persistent system configuration managed by CcspPsm<\/td><td><code>syscfg set\/get<\/code>&nbsp;commands, factory reset procedures<\/td><\/tr><tr><td><code>config\/TestAndDiagnostic_arm.XML<\/code><\/td><td>TR-181 data model definitions and parameter mappings<\/td><td>Component rebuild required for structural changes<\/td><\/tr><tr><td><code>\/etc\/ccsp_msg.cfg<\/code><\/td><td>Message bus configuration for RBus communication<\/td><td>Service restart required after modifications<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><a href=\"https:\/\/wiki.rdkcentral.com\/spaces\/DOC\/pages\/476343113\/Test+And+Diagnostic\"><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Test and Diagnostic component is a comprehensive RDK-B middleware module that provides essential network [&hellip;]<\/p>\n","protected":false},"author":28,"featured_media":0,"parent":9575,"menu_order":29,"comment_status":"open","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-9737","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Test And Diagnostic - RDK Documentation Portal | Documentation<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/testanddiagnostic\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Test And Diagnostic - RDK Documentation Portal | Documentation\" \/>\n<meta property=\"og:description\" content=\"The Test and Diagnostic component is a comprehensive RDK-B middleware module that provides essential network [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/testanddiagnostic\/\" \/>\n<meta property=\"og:site_name\" content=\"RDK Documentation Portal | Documentation\" \/>\n<meta property=\"article:modified_time\" content=\"2026-05-04T10:02:36+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/testanddiagnostic\/\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/testanddiagnostic\/\",\"name\":\"Test And Diagnostic - RDK Documentation Portal | Documentation\",\"isPartOf\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\"},\"datePublished\":\"2022-06-21T13:53:06+00:00\",\"dateModified\":\"2026-05-04T10:02:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/testanddiagnostic\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/testanddiagnostic\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/testanddiagnostic\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentation\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"RDK Broadband\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Components\",\"item\":\"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/\"},{\"@type\":\"ListItem\",\"position\":5,\"name\":\"Test And Diagnostic\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/developer.rdkcentral.com\/documentation\/#website\",\"url\":\"https:\/\/developer.rdkcentral.com\/documentation\/\",\"name\":\"RDK Documentation Portal | Documentation\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Test And Diagnostic - RDK Documentation Portal | Documentation","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/testanddiagnostic\/","og_locale":"en_US","og_type":"article","og_title":"Test And Diagnostic - RDK Documentation Portal | Documentation","og_description":"The Test and Diagnostic component is a comprehensive RDK-B middleware module that provides essential network [&hellip;]","og_url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/testanddiagnostic\/","og_site_name":"RDK Documentation Portal | Documentation","article_modified_time":"2026-05-04T10:02:36+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/testanddiagnostic\/","url":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/testanddiagnostic\/","name":"Test And Diagnostic - RDK Documentation Portal | Documentation","isPartOf":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website"},"datePublished":"2022-06-21T13:53:06+00:00","dateModified":"2026-05-04T10:02:36+00:00","breadcrumb":{"@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/testanddiagnostic\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/testanddiagnostic\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/testanddiagnostic\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":2,"name":"Documentation","item":"https:\/\/developer.rdkcentral.com\/documentation\/"},{"@type":"ListItem","position":3,"name":"RDK Broadband","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/"},{"@type":"ListItem","position":4,"name":"Components","item":"https:\/\/developer.rdkcentral.com\/documentation\/documentation\/rdk_broadband_documentation\/components\/"},{"@type":"ListItem","position":5,"name":"Test And Diagnostic"}]},{"@type":"WebSite","@id":"https:\/\/developer.rdkcentral.com\/documentation\/#website","url":"https:\/\/developer.rdkcentral.com\/documentation\/","name":"RDK Documentation Portal | Documentation","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/developer.rdkcentral.com\/documentation\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9737","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/users\/28"}],"replies":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/comments?post=9737"}],"version-history":[{"count":4,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9737\/revisions"}],"predecessor-version":[{"id":12882,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9737\/revisions\/12882"}],"up":[{"embeddable":true,"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/pages\/9575"}],"wp:attachment":[{"href":"https:\/\/developer.rdkcentral.com\/documentation\/wp-json\/wp\/v2\/media?parent=9737"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}