[libvirt] [PATCH v2 08/15] test: Introduce qemufirmwaretest

Michal Privoznik mprivozn at redhat.com
Tue Mar 12 15:13:55 UTC 2019


On 3/11/19 4:08 PM, Daniel P. Berrangé wrote:
> On Thu, Mar 07, 2019 at 10:29:18AM +0100, Michal Privoznik wrote:
>> Test firmware description parsing so far.
>>
>> The test files come from three locations:
>> 1) ovmf-sb-keys.json and ovmf-sb.json come from OVMF
>> package from RHEL-7 (with slight name change to reflect their
>> features in filename too),
>>
>> 2) bios.json and aavmf.json come form comments from
> 
> s/form/from/
> 
>> firmware.json from qemu's git (3a0adfc9bf),
>>
>> 3) ovmf.json is then copied from ovmf-sb.json and stripped
>> of SECURE_BOOT and REQUIRES_SMM flags (plus OVMF path change).
>>
>> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
>> ---
>>   tests/Makefile.am                        |  9 +++
>>   tests/qemufirmwaredata/aavmf.json        | 35 +++++++++++
>>   tests/qemufirmwaredata/bios.json         | 35 +++++++++++
>>   tests/qemufirmwaredata/ovmf-sb-keys.json | 36 ++++++++++++
>>   tests/qemufirmwaredata/ovmf-sb.json      | 35 +++++++++++
>>   tests/qemufirmwaredata/ovmf.json         | 33 +++++++++++
>>   tests/qemufirmwaretest.c                 | 75 ++++++++++++++++++++++++
>>   7 files changed, 258 insertions(+)
>>   create mode 100644 tests/qemufirmwaredata/aavmf.json
>>   create mode 100644 tests/qemufirmwaredata/bios.json
>>   create mode 100644 tests/qemufirmwaredata/ovmf-sb-keys.json
>>   create mode 100644 tests/qemufirmwaredata/ovmf-sb.json
>>   create mode 100644 tests/qemufirmwaredata/ovmf.json
>>   create mode 100644 tests/qemufirmwaretest.c
> 
> [snip]
> 
>> +static int
>> +testParseFormatFW(const void *opaque)
>> +{
>> +    const char *filename = opaque;
>> +    VIR_AUTOFREE(char *) path = NULL;
>> +    VIR_AUTOPTR(qemuFirmware) fw = NULL;
>> +    VIR_AUTOFREE(char *) buf = NULL;
>> +    VIR_AUTOPTR(virJSONValue) json = NULL;
>> +    VIR_AUTOFREE(char *) expected = NULL;
>> +    VIR_AUTOFREE(char *) actual = NULL;
>> +
>> +    if (virAsprintf(&path, "%s/qemufirmwaredata/%s",
>> +                    abs_srcdir, filename) < 0)
>> +        return -1;
>> +
>> +    if (!(fw = qemuFirmwareParse(path)))
>> +        return -1;
>> +
>> +    if (virFileReadAll(path,
>> +                       1024 * 1024, /* 1MiB */
>> +                       &buf) < 0)
>> +        return -1;
>> +
>> +    if (!(json = virJSONValueFromString(buf)))
>> +        return -1;
>> +
>> +    /* Description and tags are not parsed. */
>> +    if (virJSONValueObjectRemoveKey(json, "description", NULL) < 0 ||
>> +        virJSONValueObjectRemoveKey(json, "tags", NULL) < 0)
> 
> Any reason why you didn't parse them. Feels like it would have
> been easy enough to parse those 2 fields & avoid the special
> case ?

We don't need them for anything and firmware.json says that:

Management software may or may not display @description.

@tags serves development and debugging purposes only, and management 
software shall explicitly ignore it.

But I can save that for a follow up patch, if we want to parse them.

> 
>> +        return -1;
>> +
>> +    if (!(expected = virJSONValueToString(json, true)))
>> +        return -1;
>> +
>> +    if (!(actual = qemuFirmwareFormat(fw)))
>> +        return -1;
>> +
>> +    return virTestCompareToString(expected, actual);
>> +}
> 
> Reviewed-by: Daniel P. Berrangé <berrange at redhat.com>
> 

Thanks,
Michal




More information about the libvir-list mailing list