6 builddir
= os
.environ
["DBUS_TOP_BUILDDIR"]
9 sys
.path
.insert(0, pydir
)
10 sys
.path
.insert(0, pydir
+ 'dbus')
14 if not dbus
.__file
__.startswith(pydir
):
15 raise Exception("DBus modules are not being picked up from the package")
23 logging
.basicConfig(filename
=pydir
+ '/test-service.log', filemode
='w')
24 logging
.getLogger().setLevel(1)
25 logger
= logging
.getLogger('test-service')
28 class TestInterface(dbus
.service
.Interface
):
29 @dbus.service
.method("org.freedesktop.DBus.TestSuiteInterface", in_signature
='', out_signature
='b')
30 def CheckInheritance(self
):
33 class TestObject(dbus
.service
.Object
, TestInterface
):
34 def __init__(self
, bus_name
, object_path
="/org/freedesktop/DBus/TestSuitePythonObject"):
35 dbus
.service
.Object
.__init
__(self
, bus_name
, object_path
)
37 """ Echo whatever is sent
39 @dbus.service
.method("org.freedesktop.DBus.TestSuiteInterface")
43 @dbus.service
.method("org.freedesktop.DBus.TestSuiteInterface")
44 def GetComplexArray(self
):
46 for i
in range(0,100):
47 ret
.append((random
.randint(0,100), random
.randint(0,100), str(random
.randint(0,100))))
49 return dbus
.Array(ret
, signature
="(uus)")
51 def returnValue(self
, test
):
67 @dbus.service
.method("org.freedesktop.DBus.TestSuiteInterface", in_signature
='u', out_signature
='s')
68 def ReturnOneString(self
, test
):
69 return self
.returnValue(test
)
71 @dbus.service
.method("org.freedesktop.DBus.TestSuiteInterface", in_signature
='u', out_signature
='ss')
72 def ReturnTwoStrings(self
, test
):
73 return self
.returnValue(test
)
75 @dbus.service
.method("org.freedesktop.DBus.TestSuiteInterface", in_signature
='u', out_signature
='(ss)')
76 def ReturnStruct(self
, test
):
77 logger
.info('ReturnStruct(%r) -> %r', test
, self
.returnValue(test
))
78 return self
.returnValue(test
)
80 @dbus.service
.method("org.freedesktop.DBus.TestSuiteInterface", in_signature
='u', out_signature
='as')
81 def ReturnArray(self
, test
):
82 return self
.returnValue(test
)
84 @dbus.service
.method("org.freedesktop.DBus.TestSuiteInterface", in_signature
='u', out_signature
='a{ss}')
85 def ReturnDict(self
, test
):
86 return self
.returnValue(test
)
88 @dbus.service
.signal("org.freedesktop.DBus.TestSuiteInterface", signature
='s')
89 def SignalOneString(self
, test
):
90 logger
.info('SignalOneString(%r)', test
)
92 @dbus.service
.signal("org.freedesktop.DBus.TestSuiteInterface", signature
='ss')
93 def SignalTwoStrings(self
, test
, test2
):
94 logger
.info('SignalTwoStrings(%r, %r)', test
, test2
)
96 @dbus.service
.signal("org.freedesktop.DBus.TestSuiteInterface", signature
='(ss)')
97 def SignalStruct(self
, test
):
98 logger
.info('SignalStruct(%r)', test
)
100 @dbus.service
.signal("org.freedesktop.DBus.TestSuiteInterface", signature
='as')
101 def SignalArray(self
, test
):
104 @dbus.service
.signal("org.freedesktop.DBus.TestSuiteInterface", signature
='a{ss}')
105 def SignalDict(self
, test
):
108 @dbus.service
.method("org.freedesktop.DBus.TestSuiteInterface", in_signature
='su', out_signature
='')
109 def EmitSignal(self
, signal
, value
):
110 sig
= getattr(self
, signal
, None)
113 val
= self
.returnValue(value
)
114 # make two string case work by passing arguments in by tuple
115 if (signal
== 'SignalTwoStrings' and (value
== 1 or value
== 5)):
120 logger
.info('Emitting %s with %r', signal
, val
)
123 def CheckInheritance(self
):
126 @dbus.service
.method('org.freedesktop.DBus.TestSuiteInterface', in_signature
='bbv', out_signature
='v', async_callbacks
=('return_cb', 'error_cb'))
127 def AsynchronousMethod(self
, async, fail
, variant
, return_cb
, error_cb
):
130 gobject
.timeout_add(500, self
.AsynchronousMethod
, False, fail
, variant
, return_cb
, error_cb
)
138 return False # do not run again
142 @dbus.service
.method('org.freedesktop.DBus.TestSuiteInterface', in_signature
='', out_signature
='s', sender_keyword
='sender')
143 def WhoAmI(self
, sender
):
146 session_bus
= dbus
.SessionBus()
147 name
= dbus
.service
.BusName("org.freedesktop.DBus.TestSuitePythonService", bus
=session_bus
)
148 object = TestObject(name
)
149 loop
= gobject
.MainLoop()