equal
deleted
inserted
replaced
706 } |
706 } |
707 |
707 |
708 void tst_QSharedMemory::simpleProcessProducerConsumer_data() |
708 void tst_QSharedMemory::simpleProcessProducerConsumer_data() |
709 { |
709 { |
710 QTest::addColumn<int>("processes"); |
710 QTest::addColumn<int>("processes"); |
711 int tries = 10; |
711 int tries = 5; |
712 #ifdef Q_OS_WIN |
|
713 tries = 5; |
|
714 #endif |
|
715 for (int i = 0; i < tries; ++i) { |
712 for (int i = 0; i < tries; ++i) { |
716 QTest::newRow("1 process") << 1; |
713 QTest::newRow("1 process") << 1; |
717 QTest::newRow("5 processes") << 5; |
714 QTest::newRow("5 processes") << 5; |
718 } |
715 } |
719 } |
716 } |
735 #else |
732 #else |
736 QStringList arguments = QStringList() << QFileInfo(SRCDIR "lackey/scripts/producer.js").absoluteFilePath(); |
733 QStringList arguments = QStringList() << QFileInfo(SRCDIR "lackey/scripts/producer.js").absoluteFilePath(); |
737 #endif |
734 #endif |
738 QProcess producer; |
735 QProcess producer; |
739 producer.setProcessChannelMode(QProcess::ForwardedChannels); |
736 producer.setProcessChannelMode(QProcess::ForwardedChannels); |
740 producer.start( QFileInfo("./lackey/lackey.exe").absoluteFilePath(), arguments); |
737 producer.start( "./lackey/lackey", arguments); |
741 producer.waitForStarted(); |
738 producer.waitForStarted(); |
742 QVERIFY(producer.error() != QProcess::FailedToStart); |
739 QVERIFY(producer.error() != QProcess::FailedToStart); |
743 |
740 |
744 QList<QProcess*> consumers; |
741 QList<QProcess*> consumers; |
745 unsigned int failedProcesses = 0; |
742 unsigned int failedProcesses = 0; |
757 consumers.append(p); |
754 consumers.append(p); |
758 else |
755 else |
759 ++failedProcesses; |
756 ++failedProcesses; |
760 } |
757 } |
761 |
758 |
762 producer.waitForFinished(5000); |
759 QVERIFY(producer.waitForFinished(5000)); |
763 |
760 |
764 bool consumerFailed = false; |
761 bool consumerFailed = false; |
765 |
762 |
766 while (!consumers.isEmpty()) { |
763 while (!consumers.isEmpty()) { |
767 consumers.first()->waitForFinished(2000); |
764 QVERIFY(consumers.first()->waitForFinished(3000)); |
768 if (consumers.first()->state() == QProcess::Running || |
765 if (consumers.first()->state() == QProcess::Running || |
769 consumers.first()->exitStatus() != QProcess::NormalExit || |
766 consumers.first()->exitStatus() != QProcess::NormalExit || |
770 consumers.first()->exitCode() != 0) { |
767 consumers.first()->exitCode() != 0) { |
771 consumerFailed = true; |
768 consumerFailed = true; |
772 } |
769 } |