From 1ef3d0fc979d11138d28e87e3639065360e96453 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Wed, 29 Apr 2020 11:03:02 +0200 Subject: [PATCH] qemumonitortestutils: Introduce qemuMonitorTestSkipDeprecatedValidation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Upcoming patches will add validation which rejects objects with the 'deprecated' feature in the QMP schema. To support tests which deal with legacy properties in case when a command or argument is marked as deprecated or removed by qemu qemuMonitorTestSkipDeprecatedValidation will allow configuring the tests to ignore such errors. In case of commands/features which are not yet replaced, the 'allowRemoved' bool should not be set to provide a hard notification once qemu drops the command. Note that at this point 'allowRemoved' only includes whole commands, but not specific properties. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- tests/qemumonitortestutils.c | 28 ++++++++++++++++++++++++++++ tests/qemumonitortestutils.h | 2 ++ 2 files changed, 30 insertions(+) diff --git a/tests/qemumonitortestutils.c b/tests/qemumonitortestutils.c index 3dc4b674f3..0d9427f1d1 100644 --- a/tests/qemumonitortestutils.c +++ b/tests/qemumonitortestutils.c @@ -59,6 +59,9 @@ struct _qemuMonitorTest { bool allowUnusedCommands; + bool skipValidationDeprecated; + bool skipValidationRemoved; + char *incoming; size_t incomingLength; size_t incomingCapacity; @@ -1298,6 +1301,31 @@ qemuMonitorTestAllowUnusedCommands(qemuMonitorTestPtr test) } +/** + * qemuMonitorTestSkipDeprecatedValidation: + * @test: test monitor object + * @allowRemoved: don't produce errors if command was removed from QMP schema + * + * By default if the QMP schema is provided all test items/commands are + * validated against the schema. This function allows to override the validation + * and additionally if @allowRemoved is true and if such a command is no longer + * present in the QMP, only a warning is printed. + * + * '@allowRemoved' must be used only if a suitable replacement is already in + * use and the code tests legacy interactions. + * + * Note that currently '@allowRemoved' influences only removed commands. If an + * argument is removed it will still fail validation. + */ +void +qemuMonitorTestSkipDeprecatedValidation(qemuMonitorTestPtr test, + bool allowRemoved) +{ + test->skipValidationDeprecated = true; + test->skipValidationRemoved = allowRemoved; +} + + static int qemuMonitorTestFullAddItem(qemuMonitorTestPtr test, const char *filename, diff --git a/tests/qemumonitortestutils.h b/tests/qemumonitortestutils.h index f45e850000..1073ef4100 100644 --- a/tests/qemumonitortestutils.h +++ b/tests/qemumonitortestutils.h @@ -51,6 +51,8 @@ void *qemuMonitorTestItemGetPrivateData(qemuMonitorTestItemPtr item); int qemuMonitorTestAddErrorResponse(qemuMonitorTestPtr test, const char *errmsg, ...); void qemuMonitorTestAllowUnusedCommands(qemuMonitorTestPtr test); +void qemuMonitorTestSkipDeprecatedValidation(qemuMonitorTestPtr test, + bool allowRemoved); int qemuMonitorTestAddItem(qemuMonitorTestPtr test, const char *command_name,