tests/auto/qsharedmemory/tst_qsharedmemory.cpp
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 4 3b1da2848fc7
equal deleted inserted replaced
2:56cd8111b7f7 3:41300fa6a67c
   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             }