Exemplo n.º 1
0
def test_glib_properties():
    service_bus = glib.MessageBus().connect_sync()
    service_interface = ExampleInterface()
    service_bus.export('/test/path', service_interface)

    bus = glib.MessageBus().connect_sync()
    obj = bus.get_proxy_object(
        service_bus.unique_name, '/test/path',
        service_bus._introspect_export_path('/test/path'))
    interface = obj.get_interface(service_interface.name)

    prop = interface.get_some_property_sync()
    assert prop == service_interface._some_property

    interface.set_some_property_sync('different')
    assert service_interface._some_property == 'different'

    with pytest.raises(DBusError):
        try:
            prop = interface.get_error_throwing_property_sync()
            assert False, prop
        except DBusError as e:
            assert e.type == service_interface.error_name
            assert e.text == service_interface.error_text
            assert type(e.reply) is Message
            raise e

    with pytest.raises(DBusError):
        try:
            interface.set_error_throwing_property_sync('different2')
        except DBusError as e:
            assert e.type == service_interface.error_name
            assert e.text == service_interface.error_text
            assert type(e.reply) is Message
            raise e
def test_glib_big_message():
    'this tests that nonblocking reads and writes actually work for glib'
    bus1 = glib.MessageBus().connect_sync()
    bus2 = glib.MessageBus().connect_sync()
    interface = ExampleInterface()
    bus1.export('/test/path', interface)

    # two megabytes
    big_body = [bytes(1000000) * 2]
    result = bus2.call_sync(
        Message(destination=bus1.unique_name,
                path='/test/path',
                interface=interface.name,
                member='echo_bytes',
                signature='ay',
                body=big_body))
    assert result.message_type == MessageType.METHOD_RETURN, result.body[0]
    assert result.body[0] == big_body[0]
Exemplo n.º 3
0
def test_request_name_glib():
    test_name = 'glib.test.request.name'
    bus = glib.MessageBus().connect_sync()

    reply = bus.request_name_sync(test_name)
    assert reply == RequestNameReply.PRIMARY_OWNER

    reply = bus.release_name_sync(test_name)
    assert reply == ReleaseNameReply.RELEASED

    bus.disconnect()
Exemplo n.º 4
0
def test_glib_proxy_object():
    bus_name = 'glib.client.test.methods'
    bus = glib.MessageBus().connect_sync()
    bus.request_name_sync(bus_name)
    service_interface = ExampleInterface()
    bus.export('/test/path', service_interface)

    bus2 = glib.MessageBus().connect_sync()
    introspection = bus2.introspect_sync(bus_name, '/test/path')
    assert type(introspection) is intr.Node
    obj = bus.get_proxy_object(bus_name, '/test/path', introspection)
    interface = obj.get_interface(service_interface.name)

    result = interface.call_ping_sync()
    assert result is None

    result = interface.call_echo_string_sync('hello')
    assert result == 'hello'

    result = interface.call_concat_strings_sync('hello ', 'world')
    assert result == 'hello world'

    result = interface.call_echo_three_sync('hello', 'there', 'world')
    assert result == ['hello', 'there', 'world']

    with pytest.raises(DBusError):
        try:
            result = interface.call_throws_error_sync()
            assert False, result
        except DBusError as e:
            assert e.reply is not None
            assert e.type == 'test.error'
            assert e.text == 'something went wrong'
            raise e

    bus.disconnect()
    bus2.disconnect()