[libvirt] [PATCH] test_driver: implement virDomainGetDiskErrors
Michal Privoznik
mprivozn at redhat.com
Fri May 10 07:35:24 UTC 2019
On 5/9/19 7:35 PM, Ilias Stamatis wrote:
> On Thu, May 9, 2019 at 4:36 PM Michal Privoznik <mprivozn at redhat.com> wrote:
>>
>> On 5/7/19 10:23 PM, Ilias Stamatis wrote:
>>> Return the number of disks present in the configuration of the fake
>>> driver when called with @errors as NULL and @maxerrors as 0.
>>>
>>> Otherwise return 0 as the number of errors encountered.
>>>
>>> Signed-off-by: Ilias Stamatis <stamatis.iliass at gmail.com>
>>> ---
>>> src/test/test_driver.c | 27 +++++++++++++++++++++++++++
>>> 1 file changed, 27 insertions(+)
>>>
>>> diff --git a/src/test/test_driver.c b/src/test/test_driver.c
>>> index 460c896ef6..5fa9ab30f1 100644
>>> --- a/src/test/test_driver.c
>>> +++ b/src/test/test_driver.c
>>> @@ -3046,6 +3046,32 @@ static int testDomainSetAutostart(virDomainPtr domain,
>>> return 0;
>>> }
>>>
>>> +static int testDomainGetDiskErrors(virDomainPtr dom,
>>> + virDomainDiskErrorPtr errors,
>>> + unsigned int maxerrors ATTRIBUTE_UNUSED,
>>> + unsigned int flags)
>>> +{
>>> + int ret = -1;
>>> + virDomainObjPtr vm = NULL;
>>> +
>>> + virCheckFlags(0, -1);
>>> +
>>> + if (!(vm = testDomObjFromDomain(dom)))
>>> + goto cleanup;
>>> +
>>> + if (virDomainObjCheckActive(vm) < 0)
>>> + goto cleanup;
>>> +
>>> + if (!errors)
>>> + ret = vm->def->ndisks;
>>> + else
>>> + ret = 0;
>>
>> Don't we want to actually set some errors? That might be more helpful
>> because mgmt app can actually test if it reports disk errors properly.
>>
>> Michal
>
> Right, that makes sense.
>
> The number of disks can actually vary because the test connection can
> be configured differently, plus I'll implement virDomainAttachDevice
> for the test driver too.
>
> The possible error codes are just 2: VIR_DOMAIN_DISK_ERROR_UNSPEC and
> VIR_DOMAIN_DISK_ERROR_NO_SPACE
>
> So, should it be randomly decided at runtime whether or not to report
> an error for each disk present and which error code will it actually
> be?
>
> Or would it be better to take a deterministic approach and report
> let's say an error for the first 2 disks (if there are that many at
> all), each with a different error code, and return no errors for all
> the remaining disks?
Yeah, I think the latter makes sense. For simplicity, we can have two
loops, one inside the other and set the first disk to have no error, the
second to have VIR_DOMAIN_DISK_ERROR_UNSPEC, the third to have
VIR_DOMAIN_DISK_ERROR_NO_SPACE, the fourth to have no error again and so
on. This is perfectly predictible and thus easy to test and it gets a
result that 'looks' believable.
But whatever you'll come up with will be fine really.
Michal
More information about the libvir-list
mailing list