added a test for triggering a rule
This commit is contained in:
parent
576e67f9f3
commit
011a0afa48
@ -38,6 +38,8 @@ private slots:
|
|||||||
void addRules();
|
void addRules();
|
||||||
|
|
||||||
void loadStoreConfig();
|
void loadStoreConfig();
|
||||||
|
|
||||||
|
void evaluateEvent();
|
||||||
};
|
};
|
||||||
|
|
||||||
void TestRules::addRules_data()
|
void TestRules::addRules_data()
|
||||||
@ -139,6 +141,7 @@ void TestRules::addRules()
|
|||||||
QVERIFY2(eventDescriptorVariant == replyEventDescriptorVariant, "Event descriptor doesn't match");
|
QVERIFY2(eventDescriptorVariant == replyEventDescriptorVariant, "Event descriptor doesn't match");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
QVERIFY2(found, "Missing event descriptor");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -241,5 +244,49 @@ void TestRules::loadStoreConfig()
|
|||||||
QVERIFY2(rules.count() == 0, "There should be no rules.");
|
QVERIFY2(rules.count() == 0, "There should be no rules.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TestRules::evaluateEvent()
|
||||||
|
{
|
||||||
|
// Add a rule
|
||||||
|
QVariantMap addRuleParams;
|
||||||
|
QVariantList events;
|
||||||
|
QVariantMap event1;
|
||||||
|
event1.insert("eventTypeId", mockEvent1Id);
|
||||||
|
event1.insert("deviceId", m_mockDeviceId);
|
||||||
|
events.append(event1);
|
||||||
|
addRuleParams.insert("eventDescriptorList", events);
|
||||||
|
|
||||||
|
QVariantList actions;
|
||||||
|
QVariantMap action;
|
||||||
|
action.insert("actionTypeId", mockActionIdNoParams);
|
||||||
|
action.insert("deviceId", m_mockDeviceId);
|
||||||
|
actions.append(action);
|
||||||
|
addRuleParams.insert("actions", actions);
|
||||||
|
QVariant response = injectAndWait("Rules.AddRule", addRuleParams);
|
||||||
|
verifySuccess(response, true);
|
||||||
|
|
||||||
|
// Trigger an event
|
||||||
|
QNetworkAccessManager nam;
|
||||||
|
QSignalSpy spy(&nam, SIGNAL(finished(QNetworkReply*)));
|
||||||
|
|
||||||
|
// trigger event in mock device
|
||||||
|
QNetworkRequest request(QUrl(QString("http://localhost:%1/generateevent?eventtypeid=%2").arg(m_mockDevice1Port).arg(mockEvent1Id.toString())));
|
||||||
|
QNetworkReply *reply = nam.get(request);
|
||||||
|
spy.wait();
|
||||||
|
QCOMPARE(spy.count(), 1);
|
||||||
|
reply->deleteLater();
|
||||||
|
|
||||||
|
// Verify rule got executed
|
||||||
|
spy.clear();
|
||||||
|
request.setUrl(QUrl(QString("http://localhost:%1/actionhistory").arg(m_mockDevice1Port)));
|
||||||
|
reply = nam.get(request);
|
||||||
|
spy.wait();
|
||||||
|
QCOMPARE(spy.count(), 1);
|
||||||
|
|
||||||
|
reply->deleteLater();
|
||||||
|
|
||||||
|
QByteArray actionHistory = reply->readAll();
|
||||||
|
QVERIFY2(mockActionIdNoParams == ActionTypeId(actionHistory), "Action not triggered");
|
||||||
|
}
|
||||||
|
|
||||||
#include "testrules.moc"
|
#include "testrules.moc"
|
||||||
QTEST_MAIN(TestRules)
|
QTEST_MAIN(TestRules)
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
if test -z $5; then
|
if test -z $5; then
|
||||||
echo "usage: $0 host sourceDevice eventTypeId targetDeviceId actionTypeId [paramname paramvalue]"
|
echo "usage: $0 host sourceDevice eventTypeId targetDeviceId actionTypeId [paramname paramvalue]"
|
||||||
elif test -z $6; then
|
elif test -z $6; then
|
||||||
(echo '{"id":1, "method":"Rules.AddRule", "params":{"event": {"eventTypeId": "$3", "deviceId":"'$2'"}, "actions": [ { "deviceId":"'$4'", "actionTypeId":"'$5'"}]}}'; sleep 1) | nc $1 1234
|
(echo '{"id":1, "method":"Rules.AddRule", "params":{"eventDescriptor": {"eventTypeId": "'$3'", "deviceId":"'$2'"}, "actions": [ { "deviceId":"'$4'", "actionTypeId":"'$5'"}]}}'; sleep 1) | nc $1 1234
|
||||||
elif test -z $7; then
|
elif test -z $7; then
|
||||||
echo "usage: $0 host sourceDevice eventTypeId targetDeviceId actionTypeId [paramname paramvalue]"
|
echo "usage: $0 host sourceDevice eventTypeId targetDeviceId actionTypeId [paramname paramvalue]"
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user