diff --git a/tests/acceptance/mocks/mock_dbus_server.py b/tests/acceptance/mocks/mock_dbus_server.py index 6d76adc6e..ecdacff7f 100644 --- a/tests/acceptance/mocks/mock_dbus_server.py +++ b/tests/acceptance/mocks/mock_dbus_server.py @@ -21,29 +21,32 @@ class IoMenderAuthenticationIface: """ - - - - - - - - + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + + + + - """ + """ def __init__(self): self.token = "" @@ -68,6 +71,9 @@ def MockSetJwtTokenAndEmitSignal(self, token, server_url): self.JwtTokenStateChange(self.token, self.server_url) return True + def MockEmitSignal(self): + self.JwtTokenStateChange(self.token, self.server_url) + return True loop = GLib.MainLoop() bus = SystemBus() diff --git a/tests/acceptance/test_mender-connect.py b/tests/acceptance/test_mender-connect.py index 2afc61d26..7a10a6549 100644 --- a/tests/acceptance/test_mender-connect.py +++ b/tests/acceptance/test_mender-connect.py @@ -165,6 +165,15 @@ def dbus_set_token_and_url_and_emit_signal(connection, token, server_url): ) +def dbus_emit_signal(connection): + connection.run( + "dbus-send --print-reply --system " + "--dest=io.mender.AuthenticationManager " + "/io/mender/AuthenticationManager " + "io.mender.Authentication1.MockEmitSignal " + ) + + def wait_for_string_in_log(connection, since, timeout, search_string): output = "" while qemu_system_time(connection) < since + timeout: @@ -193,14 +202,22 @@ def test_mender_connect_auth_changes( """Test that mender-connect can re-establish the connection on D-Bus signals""" try: - dbus_set_token_and_url(connection, "token1", "http://localhost:5000") - # start the mender-connect service - startup_time = qemu_system_time(connection) connection.run( "systemctl --job-mode=ignore-dependencies start mender-connect" ) + startup_time = qemu_system_time(connection) + # wait until the connection happens + wait_for_string_in_log( + connection, startup_time, 30, "Started Mender Connect service" + ) + + signal_time = qemu_system_time(connection) + dbus_set_token_and_url_and_emit_signal( + connection, "token1", "http://localhost:5000" + ) + # wait for first connect _ = wait_for_string_in_log( connection, @@ -277,14 +294,22 @@ def test_mender_connect_reconnect( """Test that mender-connect can re-establish the connection on remote errors""" try: - dbus_set_token_and_url(connection, "badtoken", "http://localhost:12345") - # start the mender-connect service - startup_time = qemu_system_time(connection) connection.run( "systemctl --job-mode=ignore-dependencies start mender-connect" ) + startup_time = qemu_system_time(connection) + # wait until the connection happens + wait_for_string_in_log( + connection, startup_time, 30, "Started Mender Connect service" + ) + + signal_time = qemu_system_time(connection) + dbus_set_token_and_url_and_emit_signal( + connection, "badtoken", "http://localhost:12345" + ) + # wait for error if version_is_minimum(bitbake_variables, "mender-connect", "2.3.0"): error_message = "connection manager failed to connect" @@ -305,11 +330,11 @@ def test_mender_connect_reconnect( ) dbus_set_token_and_url(connection, "", "") - kill_time = qemu_system_time(connection) # kill the server and wait for error with_mock_servers[1].kill() + kill_time = qemu_system_time(connection) _ = wait_for_string_in_log( - connection, kill_time, 300, "error reconnecting:", + connection, kill_time, 300, "waiting for reconnect", ) # Signal the other server