dbus-sdr: Remove excessive `Failed to GetAll` error message

The `Failed to GetAll` message will happen if any of the sensor doesn't
have `Inventory.Decorator.Ipmi` dbus interface. Instead of making a
`GetAll` call to all sensors, we will check if the sensor have the
interface first before requesting it. This will remove the need to
attempt sigificantly amount of unnecessary dbus calls.

Tested:
ipmitool sdr return the same sensor as before, but with no excessive
error message.

There is also some performance gain after removing the extra dbus calls.

Before,
```
$ time ipmitool sdr | wc -l
346

real    0m13.786s
user    0m0.315s
sys     0m0.115s

$ time ipmitool sdr | wc -l
346

real    0m14.692s
user    0m0.274s
sys     0m0.196s
```

After,
```
$ time ipmitool sdr | wc -l
346

real    0m11.765s
user    0m0.205s
sys     0m0.155s

$ time ipmitool sdr | wc -l
346

real    0m11.403s
user    0m0.269s
sys     0m0.141s
```

Change-Id: Ieab19fbae9e1fb40c2cfac9cd584cf40dba3f500
Signed-off-by: Willy Tu <wltu@google.com>
3 files changed
tree: 4db9c921f86bce713bf719e3d6c34ed4cbf914a0
  1. app/
  2. dbus-sdr/
  3. docs/
  4. include/
  5. libipmid/
  6. libipmid-host/
  7. scripts/
  8. softoff/
  9. subprojects/
  10. test/
  11. user_channel/
  12. xyz/
  13. .build.sh
  14. .clang-format
  15. .gitignore
  16. .shellcheck
  17. .travis.yml
  18. apphandler.cpp
  19. apphandler.hpp
  20. chassishandler.cpp
  21. chassishandler.hpp
  22. dcmihandler.cpp
  23. dcmihandler.hpp
  24. elog-errors.hpp
  25. entity_map_json.cpp
  26. entity_map_json.hpp
  27. error-HostEvent.hpp
  28. fruread.hpp
  29. generate_whitelist.sh
  30. generate_whitelist_create.sh
  31. globalhandler.cpp
  32. globalhandler.hpp
  33. groupext.cpp
  34. host-cmd-manager.cpp
  35. host-cmd-manager.hpp
  36. host-interface.cpp
  37. host-interface.hpp
  38. host-ipmid-whitelist.conf
  39. ipmi_fru_info_area.cpp
  40. ipmi_fru_info_area.hpp
  41. ipmid-new.cpp
  42. ipmisensor.cpp
  43. ipmiwhitelist.hpp
  44. LICENSE
  45. meson.build
  46. meson_options.txt
  47. OWNERS
  48. read_fru_data.cpp
  49. read_fru_data.hpp
  50. README.md
  51. selutility.cpp
  52. selutility.hpp
  53. sensordatahandler.cpp
  54. sensordatahandler.hpp
  55. sensorhandler.cpp
  56. sensorhandler.hpp
  57. settings.cpp
  58. settings.hpp
  59. storageaddsel.cpp
  60. storageaddsel.hpp
  61. storagehandler.cpp
  62. storagehandler.hpp
  63. sys_info_param.cpp
  64. sys_info_param.hpp
  65. systemintfcmds.cpp
  66. systemintfcmds.hpp
  67. testaddsel.cpp
  68. testit.cpp
  69. transporthandler.cpp
  70. transporthandler.hpp
  71. whitelist-filter.cpp
README.md

Compile ipmid with default options:

meson builddir
ninja -C builddir

Compile ipmid with yocto defaults:

meson builddir -Dbuildtype=minsize -Db_lto=true -Dtests=disabled
ninja -C builddir

If any of the dependencies are not found on the host system during configuration, meson automatically gets them via its wrap dependencies mentioned in ipmid/subprojects.

Enable/Disable meson wrap feature

meson builddir -Dwrap_mode=nofallback
ninja -C builddir

Enable debug traces

meson builddir -Dbuildtype=debug
ninja -C builddir

Generate test coverage report:

meson builddir -Db_coverage=true -Dtests=enabled
ninja -C builddir test
ninja -C builddir coverage