How to mock journal related methods

Patrick Venture venture at google.com
Thu Jun 28 01:24:42 AEST 2018


On Wed, Jun 27, 2018 at 7:26 AM, Nagaraju Goruganti <ngorugan at in.ibm.com> wrote:
> Hi Team,
>
> I am writing unit test-cases to phospher-logging server.
>
> As it gets information form the journal log for event and logging
> creation,it needs to make calls to
> below given journal related methods:
>
> sd_journal_open(sd_journal**,int)(https://github.com/openbmc/phosphor-logging/blob/master/log_manager.cpp#L86)
> sd_journal_get_data(sd_journal*,const char *,const void **,size_t)
> (https://github.com/openbmc/phosphor-logging/blob/master/log_manager.cpp#L115)
> sd_journal_close(sd_journal *)
> (https://github.com/openbmc/phosphor-logging/blob/master/log_manager.cpp#L175)

>From how these are used, there are a couple options.
1) You can try to write a different test implementation and link your
tests against that.  This has some complexity because you'll need to
trap those calls to your fake library methods.  I've seen this done
using a singleton object that is called by a thin function:

int sd_journal_open(sd_journal **ret, int flags)  {
  return GetSingleTon->sd_journal_open(ret, flags);
}

And your GetSingleTon will return the singleton instance, and previous
to this call you've set an expectation on the single mock instance
that it'll receive that call.

2) You can implement an interface.  There's already an sdbus and
message in one interface.  It might make sense to use that and add to
it, or implement one just for the journal calls, s.t. you can have
that be passed into the methods you want to test (or more likely,
passed into the initial object and used by the methods).

>
> I am able make calls to these methods, without any issue, on host
> machine(inside x86 sandbox) where we don't have journal service is running.
>
> Is it the correct way(don't we need to mock these methods) ?
>
> If not, Please someone let me know how to mock these methods?
>
>
>
> Thanks and Regards,
> Nagaraju G


More information about the openbmc mailing list