]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemumonitortestutils: Introduce qemuMonitorTestSkipDeprecatedValidation
authorPeter Krempa <pkrempa@redhat.com>
Wed, 29 Apr 2020 09:03:02 +0000 (11:03 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 20 May 2020 06:53:29 +0000 (08:53 +0200)
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 <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
tests/qemumonitortestutils.c
tests/qemumonitortestutils.h

index 3dc4b674f3c92369cbe197c4dbf5b7c31a4e6fe4..0d9427f1d1e3764f7e8faa1da2f73ae799592a29 100644 (file)
@@ -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,
index f45e85000044ff7b3846cc27556bba150de44aec..1073ef4100f517f54ef5475b98ffb67705d72f77 100644 (file)
@@ -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,