Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(247)

Side by Side Diff: client/tests/kvm/scripts/check_image.py

Issue 6246035: Merge remote branch 'cros/upstream' into master (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/autotest.git@master
Patch Set: patch Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 import os, sys, commands
2
3
4 class ImageCheckError(Exception):
5 """
6 Simple wrapper for the builtin Exception class.
7 """
8 pass
9
10
11 class ImageCheck(object):
12 """
13 Check qcow2 image by qemu-img info/check command.
14 """
15 def __init__(self):
16 """
17 Gets params from environment variables and sets class attributes.
18 """
19 self.image_path_list = []
20 client_dir = os.environ['AUTODIR']
21 self.kvm_dir = os.path.join(client_dir, 'tests/kvm')
22 img_to_check = os.environ['KVM_TEST_images'].split()
23
24 for img in img_to_check:
25 img_name_str = "KVM_TEST_image_name_%s" % img
26 if not os.environ.has_key(img_name_str):
27 img_name_str = "KVM_TEST_image_name"
28 img_format_str = "KVM_TEST_image_format_%s" % img
29 if os.environ.has_key(img_format_str):
30 image_format = os.environ[img_format_str]
31 else:
32 image_format = os.environ['KVM_TEST_image_format']
33 if image_format != "qcow2":
34 continue
35 image_name = os.environ[img_name_str]
36 image_filename = "%s.%s" % (image_name, image_format)
37 image_filename = os.path.join(self.kvm_dir, image_filename)
38 self.image_path_list.append(image_filename)
39 if os.environ.has_key('KVM_TEST_qemu_img_binary'):
40 self.qemu_img_path = os.environ['KVM_TEST_qemu_img_binary']
41 else:
42 self.qemu_img_path = os.path.join(self.kvm_dir, 'qemu-img')
43 self.qemu_img_check = True
44 cmd = "%s |grep check" % self.qemu_img_path
45 (s1, output) = commands.getstatusoutput(cmd)
46 if s1:
47 self.qemu_img_check = False
48 print "Command qemu-img check not available, not checking..."
49 cmd = "%s |grep info" % self.qemu_img_path
50 (s2, output) = commands.getstatusoutput(cmd)
51 if s2:
52 self.qemu_img_check = False
53 print "Command qemu-img info not available, not checking..."
54
55 def exec_img_cmd(self, cmd_type, image_path):
56 """
57 Run qemu-img info/check on given image.
58
59 @param cmd_type: Sub command used together with qemu.
60 @param image_path: Real path of the image.
61 """
62 cmd = ' '.join([self.qemu_img_path, cmd_type, image_path])
63 print "Checking image with command %s" % cmd
64 (status, output) = commands.getstatusoutput(cmd)
65 print output
66 if status or (cmd_type == "check" and not "No errors" in output):
67 msg = "Command %s failed" % cmd
68 return False, msg
69 else:
70 return True, ''
71
72
73 def check_image(self):
74 """
75 Run qemu-img info/check to check the image in list.
76
77 If the image checking is failed, raise an exception.
78 """
79 # Check all the image in list.
80 errmsg = []
81 for image_path in self.image_path_list:
82 if not os.path.exists(image_path):
83 print "Image %s does not exist!" % image_path
84 continue
85 s, o = self.exec_img_cmd('info', image_path)
86 if not s:
87 errmsg.append(o)
88 s, o = self.exec_img_cmd('check', image_path)
89 if not s:
90 errmsg.append(o)
91
92 if len(errmsg) > 0:
93 raise ImageCheckError('Errors were found, please check log!')
94
95
96 if __name__ == "__main__":
97 image_check = ImageCheck()
98 if image_check.qemu_img_check:
99 image_check.check_image()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698