diff options
author | Robert Griebl <robert.griebl@qt.io> | 2022-03-17 15:28:46 +0100 |
---|---|---|
committer | Robert Griebl <robert.griebl@qt.io> | 2022-03-22 14:44:43 +0000 |
commit | 7309841d99e76577758adb11c5b905004555b338 (patch) | |
tree | cade24b1a53d9fda74069cc211be3b0c9bbdc8e9 /tests/auto | |
parent | bc06a04dd845d039ba802f94b5eae57519ec63a8 (diff) | |
download | qtapplicationmanager-7309841d99e76577758adb11c5b905004555b338.tar.gz |
Detect and prevent installing the same package multiple times in parallel
Change-Id: I8aa7e1f520346b6c946b0e1e122808d638ccb52c
Pick-to: 6.3 6.2 5.15
Reviewed-by: Bernd Weimer <bernd.weimer@qt.io>
Diffstat (limited to 'tests/auto')
-rw-r--r-- | tests/auto/applicationinstaller/tst_applicationinstaller.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/auto/applicationinstaller/tst_applicationinstaller.cpp b/tests/auto/applicationinstaller/tst_applicationinstaller.cpp index 99c79180..ff8eb936 100644 --- a/tests/auto/applicationinstaller/tst_applicationinstaller.cpp +++ b/tests/auto/applicationinstaller/tst_applicationinstaller.cpp @@ -120,6 +120,7 @@ private slots: void cancelPackageInstallation(); void parallelPackageInstallation(); + void doublePackageInstallation(); void validateDnsName_data(); void validateDnsName(); @@ -686,6 +687,28 @@ void tst_PackageManager::parallelPackageInstallation() clearSignalSpies(); } +void tst_PackageManager::doublePackageInstallation() +{ + QString task1Id = m_pm->startPackageInstallation(QUrl::fromLocalFile(qL1S(AM_TESTDATA_DIR "packages/test-dev-signed.appkg"))); + QVERIFY(!task1Id.isEmpty()); + QVERIFY(m_blockingUntilInstallationAcknowledgeSpy->wait(spyTimeout)); + QCOMPARE(m_blockingUntilInstallationAcknowledgeSpy->first()[0].toString(), task1Id); + + QString task2Id = m_pm->startPackageInstallation(QUrl::fromLocalFile(qL1S(AM_TESTDATA_DIR "packages/test-dev-signed.appkg"))); + QVERIFY(!task2Id.isEmpty()); + m_pm->acknowledgePackageInstallation(task2Id); + QVERIFY(m_failedSpy->wait(spyTimeout)); + QCOMPARE(m_failedSpy->first()[0].toString(), task2Id); + QCOMPARE(m_failedSpy->first()[2].toString(), qL1S("Cannot install the same package com.pelagicore.test multiple times in parallel")); + + clearSignalSpies(); + m_pm->cancelTask(task1Id); + QVERIFY(m_failedSpy->wait(spyTimeout)); + QCOMPARE(m_failedSpy->first()[0].toString(), task1Id); + + clearSignalSpies(); +} + void tst_PackageManager::validateDnsName_data() { QTest::addColumn<QString>("dnsName"); |