Hi,

could you please try attached patch? For me it was working even without the 
patch, but I think I spotted a potential problem and this hopefully will fix 
it.

Regards,
Jan

On sobota 1. dubna 2017 21:54:04 CEST David Faure wrote:
> On mardi 28 mars 2017 08:10:15 CEST Jan Grulich wrote:
> > Hi,
> > 
> > I can't think of any reason why the test fails for you. Looking to the git
> > log the only relevant change is fixed uninitialized state variable in
> > ActiveConnection, which may affect ActiveConnection::stateChanged()
> > signal.
> 
> This has also been happening for a very long time on the flaska.net CI :
> 
> http://ci-logs.kde.flaska.net/ae/ae50db98abdf77f9b5f10b385ff9274d58285843/re
> builddep/rebuilddep-kf5-qt56-gcc-el7/510afa7/shell_output.log
> 
> So I don't think it's a recent change.
>From 61337983ba74361938b7d5323de5d2819a235fdc Mon Sep 17 00:00:00 2001
From: Jan Grulich <jgrul...@redhat.com>
Date: Mon, 3 Apr 2017 12:53:12 +0200
Subject: Fix unit test for active connections

Instead of sending PropertiesChanged signal for an active connection we
added recently we should set all properties initially and just advertise
that we have a new active connection once everything is set

diff --git a/src/fakenetwork/fakenetwork.cpp b/src/fakenetwork/fakenetwork.cpp
index bc1144e..261fe8e 100644
--- a/src/fakenetwork/fakenetwork.cpp
+++ b/src/fakenetwork/fakenetwork.cpp
@@ -215,8 +215,14 @@ void FakeNetwork::unregisterService()
 
 QDBusObjectPath FakeNetwork::ActivateConnection(const QDBusObjectPath &connection, const QDBusObjectPath &device, const QDBusObjectPath &specific_object)
 {
-    ActiveConnection *newActiveConnection = new ActiveConnection(this);
     QString newActiveConnectionPath = QString("/org/kde/fakenetwork/ActiveConnection/") + QString::number(m_activeConnectionsCounter++);
+    ActiveConnection *newActiveConnection = new ActiveConnection(this);
+    newActiveConnection->addDevice(device);
+    newActiveConnection->setActiveConnectionPath(newActiveConnectionPath);
+    newActiveConnection->setConnection(connection);
+    newActiveConnection->setSpecificObject(specific_object);
+    newActiveConnection->setState(NetworkManager::ActiveConnection::Activating);
+
     m_activeConnections.insert(QDBusObjectPath(newActiveConnectionPath), newActiveConnection);
     QDBusConnection::sessionBus().registerObject(newActiveConnectionPath, newActiveConnection, QDBusConnection::ExportScriptableContents);
 
@@ -227,24 +233,6 @@ QDBusObjectPath FakeNetwork::ActivateConnection(const QDBusObjectPath &connectio
     map.insert(QLatin1Literal("ActivatingConnection"), QVariant::fromValue(QDBusObjectPath(newActiveConnectionPath)));
     Q_EMIT PropertiesChanged(map);
 
-    newActiveConnection->addDevice(device);
-    newActiveConnection->setActiveConnectionPath(newActiveConnectionPath);
-    newActiveConnection->setConnection(connection);
-    newActiveConnection->setSpecificObject(specific_object);
-    newActiveConnection->setState(NetworkManager::ActiveConnection::Activating);
-
-    map.clear();
-    const QList<QDBusObjectPath> deviceList { device };
-    map.insert(QLatin1Literal("Devices"), QVariant::fromValue<QList<QDBusObjectPath> >(deviceList));
-    map.insert(QLatin1Literal("Connection"), QVariant::fromValue<QDBusObjectPath>(connection));
-    if (!specific_object.path().isEmpty()) {
-        map.insert(QLatin1Literal("SpecificObject"), QVariant::fromValue<QDBusObjectPath>(connection));
-    }
-    map.insert(QLatin1Literal("State"), NetworkManager::ActiveConnection::Activating);
-    QDBusMessage message = QDBusMessage::createSignal(newActiveConnectionPath, QLatin1Literal("org.kde.fakenetwork.Connection.Active"), QLatin1Literal("PropertiesChanged"));
-    message << map;
-    QDBusConnection::sessionBus().send(message);
-
     Device *usedDevice = static_cast<Device *>(QDBusConnection::sessionBus().objectRegisteredAt(device.path()));
     if (usedDevice) {
         m_activatedDevice = usedDevice->devicePath();

Reply via email to