Add additionals statistics counters
[platform/upstream/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
38                 keys = stats.keys()
39                 keys.sort()
40
41                 for key in keys:
42                         val = int(stats[key])
43                         str = "  %s = %s" % (key, val)
44
45                         if key in ["RX.Bytes", "TX.Bytes"]:
46                                 hstr = make_bytes_readable(val)
47                                 if hstr:
48                                         str = "%s (%s)" % (str, hstr)
49
50                         print str
51
52 if __name__ == '__main__':
53         dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)
54
55         bus = dbus.SystemBus()
56         manager = dbus.Interface(bus.get_object('org.moblin.connman', "/"),
57                                         'org.moblin.connman.Manager')
58
59         interval = 2
60         if len(sys.argv) > 1:
61                 interval = sys.argv[1]
62
63         path = "/test/counter%s" % interval
64         object = Counter(bus, path)
65
66         manager.RegisterCounter(path, dbus.UInt32(interval))
67
68         mainloop = gobject.MainLoop()
69         mainloop.run()
70
71         #manager.UnregisterCounter(path)