[PATCH 0/3] testutilsqemu: Fake TPM versions

I thought I've sent these before the freeze but as I tried to ping them, I realize I didn't. I'm not sure how critical these are to get into the release (after all we see no test failing), but they make at least VIR_TEST_DEBUG output of domcapabilities cleaner. Michal Prívozník (3): virtpm: Use corresponding type for argument for virTPM*CapsGet() testutilsqemu: Mock virTPMSwtpmSetupCapsGet() testutilsqemu: Fake TPM versions src/util/virtpm.c | 4 ++-- src/util/virtpm.h | 6 +++--- .../domaincapsdata/qemu_3.1.0-q35.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_3.1.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_3.1.0.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_4.0.0-q35.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_4.0.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_4.0.0.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_4.1.0-q35.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_4.1.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_4.1.0.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_4.2.0-q35.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_4.2.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_4.2.0.ppc64.xml | 4 ++++ tests/domaincapsdata/qemu_4.2.0.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_5.0.0-q35.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_5.0.0-tcg.x86_64.xml | 4 ++++ .../qemu_5.0.0-virt.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_5.0.0.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_5.0.0.ppc64.xml | 4 ++++ tests/domaincapsdata/qemu_5.0.0.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_5.1.0-q35.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_5.1.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_5.1.0.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_5.2.0-q35.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_5.2.0-tcg.x86_64.xml | 4 ++++ .../qemu_5.2.0-virt.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_5.2.0.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_5.2.0.ppc64.xml | 4 ++++ tests/domaincapsdata/qemu_5.2.0.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_6.0.0-q35.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_6.0.0-tcg.x86_64.xml | 4 ++++ .../qemu_6.0.0-virt.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_6.0.0.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_6.0.0.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_6.1.0-q35.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_6.1.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_6.1.0.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_6.2.0-q35.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_6.2.0-tcg.x86_64.xml | 4 ++++ .../qemu_6.2.0-virt.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_6.2.0.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_6.2.0.ppc64.xml | 4 ++++ tests/domaincapsdata/qemu_6.2.0.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_7.0.0-q35.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_7.0.0-tcg.x86_64.xml | 4 ++++ .../qemu_7.0.0-virt.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_7.0.0.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_7.0.0.ppc64.xml | 4 ++++ tests/domaincapsdata/qemu_7.0.0.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_7.1.0-q35.x86_64.xml | 4 ++++ .../domaincapsdata/qemu_7.1.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_7.1.0.x86_64.xml | 4 ++++ tests/testutilsqemu.c | 19 +++++++++++++++++++ 54 files changed, 228 insertions(+), 5 deletions(-) -- 2.35.1

In virtpm.h there are two functions exposed for querying swtpm and swtpm_setup capabilieis: virTPMSwtpmCapsGet() and virTPMSwtpmSetupCapsGet(), respectively. The capabilities we are interested in are defined in two separate enums (virTPMSwtpmFeature and virTPMSwtpmSetupFeature), but these functions accept capability as an unsigned int rather than their respective enum. While this makes sense for virTPMBinaryGetCaps(), which is a module internal helper that both exposed functions call, there's no need for the functions themselves to accept unsigned int. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- src/util/virtpm.c | 4 ++-- src/util/virtpm.h | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/util/virtpm.c b/src/util/virtpm.c index 3c961c11cb..2f2b061fee 100644 --- a/src/util/virtpm.c +++ b/src/util/virtpm.c @@ -345,13 +345,13 @@ virTPMBinaryGetCaps(virTPMBinary binary, } bool -virTPMSwtpmCapsGet(unsigned int cap) +virTPMSwtpmCapsGet(virTPMSwtpmFeature cap) { return virTPMBinaryGetCaps(VIR_TPM_BINARY_SWTPM, cap); } bool -virTPMSwtpmSetupCapsGet(unsigned int cap) +virTPMSwtpmSetupCapsGet(virTPMSwtpmSetupFeature cap) { return virTPMBinaryGetCaps(VIR_TPM_BINARY_SWTPM_SETUP, cap); } diff --git a/src/util/virtpm.h b/src/util/virtpm.h index 89adbdf720..a873881b23 100644 --- a/src/util/virtpm.h +++ b/src/util/virtpm.h @@ -28,9 +28,6 @@ char *virTPMGetSwtpmIoctl(void); bool virTPMHasSwtpm(void); -bool virTPMSwtpmCapsGet(unsigned int cap); -bool virTPMSwtpmSetupCapsGet(unsigned int cap); - typedef enum { VIR_TPM_SWTPM_FEATURE_CMDARG_PWD_FD, @@ -50,3 +47,6 @@ typedef enum { VIR_ENUM_DECL(virTPMSwtpmFeature); VIR_ENUM_DECL(virTPMSwtpmSetupFeature); + +bool virTPMSwtpmCapsGet(virTPMSwtpmFeature cap); +bool virTPMSwtpmSetupCapsGet(virTPMSwtpmSetupFeature cap); -- 2.35.1

On Fri, Jul 29, 2022 at 09:42:11AM +0200, Michal Privoznik wrote:
In virtpm.h there are two functions exposed for querying swtpm and swtpm_setup capabilieis: virTPMSwtpmCapsGet() and
*capabilities Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

In a recent commit of v8.5.0-85-g430ab88ab1 I've made domaincaps XML report supported TPM versions. This was done by calling virTPMSwtpmSetupCapsGet(). But this function isn't mocked and thus domaincapstest calls the real implementation, which tries to execute swtpm_setup binary. This fails, because virFindFileInPath() is mocked in such way that it returns NULL for anything else than qemu-*. Anyway, while the real binary is not executed after all, we should mock the function which tries to execute it so that predictable result is returned. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- tests/testutilsqemu.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index 6dabbaf36a..00dd9871d1 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -146,6 +146,24 @@ bool virTPMHasSwtpm(void) } +bool +virTPMSwtpmSetupCapsGet(virTPMSwtpmSetupFeature cap) +{ + switch (cap) { + case VIR_TPM_SWTPM_SETUP_FEATURE_CMDARG_PWDFILE_FD: + case VIR_TPM_SWTPM_SETUP_FEATURE_CMDARG_CREATE_CONFIG_FILES: + case VIR_TPM_SWTPM_SETUP_FEATURE_TPM12_NOT_NEED_ROOT: + case VIR_TPM_SWTPM_SETUP_FEATURE_CMDARG_RECONFIGURE_PCR_BANKS: + case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_1_2: + case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_2_0: + case VIR_TPM_SWTPM_SETUP_FEATURE_LAST: + break; + } + + return false; +} + + virCapsHostNUMA * virCapabilitiesHostNUMANewHost(void) { -- 2.35.1

On Fri, Jul 29, 2022 at 09:42:12AM +0200, Michal Privoznik wrote:
In a recent commit of v8.5.0-85-g430ab88ab1 I've made domaincaps XML report supported TPM versions. This was done by calling virTPMSwtpmSetupCapsGet(). But this function isn't mocked and thus domaincapstest calls the real implementation, which tries to execute swtpm_setup binary. This fails, because virFindFileInPath() is mocked in such way that it returns NULL for anything else than qemu-*.
Anyway, while the real binary is not executed after all, we should mock the function which tries to execute it so that predictable result is returned.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- tests/testutilsqemu.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

Because of v8.5.0-rc1~25 we are already faking TPM support for domaincaps. Might as well fake supported TPM versions. Signed-off-by: Michal Privoznik <mprivozn@redhat.com> --- tests/domaincapsdata/qemu_3.1.0-q35.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_3.1.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_3.1.0.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_4.0.0-q35.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_4.0.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_4.0.0.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_4.1.0-q35.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_4.1.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_4.1.0.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_4.2.0.ppc64.xml | 4 ++++ tests/domaincapsdata/qemu_4.2.0.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_5.0.0.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_5.0.0.ppc64.xml | 4 ++++ tests/domaincapsdata/qemu_5.0.0.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_5.1.0.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_5.2.0.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_5.2.0.ppc64.xml | 4 ++++ tests/domaincapsdata/qemu_5.2.0.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_6.0.0.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_6.0.0.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_6.1.0.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_6.2.0.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_6.2.0.ppc64.xml | 4 ++++ tests/domaincapsdata/qemu_6.2.0.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_7.0.0.aarch64.xml | 4 ++++ tests/domaincapsdata/qemu_7.0.0.ppc64.xml | 4 ++++ tests/domaincapsdata/qemu_7.0.0.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml | 4 ++++ tests/domaincapsdata/qemu_7.1.0.x86_64.xml | 4 ++++ tests/testutilsqemu.c | 5 +++-- 52 files changed, 207 insertions(+), 2 deletions(-) diff --git a/tests/domaincapsdata/qemu_3.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_3.1.0-q35.x86_64.xml index c4277c53a1..0d4bccdc68 100644 --- a/tests/domaincapsdata/qemu_3.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_3.1.0-q35.x86_64.xml @@ -198,6 +198,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_3.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_3.1.0-tcg.x86_64.xml index 2a65cb0ad9..5fffa7cc5b 100644 --- a/tests/domaincapsdata/qemu_3.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_3.1.0-tcg.x86_64.xml @@ -217,6 +217,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_3.1.0.x86_64.xml b/tests/domaincapsdata/qemu_3.1.0.x86_64.xml index 6e3ddda356..8de1a65cd7 100644 --- a/tests/domaincapsdata/qemu_3.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_3.1.0.x86_64.xml @@ -198,6 +198,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_4.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_4.0.0-q35.x86_64.xml index 8f3911b4b3..e6c0a18711 100644 --- a/tests/domaincapsdata/qemu_4.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_4.0.0-q35.x86_64.xml @@ -198,6 +198,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_4.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_4.0.0-tcg.x86_64.xml index a4dc7bafc9..b7a5eb35af 100644 --- a/tests/domaincapsdata/qemu_4.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_4.0.0-tcg.x86_64.xml @@ -217,6 +217,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_4.0.0.x86_64.xml b/tests/domaincapsdata/qemu_4.0.0.x86_64.xml index 24e732d9c3..3d12aef002 100644 --- a/tests/domaincapsdata/qemu_4.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_4.0.0.x86_64.xml @@ -198,6 +198,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_4.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_4.1.0-q35.x86_64.xml index 3ee7feea48..212ea2a288 100644 --- a/tests/domaincapsdata/qemu_4.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_4.1.0-q35.x86_64.xml @@ -204,6 +204,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_4.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_4.1.0-tcg.x86_64.xml index b20c02cb68..2fb0639f70 100644 --- a/tests/domaincapsdata/qemu_4.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_4.1.0-tcg.x86_64.xml @@ -220,6 +220,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_4.1.0.x86_64.xml b/tests/domaincapsdata/qemu_4.1.0.x86_64.xml index 0f1d398e2c..be001262ec 100644 --- a/tests/domaincapsdata/qemu_4.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_4.1.0.x86_64.xml @@ -204,6 +204,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml index c8a77cdd41..a4ddb1de4d 100644 --- a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml @@ -212,6 +212,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml index d0ee3f7b7a..59efd9424c 100644 --- a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml @@ -227,6 +227,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_4.2.0.ppc64.xml b/tests/domaincapsdata/qemu_4.2.0.ppc64.xml index 4c3a2c6d98..ed8866cfe5 100644 --- a/tests/domaincapsdata/qemu_4.2.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_4.2.0.ppc64.xml @@ -132,6 +132,10 @@ <value>spapr-tpm-proxy</value> </enum> <enum name='backendModel'/> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml index 6578fd04b6..0cfed39048 100644 --- a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml @@ -212,6 +212,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml index 8a6797c2f1..ee77808566 100644 --- a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml @@ -214,6 +214,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml index d277c96426..fb428690d5 100644 --- a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml @@ -229,6 +229,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml index f8cea230d9..339c839168 100644 --- a/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml @@ -173,6 +173,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_5.0.0.aarch64.xml b/tests/domaincapsdata/qemu_5.0.0.aarch64.xml index ab72b7ffeb..169f347439 100644 --- a/tests/domaincapsdata/qemu_5.0.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_5.0.0.aarch64.xml @@ -171,6 +171,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_5.0.0.ppc64.xml b/tests/domaincapsdata/qemu_5.0.0.ppc64.xml index d196676b14..b02b66a674 100644 --- a/tests/domaincapsdata/qemu_5.0.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_5.0.0.ppc64.xml @@ -138,6 +138,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml index 51ca1d98e0..f560826fed 100644 --- a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml @@ -214,6 +214,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml index 3468fb2e72..9b20589278 100644 --- a/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml @@ -215,6 +215,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml index 4f1ffbb2ba..fbc7716675 100644 --- a/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml @@ -229,6 +229,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_5.1.0.x86_64.xml b/tests/domaincapsdata/qemu_5.1.0.x86_64.xml index 8ff49c7899..5e84d521af 100644 --- a/tests/domaincapsdata/qemu_5.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.1.0.x86_64.xml @@ -215,6 +215,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml index 2301a475eb..bfb4ec38f2 100644 --- a/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml @@ -215,6 +215,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml index 6cff0f815e..03fa802a7b 100644 --- a/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml @@ -229,6 +229,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml index a863a6052d..6b21218f7f 100644 --- a/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml @@ -173,6 +173,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_5.2.0.aarch64.xml b/tests/domaincapsdata/qemu_5.2.0.aarch64.xml index ab72b7ffeb..169f347439 100644 --- a/tests/domaincapsdata/qemu_5.2.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_5.2.0.aarch64.xml @@ -171,6 +171,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_5.2.0.ppc64.xml b/tests/domaincapsdata/qemu_5.2.0.ppc64.xml index b2c0577be9..50065d1a9b 100644 --- a/tests/domaincapsdata/qemu_5.2.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_5.2.0.ppc64.xml @@ -138,6 +138,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_5.2.0.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0.x86_64.xml index 41a54985d7..a37b9930be 100644 --- a/tests/domaincapsdata/qemu_5.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_5.2.0.x86_64.xml @@ -215,6 +215,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml index 4595e70f61..40df34edf0 100644 --- a/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml @@ -216,6 +216,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml index 65f4459bcb..e563b0cb59 100644 --- a/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml @@ -230,6 +230,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml index 61eab9de0e..958c40437f 100644 --- a/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml @@ -174,6 +174,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_6.0.0.aarch64.xml b/tests/domaincapsdata/qemu_6.0.0.aarch64.xml index fa722b5fd3..4164bf49f7 100644 --- a/tests/domaincapsdata/qemu_6.0.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_6.0.0.aarch64.xml @@ -172,6 +172,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_6.0.0.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0.x86_64.xml index a6fa374211..eb60a2105f 100644 --- a/tests/domaincapsdata/qemu_6.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.0.0.x86_64.xml @@ -216,6 +216,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml index f4d0fcf673..0480a086c6 100644 --- a/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml @@ -217,6 +217,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml index 40bc875e3c..7baecb0c73 100644 --- a/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml @@ -230,6 +230,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_6.1.0.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0.x86_64.xml index 67fc449f5d..9cbe93ad46 100644 --- a/tests/domaincapsdata/qemu_6.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.1.0.x86_64.xml @@ -217,6 +217,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml index 9d68c0a404..07b951b81f 100644 --- a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml @@ -217,6 +217,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml index a439dda190..367e656b31 100644 --- a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml @@ -231,6 +231,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml index f6045623f5..99c0fc03fd 100644 --- a/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml @@ -176,6 +176,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_6.2.0.aarch64.xml b/tests/domaincapsdata/qemu_6.2.0.aarch64.xml index 35e18adcd5..8e04508694 100644 --- a/tests/domaincapsdata/qemu_6.2.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_6.2.0.aarch64.xml @@ -174,6 +174,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_6.2.0.ppc64.xml b/tests/domaincapsdata/qemu_6.2.0.ppc64.xml index b07072778b..0bbe501383 100644 --- a/tests/domaincapsdata/qemu_6.2.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_6.2.0.ppc64.xml @@ -136,6 +136,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml index 0f89790b60..f363cf1b79 100644 --- a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml @@ -217,6 +217,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml index 4e6ff06125..d8937f0443 100644 --- a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml @@ -219,6 +219,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml index ed80a7892f..0e557e715b 100644 --- a/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml @@ -233,6 +233,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml index 7a8cb9f113..096c8087bf 100644 --- a/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml +++ b/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml @@ -176,6 +176,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_7.0.0.aarch64.xml b/tests/domaincapsdata/qemu_7.0.0.aarch64.xml index d48c87dc3a..a67b6d014e 100644 --- a/tests/domaincapsdata/qemu_7.0.0.aarch64.xml +++ b/tests/domaincapsdata/qemu_7.0.0.aarch64.xml @@ -174,6 +174,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_7.0.0.ppc64.xml b/tests/domaincapsdata/qemu_7.0.0.ppc64.xml index ec171bcdd9..12cf2c9b0b 100644 --- a/tests/domaincapsdata/qemu_7.0.0.ppc64.xml +++ b/tests/domaincapsdata/qemu_7.0.0.ppc64.xml @@ -138,6 +138,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_7.0.0.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0.x86_64.xml index a20395c6d4..03e456f8e9 100644 --- a/tests/domaincapsdata/qemu_7.0.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.0.0.x86_64.xml @@ -219,6 +219,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml index 4e96c5104a..3b1911e0c5 100644 --- a/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml @@ -218,6 +218,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml index 46542c8b5b..027ca34a16 100644 --- a/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml @@ -231,6 +231,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/domaincapsdata/qemu_7.1.0.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0.x86_64.xml index 02b43e318f..edd8cf8729 100644 --- a/tests/domaincapsdata/qemu_7.1.0.x86_64.xml +++ b/tests/domaincapsdata/qemu_7.1.0.x86_64.xml @@ -218,6 +218,10 @@ <value>passthrough</value> <value>emulator</value> </enum> + <enum name='backendVersion'> + <value>1.2</value> + <value>2.0</value> + </enum> </tpm> </devices> <features> diff --git a/tests/testutilsqemu.c b/tests/testutilsqemu.c index 00dd9871d1..7a447bb5f0 100644 --- a/tests/testutilsqemu.c +++ b/tests/testutilsqemu.c @@ -150,12 +150,13 @@ bool virTPMSwtpmSetupCapsGet(virTPMSwtpmSetupFeature cap) { switch (cap) { + case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_1_2: + case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_2_0: + return true; case VIR_TPM_SWTPM_SETUP_FEATURE_CMDARG_PWDFILE_FD: case VIR_TPM_SWTPM_SETUP_FEATURE_CMDARG_CREATE_CONFIG_FILES: case VIR_TPM_SWTPM_SETUP_FEATURE_TPM12_NOT_NEED_ROOT: case VIR_TPM_SWTPM_SETUP_FEATURE_CMDARG_RECONFIGURE_PCR_BANKS: - case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_1_2: - case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_2_0: case VIR_TPM_SWTPM_SETUP_FEATURE_LAST: break; } -- 2.35.1

On Fri, Jul 29, 2022 at 09:42:13AM +0200, Michal Privoznik wrote:
+++ b/tests/testutilsqemu.c @@ -150,12 +150,13 @@ bool virTPMSwtpmSetupCapsGet(virTPMSwtpmSetupFeature cap) { switch (cap) { + case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_1_2: + case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_2_0: + return true; case VIR_TPM_SWTPM_SETUP_FEATURE_CMDARG_PWDFILE_FD: case VIR_TPM_SWTPM_SETUP_FEATURE_CMDARG_CREATE_CONFIG_FILES: case VIR_TPM_SWTPM_SETUP_FEATURE_TPM12_NOT_NEED_ROOT: case VIR_TPM_SWTPM_SETUP_FEATURE_CMDARG_RECONFIGURE_PCR_BANKS: - case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_1_2: - case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_2_0: case VIR_TPM_SWTPM_SETUP_FEATURE_LAST: break; }
So our test suite will work against a mocked TPM that supports a very small set of hardcoded capabilities. Would it make sense to extend this so that it's possible to control things as the test case level, so that we can have coverage for things like e.g. trying to use TPM 1.2 when the swtpm binary only supports TPM 2.0? That'd all be follow-up work, of course. Your change is good to have as is :) Reviewed-by: Andrea Bolognani <abologna@redhat.com> -- Andrea Bolognani / Red Hat / Virtualization

On 8/1/22 18:10, Andrea Bolognani wrote:
On Fri, Jul 29, 2022 at 09:42:13AM +0200, Michal Privoznik wrote:
+++ b/tests/testutilsqemu.c @@ -150,12 +150,13 @@ bool virTPMSwtpmSetupCapsGet(virTPMSwtpmSetupFeature cap) { switch (cap) { + case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_1_2: + case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_2_0: + return true; case VIR_TPM_SWTPM_SETUP_FEATURE_CMDARG_PWDFILE_FD: case VIR_TPM_SWTPM_SETUP_FEATURE_CMDARG_CREATE_CONFIG_FILES: case VIR_TPM_SWTPM_SETUP_FEATURE_TPM12_NOT_NEED_ROOT: case VIR_TPM_SWTPM_SETUP_FEATURE_CMDARG_RECONFIGURE_PCR_BANKS: - case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_1_2: - case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_2_0: case VIR_TPM_SWTPM_SETUP_FEATURE_LAST: break; }
So our test suite will work against a mocked TPM that supports a very small set of hardcoded capabilities. Would it make sense to extend this so that it's possible to control things as the test case level, so that we can have coverage for things like e.g. trying to use TPM 1.2 when the swtpm binary only supports TPM 2.0?
Good point. We could have an environment variable that, if set, would make this function return just a subset of TPM versions. And then, when we want to test scenario you suggest we could do the following: setenv("VIR_TEST_MOCK_FAKE_TPM_VERSION", "1.2"); DO_TEST_FAILURE("guest-tpm-2.0"); unsetenv("VIR_TEST_MOCK_FAKE_TPM_VERSION"); Alternatively, we can modify the DO_TEST_* macro so that it accepts TPM version and sets the ENV var accordingly, but I'd rather not do that, because it's not very extensible.
That'd all be follow-up work, of course. Your change is good to have as is :)
In fact, I can just not merge this patch and send v2 of this patch that implements the idea from above. I'll push the other two though, because they fix the issue.
Reviewed-by: Andrea Bolognani <abologna@redhat.com>
Thanks! Michal

On Tue, Aug 02, 2022 at 09:03:01AM +0200, Michal Prívozník wrote:
On 8/1/22 18:10, Andrea Bolognani wrote:
On Fri, Jul 29, 2022 at 09:42:13AM +0200, Michal Privoznik wrote:
+++ b/tests/testutilsqemu.c @@ -150,12 +150,13 @@ bool virTPMSwtpmSetupCapsGet(virTPMSwtpmSetupFeature cap) { switch (cap) { + case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_1_2: + case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_2_0: + return true; case VIR_TPM_SWTPM_SETUP_FEATURE_CMDARG_PWDFILE_FD: case VIR_TPM_SWTPM_SETUP_FEATURE_CMDARG_CREATE_CONFIG_FILES: case VIR_TPM_SWTPM_SETUP_FEATURE_TPM12_NOT_NEED_ROOT: case VIR_TPM_SWTPM_SETUP_FEATURE_CMDARG_RECONFIGURE_PCR_BANKS: - case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_1_2: - case VIR_TPM_SWTPM_SETUP_FEATURE_TPM_2_0: case VIR_TPM_SWTPM_SETUP_FEATURE_LAST: break; }
So our test suite will work against a mocked TPM that supports a very small set of hardcoded capabilities. Would it make sense to extend this so that it's possible to control things as the test case level, so that we can have coverage for things like e.g. trying to use TPM 1.2 when the swtpm binary only supports TPM 2.0?
Good point. We could have an environment variable that, if set, would make this function return just a subset of TPM versions. And then, when we want to test scenario you suggest we could do the following:
setenv("VIR_TEST_MOCK_FAKE_TPM_VERSION", "1.2"); DO_TEST_FAILURE("guest-tpm-2.0"); unsetenv("VIR_TEST_MOCK_FAKE_TPM_VERSION");
Alternatively, we can modify the DO_TEST_* macro so that it accepts TPM version and sets the ENV var accordingly, but I'd rather not do that, because it's not very extensible.
That covers the basic scenario of mocking a build of swtpm that has only one TPM version enabled, but for example until very recently many builds supported both versions. And no other recent / optional feature can be toggled this way. Without thinking too much about it or prototyping it, having DO_TEST_FULL() accept a new ARG_SWTPMSETUP_FEATURE argument that contains a list of virTPMSwtpmSetupFeature sounds like a reasonable enough approach. The more commonly used macros would of course not expose this argument.
That'd all be follow-up work, of course. Your change is good to have as is :)
In fact, I can just not merge this patch and send v2 of this patch that implements the idea from above. I'll push the other two though, because they fix the issue.
This one's already nice and the discussion on how to make it more generic could end up taking a bit. I'd say just push it as is now, then work on improving upon it later. -- Andrea Bolognani / Red Hat / Virtualization
participants (3)
-
Andrea Bolognani
-
Michal Privoznik
-
Michal Prívozník