Include raw read value in PSU sensor conversion error messages.

When a PSU sensor fails to convert read data to a number, the error message now includes the raw value that failed conversion to aid in debugging. Corresponding unit tests have been updated and expanded to verify this behavior.

Google-Bug-Id:534801029
PiperOrigin-RevId: 968074336
Change-Id: Icb826ca0f0ecb413d4dd9d4ef1e2c31a49388ed8
diff --git a/tlbmc/sensors/psu_sensor.cc b/tlbmc/sensors/psu_sensor.cc
index c00dc69..d50aece 100644
--- a/tlbmc/sensors/psu_sensor.cc
+++ b/tlbmc/sensors/psu_sensor.cc
@@ -26,6 +26,7 @@
 #include "absl/strings/match.h"
 #include "absl/strings/str_cat.h"
 #include "absl/strings/str_format.h"
+#include "absl/strings/string_view.h"
 #include "absl/strings/substitute.h"
 #include "boost/asio.hpp"  // NOLINT: boost::asio is commonly used in BMC
 #include "boost/asio/random_access_file.hpp"  // NOLINT: boost::asio is commonly used in BMC
@@ -696,9 +697,10 @@
   if (result.ec != std::errc()) {
     State state;
     state.set_status(STATUS_STALE);
-    state.set_status_message(
-        absl::StrCat("Read data can't be converted to a number: ",
-                     std::make_error_condition(result.ec).message()));
+    state.set_status_message(absl::Substitute(
+        "Read data can't be converted to a number: $0; raw value is $1",
+        std::make_error_condition(result.ec).message(),
+        absl::string_view(GetConstReadBuffer().data(), bytes_read)));
     UpdateState(std::move(state));
     return;
   }