7c2fa4ab8c6773960fcea9699665c571a7dcde13
[framework/connectivity/connman.git] / test / test-counter
1 #!/usr/bin/python
2
3 import sys
4 import gobject
5
6 import dbus
7 import dbus.service
8 import dbus.mainloop.glib
9
10 def make_bytes_readable(bytes):
11         SUFFIXES = [ 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB' ]
12         size = 1024
13
14         if bytes < size:
15                 return ''
16
17         for suffix in SUFFIXES:
18                 if bytes > size * 1024:
19                         size = size * 1024
20                         continue
21
22                 return '%.1f %s' % (bytes / float(size), suffix)
23
24         return ''
25
26 class Counter(dbus.service.Object):
27         @dbus.service.method("org.moblin.connman.Counter",
28                                         in_signature='', out_signature='')
29         def Release(self):
30                 print("Release")
31                 mainloop.quit()
32
33         @dbus.service.method("org.moblin.connman.Counter",
34                                         in_signature='oa{sv}', out_signature='')
35         def Usage(self, path, stats):
36                 print "%s" % (path)
37                 for key in stats.keys():
38                         val = int(stats[key])
39                         str = "  %s = %s" % (key, val)
40
41                         if key in ["RX.Bytes", "TX.Bytes"]:
42                                 hstr = make_bytes_readable(val)
43                                 if hstr:
44                                         str = "%s (%s)" % (str, hstr)
45
46                         print str
47
48 if __name__ == '__main__':
49         dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
50
51         bus = dbus.SystemBus()
52         manager = dbus.Interface(bus.get_object('org.moblin.connman', "/"),
53                                         'org.moblin.connman.Manager')
54
55         interval = 2
56         if len(sys.argv) > 1:
57                 interval = sys.argv[1]
58
59         path = "/test/counter%s" % interval
60         object = Counter(bus, path)
61
62         manager.RegisterCounter(path, dbus.UInt32(interval))
63
64         mainloop = gobject.MainLoop()
65         mainloop.run()
66
67         #manager.UnregisterCounter(path)