qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: John Snow <jsnow@redhat.com>
To: qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>, John Snow <jsnow@redhat.com>,
	Hanna Reitz <hreitz@redhat.com>, Eric Blake <eblake@redhat.com>,
	qemu-block@nongnu.org
Subject: [PATCH 03/14] iotests: add qemu_img_info()
Date: Tue,  8 Mar 2022 22:53:56 -0500	[thread overview]
Message-ID: <20220309035407.1848654-4-jsnow@redhat.com> (raw)
In-Reply-To: <20220309035407.1848654-1-jsnow@redhat.com>

Add qemu_img_info() by analogy with qemu_img_measure() and
qemu_img_check(). Modify image_size() to use this function instead to
take advantage of the better diagnostic information on failure provided
(ultimately) by qemu_img().

Signed-off-by: John Snow <jsnow@redhat.com>
---
 tests/qemu-iotests/065        |  5 ++---
 tests/qemu-iotests/242        |  5 ++---
 tests/qemu-iotests/iotests.py | 15 +++++++++++----
 3 files changed, 15 insertions(+), 10 deletions(-)

diff --git a/tests/qemu-iotests/065 b/tests/qemu-iotests/065
index f7c1b68dad..9466ce7df4 100755
--- a/tests/qemu-iotests/065
+++ b/tests/qemu-iotests/065
@@ -24,7 +24,7 @@ import os
 import re
 import json
 import iotests
-from iotests import qemu_img, qemu_img_pipe
+from iotests import qemu_img, qemu_img_info, qemu_img_pipe
 import unittest
 
 test_img = os.path.join(iotests.test_dir, 'test.img')
@@ -49,8 +49,7 @@ class TestQemuImgInfo(TestImageInfoSpecific):
     human_compare = None
 
     def test_json(self):
-        data = json.loads(qemu_img_pipe('info', '--output=json', test_img))
-        data = data['format-specific']
+        data = qemu_img_info(test_img)['format-specific']
         self.assertEqual(data['type'], iotests.imgfmt)
         self.assertEqual(data['data'], self.json_compare)
 
diff --git a/tests/qemu-iotests/242 b/tests/qemu-iotests/242
index 96a30152b0..547bf382e3 100755
--- a/tests/qemu-iotests/242
+++ b/tests/qemu-iotests/242
@@ -22,7 +22,7 @@
 import iotests
 import json
 import struct
-from iotests import qemu_img_create, qemu_io, qemu_img_pipe, \
+from iotests import qemu_img_create, qemu_io, qemu_img_info, \
     file_path, img_info_log, log, filter_qemu_io
 
 iotests.script_initialize(supported_fmts=['qcow2'],
@@ -39,8 +39,7 @@ flag_offset = 0x5000f
 def print_bitmap(extra_args):
     log('qemu-img info dump:\n')
     img_info_log(disk, extra_args=extra_args)
-    result = json.loads(qemu_img_pipe('info', '--force-share',
-                                      '--output=json', disk))
+    result = qemu_img_info('--force-share', disk)
     if 'bitmaps' in result['format-specific']['data']:
         bitmaps = result['format-specific']['data']['bitmaps']
         log('The same bitmaps in JSON format:')
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index 7b37938d45..62f82281a9 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -320,6 +320,9 @@ def qemu_img_measure(*args: str) -> Any:
 def qemu_img_check(*args: str) -> Any:
     return qemu_img_json("check", "--output", "json", *args)
 
+def qemu_img_info(*args: str) -> Any:
+    return qemu_img_json('info', "--output", "json", *args)
+
 def qemu_img_pipe(*args: str) -> str:
     '''Run qemu-img and return its output'''
     return qemu_img_pipe_and_status(*args)[0]
@@ -570,10 +573,14 @@ def create_image(name, size):
             file.write(sector)
             i = i + 512
 
-def image_size(img):
-    '''Return image's virtual size'''
-    r = qemu_img_pipe('info', '--output=json', '-f', imgfmt, img)
-    return json.loads(r)['virtual-size']
+def image_size(img: str) -> int:
+    """Return image's virtual size"""
+    value = qemu_img_info('-f', imgfmt, img)['virtual-size']
+    if not isinstance(value, int):
+        type_name = type(value).__name__
+        raise TypeError("Expected 'int' for 'virtual-size', "
+                        f"got '{value}' of type '{type_name}'")
+    return value
 
 def is_str(val):
     return isinstance(val, str)
-- 
2.34.1



  parent reply	other threads:[~2022-03-09  3:59 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-09  3:53 [PATCH 00/14] iotests: ensure all qemu-img calls are either checked or logged John Snow
2022-03-09  3:53 ` [PATCH 01/14] iotests: add qemu_img_json() John Snow
2022-03-17 10:53   ` Hanna Reitz
2022-03-17 14:42     ` John Snow
2022-03-17 14:51       ` Hanna Reitz
2022-03-17 15:30         ` John Snow
2022-03-09  3:53 ` [PATCH 02/14] iotests: use qemu_img_json() when applicable John Snow
2022-03-17 10:59   ` Hanna Reitz
2022-03-09  3:53 ` John Snow [this message]
2022-03-17 11:09   ` [PATCH 03/14] iotests: add qemu_img_info() Hanna Reitz
2022-03-17 14:51     ` John Snow
2022-03-09  3:53 ` [PATCH 04/14] iotests/remove-bitmap-from-backing: use qemu_img_info() John Snow
2022-03-17 11:19   ` Hanna Reitz
2022-03-09  3:53 ` [PATCH 05/14] iotests: add qemu_img_map() function John Snow
2022-03-17 11:26   ` Hanna Reitz
2022-03-09  3:53 ` [PATCH 06/14] iotests: change supports_quorum to use qemu_img John Snow
2022-03-17 11:35   ` Hanna Reitz
2022-03-09  3:54 ` [PATCH 07/14] iotests: replace unchecked calls to qemu_img_pipe() John Snow
2022-03-17 11:38   ` Hanna Reitz
2022-03-09  3:54 ` [PATCH 08/14] iotests/149: Remove qemu_img_pipe() call John Snow
2022-03-17 12:09   ` Hanna Reitz
2022-03-09  3:54 ` [PATCH 09/14] iotests: remove remaining calls to qemu_img_pipe() John Snow
2022-03-17 12:43   ` Hanna Reitz
2022-03-09  3:54 ` [PATCH 10/14] iotests: use qemu_img() in has_working_luks() John Snow
2022-03-17 13:13   ` Hanna Reitz
2022-03-09  3:54 ` [PATCH 11/14] iotests: replace qemu_img_log('create', ...) calls John Snow
2022-03-17 14:44   ` Hanna Reitz
2022-03-09  3:54 ` [PATCH 12/14] iotests: remove qemu_img_pipe_and_status() John Snow
2022-03-17 15:28   ` Hanna Reitz
2022-03-17 15:58     ` John Snow
2022-03-17 16:04       ` Hanna Reitz
2022-03-17 17:10         ` John Snow
2022-03-09  3:54 ` [PATCH 13/14] iotests: make qemu_img_log() check log level John Snow
2022-03-17 15:34   ` Hanna Reitz
2022-03-09  3:54 ` [PATCH 14/14] iotests: make img_info_log() call qemu_img_log() John Snow
2022-03-17 15:38   ` Hanna Reitz
2022-03-17 17:00     ` John Snow
2022-03-17 17:45       ` John Snow
2022-03-17 18:26         ` Hanna Reitz
2022-03-17 18:32           ` John Snow

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220309035407.1848654-4-jsnow@redhat.com \
    --to=jsnow@redhat.com \
    --cc=eblake@redhat.com \
    --cc=hreitz@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).