render / rpms / libvirt

Forked from rpms/libvirt 10 months ago
Clone
Blob Blame History Raw
From 0d41c52b4ccd749e2c2c33bfe20c2f01d319a962 Mon Sep 17 00:00:00 2001
Message-Id: <0d41c52b4ccd749e2c2c33bfe20c2f01d319a962@dist-git>
From: Peter Krempa <pkrempa@redhat.com>
Date: Tue, 24 Mar 2020 16:26:02 +0100
Subject: [PATCH] qemublocktest: Test backing store strings
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

With -blockdev libvirt provides the string which is recorded  as
'backing store' property of an image to qemu. Add testing for
qemuBlockGetBackingStoreString which generates these strings as there's
logic which determines which format to use.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
(cherry picked from commit 5f3b4a37275a4079949bb3428149ab310c6c4e2e)

 Conflicts: tests/qemublocktest.c: virBufferTrim changes not backported

https://bugzilla.redhat.com/show_bug.cgi?id=1804617
Message-Id: <398610db4cddda5d1ec6dc3b67b2d4c68afbf32c.1585063415.git.pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
---
 tests/qemublocktest.c                         |  20 ++-
 .../xml2json/block-raw-noopts-srconly.json    |  13 +-
 .../block-raw-reservations-srconly.json       |  13 +-
 .../xml2json/dir-fat-cache-srconly.json       |  15 +-
 .../xml2json/dir-fat-floppy-srconly.json      |  15 +-
 .../xml2json/dir-fat-readonly-srconly.json    |  15 +-
 ...ile-backing_basic-aio_threads-srconly.json |  68 +++++----
 ...acking_basic-cache-directsync-srconly.json |  68 +++++----
 ...file-backing_basic-cache-none-srconly.json |  68 +++++----
 ...le-backing_basic-cache-unsafe-srconly.json |  68 +++++----
 ...backing_basic-cache-writeback-srconly.json |  68 +++++----
 ...king_basic-cache-writethrough-srconly.json |  68 +++++----
 .../file-backing_basic-detect-srconly.json    |  68 +++++----
 .../file-backing_basic-noopts-srconly.json    |  52 ++++---
 ...le-backing_basic-unmap-detect-srconly.json |  68 +++++----
 ...le-backing_basic-unmap-ignore-srconly.json |  68 +++++----
 .../file-backing_basic-unmap-srconly.json     |  68 +++++----
 .../xml2json/file-bochs-noopts-srconly.json   |  13 +-
 .../xml2json/file-cloop-noopts-srconly.json   |  13 +-
 .../xml2json/file-dmg-noopts-srconly.json     |  13 +-
 .../xml2json/file-ploop-noopts-srconly.json   |  13 +-
 ...cow2-backing-chain-encryption-srconly.json |  26 ++--
 ...le-qcow2-backing-chain-noopts-srconly.json | 130 ++++++++++++------
 ...w2-backing-chain-unterminated-srconly.json |  26 ++--
 .../xml2json/file-raw-aio_native-srconly.json |  13 +-
 .../xml2json/file-raw-luks-srconly.json       |  13 +-
 .../xml2json/file-raw-noopts-srconly.json     |  13 +-
 .../xml2json/file-vdi-noopts-srconly.json     |  13 +-
 .../xml2json/file-vhd-noopts-srconly.json     |  13 +-
 .../xml2json/file-vpc-noopts-srconly.json     |  13 +-
 .../xml2json/network-nbd-tls-srconly.json     |  19 ++-
 ...w2-backing-chain-cache-unsafe-srconly.json |  68 ++++++---
 ...backing-chain-encryption_auth-srconly.json |  68 ++++++---
 .../xml2json/nvme-raw-noopts-srconly.json     |  19 ++-
 34 files changed, 876 insertions(+), 433 deletions(-)

diff --git a/tests/qemublocktest.c b/tests/qemublocktest.c
index c009db7996..cf56c8a983 100644
--- a/tests/qemublocktest.c
+++ b/tests/qemublocktest.c
@@ -184,6 +184,7 @@ struct testQemuDiskXMLToJSONImageData {
     virJSONValuePtr formatprops;
     virJSONValuePtr storageprops;
     virJSONValuePtr storagepropssrc;
+    char *backingstore;
 };
 
 
@@ -210,6 +211,7 @@ testQemuDiskXMLToPropsClear(struct testQemuDiskXMLToJSONData *data)
         virJSONValueFree(data->images[i].formatprops);
         virJSONValueFree(data->images[i].storageprops);
         virJSONValueFree(data->images[i].storagepropssrc);
+        g_free(data->images[i].backingstore);
     }
     data->nimages = 0;
     VIR_FREE(data->images);
@@ -287,6 +289,7 @@ testQemuDiskXMLToProps(const void *opaque)
     }
 
     for (n = disk->src; virStorageSourceIsBacking(n); n = n->backingStore) {
+        g_autofree char *backingstore = NULL;
 
         if (testQemuDiskXMLToJSONFakeSecrets(n) < 0)
             return -1;
@@ -298,7 +301,8 @@ testQemuDiskXMLToProps(const void *opaque)
 
         if (!(formatProps = qemuBlockStorageSourceGetBlockdevProps(n, n->backingStore)) ||
             !(storageSrcOnlyProps = qemuBlockStorageSourceGetBackendProps(n, false, true, true)) ||
-            !(storageProps = qemuBlockStorageSourceGetBackendProps(n, false, false, true))) {
+            !(storageProps = qemuBlockStorageSourceGetBackendProps(n, false, false, true)) ||
+            !(backingstore = qemuBlockGetBackingStoreString(n, true))) {
             if (!data->fail) {
                 VIR_TEST_VERBOSE("failed to generate qemu blockdev props");
                 return -1;
@@ -314,6 +318,7 @@ testQemuDiskXMLToProps(const void *opaque)
         data->images[data->nimages].formatprops = g_steal_pointer(&formatProps);
         data->images[data->nimages].storageprops = g_steal_pointer(&storageProps);
         data->images[data->nimages].storagepropssrc = g_steal_pointer(&storageSrcOnlyProps);
+        data->images[data->nimages].backingstore = g_steal_pointer(&backingstore);
 
         data->nimages++;
     }
@@ -425,10 +430,21 @@ testQemuDiskXMLToPropsValidateFileSrcOnly(const void *opaque)
     for (i = 0; i < data->nimages; i++) {
         g_autofree char *jsonstr = NULL;
 
+        virBufferAddLit(&buf, "(\n");
+        virBufferAdjustIndent(&buf, 2);
+        virBufferAddLit(&buf, "source only properties:\n");
+
         if (!(jsonstr = virJSONValueToString(data->images[i].storagepropssrc, true)))
             return -1;
 
-        virBufferAdd(&buf, jsonstr, -1);
+        virBufferAddStr(&buf, jsonstr);
+
+        virBufferAddLit(&buf, "backing store string:\n");
+        virBufferAddStr(&buf, data->images[i].backingstore);
+
+        virBufferTrim(&buf, "\n", -1);
+        virBufferAdjustIndent(&buf, -2);
+        virBufferAddLit(&buf, "\n)\n");
     }
 
     actual = virBufferContentAndReset(&buf);
diff --git a/tests/qemublocktestdata/xml2json/block-raw-noopts-srconly.json b/tests/qemublocktestdata/xml2json/block-raw-noopts-srconly.json
index 72f9067353..07f7390433 100644
--- a/tests/qemublocktestdata/xml2json/block-raw-noopts-srconly.json
+++ b/tests/qemublocktestdata/xml2json/block-raw-noopts-srconly.json
@@ -1,4 +1,9 @@
-{
-  "driver": "host_device",
-  "filename": "/dev/blah"
-}
+(
+  source only properties:
+  {
+    "driver": "host_device",
+    "filename": "/dev/blah"
+  }
+  backing store string:
+  /dev/blah
+)
diff --git a/tests/qemublocktestdata/xml2json/block-raw-reservations-srconly.json b/tests/qemublocktestdata/xml2json/block-raw-reservations-srconly.json
index 72f9067353..07f7390433 100644
--- a/tests/qemublocktestdata/xml2json/block-raw-reservations-srconly.json
+++ b/tests/qemublocktestdata/xml2json/block-raw-reservations-srconly.json
@@ -1,4 +1,9 @@
-{
-  "driver": "host_device",
-  "filename": "/dev/blah"
-}
+(
+  source only properties:
+  {
+    "driver": "host_device",
+    "filename": "/dev/blah"
+  }
+  backing store string:
+  /dev/blah
+)
diff --git a/tests/qemublocktestdata/xml2json/dir-fat-cache-srconly.json b/tests/qemublocktestdata/xml2json/dir-fat-cache-srconly.json
index 6ec4f78d7b..8bc58fa033 100644
--- a/tests/qemublocktestdata/xml2json/dir-fat-cache-srconly.json
+++ b/tests/qemublocktestdata/xml2json/dir-fat-cache-srconly.json
@@ -1,5 +1,10 @@
-{
-  "driver": "vvfat",
-  "dir": "/var/somefiles",
-  "floppy": false
-}
+(
+  source only properties:
+  {
+    "driver": "vvfat",
+    "dir": "/var/somefiles",
+    "floppy": false
+  }
+  backing store string:
+  /var/somefiles
+)
diff --git a/tests/qemublocktestdata/xml2json/dir-fat-floppy-srconly.json b/tests/qemublocktestdata/xml2json/dir-fat-floppy-srconly.json
index 6b0388bc18..043b796435 100644
--- a/tests/qemublocktestdata/xml2json/dir-fat-floppy-srconly.json
+++ b/tests/qemublocktestdata/xml2json/dir-fat-floppy-srconly.json
@@ -1,5 +1,10 @@
-{
-  "driver": "vvfat",
-  "dir": "/var/somefiles",
-  "floppy": true
-}
+(
+  source only properties:
+  {
+    "driver": "vvfat",
+    "dir": "/var/somefiles",
+    "floppy": true
+  }
+  backing store string:
+  /var/somefiles
+)
diff --git a/tests/qemublocktestdata/xml2json/dir-fat-readonly-srconly.json b/tests/qemublocktestdata/xml2json/dir-fat-readonly-srconly.json
index 6ec4f78d7b..8bc58fa033 100644
--- a/tests/qemublocktestdata/xml2json/dir-fat-readonly-srconly.json
+++ b/tests/qemublocktestdata/xml2json/dir-fat-readonly-srconly.json
@@ -1,5 +1,10 @@
-{
-  "driver": "vvfat",
-  "dir": "/var/somefiles",
-  "floppy": false
-}
+(
+  source only properties:
+  {
+    "driver": "vvfat",
+    "dir": "/var/somefiles",
+    "floppy": false
+  }
+  backing store string:
+  /var/somefiles
+)
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-aio_threads-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-aio_threads-srconly.json
index ea490b0034..65a3773b97 100644
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-aio_threads-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-aio_threads-srconly.json
@@ -1,24 +1,44 @@
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/a"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/b"
-}
-{
-  "driver": "gluster",
-  "volume": "images",
-  "path": "c",
-  "server": [
-    {
-      "type": "inet",
-      "host": "test.org",
-      "port": "24007"
-    }
-  ]
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/d"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/a"
+  }
+  backing store string:
+  /var/lib/libvirt/images/a
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/b"
+  }
+  backing store string:
+  /var/lib/libvirt/images/b
+)
+(
+  source only properties:
+  {
+    "driver": "gluster",
+    "volume": "images",
+    "path": "c",
+    "server": [
+      {
+        "type": "inet",
+        "host": "test.org",
+        "port": "24007"
+      }
+    ]
+  }
+  backing store string:
+  gluster://test.org:24007/images/c
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/d"
+  }
+  backing store string:
+  /var/lib/libvirt/images/d
+)
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-directsync-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-directsync-srconly.json
index ea490b0034..65a3773b97 100644
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-directsync-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-directsync-srconly.json
@@ -1,24 +1,44 @@
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/a"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/b"
-}
-{
-  "driver": "gluster",
-  "volume": "images",
-  "path": "c",
-  "server": [
-    {
-      "type": "inet",
-      "host": "test.org",
-      "port": "24007"
-    }
-  ]
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/d"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/a"
+  }
+  backing store string:
+  /var/lib/libvirt/images/a
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/b"
+  }
+  backing store string:
+  /var/lib/libvirt/images/b
+)
+(
+  source only properties:
+  {
+    "driver": "gluster",
+    "volume": "images",
+    "path": "c",
+    "server": [
+      {
+        "type": "inet",
+        "host": "test.org",
+        "port": "24007"
+      }
+    ]
+  }
+  backing store string:
+  gluster://test.org:24007/images/c
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/d"
+  }
+  backing store string:
+  /var/lib/libvirt/images/d
+)
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-none-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-none-srconly.json
index ea490b0034..65a3773b97 100644
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-none-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-none-srconly.json
@@ -1,24 +1,44 @@
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/a"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/b"
-}
-{
-  "driver": "gluster",
-  "volume": "images",
-  "path": "c",
-  "server": [
-    {
-      "type": "inet",
-      "host": "test.org",
-      "port": "24007"
-    }
-  ]
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/d"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/a"
+  }
+  backing store string:
+  /var/lib/libvirt/images/a
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/b"
+  }
+  backing store string:
+  /var/lib/libvirt/images/b
+)
+(
+  source only properties:
+  {
+    "driver": "gluster",
+    "volume": "images",
+    "path": "c",
+    "server": [
+      {
+        "type": "inet",
+        "host": "test.org",
+        "port": "24007"
+      }
+    ]
+  }
+  backing store string:
+  gluster://test.org:24007/images/c
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/d"
+  }
+  backing store string:
+  /var/lib/libvirt/images/d
+)
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-unsafe-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-unsafe-srconly.json
index ea490b0034..65a3773b97 100644
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-unsafe-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-unsafe-srconly.json
@@ -1,24 +1,44 @@
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/a"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/b"
-}
-{
-  "driver": "gluster",
-  "volume": "images",
-  "path": "c",
-  "server": [
-    {
-      "type": "inet",
-      "host": "test.org",
-      "port": "24007"
-    }
-  ]
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/d"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/a"
+  }
+  backing store string:
+  /var/lib/libvirt/images/a
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/b"
+  }
+  backing store string:
+  /var/lib/libvirt/images/b
+)
+(
+  source only properties:
+  {
+    "driver": "gluster",
+    "volume": "images",
+    "path": "c",
+    "server": [
+      {
+        "type": "inet",
+        "host": "test.org",
+        "port": "24007"
+      }
+    ]
+  }
+  backing store string:
+  gluster://test.org:24007/images/c
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/d"
+  }
+  backing store string:
+  /var/lib/libvirt/images/d
+)
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-writeback-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-writeback-srconly.json
index ea490b0034..65a3773b97 100644
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-writeback-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-writeback-srconly.json
@@ -1,24 +1,44 @@
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/a"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/b"
-}
-{
-  "driver": "gluster",
-  "volume": "images",
-  "path": "c",
-  "server": [
-    {
-      "type": "inet",
-      "host": "test.org",
-      "port": "24007"
-    }
-  ]
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/d"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/a"
+  }
+  backing store string:
+  /var/lib/libvirt/images/a
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/b"
+  }
+  backing store string:
+  /var/lib/libvirt/images/b
+)
+(
+  source only properties:
+  {
+    "driver": "gluster",
+    "volume": "images",
+    "path": "c",
+    "server": [
+      {
+        "type": "inet",
+        "host": "test.org",
+        "port": "24007"
+      }
+    ]
+  }
+  backing store string:
+  gluster://test.org:24007/images/c
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/d"
+  }
+  backing store string:
+  /var/lib/libvirt/images/d
+)
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-writethrough-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-writethrough-srconly.json
index ea490b0034..65a3773b97 100644
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-writethrough-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-writethrough-srconly.json
@@ -1,24 +1,44 @@
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/a"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/b"
-}
-{
-  "driver": "gluster",
-  "volume": "images",
-  "path": "c",
-  "server": [
-    {
-      "type": "inet",
-      "host": "test.org",
-      "port": "24007"
-    }
-  ]
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/d"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/a"
+  }
+  backing store string:
+  /var/lib/libvirt/images/a
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/b"
+  }
+  backing store string:
+  /var/lib/libvirt/images/b
+)
+(
+  source only properties:
+  {
+    "driver": "gluster",
+    "volume": "images",
+    "path": "c",
+    "server": [
+      {
+        "type": "inet",
+        "host": "test.org",
+        "port": "24007"
+      }
+    ]
+  }
+  backing store string:
+  gluster://test.org:24007/images/c
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/d"
+  }
+  backing store string:
+  /var/lib/libvirt/images/d
+)
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-detect-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-detect-srconly.json
index ea490b0034..65a3773b97 100644
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-detect-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-detect-srconly.json
@@ -1,24 +1,44 @@
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/a"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/b"
-}
-{
-  "driver": "gluster",
-  "volume": "images",
-  "path": "c",
-  "server": [
-    {
-      "type": "inet",
-      "host": "test.org",
-      "port": "24007"
-    }
-  ]
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/d"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/a"
+  }
+  backing store string:
+  /var/lib/libvirt/images/a
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/b"
+  }
+  backing store string:
+  /var/lib/libvirt/images/b
+)
+(
+  source only properties:
+  {
+    "driver": "gluster",
+    "volume": "images",
+    "path": "c",
+    "server": [
+      {
+        "type": "inet",
+        "host": "test.org",
+        "port": "24007"
+      }
+    ]
+  }
+  backing store string:
+  gluster://test.org:24007/images/c
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/d"
+  }
+  backing store string:
+  /var/lib/libvirt/images/d
+)
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-noopts-srconly.json
index dbdf6e563b..35a8c3af37 100644
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-noopts-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-noopts-srconly.json
@@ -1,16 +1,36 @@
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/a"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/b"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/c"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/d"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/a"
+  }
+  backing store string:
+  /var/lib/libvirt/images/a
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/b"
+  }
+  backing store string:
+  /var/lib/libvirt/images/b
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/c"
+  }
+  backing store string:
+  /var/lib/libvirt/images/c
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/d"
+  }
+  backing store string:
+  /var/lib/libvirt/images/d
+)
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-detect-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-detect-srconly.json
index ea490b0034..65a3773b97 100644
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-detect-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-detect-srconly.json
@@ -1,24 +1,44 @@
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/a"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/b"
-}
-{
-  "driver": "gluster",
-  "volume": "images",
-  "path": "c",
-  "server": [
-    {
-      "type": "inet",
-      "host": "test.org",
-      "port": "24007"
-    }
-  ]
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/d"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/a"
+  }
+  backing store string:
+  /var/lib/libvirt/images/a
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/b"
+  }
+  backing store string:
+  /var/lib/libvirt/images/b
+)
+(
+  source only properties:
+  {
+    "driver": "gluster",
+    "volume": "images",
+    "path": "c",
+    "server": [
+      {
+        "type": "inet",
+        "host": "test.org",
+        "port": "24007"
+      }
+    ]
+  }
+  backing store string:
+  gluster://test.org:24007/images/c
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/d"
+  }
+  backing store string:
+  /var/lib/libvirt/images/d
+)
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-ignore-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-ignore-srconly.json
index ea490b0034..65a3773b97 100644
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-ignore-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-ignore-srconly.json
@@ -1,24 +1,44 @@
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/a"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/b"
-}
-{
-  "driver": "gluster",
-  "volume": "images",
-  "path": "c",
-  "server": [
-    {
-      "type": "inet",
-      "host": "test.org",
-      "port": "24007"
-    }
-  ]
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/d"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/a"
+  }
+  backing store string:
+  /var/lib/libvirt/images/a
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/b"
+  }
+  backing store string:
+  /var/lib/libvirt/images/b
+)
+(
+  source only properties:
+  {
+    "driver": "gluster",
+    "volume": "images",
+    "path": "c",
+    "server": [
+      {
+        "type": "inet",
+        "host": "test.org",
+        "port": "24007"
+      }
+    ]
+  }
+  backing store string:
+  gluster://test.org:24007/images/c
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/d"
+  }
+  backing store string:
+  /var/lib/libvirt/images/d
+)
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-srconly.json
index ea490b0034..65a3773b97 100644
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-srconly.json
@@ -1,24 +1,44 @@
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/a"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/b"
-}
-{
-  "driver": "gluster",
-  "volume": "images",
-  "path": "c",
-  "server": [
-    {
-      "type": "inet",
-      "host": "test.org",
-      "port": "24007"
-    }
-  ]
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/d"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/a"
+  }
+  backing store string:
+  /var/lib/libvirt/images/a
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/b"
+  }
+  backing store string:
+  /var/lib/libvirt/images/b
+)
+(
+  source only properties:
+  {
+    "driver": "gluster",
+    "volume": "images",
+    "path": "c",
+    "server": [
+      {
+        "type": "inet",
+        "host": "test.org",
+        "port": "24007"
+      }
+    ]
+  }
+  backing store string:
+  gluster://test.org:24007/images/c
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/d"
+  }
+  backing store string:
+  /var/lib/libvirt/images/d
+)
diff --git a/tests/qemublocktestdata/xml2json/file-bochs-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-bochs-noopts-srconly.json
index c50fa903f5..58dd7e1c34 100644
--- a/tests/qemublocktestdata/xml2json/file-bochs-noopts-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-bochs-noopts-srconly.json
@@ -1,4 +1,9 @@
-{
-  "driver": "file",
-  "filename": "/path/to/i.img"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/path/to/i.img"
+  }
+  backing store string:
+  /path/to/i.img
+)
diff --git a/tests/qemublocktestdata/xml2json/file-cloop-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-cloop-noopts-srconly.json
index c50fa903f5..58dd7e1c34 100644
--- a/tests/qemublocktestdata/xml2json/file-cloop-noopts-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-cloop-noopts-srconly.json
@@ -1,4 +1,9 @@
-{
-  "driver": "file",
-  "filename": "/path/to/i.img"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/path/to/i.img"
+  }
+  backing store string:
+  /path/to/i.img
+)
diff --git a/tests/qemublocktestdata/xml2json/file-dmg-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-dmg-noopts-srconly.json
index c50fa903f5..58dd7e1c34 100644
--- a/tests/qemublocktestdata/xml2json/file-dmg-noopts-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-dmg-noopts-srconly.json
@@ -1,4 +1,9 @@
-{
-  "driver": "file",
-  "filename": "/path/to/i.img"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/path/to/i.img"
+  }
+  backing store string:
+  /path/to/i.img
+)
diff --git a/tests/qemublocktestdata/xml2json/file-ploop-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-ploop-noopts-srconly.json
index c50fa903f5..58dd7e1c34 100644
--- a/tests/qemublocktestdata/xml2json/file-ploop-noopts-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-ploop-noopts-srconly.json
@@ -1,4 +1,9 @@
-{
-  "driver": "file",
-  "filename": "/path/to/i.img"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/path/to/i.img"
+  }
+  backing store string:
+  /path/to/i.img
+)
diff --git a/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-encryption-srconly.json b/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-encryption-srconly.json
index 316dbc9df2..29644f8c0f 100644
--- a/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-encryption-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-encryption-srconly.json
@@ -1,8 +1,18 @@
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/a"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/b"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/a"
+  }
+  backing store string:
+  /var/lib/libvirt/images/a
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/b"
+  }
+  backing store string:
+  /var/lib/libvirt/images/b
+)
diff --git a/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-noopts-srconly.json
index d998acc194..7691609577 100644
--- a/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-noopts-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-noopts-srconly.json
@@ -1,40 +1,90 @@
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/rhel7.3.1507297895"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/rhel7.3.1484071872"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/rhel7.3.1483615252"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/rhel7.3.1483605924"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/rhel7.3.1483605920"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/rhel7.3.1483546244"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/rhel7.3.1483545901"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/rhel7.3.1483545313"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/rhel7.3.1483536402"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/rhel7.3.qcow2"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/rhel7.3.1507297895"
+  }
+  backing store string:
+  /var/lib/libvirt/images/rhel7.3.1507297895
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/rhel7.3.1484071872"
+  }
+  backing store string:
+  /var/lib/libvirt/images/rhel7.3.1484071872
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/rhel7.3.1483615252"
+  }
+  backing store string:
+  /var/lib/libvirt/images/rhel7.3.1483615252
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/rhel7.3.1483605924"
+  }
+  backing store string:
+  /var/lib/libvirt/images/rhel7.3.1483605924
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/rhel7.3.1483605920"
+  }
+  backing store string:
+  /var/lib/libvirt/images/rhel7.3.1483605920
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/rhel7.3.1483546244"
+  }
+  backing store string:
+  /var/lib/libvirt/images/rhel7.3.1483546244
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/rhel7.3.1483545901"
+  }
+  backing store string:
+  /var/lib/libvirt/images/rhel7.3.1483545901
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/rhel7.3.1483545313"
+  }
+  backing store string:
+  /var/lib/libvirt/images/rhel7.3.1483545313
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/rhel7.3.1483536402"
+  }
+  backing store string:
+  /var/lib/libvirt/images/rhel7.3.1483536402
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/rhel7.3.qcow2"
+  }
+  backing store string:
+  /var/lib/libvirt/images/rhel7.3.qcow2
+)
diff --git a/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-unterminated-srconly.json b/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-unterminated-srconly.json
index e0bce3bcd2..f2fd81184b 100644
--- a/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-unterminated-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-unterminated-srconly.json
@@ -1,8 +1,18 @@
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/rhel7.3.1507297895"
-}
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/rhel7.3.1484071872"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/rhel7.3.1507297895"
+  }
+  backing store string:
+  /var/lib/libvirt/images/rhel7.3.1507297895
+)
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/rhel7.3.1484071872"
+  }
+  backing store string:
+  /var/lib/libvirt/images/rhel7.3.1484071872
+)
diff --git a/tests/qemublocktestdata/xml2json/file-raw-aio_native-srconly.json b/tests/qemublocktestdata/xml2json/file-raw-aio_native-srconly.json
index c50fa903f5..58dd7e1c34 100644
--- a/tests/qemublocktestdata/xml2json/file-raw-aio_native-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-raw-aio_native-srconly.json
@@ -1,4 +1,9 @@
-{
-  "driver": "file",
-  "filename": "/path/to/i.img"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/path/to/i.img"
+  }
+  backing store string:
+  /path/to/i.img
+)
diff --git a/tests/qemublocktestdata/xml2json/file-raw-luks-srconly.json b/tests/qemublocktestdata/xml2json/file-raw-luks-srconly.json
index 6d7088211f..c065e3fab0 100644
--- a/tests/qemublocktestdata/xml2json/file-raw-luks-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-raw-luks-srconly.json
@@ -1,4 +1,9 @@
-{
-  "driver": "file",
-  "filename": "/path/luks.img"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/path/luks.img"
+  }
+  backing store string:
+  /path/luks.img
+)
diff --git a/tests/qemublocktestdata/xml2json/file-raw-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-raw-noopts-srconly.json
index bb3e8af9eb..a2b32b09e0 100644
--- a/tests/qemublocktestdata/xml2json/file-raw-noopts-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-raw-noopts-srconly.json
@@ -1,4 +1,9 @@
-{
-  "driver": "file",
-  "filename": "/var/lib/libvirt/images/i.img"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/var/lib/libvirt/images/i.img"
+  }
+  backing store string:
+  /var/lib/libvirt/images/i.img
+)
diff --git a/tests/qemublocktestdata/xml2json/file-vdi-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-vdi-noopts-srconly.json
index c50fa903f5..58dd7e1c34 100644
--- a/tests/qemublocktestdata/xml2json/file-vdi-noopts-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-vdi-noopts-srconly.json
@@ -1,4 +1,9 @@
-{
-  "driver": "file",
-  "filename": "/path/to/i.img"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/path/to/i.img"
+  }
+  backing store string:
+  /path/to/i.img
+)
diff --git a/tests/qemublocktestdata/xml2json/file-vhd-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-vhd-noopts-srconly.json
index c50fa903f5..58dd7e1c34 100644
--- a/tests/qemublocktestdata/xml2json/file-vhd-noopts-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-vhd-noopts-srconly.json
@@ -1,4 +1,9 @@
-{
-  "driver": "file",
-  "filename": "/path/to/i.img"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/path/to/i.img"
+  }
+  backing store string:
+  /path/to/i.img
+)
diff --git a/tests/qemublocktestdata/xml2json/file-vpc-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-vpc-noopts-srconly.json
index c50fa903f5..58dd7e1c34 100644
--- a/tests/qemublocktestdata/xml2json/file-vpc-noopts-srconly.json
+++ b/tests/qemublocktestdata/xml2json/file-vpc-noopts-srconly.json
@@ -1,4 +1,9 @@
-{
-  "driver": "file",
-  "filename": "/path/to/i.img"
-}
+(
+  source only properties:
+  {
+    "driver": "file",
+    "filename": "/path/to/i.img"
+  }
+  backing store string:
+  /path/to/i.img
+)
diff --git a/tests/qemublocktestdata/xml2json/network-nbd-tls-srconly.json b/tests/qemublocktestdata/xml2json/network-nbd-tls-srconly.json
index 455f4e5140..606e68713a 100644
--- a/tests/qemublocktestdata/xml2json/network-nbd-tls-srconly.json
+++ b/tests/qemublocktestdata/xml2json/network-nbd-tls-srconly.json
@@ -1,8 +1,13 @@
-{
-  "driver": "nbd",
-  "server": {
-    "type": "inet",
-    "host": "host1.example.com",
-    "port": "10809"
+(
+  source only properties:
+  {
+    "driver": "nbd",
+    "server": {
+      "type": "inet",
+      "host": "host1.example.com",
+      "port": "10809"
+    }
   }
-}
+  backing store string:
+  nbd://host1.example.com:10809
+)
diff --git a/tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-cache-unsafe-srconly.json b/tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-cache-unsafe-srconly.json
index 69ca9caf88..2d7eeb3bca 100644
--- a/tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-cache-unsafe-srconly.json
+++ b/tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-cache-unsafe-srconly.json
@@ -1,22 +1,46 @@
-{
-  "driver": "rbd",
-  "pool": "rbdpool",
-  "image": "rbdimg",
-  "server": [
-    {
-      "host": "host1.example.com",
-      "port": "0"
-    },
-    {
-      "host": "host2.example.com",
-      "port": "0"
-    }
-  ]
-}
-{
-  "driver": "iscsi",
-  "portal": "example.org:3260",
-  "target": "iscsitarget",
-  "lun": 1,
-  "transport": "tcp"
-}
+(
+  source only properties:
+  {
+    "driver": "rbd",
+    "pool": "rbdpool",
+    "image": "rbdimg",
+    "server": [
+      {
+        "host": "host1.example.com",
+        "port": "0"
+      },
+      {
+        "host": "host2.example.com",
+        "port": "0"
+      }
+    ]
+  }
+  backing store string:
+  json:{
+    "driver": "rbd",
+    "pool": "rbdpool",
+    "image": "rbdimg",
+    "server": [
+      {
+        "host": "host1.example.com",
+        "port": "0"
+      },
+      {
+        "host": "host2.example.com",
+        "port": "0"
+      }
+    ]
+  }
+)
+(
+  source only properties:
+  {
+    "driver": "iscsi",
+    "portal": "example.org:3260",
+    "target": "iscsitarget",
+    "lun": 1,
+    "transport": "tcp"
+  }
+  backing store string:
+  iscsi://example.org:3260/iscsitarget/1
+)
diff --git a/tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-encryption_auth-srconly.json b/tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-encryption_auth-srconly.json
index 6298329812..5679318fbe 100644
--- a/tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-encryption_auth-srconly.json
+++ b/tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-encryption_auth-srconly.json
@@ -1,22 +1,46 @@
-{
-  "driver": "rbd",
-  "pool": "rbdpool",
-  "image": "rbdimg",
-  "server": [
-    {
-      "host": "host1.example.com",
-      "port": "0"
-    },
-    {
-      "host": "host2.example.com",
-      "port": "0"
-    }
-  ]
-}
-{
-  "driver": "iscsi",
-  "portal": "example.org:3260",
-  "target": "iqn.2016-09.com.example:iscsitarget",
-  "lun": 1,
-  "transport": "tcp"
-}
+(
+  source only properties:
+  {
+    "driver": "rbd",
+    "pool": "rbdpool",
+    "image": "rbdimg",
+    "server": [
+      {
+        "host": "host1.example.com",
+        "port": "0"
+      },
+      {
+        "host": "host2.example.com",
+        "port": "0"
+      }
+    ]
+  }
+  backing store string:
+  json:{
+    "driver": "rbd",
+    "pool": "rbdpool",
+    "image": "rbdimg",
+    "server": [
+      {
+        "host": "host1.example.com",
+        "port": "0"
+      },
+      {
+        "host": "host2.example.com",
+        "port": "0"
+      }
+    ]
+  }
+)
+(
+  source only properties:
+  {
+    "driver": "iscsi",
+    "portal": "example.org:3260",
+    "target": "iqn.2016-09.com.example:iscsitarget",
+    "lun": 1,
+    "transport": "tcp"
+  }
+  backing store string:
+  iscsi://example.org:3260/iqn.2016-09.com.example%3Aiscsitarget/1
+)
diff --git a/tests/qemublocktestdata/xml2json/nvme-raw-noopts-srconly.json b/tests/qemublocktestdata/xml2json/nvme-raw-noopts-srconly.json
index ed55c08cbf..970e1bb8af 100644
--- a/tests/qemublocktestdata/xml2json/nvme-raw-noopts-srconly.json
+++ b/tests/qemublocktestdata/xml2json/nvme-raw-noopts-srconly.json
@@ -1,5 +1,14 @@
-{
-  "driver": "nvme",
-  "device": "0000:01:00.0",
-  "namespace": 1
-}
+(
+  source only properties:
+  {
+    "driver": "nvme",
+    "device": "0000:01:00.0",
+    "namespace": 1
+  }
+  backing store string:
+  json:{
+    "driver": "nvme",
+    "device": "0000:01:00.0",
+    "namespace": 1
+  }
+)
-- 
2.26.0