Search in sources :

Example 1 with ThingControlRequest

use of org.jivesoftware.smackx.iot.control.ThingControlRequest in project Smack by igniterealtime.

the class IoTControlIntegrationTest method controlTest.

/**
     * Connection one provides a thing, which is controlled by connection two.
     *
     * @throws Exception 
     * @throws TimeoutException 
     */
@SmackIntegrationTest
public // @SmackSerialIntegrationTest
void controlTest() throws TimeoutException, Exception {
    final String key = StringUtils.randomString(12);
    final String sn = StringUtils.randomString(12);
    final SimpleResultSyncPoint syncPoint = new SimpleResultSyncPoint();
    Thing controlThing = Thing.builder().setKey(key).setSerialNumber(sn).setControlRequestHandler(new ThingControlRequest() {

        @Override
        public void processRequest(Jid from, Collection<SetData> setData) throws XMPPErrorException {
            if (!from.equals(conTwo.getUser())) {
                return;
            }
            for (final SetData data : setData) {
                if (!data.getName().equals(testRunId))
                    continue;
                if (!(data instanceof SetBoolData))
                    continue;
                SetBoolData boolData = (SetBoolData) data;
                if (boolData.getBooleanValue()) {
                    syncPoint.signal();
                    break;
                }
            }
        }
    }).build();
    IoTControlManagerOne.installThing(controlThing);
    try {
        RosterIntegrationTest.ensureBothAccountsAreSubscribedToEachOther(conOne, conTwo, timeout);
        SetData data = new SetBoolData(testRunId, true);
        IoTSetResponse response = IoTControlManagerTwo.setUsingIq(conOne.getUser(), data);
        assertNotNull(response);
    } finally {
        IoTControlManagerOne.uninstallThing(controlThing);
        RosterIntegrationTest.ensureBothAccountsAreNotInEachOthersRoster(conOne, conTwo);
    }
    syncPoint.waitForResult(timeout);
}
Also used : Jid(org.jxmpp.jid.Jid) ThingControlRequest(org.jivesoftware.smackx.iot.control.ThingControlRequest) Collection(java.util.Collection) SetBoolData(org.jivesoftware.smackx.iot.control.element.SetBoolData) SimpleResultSyncPoint(org.igniterealtime.smack.inttest.util.SimpleResultSyncPoint) SetData(org.jivesoftware.smackx.iot.control.element.SetData) IoTSetResponse(org.jivesoftware.smackx.iot.control.element.IoTSetResponse) AbstractSmackIntegrationTest(org.igniterealtime.smack.inttest.AbstractSmackIntegrationTest) SmackIntegrationTest(org.igniterealtime.smack.inttest.SmackIntegrationTest)

Aggregations

Collection (java.util.Collection)1 AbstractSmackIntegrationTest (org.igniterealtime.smack.inttest.AbstractSmackIntegrationTest)1 SmackIntegrationTest (org.igniterealtime.smack.inttest.SmackIntegrationTest)1 SimpleResultSyncPoint (org.igniterealtime.smack.inttest.util.SimpleResultSyncPoint)1 ThingControlRequest (org.jivesoftware.smackx.iot.control.ThingControlRequest)1 IoTSetResponse (org.jivesoftware.smackx.iot.control.element.IoTSetResponse)1 SetBoolData (org.jivesoftware.smackx.iot.control.element.SetBoolData)1 SetData (org.jivesoftware.smackx.iot.control.element.SetData)1 Jid (org.jxmpp.jid.Jid)1