regulators: Modify close() to use services

Modify the Device::close() method in the Device class to have a new
first parameter: Services& services.

Modify Device::close() to log messages using the new Journal
interface.

Modify the Chassis::closeDevices() method in the Chassis class to
have a new first parameter: Services& services.

Modify Chassis::closeDevices() to log messages using the new
Journal interface.

Signed-off-by: Bob King <Bob_King@wistron.com>
Change-Id: I2a07417d6f7470685f2c27c878ef7936e9f1aa8a
diff --git a/phosphor-regulators/test/chassis_tests.cpp b/phosphor-regulators/test/chassis_tests.cpp
index 08304d3..3844ca4 100644
--- a/phosphor-regulators/test/chassis_tests.cpp
+++ b/phosphor-regulators/test/chassis_tests.cpp
@@ -19,7 +19,6 @@
 #include "device.hpp"
 #include "i2c_interface.hpp"
 #include "id_map.hpp"
-#include "journal.hpp"
 #include "mock_journal.hpp"
 #include "mock_services.hpp"
 #include "mocked_i2c_interface.hpp"
@@ -116,23 +115,27 @@
 {
     // Test where no devices were specified in constructor
     {
+        // Create mock services.  Expect logDebug() to be called.
+        MockServices services{};
+        MockJournal& journal = services.getMockJournal();
+        EXPECT_CALL(journal, logDebug("Closing devices in chassis 2")).Times(1);
+
         // Create Chassis
         Chassis chassis{2};
 
         // Call closeDevices()
-        journal::clear();
-        chassis.closeDevices();
-        EXPECT_EQ(journal::getErrMessages().size(), 0);
-        EXPECT_EQ(journal::getInfoMessages().size(), 0);
-        std::vector<std::string> expectedDebugMessages{
-            "Closing devices in chassis 2"};
-        EXPECT_EQ(journal::getDebugMessages(), expectedDebugMessages);
+        chassis.closeDevices(services);
     }
 
     // Test where devices were specified in constructor
     {
         std::vector<std::unique_ptr<Device>> devices{};
 
+        // Create mock services.  Expect logDebug() to be called.
+        MockServices services{};
+        MockJournal& journal = services.getMockJournal();
+        EXPECT_CALL(journal, logDebug("Closing devices in chassis 1")).Times(1);
+
         // Create Device vdd0_reg
         {
             // Create mock I2CInterface: isOpen() and close() should be called
@@ -167,13 +170,7 @@
         Chassis chassis{1, std::move(devices)};
 
         // Call closeDevices()
-        journal::clear();
-        chassis.closeDevices();
-        EXPECT_EQ(journal::getErrMessages().size(), 0);
-        EXPECT_EQ(journal::getInfoMessages().size(), 0);
-        std::vector<std::string> expectedDebugMessages{
-            "Closing devices in chassis 1"};
-        EXPECT_EQ(journal::getDebugMessages(), expectedDebugMessages);
+        chassis.closeDevices(services);
     }
 }
 
diff --git a/phosphor-regulators/test/device_tests.cpp b/phosphor-regulators/test/device_tests.cpp
index 62cf97e..19271d4 100644
--- a/phosphor-regulators/test/device_tests.cpp
+++ b/phosphor-regulators/test/device_tests.cpp
@@ -19,7 +19,6 @@
 #include "device.hpp"
 #include "i2c_interface.hpp"
 #include "id_map.hpp"
-#include "journal.hpp"
 #include "mock_action.hpp"
 #include "mock_journal.hpp"
 #include "mock_services.hpp"
@@ -154,14 +153,19 @@
         EXPECT_CALL(*i2cInterface, isOpen).Times(1).WillOnce(Return(false));
         EXPECT_CALL(*i2cInterface, close).Times(0);
 
+        // Create mock services.  No logError should occur.
+        MockServices services{};
+        MockJournal& journal = services.getMockJournal();
+        EXPECT_CALL(journal, logError(A<const std::string&>())).Times(0);
+        EXPECT_CALL(journal, logError(A<const std::vector<std::string>&>()))
+            .Times(0);
+
         // Create Device
         Device device{"vdd_reg", true, "/system/chassis/motherboard/reg2",
                       std::move(i2cInterface)};
 
         // Close Device
-        journal::clear();
-        device.close();
-        EXPECT_EQ(journal::getErrMessages().size(), 0);
+        device.close(services);
     }
 
     // Test where works: I2C interface is open
@@ -172,14 +176,19 @@
         EXPECT_CALL(*i2cInterface, isOpen).Times(1).WillOnce(Return(true));
         EXPECT_CALL(*i2cInterface, close).Times(1);
 
+        // Create mock services.  No logError should occur.
+        MockServices services{};
+        MockJournal& journal = services.getMockJournal();
+        EXPECT_CALL(journal, logError(A<const std::string&>())).Times(0);
+        EXPECT_CALL(journal, logError(A<const std::vector<std::string>&>()))
+            .Times(0);
+
         // Create Device
         Device device{"vdd_reg", true, "/system/chassis/motherboard/reg2",
                       std::move(i2cInterface)};
 
         // Close Device
-        journal::clear();
-        device.close();
-        EXPECT_EQ(journal::getErrMessages().size(), 0);
+        device.close(services);
     }
 
     // Test where fails: closing I2C interface fails
@@ -193,17 +202,21 @@
             .WillOnce(Throw(
                 i2c::I2CException{"Failed to close", "/dev/i2c-1", 0x70}));
 
+        // Create mock services.  Expect logError() to be called.
+        MockServices services{};
+        MockJournal& journal = services.getMockJournal();
+        std::vector<std::string> expectedErrMessagesException{
+            "I2CException: Failed to close: bus /dev/i2c-1, addr 0x70"};
+        EXPECT_CALL(journal, logError("Unable to close device vdd_reg"))
+            .Times(1);
+        EXPECT_CALL(journal, logError(expectedErrMessagesException)).Times(1);
+
         // Create Device
         Device device{"vdd_reg", true, "/system/chassis/motherboard/reg2",
                       std::move(i2cInterface)};
 
         // Close Device
-        journal::clear();
-        device.close();
-        std::vector<std::string> expectedErrMessages{
-            "I2CException: Failed to close: bus /dev/i2c-1, addr 0x70",
-            "Unable to close device vdd_reg"};
-        EXPECT_EQ(journal::getErrMessages(), expectedErrMessages);
+        device.close(services);
     }
 }
 
diff --git a/phosphor-regulators/test/system_tests.cpp b/phosphor-regulators/test/system_tests.cpp
index 5d1d720..809d2d4 100644
--- a/phosphor-regulators/test/system_tests.cpp
+++ b/phosphor-regulators/test/system_tests.cpp
@@ -71,6 +71,14 @@
     // Specify an empty rules vector
     std::vector<std::unique_ptr<Rule>> rules{};
 
+    // Create mock services.  Expect logDebug() to be called.
+    MockServices services{};
+    MockJournal& journal = services.getMockJournal();
+    EXPECT_CALL(journal, logDebug("Closing devices in chassis 1")).Times(1);
+    EXPECT_CALL(journal, logDebug("Closing devices in chassis 3")).Times(1);
+    EXPECT_CALL(journal, logInfo(A<const std::string&>())).Times(0);
+    EXPECT_CALL(journal, logError(A<const std::string&>())).Times(0);
+
     // Create Chassis
     std::vector<std::unique_ptr<Chassis>> chassis{};
     chassis.emplace_back(std::make_unique<Chassis>(1));
@@ -80,13 +88,7 @@
     System system{std::move(rules), std::move(chassis)};
 
     // Call closeDevices()
-    journal::clear();
-    system.closeDevices();
-    EXPECT_EQ(journal::getErrMessages().size(), 0);
-    EXPECT_EQ(journal::getInfoMessages().size(), 0);
-    std::vector<std::string> expectedDebugMessages{
-        "Closing devices in chassis 1", "Closing devices in chassis 3"};
-    EXPECT_EQ(journal::getDebugMessages(), expectedDebugMessages);
+    system.closeDevices(services);
 }
 
 TEST(SystemTests, Configure)