commit | a5003ceb4425ebd4b2f71d3478027e8fa75d4860 | [log] [tgz] |
---|---|---|
author | Lei YU <mine260309@gmail.com> | Fri Feb 24 15:35:25 2017 +0800 |
committer | Lei YU <mine260309@gmail.com> | Mon Oct 16 20:40:04 2017 +0800 |
tree | bb7811da1ba47a5929883a07c4cec2d677bd3eab | |
parent | 6903277cd0d167ad038fe002b268bbdfa87e25c6 [diff] |
Use gmock on property_change_listener 1. Mock property_change_listener; 2. Make unit test link against gmock 3. Update TestManager to use mocked property change listener. 4. Fix an issue found by the updated test case, that when the properties are changed during host is on, and changed back to the same as before, when host becomes off, the properties shall remain the same and listeners shall not be notified. Change-Id: I815b59cb23edfcac910c2a8c26ea5a71e872d92f Signed-off-by: Lei YU <mine260309@gmail.com>
phosphor-time-manager
is the time manager service that implements dbus interface xyz/openbmc_project/Time/EpochTime.interface.yaml
. User can get or set the BMC's or HOST's time via this interface.
The service xyz.openbmc_project.Time.Manager
provides two objects on dbus:
where each object implements interface xyz.openbmc_project.Time.EpochTime
.
User can directly get or set the property Elasped
of the objects to get or set the time. For example on an authenticated session:
### With busctl on BMC busctl get-property xyz.openbmc_project.Time.Manager \ /xyz/openbmc_project/time/bmc xyz.openbmc_project.Time.EpochTime Elapsed ### With REST API on remote host curl -b cjar -k https://bmc-ip/xyz/openbmc_project/time/bmc
### With busctl on BMC busctl set-property xyz.openbmc_project.Time.Manager \ /xyz/openbmc_project/time/host xyz.openbmc_project.Time.EpochTime \ Elapsed t <value-in-microseconds> ### With REST API on remote host curl -b cjar -k -H "Content-Type: application/json" -X PUT \ -d '{"data": 1487304700000000}' \ https://bmc-ip/xyz/openbmc_project/time/host/attr/Elapsed
Getting BMC or HOST time is always allowed, but setting the time may not be allowed depending on below two settings in settings manager.
A summary of which cases the time can be set on BMC or HOST: Mode | Owner | Set BMC Time | Set Host Time --------- | ----- | ------------- | ------------------- NTP | BMC | Not allowed | Not allowed NTP | HOST | Not allowed | Not allowed NTP | SPLIT | Not allowed | OK NTP | BOTH | Not allowed | Not allowed MANUAL | BMC | OK | Not allowed MANUAL | HOST | Not allowed | OK MANUAL | SPLIT | OK | OK MANUAL | BOTH | OK | OK
When host is on (pgood == 1), the changes of the above time mode/owner are not applied but deferred. The changes of the mode/owner are saved to persistent storage.
When host is off (pgood == 0), the saved mode/owner are read from persistent storage and are applied.
Note: user can set the time mode and owner in settings daemon at any time, but time manager applying them is governed by the above condition.