make tests great again!

Also dbus adaptor has been renamed, because it does not allow to
register one service for several applications (like plasmashell and
    plasmawindowed)
This commit is contained in:
Evgenii Alekseev 2017-07-26 20:23:26 +03:00
parent 5e08434835
commit 5c56f813d2
6 changed files with 32 additions and 6 deletions

View File

@ -17,6 +17,9 @@
#include "awdbusadaptor.h" #include "awdbusadaptor.h"
#include <QDBusConnection>
#include <QDBusConnectionInterface>
#include "awdebug.h" #include "awdebug.h"
#include "awkeys.h" #include "awkeys.h"
@ -35,6 +38,25 @@ AWDBusAdaptor::~AWDBusAdaptor()
} }
QStringList AWDBusAdaptor::ActiveServices() const
{
QDBusMessage listServices = QDBusConnection::sessionBus().interface()->call(
QDBus::BlockWithGui, "ListNames");
if (listServices.arguments().isEmpty()) {
qCWarning(LOG_DBUS) << "Could not find any DBus service";
return {};
}
QStringList arguments = listServices.arguments().first().toStringList();
return std::accumulate(arguments.cbegin(), arguments.cend(), QStringList(),
[](QStringList &source, QString service) {
if (service.startsWith(AWDBUS_SERVICE))
source.append(service);
return source;
});
}
QString AWDBusAdaptor::Info(const QString &key) const QString AWDBusAdaptor::Info(const QString &key) const
{ {
return m_plugin->infoByKey(key); return m_plugin->infoByKey(key);

View File

@ -37,6 +37,7 @@ public:
public slots: public slots:
// get methods // get methods
QStringList ActiveServices() const;
QString Info(const QString &key) const; QString Info(const QString &key) const;
QStringList Keys(const QString &regexp) const; QStringList Keys(const QString &regexp) const;
QString Value(const QString &key) const; QString Value(const QString &key) const;

View File

@ -147,9 +147,8 @@ QStringList AWKeyCache::getRequiredKeys(const QStringList &_keys,
used << "swapgb" used << "swapgb"
<< "swapfreegb"; << "swapfreegb";
// network keys // network keys
QStringList netKeys({"up", "upkb", "uptot", "uptotkb", "upunits", QStringList netKeys({"up", "upkb", "uptot", "uptotkb", "upunits", "down",
"down", "downkb", "downtot", "downtotkb", "downkb", "downtot", "downtotkb", "downunits"});
"downunits"});
for (auto &key : netKeys) { for (auto &key : netKeys) {
if (!used.contains(key)) if (!used.contains(key))
continue; continue;

View File

@ -327,10 +327,12 @@ void AWKeys::createDBusInterface()
// create session // create session
QDBusConnection bus = QDBusConnection::sessionBus(); QDBusConnection bus = QDBusConnection::sessionBus();
if (!bus.registerService(AWDBUS_SERVICE)) // HACK we are going to use different services because it binds to
// application
if (!bus.registerService(QString("%1.i%2").arg(AWDBUS_SERVICE).arg(id)))
qCWarning(LOG_AW) << "Could not register DBus service, last error" qCWarning(LOG_AW) << "Could not register DBus service, last error"
<< bus.lastError().message(); << bus.lastError().message();
if (!bus.registerObject(QString("/%1").arg(id), new AWDBusAdaptor(this), if (!bus.registerObject(AWDBUS_PATH, new AWDBusAdaptor(this),
QDBusConnection::ExportAllContents)) QDBusConnection::ExportAllContents))
qCWarning(LOG_AW) << "Could not register DBus object, last error" qCWarning(LOG_AW) << "Could not register DBus object, last error"
<< bus.lastError().message(); << bus.lastError().message();

View File

@ -174,7 +174,8 @@ void TestAWKeys::test_dbus()
// create connection and message // create connection and message
QDBusConnection bus = QDBusConnection::sessionBus(); QDBusConnection bus = QDBusConnection::sessionBus();
QDBusMessage request = QDBusMessage::createMethodCall( QDBusMessage request = QDBusMessage::createMethodCall(
AWDBUS_SERVICE, QString("/%1").arg(id), AWDBUS_SERVICE, "WhoAmI"); QString("%1.i%2").arg(AWDBUS_SERVICE).arg(id), AWDBUS_PATH,
AWDBUS_SERVICE, "WhoAmI");
// send message to dbus // send message to dbus
QDBusMessage response = bus.call(request, QDBus::BlockWithGui); QDBusMessage response = bus.call(request, QDBus::BlockWithGui);

View File

@ -44,6 +44,7 @@ const int AW_TELEMETRY_API = 1;
// use define here instead of normal const definition for moc // use define here instead of normal const definition for moc
#define AWDBUS_SERVICE_NAME "org.kde.plasma.awesomewidget" #define AWDBUS_SERVICE_NAME "org.kde.plasma.awesomewidget"
const char AWDBUS_SERVICE[] = AWDBUS_SERVICE_NAME; const char AWDBUS_SERVICE[] = AWDBUS_SERVICE_NAME;
const char AWDBUS_PATH[] = "/awesomewidgets";
// network requests timeout, ms // network requests timeout, ms
const int REQUEST_TIMEOUT = 3000; const int REQUEST_TIMEOUT = 3000;
// available time keys // available time keys