Re: [PATCH v2 2/4] test_driver: Implement virDomainGetJobStats

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2021-08-17 at 13:48 +0200, Martin Kletzander wrote:
> On Mon, Aug 16, 2021 at 07:13:35PM +0800, Luke Yue wrote:
> > Signed-off-by: Luke Yue <lukedyue@xxxxxxxxx>
> > ---
> > src/test/test_driver.c | 105
> > +++++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 105 insertions(+)
> > 
> > diff --git a/src/test/test_driver.c b/src/test/test_driver.c
> > index 9306f0e104..93aeec7105 100644
> > --- a/src/test/test_driver.c
> > +++ b/src/test/test_driver.c
> > @@ -2769,6 +2769,110 @@ testDomainGetJobInfo(virDomainPtr dom,
> >     return ret;
> > }
> > 
> > +static int
> > +testDomainJobInfoToParams(testDomainObjPrivate *priv,
> > +                          virDomainJobInfoPtr info,
> > +                          int *type,
> > +                          virTypedParameterPtr *params,
> > +                          int *nparams)
> > +{
> > +    virTypedParameterPtr par = NULL;
> > +    int maxpar = 0;
> > +    int npar = 0;
> > +
> > +    if (virTypedParamsAddInt(&par, &npar, &maxpar,
> > +                             VIR_DOMAIN_JOB_OPERATION,
> > +                             priv->jobOperation) < 0 ||
> > +        virTypedParamsAddULLong(&par, &npar, &maxpar,
> > +                                VIR_DOMAIN_JOB_DATA_TOTAL,
> > +                                info->dataTotal) < 0 ||
> > +        virTypedParamsAddULLong(&par, &npar, &maxpar,
> > +                                VIR_DOMAIN_JOB_DATA_PROCESSED,
> > +                                info->dataProcessed) < 0 ||
> > +        virTypedParamsAddULLong(&par, &npar, &maxpar,
> > +                                VIR_DOMAIN_JOB_DATA_REMAINING,
> > +                                info->dataRemaining) < 0 ||
> > +        virTypedParamsAddULLong(&par, &npar, &maxpar,
> > +                                VIR_DOMAIN_JOB_TIME_ELAPSED,
> > +                                info->timeElapsed) < 0 ||
> > +        virTypedParamsAddULLong(&par, &npar, &maxpar,
> > +                                VIR_DOMAIN_JOB_TIME_REMAINING,
> > +                                info->timeRemaining) < 0 ||
> > +        virTypedParamsAddULLong(&par, &npar, &maxpar,
> > +                                VIR_DOMAIN_JOB_MEMORY_TOTAL,
> > +                                info->memTotal) < 0 ||
> > +        virTypedParamsAddULLong(&par, &npar, &maxpar,
> > +                                VIR_DOMAIN_JOB_MEMORY_PROCESSED,
> > +                                info->memProcessed) < 0 ||
> > +        virTypedParamsAddULLong(&par, &npar, &maxpar,
> > +                                VIR_DOMAIN_JOB_MEMORY_REMAINING,
> > +                                info->memRemaining) < 0 ||
> > +        virTypedParamsAddULLong(&par, &npar, &maxpar,
> > +                                VIR_DOMAIN_JOB_DISK_TOTAL,
> > +                                info->fileTotal) < 0 ||
> > +        virTypedParamsAddULLong(&par, &npar, &maxpar,
> > +                                VIR_DOMAIN_JOB_DISK_PROCESSED,
> > +                                info->fileProcessed) < 0 ||
> > +        virTypedParamsAddULLong(&par, &npar, &maxpar,
> > +                                VIR_DOMAIN_JOB_DISK_REMAINING,
> > +                                info->fileRemaining) < 0)
> > +        goto error;
> > +
> > +    *type = info->type;
> > +    *params = par;
> > +    *nparams = npar;
> > +    return 0;
> > +
> > + error:
> > +    virTypedParamsFree(par, npar);
> > +    return -1;
> > +}
> > +
> > +static int
> > +testDomainGetJobStats(virDomainPtr domain,
> > +                      int *type,
> > +                      virTypedParameterPtr *params,
> > +                      int *nparams,
> > +                      unsigned int flags)
> > +{
> > +    virDomainJobInfo jobInfo;
> > +    virDomainObj *dom;
> > +    testDomainObjPrivate *priv;
> > +    bool completed = !!(flags & VIR_DOMAIN_JOB_STATS_COMPLETED);
> 
> Unnecessary cast, just:
> 
> bool completed = flags & VIR_DOMAIN_JOB_STATS_COMPLETED;
> 
> would be fine.
> 
> > +    int ret = -1;
> > +
> > +    virCheckFlags(VIR_DOMAIN_JOB_STATS_COMPLETED |
> > +                  VIR_DOMAIN_JOB_STATS_KEEP_COMPLETED, -1);
> > +
> > +    if (!(dom = testDomObjFromDomain(domain)))
> > +        return -1;
> > +
> > +    priv = dom->privateData;
> > +
> > +    if (testDomainGetJobInfoImpl(dom, &jobInfo) < 0)
> > +        goto cleanup;
> > +
> 
> Unfortunately I do not see how you return different data if you get
> here
> with completed == true.  Either we should return some dummy values or
> get an extra field in priv for some last completed job.
> 
> Otherwise looks fine.
> 

Thanks for the review! I thought we could use priv->jobOperation as
both complete job or running job for testing, though it may not be
pretty reasonable. Will try to add another variable to store the
completed job in v3.

> > +    if (jobInfo.type == VIR_DOMAIN_JOB_NONE) {
> > +        *type = VIR_DOMAIN_JOB_NONE;
> > +        *params = NULL;
> > +        *nparams = 0;
> > +        ret = 0;
> > +        goto cleanup;
> > +    }
> > +
> > +    ret = testDomainJobInfoToParams(priv, &jobInfo, type, params,
> > nparams);
> > +
> > +    if (completed && ret == 0 &&
> > +        !(flags & VIR_DOMAIN_JOB_STATS_KEEP_COMPLETED)) {
> > +        priv->jobState = VIR_DOMAIN_JOB_NONE;
> > +        priv->jobOperation = VIR_DOMAIN_JOB_OPERATION_UNKNOWN;
> > +    }
> > +
> > + cleanup:
> > +    virDomainObjEndAPI(&dom);
> > +
> > +    return ret;
> > +}
> > 
> > static int
> > testDomainGetLaunchSecurityInfo(virDomainPtr domain G_GNUC_UNUSED,
> > @@ -9672,6 +9776,7 @@ static virHypervisorDriver
> > testHypervisorDriver = {
> >     .domainGetBlockInfo = testDomainGetBlockInfo, /* 5.7.0 */
> >     .domainSetLifecycleAction = testDomainSetLifecycleAction, /*
> > 5.7.0 */
> >     .domainGetJobInfo = testDomainGetJobInfo, /* 7.7.0 */
> > +    .domainGetJobStats = testDomainGetJobStats, /* 7.7.0 */
> > 
> >     .domainSnapshotNum = testDomainSnapshotNum, /* 1.1.4 */
> >     .domainSnapshotListNames = testDomainSnapshotListNames, /*
> > 1.1.4 */
> > -- 
> > 2.32.0
> > 





[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]

  Powered by Linux