From ca91386b7ded5e9e80be47893cc297650884ec2a Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Sun, 4 May 2014 13:11:21 +0200 Subject: [PATCH] added a test for a failing async device setup --- .../deviceplugins/mock/devicepluginmock.cpp | 22 +++++++++++++++++-- tests/auto/devices/testdevices.cpp | 5 +++-- tests/auto/guhtestbase.h | 1 + 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/plugins/deviceplugins/mock/devicepluginmock.cpp b/plugins/deviceplugins/mock/devicepluginmock.cpp index 8ca594aa..95379d01 100644 --- a/plugins/deviceplugins/mock/devicepluginmock.cpp +++ b/plugins/deviceplugins/mock/devicepluginmock.cpp @@ -31,6 +31,7 @@ DeviceClassId mockDeviceAutoClassId = DeviceClassId("ab4257b3-7548-47ee-9bd4-7dc DeviceClassId mockDeviceDiscoveryClassId = DeviceClassId("1bbaf751-36b7-4d3d-b05a-58dab2a3be8c"); DeviceClassId mockDeviceAsyncSetupClassId = DeviceClassId("c08a8b27-8200-413d-b96b-4cff78b864d9"); DeviceClassId mockDeviceBrokenClassId = DeviceClassId("ba5fb404-c9ce-4db4-8cd4-f48c61c24b13"); +DeviceClassId mockDeviceBrokenAsyncSetupClassId = DeviceClassId("bd5b78c5-53c9-4417-8eac-8ab2bce97bd0"); EventTypeId mockEvent1Id = EventTypeId("45bf3752-0fc6-46b9-89fd-ffd878b5b22b"); EventTypeId mockEvent2Id = EventTypeId("863d5920-b1cf-4eb9-88bd-8f7b8583b1cf"); StateTypeId mockIntStateId = StateTypeId("80baec19-54de-4948-ac46-31eabfaceb83"); @@ -166,6 +167,18 @@ QList DevicePluginMock::supportedDevices() const ret.append(deviceClassMockBroken); + // Broken Async setup device + DeviceClass deviceClassMockBrokenAsyncSetup(pluginId(), guhVendorId, mockDeviceBrokenAsyncSetupClassId); + deviceClassMockBrokenAsyncSetup.setName("Mock Device (Async Broken setup)"); + deviceClassMockBrokenAsyncSetup.setCreateMethod(DeviceClass::CreateMethodUser); + + deviceClassMockBrokenAsyncSetup.setParams(mockParams); + deviceClassMockBrokenAsyncSetup.setStates(mockStates); + deviceClassMockBrokenAsyncSetup.setEvents(mockEvents); + deviceClassMockBrokenAsyncSetup.setActions(mockActions); + + ret.append(deviceClassMockBrokenAsyncSetup); + return ret; } @@ -211,7 +224,7 @@ QPair DevicePluginMock::setupDevice(D connect(daemon, &HttpDaemon::triggerEvent, this, &DevicePluginMock::triggerEvent); connect(daemon, &HttpDaemon::setState, this, &DevicePluginMock::setState); - if (device->deviceClassId() == mockDeviceAsyncSetupClassId) { + if (device->deviceClassId() == mockDeviceAsyncSetupClassId || device->deviceClassId() == mockDeviceBrokenAsyncSetupClassId) { m_asyncSetupDevices.append(device); QTimer::singleShot(1000, this, SLOT(emitDeviceSetupFinished())); return reportDeviceSetup(DeviceManager::DeviceSetupStatusAsync); @@ -298,5 +311,10 @@ void DevicePluginMock::emitDevicesDiscovered() void DevicePluginMock::emitDeviceSetupFinished() { qDebug() << "emitting setup finised"; - emit deviceSetupFinished(m_asyncSetupDevices.takeFirst(), DeviceManager::DeviceSetupStatusSuccess, QString()); + Device *device = m_asyncSetupDevices.takeFirst(); + if (device->deviceClassId() == mockDeviceAsyncSetupClassId) { + emit deviceSetupFinished(device, DeviceManager::DeviceSetupStatusSuccess, QString()); + } else { + emit deviceSetupFinished(device, DeviceManager::DeviceSetupStatusFailure, QString("This device is intentionally broken")); + } } diff --git a/tests/auto/devices/testdevices.cpp b/tests/auto/devices/testdevices.cpp index 032a411f..2c760a99 100644 --- a/tests/auto/devices/testdevices.cpp +++ b/tests/auto/devices/testdevices.cpp @@ -64,8 +64,8 @@ void TestDevices::getSupportedDevices_data() QTest::addColumn("vendorId"); QTest::addColumn("resultCount"); - QTest::newRow("vendor guh") << guhVendorId << 5; - QTest::newRow("no filter") << VendorId() << 5; + QTest::newRow("vendor guh") << guhVendorId << 6; + QTest::newRow("no filter") << VendorId() << 6; QTest::newRow("invalid vendor") << VendorId("93e7d361-8025-4354-b17e-b68406c800bc") << 0; } @@ -103,6 +103,7 @@ void TestDevices::addConfiguredDevice_data() QTest::newRow("User, JustAdd, Async") << mockDeviceAsyncSetupClassId << deviceParams << true; QTest::newRow("Invalid DeviceClassId") << DeviceClassId::createDeviceClassId() << deviceParams << false; QTest::newRow("Setup failure") << mockDeviceBrokenClassId << deviceParams << false; + QTest::newRow("Setup failure, Async") << mockDeviceBrokenAsyncSetupClassId << deviceParams << false; QVariantMap invalidDeviceParams; invalidDeviceParams.insert("tropptth", m_mockDevice1Port - 1); diff --git a/tests/auto/guhtestbase.h b/tests/auto/guhtestbase.h index 37e36013..c239024c 100644 --- a/tests/auto/guhtestbase.h +++ b/tests/auto/guhtestbase.h @@ -33,6 +33,7 @@ extern DeviceClassId mockDeviceAutoClassId; extern DeviceClassId mockDeviceDiscoveryClassId; extern DeviceClassId mockDeviceAsyncSetupClassId; extern DeviceClassId mockDeviceBrokenClassId; +extern DeviceClassId mockDeviceBrokenAsyncSetupClassId; extern ActionTypeId mockAction1Id; extern EventTypeId mockEvent1Id; extern StateTypeId mockIntStateId;