fbe740
From 0d41c52b4ccd749e2c2c33bfe20c2f01d319a962 Mon Sep 17 00:00:00 2001
fbe740
Message-Id: <0d41c52b4ccd749e2c2c33bfe20c2f01d319a962@dist-git>
fbe740
From: Peter Krempa <pkrempa@redhat.com>
fbe740
Date: Tue, 24 Mar 2020 16:26:02 +0100
fbe740
Subject: [PATCH] qemublocktest: Test backing store strings
fbe740
MIME-Version: 1.0
fbe740
Content-Type: text/plain; charset=UTF-8
fbe740
Content-Transfer-Encoding: 8bit
fbe740
fbe740
With -blockdev libvirt provides the string which is recorded  as
fbe740
'backing store' property of an image to qemu. Add testing for
fbe740
qemuBlockGetBackingStoreString which generates these strings as there's
fbe740
logic which determines which format to use.
fbe740
fbe740
Signed-off-by: Peter Krempa <pkrempa@redhat.com>
fbe740
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
fbe740
(cherry picked from commit 5f3b4a37275a4079949bb3428149ab310c6c4e2e)
fbe740
fbe740
 Conflicts: tests/qemublocktest.c: virBufferTrim changes not backported
fbe740
fbe740
https://bugzilla.redhat.com/show_bug.cgi?id=1804617
fbe740
Message-Id: <398610db4cddda5d1ec6dc3b67b2d4c68afbf32c.1585063415.git.pkrempa@redhat.com>
fbe740
Reviewed-by: Ján Tomko <jtomko@redhat.com>
fbe740
---
fbe740
 tests/qemublocktest.c                         |  20 ++-
fbe740
 .../xml2json/block-raw-noopts-srconly.json    |  13 +-
fbe740
 .../block-raw-reservations-srconly.json       |  13 +-
fbe740
 .../xml2json/dir-fat-cache-srconly.json       |  15 +-
fbe740
 .../xml2json/dir-fat-floppy-srconly.json      |  15 +-
fbe740
 .../xml2json/dir-fat-readonly-srconly.json    |  15 +-
fbe740
 ...ile-backing_basic-aio_threads-srconly.json |  68 +++++----
fbe740
 ...acking_basic-cache-directsync-srconly.json |  68 +++++----
fbe740
 ...file-backing_basic-cache-none-srconly.json |  68 +++++----
fbe740
 ...le-backing_basic-cache-unsafe-srconly.json |  68 +++++----
fbe740
 ...backing_basic-cache-writeback-srconly.json |  68 +++++----
fbe740
 ...king_basic-cache-writethrough-srconly.json |  68 +++++----
fbe740
 .../file-backing_basic-detect-srconly.json    |  68 +++++----
fbe740
 .../file-backing_basic-noopts-srconly.json    |  52 ++++---
fbe740
 ...le-backing_basic-unmap-detect-srconly.json |  68 +++++----
fbe740
 ...le-backing_basic-unmap-ignore-srconly.json |  68 +++++----
fbe740
 .../file-backing_basic-unmap-srconly.json     |  68 +++++----
fbe740
 .../xml2json/file-bochs-noopts-srconly.json   |  13 +-
fbe740
 .../xml2json/file-cloop-noopts-srconly.json   |  13 +-
fbe740
 .../xml2json/file-dmg-noopts-srconly.json     |  13 +-
fbe740
 .../xml2json/file-ploop-noopts-srconly.json   |  13 +-
fbe740
 ...cow2-backing-chain-encryption-srconly.json |  26 ++--
fbe740
 ...le-qcow2-backing-chain-noopts-srconly.json | 130 ++++++++++++------
fbe740
 ...w2-backing-chain-unterminated-srconly.json |  26 ++--
fbe740
 .../xml2json/file-raw-aio_native-srconly.json |  13 +-
fbe740
 .../xml2json/file-raw-luks-srconly.json       |  13 +-
fbe740
 .../xml2json/file-raw-noopts-srconly.json     |  13 +-
fbe740
 .../xml2json/file-vdi-noopts-srconly.json     |  13 +-
fbe740
 .../xml2json/file-vhd-noopts-srconly.json     |  13 +-
fbe740
 .../xml2json/file-vpc-noopts-srconly.json     |  13 +-
fbe740
 .../xml2json/network-nbd-tls-srconly.json     |  19 ++-
fbe740
 ...w2-backing-chain-cache-unsafe-srconly.json |  68 ++++++---
fbe740
 ...backing-chain-encryption_auth-srconly.json |  68 ++++++---
fbe740
 .../xml2json/nvme-raw-noopts-srconly.json     |  19 ++-
fbe740
 34 files changed, 876 insertions(+), 433 deletions(-)
fbe740
fbe740
diff --git a/tests/qemublocktest.c b/tests/qemublocktest.c
fbe740
index c009db7996..cf56c8a983 100644
fbe740
--- a/tests/qemublocktest.c
fbe740
+++ b/tests/qemublocktest.c
fbe740
@@ -184,6 +184,7 @@ struct testQemuDiskXMLToJSONImageData {
fbe740
     virJSONValuePtr formatprops;
fbe740
     virJSONValuePtr storageprops;
fbe740
     virJSONValuePtr storagepropssrc;
fbe740
+    char *backingstore;
fbe740
 };
fbe740
 
fbe740
 
fbe740
@@ -210,6 +211,7 @@ testQemuDiskXMLToPropsClear(struct testQemuDiskXMLToJSONData *data)
fbe740
         virJSONValueFree(data->images[i].formatprops);
fbe740
         virJSONValueFree(data->images[i].storageprops);
fbe740
         virJSONValueFree(data->images[i].storagepropssrc);
fbe740
+        g_free(data->images[i].backingstore);
fbe740
     }
fbe740
     data->nimages = 0;
fbe740
     VIR_FREE(data->images);
fbe740
@@ -287,6 +289,7 @@ testQemuDiskXMLToProps(const void *opaque)
fbe740
     }
fbe740
 
fbe740
     for (n = disk->src; virStorageSourceIsBacking(n); n = n->backingStore) {
fbe740
+        g_autofree char *backingstore = NULL;
fbe740
 
fbe740
         if (testQemuDiskXMLToJSONFakeSecrets(n) < 0)
fbe740
             return -1;
fbe740
@@ -298,7 +301,8 @@ testQemuDiskXMLToProps(const void *opaque)
fbe740
 
fbe740
         if (!(formatProps = qemuBlockStorageSourceGetBlockdevProps(n, n->backingStore)) ||
fbe740
             !(storageSrcOnlyProps = qemuBlockStorageSourceGetBackendProps(n, false, true, true)) ||
fbe740
-            !(storageProps = qemuBlockStorageSourceGetBackendProps(n, false, false, true))) {
fbe740
+            !(storageProps = qemuBlockStorageSourceGetBackendProps(n, false, false, true)) ||
fbe740
+            !(backingstore = qemuBlockGetBackingStoreString(n, true))) {
fbe740
             if (!data->fail) {
fbe740
                 VIR_TEST_VERBOSE("failed to generate qemu blockdev props");
fbe740
                 return -1;
fbe740
@@ -314,6 +318,7 @@ testQemuDiskXMLToProps(const void *opaque)
fbe740
         data->images[data->nimages].formatprops = g_steal_pointer(&formatProps);
fbe740
         data->images[data->nimages].storageprops = g_steal_pointer(&storageProps);
fbe740
         data->images[data->nimages].storagepropssrc = g_steal_pointer(&storageSrcOnlyProps);
fbe740
+        data->images[data->nimages].backingstore = g_steal_pointer(&backingstore);
fbe740
 
fbe740
         data->nimages++;
fbe740
     }
fbe740
@@ -425,10 +430,21 @@ testQemuDiskXMLToPropsValidateFileSrcOnly(const void *opaque)
fbe740
     for (i = 0; i < data->nimages; i++) {
fbe740
         g_autofree char *jsonstr = NULL;
fbe740
 
fbe740
+        virBufferAddLit(&buf, "(\n");
fbe740
+        virBufferAdjustIndent(&buf, 2);
fbe740
+        virBufferAddLit(&buf, "source only properties:\n");
fbe740
+
fbe740
         if (!(jsonstr = virJSONValueToString(data->images[i].storagepropssrc, true)))
fbe740
             return -1;
fbe740
 
fbe740
-        virBufferAdd(&buf, jsonstr, -1);
fbe740
+        virBufferAddStr(&buf, jsonstr);
fbe740
+
fbe740
+        virBufferAddLit(&buf, "backing store string:\n");
fbe740
+        virBufferAddStr(&buf, data->images[i].backingstore);
fbe740
+
fbe740
+        virBufferTrim(&buf, "\n", -1);
fbe740
+        virBufferAdjustIndent(&buf, -2);
fbe740
+        virBufferAddLit(&buf, "\n)\n");
fbe740
     }
fbe740
 
fbe740
     actual = virBufferContentAndReset(&buf;;
fbe740
diff --git a/tests/qemublocktestdata/xml2json/block-raw-noopts-srconly.json b/tests/qemublocktestdata/xml2json/block-raw-noopts-srconly.json
fbe740
index 72f9067353..07f7390433 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/block-raw-noopts-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/block-raw-noopts-srconly.json
fbe740
@@ -1,4 +1,9 @@
fbe740
-{
fbe740
-  "driver": "host_device",
fbe740
-  "filename": "/dev/blah"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "host_device",
fbe740
+    "filename": "/dev/blah"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /dev/blah
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/block-raw-reservations-srconly.json b/tests/qemublocktestdata/xml2json/block-raw-reservations-srconly.json
fbe740
index 72f9067353..07f7390433 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/block-raw-reservations-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/block-raw-reservations-srconly.json
fbe740
@@ -1,4 +1,9 @@
fbe740
-{
fbe740
-  "driver": "host_device",
fbe740
-  "filename": "/dev/blah"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "host_device",
fbe740
+    "filename": "/dev/blah"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /dev/blah
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/dir-fat-cache-srconly.json b/tests/qemublocktestdata/xml2json/dir-fat-cache-srconly.json
fbe740
index 6ec4f78d7b..8bc58fa033 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/dir-fat-cache-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/dir-fat-cache-srconly.json
fbe740
@@ -1,5 +1,10 @@
fbe740
-{
fbe740
-  "driver": "vvfat",
fbe740
-  "dir": "/var/somefiles",
fbe740
-  "floppy": false
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "vvfat",
fbe740
+    "dir": "/var/somefiles",
fbe740
+    "floppy": false
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/somefiles
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/dir-fat-floppy-srconly.json b/tests/qemublocktestdata/xml2json/dir-fat-floppy-srconly.json
fbe740
index 6b0388bc18..043b796435 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/dir-fat-floppy-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/dir-fat-floppy-srconly.json
fbe740
@@ -1,5 +1,10 @@
fbe740
-{
fbe740
-  "driver": "vvfat",
fbe740
-  "dir": "/var/somefiles",
fbe740
-  "floppy": true
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "vvfat",
fbe740
+    "dir": "/var/somefiles",
fbe740
+    "floppy": true
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/somefiles
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/dir-fat-readonly-srconly.json b/tests/qemublocktestdata/xml2json/dir-fat-readonly-srconly.json
fbe740
index 6ec4f78d7b..8bc58fa033 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/dir-fat-readonly-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/dir-fat-readonly-srconly.json
fbe740
@@ -1,5 +1,10 @@
fbe740
-{
fbe740
-  "driver": "vvfat",
fbe740
-  "dir": "/var/somefiles",
fbe740
-  "floppy": false
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "vvfat",
fbe740
+    "dir": "/var/somefiles",
fbe740
+    "floppy": false
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/somefiles
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-aio_threads-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-aio_threads-srconly.json
fbe740
index ea490b0034..65a3773b97 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-aio_threads-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-aio_threads-srconly.json
fbe740
@@ -1,24 +1,44 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/a"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/b"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "gluster",
fbe740
-  "volume": "images",
fbe740
-  "path": "c",
fbe740
-  "server": [
fbe740
-    {
fbe740
-      "type": "inet",
fbe740
-      "host": "test.org",
fbe740
-      "port": "24007"
fbe740
-    }
fbe740
-  ]
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/d"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/a"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/a
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/b"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/b
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "gluster",
fbe740
+    "volume": "images",
fbe740
+    "path": "c",
fbe740
+    "server": [
fbe740
+      {
fbe740
+        "type": "inet",
fbe740
+        "host": "test.org",
fbe740
+        "port": "24007"
fbe740
+      }
fbe740
+    ]
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  gluster://test.org:24007/images/c
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/d"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/d
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-directsync-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-directsync-srconly.json
fbe740
index ea490b0034..65a3773b97 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-directsync-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-directsync-srconly.json
fbe740
@@ -1,24 +1,44 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/a"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/b"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "gluster",
fbe740
-  "volume": "images",
fbe740
-  "path": "c",
fbe740
-  "server": [
fbe740
-    {
fbe740
-      "type": "inet",
fbe740
-      "host": "test.org",
fbe740
-      "port": "24007"
fbe740
-    }
fbe740
-  ]
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/d"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/a"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/a
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/b"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/b
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "gluster",
fbe740
+    "volume": "images",
fbe740
+    "path": "c",
fbe740
+    "server": [
fbe740
+      {
fbe740
+        "type": "inet",
fbe740
+        "host": "test.org",
fbe740
+        "port": "24007"
fbe740
+      }
fbe740
+    ]
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  gluster://test.org:24007/images/c
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/d"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/d
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-none-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-none-srconly.json
fbe740
index ea490b0034..65a3773b97 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-none-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-none-srconly.json
fbe740
@@ -1,24 +1,44 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/a"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/b"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "gluster",
fbe740
-  "volume": "images",
fbe740
-  "path": "c",
fbe740
-  "server": [
fbe740
-    {
fbe740
-      "type": "inet",
fbe740
-      "host": "test.org",
fbe740
-      "port": "24007"
fbe740
-    }
fbe740
-  ]
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/d"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/a"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/a
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/b"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/b
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "gluster",
fbe740
+    "volume": "images",
fbe740
+    "path": "c",
fbe740
+    "server": [
fbe740
+      {
fbe740
+        "type": "inet",
fbe740
+        "host": "test.org",
fbe740
+        "port": "24007"
fbe740
+      }
fbe740
+    ]
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  gluster://test.org:24007/images/c
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/d"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/d
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-unsafe-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-unsafe-srconly.json
fbe740
index ea490b0034..65a3773b97 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-unsafe-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-unsafe-srconly.json
fbe740
@@ -1,24 +1,44 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/a"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/b"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "gluster",
fbe740
-  "volume": "images",
fbe740
-  "path": "c",
fbe740
-  "server": [
fbe740
-    {
fbe740
-      "type": "inet",
fbe740
-      "host": "test.org",
fbe740
-      "port": "24007"
fbe740
-    }
fbe740
-  ]
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/d"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/a"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/a
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/b"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/b
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "gluster",
fbe740
+    "volume": "images",
fbe740
+    "path": "c",
fbe740
+    "server": [
fbe740
+      {
fbe740
+        "type": "inet",
fbe740
+        "host": "test.org",
fbe740
+        "port": "24007"
fbe740
+      }
fbe740
+    ]
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  gluster://test.org:24007/images/c
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/d"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/d
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-writeback-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-writeback-srconly.json
fbe740
index ea490b0034..65a3773b97 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-writeback-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-writeback-srconly.json
fbe740
@@ -1,24 +1,44 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/a"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/b"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "gluster",
fbe740
-  "volume": "images",
fbe740
-  "path": "c",
fbe740
-  "server": [
fbe740
-    {
fbe740
-      "type": "inet",
fbe740
-      "host": "test.org",
fbe740
-      "port": "24007"
fbe740
-    }
fbe740
-  ]
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/d"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/a"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/a
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/b"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/b
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "gluster",
fbe740
+    "volume": "images",
fbe740
+    "path": "c",
fbe740
+    "server": [
fbe740
+      {
fbe740
+        "type": "inet",
fbe740
+        "host": "test.org",
fbe740
+        "port": "24007"
fbe740
+      }
fbe740
+    ]
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  gluster://test.org:24007/images/c
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/d"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/d
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-writethrough-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-writethrough-srconly.json
fbe740
index ea490b0034..65a3773b97 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-cache-writethrough-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-cache-writethrough-srconly.json
fbe740
@@ -1,24 +1,44 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/a"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/b"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "gluster",
fbe740
-  "volume": "images",
fbe740
-  "path": "c",
fbe740
-  "server": [
fbe740
-    {
fbe740
-      "type": "inet",
fbe740
-      "host": "test.org",
fbe740
-      "port": "24007"
fbe740
-    }
fbe740
-  ]
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/d"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/a"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/a
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/b"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/b
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "gluster",
fbe740
+    "volume": "images",
fbe740
+    "path": "c",
fbe740
+    "server": [
fbe740
+      {
fbe740
+        "type": "inet",
fbe740
+        "host": "test.org",
fbe740
+        "port": "24007"
fbe740
+      }
fbe740
+    ]
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  gluster://test.org:24007/images/c
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/d"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/d
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-detect-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-detect-srconly.json
fbe740
index ea490b0034..65a3773b97 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-detect-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-detect-srconly.json
fbe740
@@ -1,24 +1,44 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/a"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/b"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "gluster",
fbe740
-  "volume": "images",
fbe740
-  "path": "c",
fbe740
-  "server": [
fbe740
-    {
fbe740
-      "type": "inet",
fbe740
-      "host": "test.org",
fbe740
-      "port": "24007"
fbe740
-    }
fbe740
-  ]
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/d"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/a"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/a
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/b"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/b
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "gluster",
fbe740
+    "volume": "images",
fbe740
+    "path": "c",
fbe740
+    "server": [
fbe740
+      {
fbe740
+        "type": "inet",
fbe740
+        "host": "test.org",
fbe740
+        "port": "24007"
fbe740
+      }
fbe740
+    ]
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  gluster://test.org:24007/images/c
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/d"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/d
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-noopts-srconly.json
fbe740
index dbdf6e563b..35a8c3af37 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-noopts-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-noopts-srconly.json
fbe740
@@ -1,16 +1,36 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/a"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/b"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/c"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/d"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/a"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/a
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/b"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/b
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/c"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/c
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/d"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/d
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-detect-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-detect-srconly.json
fbe740
index ea490b0034..65a3773b97 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-detect-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-detect-srconly.json
fbe740
@@ -1,24 +1,44 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/a"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/b"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "gluster",
fbe740
-  "volume": "images",
fbe740
-  "path": "c",
fbe740
-  "server": [
fbe740
-    {
fbe740
-      "type": "inet",
fbe740
-      "host": "test.org",
fbe740
-      "port": "24007"
fbe740
-    }
fbe740
-  ]
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/d"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/a"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/a
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/b"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/b
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "gluster",
fbe740
+    "volume": "images",
fbe740
+    "path": "c",
fbe740
+    "server": [
fbe740
+      {
fbe740
+        "type": "inet",
fbe740
+        "host": "test.org",
fbe740
+        "port": "24007"
fbe740
+      }
fbe740
+    ]
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  gluster://test.org:24007/images/c
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/d"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/d
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-ignore-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-ignore-srconly.json
fbe740
index ea490b0034..65a3773b97 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-ignore-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-ignore-srconly.json
fbe740
@@ -1,24 +1,44 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/a"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/b"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "gluster",
fbe740
-  "volume": "images",
fbe740
-  "path": "c",
fbe740
-  "server": [
fbe740
-    {
fbe740
-      "type": "inet",
fbe740
-      "host": "test.org",
fbe740
-      "port": "24007"
fbe740
-    }
fbe740
-  ]
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/d"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/a"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/a
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/b"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/b
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "gluster",
fbe740
+    "volume": "images",
fbe740
+    "path": "c",
fbe740
+    "server": [
fbe740
+      {
fbe740
+        "type": "inet",
fbe740
+        "host": "test.org",
fbe740
+        "port": "24007"
fbe740
+      }
fbe740
+    ]
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  gluster://test.org:24007/images/c
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/d"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/d
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-srconly.json b/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-srconly.json
fbe740
index ea490b0034..65a3773b97 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-backing_basic-unmap-srconly.json
fbe740
@@ -1,24 +1,44 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/a"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/b"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "gluster",
fbe740
-  "volume": "images",
fbe740
-  "path": "c",
fbe740
-  "server": [
fbe740
-    {
fbe740
-      "type": "inet",
fbe740
-      "host": "test.org",
fbe740
-      "port": "24007"
fbe740
-    }
fbe740
-  ]
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/d"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/a"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/a
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/b"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/b
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "gluster",
fbe740
+    "volume": "images",
fbe740
+    "path": "c",
fbe740
+    "server": [
fbe740
+      {
fbe740
+        "type": "inet",
fbe740
+        "host": "test.org",
fbe740
+        "port": "24007"
fbe740
+      }
fbe740
+    ]
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  gluster://test.org:24007/images/c
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/d"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/d
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-bochs-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-bochs-noopts-srconly.json
fbe740
index c50fa903f5..58dd7e1c34 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-bochs-noopts-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-bochs-noopts-srconly.json
fbe740
@@ -1,4 +1,9 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/path/to/i.img"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/path/to/i.img"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /path/to/i.img
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-cloop-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-cloop-noopts-srconly.json
fbe740
index c50fa903f5..58dd7e1c34 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-cloop-noopts-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-cloop-noopts-srconly.json
fbe740
@@ -1,4 +1,9 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/path/to/i.img"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/path/to/i.img"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /path/to/i.img
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-dmg-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-dmg-noopts-srconly.json
fbe740
index c50fa903f5..58dd7e1c34 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-dmg-noopts-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-dmg-noopts-srconly.json
fbe740
@@ -1,4 +1,9 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/path/to/i.img"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/path/to/i.img"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /path/to/i.img
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-ploop-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-ploop-noopts-srconly.json
fbe740
index c50fa903f5..58dd7e1c34 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-ploop-noopts-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-ploop-noopts-srconly.json
fbe740
@@ -1,4 +1,9 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/path/to/i.img"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/path/to/i.img"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /path/to/i.img
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-encryption-srconly.json b/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-encryption-srconly.json
fbe740
index 316dbc9df2..29644f8c0f 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-encryption-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-encryption-srconly.json
fbe740
@@ -1,8 +1,18 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/a"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/b"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/a"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/a
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/b"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/b
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-noopts-srconly.json
fbe740
index d998acc194..7691609577 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-noopts-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-noopts-srconly.json
fbe740
@@ -1,40 +1,90 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/rhel7.3.1507297895"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/rhel7.3.1484071872"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/rhel7.3.1483615252"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/rhel7.3.1483605924"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/rhel7.3.1483605920"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/rhel7.3.1483546244"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/rhel7.3.1483545901"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/rhel7.3.1483545313"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/rhel7.3.1483536402"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/rhel7.3.qcow2"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/rhel7.3.1507297895"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/rhel7.3.1507297895
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/rhel7.3.1484071872"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/rhel7.3.1484071872
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/rhel7.3.1483615252"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/rhel7.3.1483615252
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/rhel7.3.1483605924"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/rhel7.3.1483605924
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/rhel7.3.1483605920"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/rhel7.3.1483605920
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/rhel7.3.1483546244"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/rhel7.3.1483546244
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/rhel7.3.1483545901"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/rhel7.3.1483545901
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/rhel7.3.1483545313"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/rhel7.3.1483545313
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/rhel7.3.1483536402"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/rhel7.3.1483536402
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/rhel7.3.qcow2"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/rhel7.3.qcow2
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-unterminated-srconly.json b/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-unterminated-srconly.json
fbe740
index e0bce3bcd2..f2fd81184b 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-unterminated-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-qcow2-backing-chain-unterminated-srconly.json
fbe740
@@ -1,8 +1,18 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/rhel7.3.1507297895"
fbe740
-}
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/rhel7.3.1484071872"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/rhel7.3.1507297895"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/rhel7.3.1507297895
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/rhel7.3.1484071872"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/rhel7.3.1484071872
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-raw-aio_native-srconly.json b/tests/qemublocktestdata/xml2json/file-raw-aio_native-srconly.json
fbe740
index c50fa903f5..58dd7e1c34 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-raw-aio_native-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-raw-aio_native-srconly.json
fbe740
@@ -1,4 +1,9 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/path/to/i.img"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/path/to/i.img"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /path/to/i.img
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-raw-luks-srconly.json b/tests/qemublocktestdata/xml2json/file-raw-luks-srconly.json
fbe740
index 6d7088211f..c065e3fab0 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-raw-luks-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-raw-luks-srconly.json
fbe740
@@ -1,4 +1,9 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/path/luks.img"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/path/luks.img"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /path/luks.img
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-raw-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-raw-noopts-srconly.json
fbe740
index bb3e8af9eb..a2b32b09e0 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-raw-noopts-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-raw-noopts-srconly.json
fbe740
@@ -1,4 +1,9 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/var/lib/libvirt/images/i.img"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/var/lib/libvirt/images/i.img"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /var/lib/libvirt/images/i.img
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-vdi-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-vdi-noopts-srconly.json
fbe740
index c50fa903f5..58dd7e1c34 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-vdi-noopts-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-vdi-noopts-srconly.json
fbe740
@@ -1,4 +1,9 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/path/to/i.img"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/path/to/i.img"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /path/to/i.img
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-vhd-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-vhd-noopts-srconly.json
fbe740
index c50fa903f5..58dd7e1c34 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-vhd-noopts-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-vhd-noopts-srconly.json
fbe740
@@ -1,4 +1,9 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/path/to/i.img"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/path/to/i.img"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /path/to/i.img
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/file-vpc-noopts-srconly.json b/tests/qemublocktestdata/xml2json/file-vpc-noopts-srconly.json
fbe740
index c50fa903f5..58dd7e1c34 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/file-vpc-noopts-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/file-vpc-noopts-srconly.json
fbe740
@@ -1,4 +1,9 @@
fbe740
-{
fbe740
-  "driver": "file",
fbe740
-  "filename": "/path/to/i.img"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "file",
fbe740
+    "filename": "/path/to/i.img"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  /path/to/i.img
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/network-nbd-tls-srconly.json b/tests/qemublocktestdata/xml2json/network-nbd-tls-srconly.json
fbe740
index 455f4e5140..606e68713a 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/network-nbd-tls-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/network-nbd-tls-srconly.json
fbe740
@@ -1,8 +1,13 @@
fbe740
-{
fbe740
-  "driver": "nbd",
fbe740
-  "server": {
fbe740
-    "type": "inet",
fbe740
-    "host": "host1.example.com",
fbe740
-    "port": "10809"
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "nbd",
fbe740
+    "server": {
fbe740
+      "type": "inet",
fbe740
+      "host": "host1.example.com",
fbe740
+      "port": "10809"
fbe740
+    }
fbe740
   }
fbe740
-}
fbe740
+  backing store string:
fbe740
+  nbd://host1.example.com:10809
fbe740
+)
fbe740
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
fbe740
index 69ca9caf88..2d7eeb3bca 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-cache-unsafe-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-cache-unsafe-srconly.json
fbe740
@@ -1,22 +1,46 @@
fbe740
-{
fbe740
-  "driver": "rbd",
fbe740
-  "pool": "rbdpool",
fbe740
-  "image": "rbdimg",
fbe740
-  "server": [
fbe740
-    {
fbe740
-      "host": "host1.example.com",
fbe740
-      "port": "0"
fbe740
-    },
fbe740
-    {
fbe740
-      "host": "host2.example.com",
fbe740
-      "port": "0"
fbe740
-    }
fbe740
-  ]
fbe740
-}
fbe740
-{
fbe740
-  "driver": "iscsi",
fbe740
-  "portal": "example.org:3260",
fbe740
-  "target": "iscsitarget",
fbe740
-  "lun": 1,
fbe740
-  "transport": "tcp"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "rbd",
fbe740
+    "pool": "rbdpool",
fbe740
+    "image": "rbdimg",
fbe740
+    "server": [
fbe740
+      {
fbe740
+        "host": "host1.example.com",
fbe740
+        "port": "0"
fbe740
+      },
fbe740
+      {
fbe740
+        "host": "host2.example.com",
fbe740
+        "port": "0"
fbe740
+      }
fbe740
+    ]
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  json:{
fbe740
+    "driver": "rbd",
fbe740
+    "pool": "rbdpool",
fbe740
+    "image": "rbdimg",
fbe740
+    "server": [
fbe740
+      {
fbe740
+        "host": "host1.example.com",
fbe740
+        "port": "0"
fbe740
+      },
fbe740
+      {
fbe740
+        "host": "host2.example.com",
fbe740
+        "port": "0"
fbe740
+      }
fbe740
+    ]
fbe740
+  }
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "iscsi",
fbe740
+    "portal": "example.org:3260",
fbe740
+    "target": "iscsitarget",
fbe740
+    "lun": 1,
fbe740
+    "transport": "tcp"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  iscsi://example.org:3260/iscsitarget/1
fbe740
+)
fbe740
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
fbe740
index 6298329812..5679318fbe 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-encryption_auth-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/network-qcow2-backing-chain-encryption_auth-srconly.json
fbe740
@@ -1,22 +1,46 @@
fbe740
-{
fbe740
-  "driver": "rbd",
fbe740
-  "pool": "rbdpool",
fbe740
-  "image": "rbdimg",
fbe740
-  "server": [
fbe740
-    {
fbe740
-      "host": "host1.example.com",
fbe740
-      "port": "0"
fbe740
-    },
fbe740
-    {
fbe740
-      "host": "host2.example.com",
fbe740
-      "port": "0"
fbe740
-    }
fbe740
-  ]
fbe740
-}
fbe740
-{
fbe740
-  "driver": "iscsi",
fbe740
-  "portal": "example.org:3260",
fbe740
-  "target": "iqn.2016-09.com.example:iscsitarget",
fbe740
-  "lun": 1,
fbe740
-  "transport": "tcp"
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "rbd",
fbe740
+    "pool": "rbdpool",
fbe740
+    "image": "rbdimg",
fbe740
+    "server": [
fbe740
+      {
fbe740
+        "host": "host1.example.com",
fbe740
+        "port": "0"
fbe740
+      },
fbe740
+      {
fbe740
+        "host": "host2.example.com",
fbe740
+        "port": "0"
fbe740
+      }
fbe740
+    ]
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  json:{
fbe740
+    "driver": "rbd",
fbe740
+    "pool": "rbdpool",
fbe740
+    "image": "rbdimg",
fbe740
+    "server": [
fbe740
+      {
fbe740
+        "host": "host1.example.com",
fbe740
+        "port": "0"
fbe740
+      },
fbe740
+      {
fbe740
+        "host": "host2.example.com",
fbe740
+        "port": "0"
fbe740
+      }
fbe740
+    ]
fbe740
+  }
fbe740
+)
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "iscsi",
fbe740
+    "portal": "example.org:3260",
fbe740
+    "target": "iqn.2016-09.com.example:iscsitarget",
fbe740
+    "lun": 1,
fbe740
+    "transport": "tcp"
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  iscsi://example.org:3260/iqn.2016-09.com.example%3Aiscsitarget/1
fbe740
+)
fbe740
diff --git a/tests/qemublocktestdata/xml2json/nvme-raw-noopts-srconly.json b/tests/qemublocktestdata/xml2json/nvme-raw-noopts-srconly.json
fbe740
index ed55c08cbf..970e1bb8af 100644
fbe740
--- a/tests/qemublocktestdata/xml2json/nvme-raw-noopts-srconly.json
fbe740
+++ b/tests/qemublocktestdata/xml2json/nvme-raw-noopts-srconly.json
fbe740
@@ -1,5 +1,14 @@
fbe740
-{
fbe740
-  "driver": "nvme",
fbe740
-  "device": "0000:01:00.0",
fbe740
-  "namespace": 1
fbe740
-}
fbe740
+(
fbe740
+  source only properties:
fbe740
+  {
fbe740
+    "driver": "nvme",
fbe740
+    "device": "0000:01:00.0",
fbe740
+    "namespace": 1
fbe740
+  }
fbe740
+  backing store string:
fbe740
+  json:{
fbe740
+    "driver": "nvme",
fbe740
+    "device": "0000:01:00.0",
fbe740
+    "namespace": 1
fbe740
+  }
fbe740
+)
fbe740
-- 
fbe740
2.26.0
fbe740