summaryrefslogtreecommitdiffstats
path: root/tests/auto/declarative/qdeclarativedebugservice
diff options
context:
space:
mode:
authorKai Koehne <kai.koehne@nokia.com>2010-09-22 19:03:57 (GMT)
committerKai Koehne <kai.koehne@nokia.com>2010-09-28 05:55:32 (GMT)
commitfd9771c29d401d88779ab7c5d7715c9ca41dd723 (patch)
tree0e96e0871e8914f5747bfc1a1314d76a78620b6d /tests/auto/declarative/qdeclarativedebugservice
parent7b796b4dcdebfba55c4754d241edb334217fc550 (diff)
downloadQt-fd9771c29d401d88779ab7c5d7715c9ca41dd723.zip
Qt-fd9771c29d401d88779ab7c5d7715c9ca41dd723.tar.gz
Qt-fd9771c29d401d88779ab7c5d7715c9ca41dd723.tar.bz2
Make QmlDebug protocol more robust
The protocol so far was client->server only. That is, there was no sane way for a client to check whether a plugin on the server (service) was available or not. E.g. calling Client::setEnabled(true) 'succeeded', without a check whether there is actually a service to talk to. The new protocol replaces this shortcoming by a service discovery mechanism: Both client & service announce their available plugins at handshake time, and later on if there are changes. The status is reflected in Client::status() and Service::Status() , which are either NotConnected - no network connection, or not registered properly Unavailable - TCP/IP connection works, but no plugin with the same name on the other side Enabled - You can connect to plugin on other side The status changes happen automatically (no setEnabled() anymore). Furthermore a version ID was added to the handshake, so that we can extend the protocol further in the future :)
Diffstat (limited to 'tests/auto/declarative/qdeclarativedebugservice')
-rw-r--r--tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp41
1 files changed, 19 insertions, 22 deletions
diff --git a/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp b/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp
index 4683199..bce4713 100644
--- a/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp
+++ b/tests/auto/declarative/qdeclarativedebugservice/tst_qdeclarativedebugservice.cpp
@@ -66,8 +66,7 @@ private slots:
void initTestCase();
void name();
- void isEnabled();
- void enabledChanged();
+ void status();
void sendMessage();
void idForObject();
void objectForId();
@@ -97,31 +96,24 @@ void tst_QDeclarativeDebugService::name()
QCOMPARE(service.name(), name);
}
-void tst_QDeclarativeDebugService::isEnabled()
+void tst_QDeclarativeDebugService::status()
{
- QDeclarativeDebugTestService service("tst_QDeclarativeDebugService::isEnabled()", m_conn);
- QCOMPARE(service.isEnabled(), false);
+ QDeclarativeDebugTestService service("tst_QDeclarativeDebugService::status()");
+ QCOMPARE(service.status(), QDeclarativeDebugService::Unavailable);
- QDeclarativeDebugTestClient client("tst_QDeclarativeDebugService::isEnabled()", m_conn);
- client.setEnabled(true);
- QDeclarativeDebugTest::waitForSignal(&service, SIGNAL(enabledStateChanged()));
- QCOMPARE(service.isEnabled(), true);
+ {
+ QDeclarativeDebugTestClient client("tst_QDeclarativeDebugService::status()", m_conn);
+ QDeclarativeDebugTest::waitForSignal(&service, SIGNAL(statusHasChanged()));
+ QCOMPARE(service.status(), QDeclarativeDebugService::Enabled);
+ }
- QTest::ignoreMessage(QtWarningMsg, "QDeclarativeDebugService: Conflicting plugin name \"tst_QDeclarativeDebugService::isEnabled()\" ");
- QDeclarativeDebugService duplicate("tst_QDeclarativeDebugService::isEnabled()", m_conn);
- QCOMPARE(duplicate.isEnabled(), false);
-}
-
-void tst_QDeclarativeDebugService::enabledChanged()
-{
- QDeclarativeDebugTestService service("tst_QDeclarativeDebugService::enabledChanged()");
- QDeclarativeDebugTestClient client("tst_QDeclarativeDebugService::enabledChanged()", m_conn);
+ QDeclarativeDebugTest::waitForSignal(&service, SIGNAL(statusHasChanged()));
+ QCOMPARE(service.status(), QDeclarativeDebugService::Unavailable);
- QCOMPARE(service.enabled, false);
+ QTest::ignoreMessage(QtWarningMsg, "QDeclarativeDebugService: Conflicting plugin name \"tst_QDeclarativeDebugService::status()\" ");
- client.setEnabled(true);
- QDeclarativeDebugTest::waitForSignal(&service, SIGNAL(enabledStateChanged()));
- QCOMPARE(service.enabled, true);
+ QDeclarativeDebugService duplicate("tst_QDeclarativeDebugService::status()");
+ QCOMPARE(duplicate.status(), QDeclarativeDebugService::NotConnected);
}
void tst_QDeclarativeDebugService::sendMessage()
@@ -131,6 +123,11 @@ void tst_QDeclarativeDebugService::sendMessage()
QByteArray msg = "hello!";
+ if (service.status() != QDeclarativeDebugService::Enabled)
+ QDeclarativeDebugTest::waitForSignal(&service, SIGNAL(statusHasChanged()));
+ if (client.status() != QDeclarativeDebugClient::Enabled)
+ QDeclarativeDebugTest::waitForSignal(&client, SIGNAL(statusHasChanged()));
+
client.sendMessage(msg);
QByteArray resp = client.waitForResponse();
QCOMPARE(resp, msg);