~bladernr/checkbox/1095713-set-pipefail-on-sleep-jobs

« back to all changes in this revision

Viewing changes to hwtest/reports/hal.py

  • Committer: Marc Tardif
  • Date: 2007-11-01 17:09:53 UTC
  • mfrom: (44.1.50 bug-152956)
  • Revision ID: marc.tardif@canonical.com-20071101170953-xhwsegkpj90y3f37
Added report dumping and loading functionality to fix bug #152956.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import dbus
 
2
 
 
3
from hwtest.reports.data import DataReport
 
4
 
 
5
 
 
6
class HalReport(DataReport):
 
7
    """Report for HAL related data types."""
 
8
 
 
9
    def register_dumps(self):
 
10
        for (dt, dh) in [(dbus.Boolean, self.dumps_bool),
 
11
                         (dbus.Int32, self.dumps_int),
 
12
                         (dbus.UInt64, self.dumps_uint64),
 
13
                         (dbus.Double, self.dumps_double),
 
14
                         (dbus.String, self.dumps_str),
 
15
                         (dbus.Array, self.dumps_list),
 
16
                         (dbus.Dictionary, self.dumps_dict),
 
17
                         ("hal", self.dumps_hal)]:
 
18
            self._manager.handle_dumps(dt, dh)
 
19
 
 
20
    def register_loads(self):
 
21
        for (lt, lh) in [("hal", self.loads_hal),
 
22
                         ("uint64", self.loads_int),
 
23
                         ("double", self.loads_float)]:
 
24
            self._manager.handle_loads(lt, lh)
 
25
 
 
26
    def dumps_uint64(self, obj, parent):
 
27
        self._dumps_text(str(obj), parent, "uint64")
 
28
 
 
29
    def dumps_double(self, obj, parent):
 
30
        self._dumps_text(str(obj), parent, "double")
 
31
 
 
32
    def dumps_hal(self, obj, parent):
 
33
        parent.setAttribute("version", obj["version"])
 
34
        id = 0
 
35
        for device in obj["devices"]:
 
36
            element = self._create_element("device", parent)
 
37
            properties = self._create_element("properties", element)
 
38
            element.setAttribute("id", str(id)); id += 1
 
39
            element.setAttribute("udi", device["info.udi"])
 
40
            self._manager.call_dumps(device, properties)
 
41
 
 
42
    def loads_hal(self, node):
 
43
        hal = {}
 
44
        hal["version"] = node.getAttribute("version")
 
45
        hal["devices"] = []
 
46
        for device in (d for d in node.childNodes if d.localName == "device"):
 
47
            properties = device.getElementsByTagName("properties")[0]
 
48
            value = self._manager.call_loads(properties)
 
49
            hal["devices"].append(value)
 
50
        return hal