Implement BmcEpoch set/get elapsed()

Getting elapsed returns BMC's time;
Setting elapsed will check the current time mode/owner, and will return
error when mode is NTP or owner is HOST.

Add unit test cases.

Change-Id: Ibf4e90957f3b26b68c4a1b6dc66dc364c66bef10
Signed-off-by: Lei YU <mine260309@gmail.com>
diff --git a/bmc_epoch.cpp b/bmc_epoch.cpp
index c17ddf5..5923e8e 100644
--- a/bmc_epoch.cpp
+++ b/bmc_epoch.cpp
@@ -24,23 +24,22 @@
 
 uint64_t BmcEpoch::elapsed(uint64_t value)
 {
-    // TODO: set time based on current time mode and owner
-    auto time = std::chrono::microseconds(value);
-    switch (timeOwner)
+    if (timeMode == Mode::NTP)
     {
-        case Owner::BMC:
-        {
-            setTime(time);
-            break;
-        }
-        // TODO: below cases are to be implemented
-        case Owner::HOST:
-            break;
-        case Owner::SPLIT:
-            break;
-        case Owner::BOTH:
-            break;
+        log<level::ERR>("Setting BmcTime with NTP mode is not allowed");
+        // TODO: throw NotAllowed exception
+        return 0;
     }
+    if (timeOwner == Owner::HOST)
+    {
+        log<level::ERR>("Setting BmcTime with HOST owner is not allowed");
+        // TODO: throw NotAllowed exception
+        return 0;
+    }
+
+    auto time = std::chrono::microseconds(value);
+    setTime(time);
+
     server::EpochTime::elapsed(value);
     return value;
 }