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

Side by Side Diff: client/site_tests/platform_CrosDisksDBus/platform_CrosDisksDBus.py

Issue 6873021: Test CrosDisks DBus API (Closed) Base URL: ssh://gitrw.chromium.org:9222/autotest.git@master
Patch Set: Created 9 years, 8 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. 1 # Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 from autotest_lib.client.bin import test, utils 5 from autotest_lib.client.bin import test, utils
6 from autotest_lib.client.common_lib import error 6 from autotest_lib.client.common_lib import error
7 7
8 import dbus 8 import dbus
9 9
10 class platform_CrosDisksDBus(test.test): 10 class platform_CrosDisksDBus(test.test):
11 version = 1 11 version = 1
12 12
13 def validate_disk(self, disk):
14 # Disk properties provided by the API
15 disk_properties = (
16 ('DeviceFile', dbus.String),
17 ('DeviceIsDrive', dbus.Boolean),
18 ('DeviceIsMediaAvailable', dbus.Boolean),
19 ('DeviceIsMounted', dbus.Boolean),
20 ('DeviceIsOpticalDisc', dbus.Boolean),
21 ('DeviceIsReadOnly', dbus.Boolean),
22 ('DeviceMountPaths', dbus.String),
23 ('DevicePresentationHide', dbus.Boolean),
24 ('DeviceSize', dbus.Int64),
25 ('DriveIsRotational', dbus.Boolean),
26 ('DriveModel', dbus.String),
27 ('IdLabel', dbus.String),
28 ('NativePath', dbus.String),
29 )
30
31 for (prop_name, prop_value_type) in disk_properties:
32 # Check if all disk properties are set.
33 if prop_name not in disk:
34 raise error.TestFail("disk.%s not found" % prop_name)
35
36 # Check if each disk property has the right data type.
37 prop_value = disk[prop_name]
38 if not isinstance(prop_value, prop_value_type):
39 raise error.TestFail(
40 "disk.%s is %s, but %s expected"
41 % (prop_name, type(prop_value), prop_value_type))
42
43 # Check if DeviceFile has a proper value.
44 if not disk['DeviceFile']:
45 raise error.TestFail(
46 "disk.DeviceFile should not be empty")
47
48 # Check if the values of DeviceIsMounted and DeviceMountPaths
49 # are consistent.
50 if disk['DeviceIsMounted']:
51 if not disk['DeviceMountPaths']:
52 raise error.TestFail(
53 "disk.DeviceMountPaths should not be empty "
54 "if disk.DeviceIsMounted is true")
55 else:
56 if disk['DeviceMountPaths']:
57 raise error.TestFail(
58 "disk.DeviceMountPaths should be empty "
59 "if disk.DeviceIsMounted is false")
60
13 def run_once(self): 61 def run_once(self):
14 # TODO(rtc): Excercise the whole API. 62 # TODO(rtc): Excercise the whole API.
15 bus = dbus.SystemBus() 63 bus = dbus.SystemBus()
16 proxy = bus.get_object('org.chromium.CrosDisks', 64 proxy = bus.get_object('org.chromium.CrosDisks',
17 '/org/chromium/CrosDisks') 65 '/org/chromium/CrosDisks')
18 cros_disks = dbus.Interface(proxy, 'org.chromium.CrosDisks') 66 cros_disks = dbus.Interface(proxy, 'org.chromium.CrosDisks')
67
68 # Check if CrosDisks server is alive.
rtc 2011/04/18 20:29:13 Can you pull these checks into different methods?
19 is_alive = cros_disks.IsAlive() 69 is_alive = cros_disks.IsAlive()
20 if not is_alive: 70 if not is_alive:
21 raise error.TestFail("Unable to talk to the disk daemon") 71 raise error.TestFail("Unable to talk to the disk daemon")
72
73 # Check if EnumerateDevices method returns a list of devices.
74 devices = cros_disks.EnumerateDevices()
75 for device in devices:
76 if not device or not isinstance(device, dbus.String):
77 raise error.TestFail(
78 "device returned by EnumerateDevices "
79 "should be a non-empty string")
80
81 # Check if GetAll method returns a list of disk properties.
82 disks = cros_disks.GetAll()
83 for disk in disks:
84 self.validate_disk(disk)
85
86 # Check if GetAll and EnumerateDevices return the same number
87 # of entries.
88 if len(disks) != len(devices):
89 raise error.TestFail(
90 "GetAll returns %d entries, "
91 "but EnumerateDevices returns %d entries"
92 % (len(disks), len(devices)))
93
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698