Authoritative flow:
dbus-unit-test.pyunit-test.py -gmeson test -C build/coverage --print-errorlogsninja -C build/coverage coverage-html
Format: lines / functions / branches / decisions
common:95.3 / 98.1 / 82.3 / 76.2fw-update:95.8 / 96.1 / 82.9 / 88.0libpldmresponder:96.5 / 99.4 / 86.1 / 77.5oem:98.6 / 100.0 / 88.0 / 90.8platform-mc:99.2 / 90.9 / 88.1 / 94.7pldmd:100.0 / 75.0 / 90.0 / -pldmtool:97.4 / 100.0 / 90.1 / 81.4requester:94.7 / 96.0 / 86.3 / 80.0- Whole repo:
96.9 / 96.8 / 86.3 / 86.1
common:95.3 / 98.1 / 82.3 / 76.2fw-update:95.8 / 96.1 / 82.8 / 88.0libpldmresponder:96.5 / 99.4 / 86.1 / 77.5oem:98.6 / 100.0 / 88.0 / 90.8platform-mc:99.2 / 90.9 / 88.1 / 94.7pldmd:100.0 / 75.0 / 90.0 / -pldmtool:97.4 / 100.0 / 90.1 / 81.4requester:94.9 / 96.1 / 86.6 / 80.4- Whole repo:
96.9 / 96.8 / 86.3 / 86.2
Batch summary:
- Added requester-only coverage tests in requester/test/handler_coverage_test.cpp for:
- queue-empty and already-active
pollEndpointQueue()short-circuits - missing-endpoint
unregisterRequest()for uncovered handler instantiations - active-request
unregisterRequest()promoting the next queued request - queued-request search paths for
MockRequestandFailingSendRequest - RX-direction
storeTransportError()selection of the affected EID
- queue-empty and already-active
common:95.3 / 98.1 / 82.4 / 76.2fw-update:95.8 / 96.1 / 82.8 / 88.0libpldmresponder:96.5 / 99.4 / 86.1 / 77.5oem:98.6 / 100.0 / 88.2 / 91.2platform-mc:99.2 / 90.9 / 88.1 / 94.7pldmd:100.0 / 75.0 / 90.0 / -pldmtool:97.1 / 100.0 / 89.7 / 81.4requester:95.9 / 96.2 / 88.2 / 80.0- Whole repo:
97.0 / 96.8 / 86.4 / 86.2
Batch summary:
- Added requester transport-error filter tests in requester/test/handler_coverage_test.cpp for explicit PLDM-type matches and
0xFFwildcard matches acrossNiceMock<MockRequest>,Request,MockRequest, andFailingSendRequest. - Added the remaining unknown-key
instanceIdExpiryCallBack()assertion coverage forRequestandNiceMock<MockRequest>in requester/test/handler_coverage_test.cpp. - Fixed the
pldmtoolCI D-Bus-path tests in pldmtool_cmd_helper_test.cpp so they use local mapper/object-manager services instead of poisoning the shared session bus with missing-service error paths. - Reduced runtime in the slow requester timeout tests in handler_test.cpp so
handler_teststays below the Meson 30s timeout in the authoritative CI run.
common:99.5 / 100.0 / 83.8 / 82.1fw-update:97.0 / 96.9 / 84.2 / 88.9libpldmresponder:96.5 / 99.4 / 86.4 / 77.5oem:99.4 / 100.0 / 89.1 / 91.2platform-mc:99.2 / 91.2 / 86.7 / 94.4pldmd:94.0 / 95.2 / 79.5 / 83.8pldmtool:97.4 / 100.0 / 90.0 / 79.5requester:98.6 / 100.0 / 90.5 / 85.0- Whole repo:
97.8 / 98.0 / 86.5 / 86.7
Batch summary:
- Added more
commoncoverage in common/test/pldm_utils_test.cpp for:DBusHandler::getDbusProperty<T>()association success coverage- remaining scalar and association mismatch branches for both mocked and direct template calls
- direct
checkForFruPresence()success-path D-Bus decoding coverage
- Added mock-mode async D-Bus constructor coverage in common/test/dbus_async_utils_mock_coverage_test.cpp across the remaining stored property types with custom services.
- Added
fw-updatetimer/deferred-response coverage in fw-update/test/component_updater_test.cpp for:onResponseSendComplete()no-op and send-failure pathscreateRequestFwDataTimer()pending-discovery early returncreateCompleteCommandsTimeoutTimer()RequestFirmwareDatastate and pending-discovery early return
- Focused validation passed for
pldm_utils_test,dbus_async_utils_mock_coverage_test,component_updater_test, andpldmd_internal_test. - Authoritative run passed
68/68tests throughunit-test.py -g, but the directory branch totals moved only slightly, so the next batch needs to chase larger uncovered file clusters rather than more low-level template branches.
common:99.5 / 100.0 / 83.3 / 82.1fw-update:97.5 / 96.9 / 85.1 / 89.7libpldmresponder:96.6 / 99.4 / 86.5 / 77.5oem:99.4 / 100.0 / 89.1 / 91.2platform-mc:99.2 / 91.2 / 86.6 / 94.4pldmd:94.4 / 95.2 / 79.9 / 85.4pldmtool:97.4 / 100.0 / 90.0 / 79.5requester:98.6 / 100.0 / 90.5 / 85.0- Whole repo:
97.9 / 98.0 / 86.7 / 86.9
Batch summary:
- Added more
commonasync D-Bus coverage in common/test/dbus_async_utils_test.cpp, then removed invalid exception-path attempts that were terminating because the exercised helpers arenoexceptor only hold references. - Added a real D-Bus positive-path inventory status test in fw-update/test/inventory_manager_internal_test.cpp for
InventoryManager::logDeviceStatusErrors(). - Focused validation passed for
dbus_async_utils_test,inventory_manager_internal_test, andmanager_internal_test. - Authoritative run passed
68/68tests throughunit-test.py -g, and the next batch is targeting the highest-ROI remaining branch clusters rather than continuing on low-yield template branches.
common:99.5 / 100.0 / 84.2 / 82.1fw-update:97.6 / 96.9 / 85.3 / 90.3libpldmresponder:96.6 / 99.4 / 86.5 / 77.5oem:99.4 / 100.0 / 90.1 / 90.8platform-mc:99.3 / 91.2 / 86.2 / 94.4pldmd:94.6 / 95.2 / 79.9 / 85.4pldmtool:97.4 / 100.0 / 90.0 / 79.5requester:98.6 / 100.0 / 90.5 / 85.0- Whole repo:
97.9 / 98.0 / 86.7 / 87.0
Batch summary:
- Updated openbmc-build-scripts/scripts/unit-test.py so Meson coverage subprocesses use an absolute temp root under
build/coverage/.tmp, plusTEST_TMPDIRandGTEST_TMP_DIR, instead of the broken container/tmp. - Added shared test temp helpers in test/test_tmp_utils.hpp and migrated the affected test scaffolding and wrappers away from hardcoded
/tmppaths in:- test/test_instance_id.hpp
- test/pldmd_internal_test.cpp
- test/pldmd_main_coverage_helper.cpp
- pldmtool/test/meson.build
- pldmtool/test/pldmtool_base_cmd_test.cpp
- pldmtool/test/pldmtool_cmd_helper_test.cpp
- pldmtool/test/pldmtool_fw_update_cmd_test.cpp
- pldmtool/test/pldmtool_main_test.cpp
- pldmtool/test/pldmtool_platform_cmd_test.cpp
- libpldmresponder/test/libpldmresponder_fru_test.cpp
- libpldmresponder/test/libpldmresponder_pdr_effecter_test.cpp
- libpldmresponder/test/libpldmresponder_bios_config_test.cpp
- libpldmresponder/test/libpldmresponder_platform_test.cpp
- libpldmresponder/test/bios_handler_test_config.hpp
- libpldmresponder/test/libpldmresponder_bios_handler_test.cpp
- platform-mc/test/oem_events_private_test.cpp
- fw-update/test/other_device_update_manager_test.cpp
- common/test/readHostEID_test.cpp
- common/test/pldm_utils_test.cpp
- Focused validation passed for the previously failing target set, then the authoritative
unit-test.py -grun passed68/68and regenerated the report successfully.
pldmtool_cmd_helper_testwas marked non-parallel in pldmtool/test/meson.build because the test shares D-Bus state and was flaky under parallel Meson execution during the coverage run.unit-test.pywas updated to reconfigure and clean the existingbuild/coveragetree before the coverage run so stale outputs from removed sources do not poison gcovr input.
common:99.5 / 100.0 / 84.5 / 82.1fw-update:97.6 / 96.9 / 85.3 / 90.6libpldmresponder:96.9 / 99.4 / 87.0 / 78.7oem:99.4 / 100.0 / 90.1 / 90.8platform-mc:99.3 / 93.4 / 86.2 / 94.4pldmd:94.6 / 95.2 / 80.0 / 85.4pldmtool:97.4 / 100.0 / 90.0 / 79.5requester:98.6 / 100.0 / 90.5 / 85.0- Whole repo:
98.0 / 98.4 / 86.9 / 87.3
Batch summary:
- Added
commonasync D-Bus coverage in: - Added
pldmdsubprocess and failure-hook coverage in: - Added
libpldmrespondercoverage in: - Removed three
libpldmresponder_platform_testassertions that depended on the known unreachable OEMgetStateSensorReadings()wrapper path documented below in the production-bug notes. The authoritative CI run passed68/68after that correction.
- Function:
Handler::getStateSensorReadings() - Current behavior:
- outer guard checks
payloadLength != PLDM_GET_SENSOR_READING_REQ_BYTES - decode path calls
decode_get_state_sensor_readings_req() - decoder expects
PLDM_GET_STATE_SENSOR_READINGS_REQ_BYTES
- outer guard checks
- Result:
- success path is unreachable for valid
GetStateSensorReadingsdecoding - tests can only hit invalid-length behavior unless production code is corrected
- success path is unreachable for valid
- This was not changed during the coverage work because you requested no production-code edits.