From 7541b71e5b78d4116e4163d1786017581cfaa0c5 2017-12-19 14:14:51 From: Alexandre Leroux Date: 2017-12-19 14:14:51 Subject: [PATCH] Wait for the end of an acquisition to validate an operation (3) If an operation is to validate, waits the end of the acquisition --- diff --git a/plugins/amda/tests/FuzzingDefs.cpp b/plugins/amda/tests/FuzzingDefs.cpp index e6a5880..d47bbd8 100644 --- a/plugins/amda/tests/FuzzingDefs.cpp +++ b/plugins/amda/tests/FuzzingDefs.cpp @@ -1,5 +1,6 @@ #include "FuzzingDefs.h" +const QString ACQUISITION_TIMEOUT_PROPERTY = QStringLiteral("acquisitionTimeout"); const QString NB_MAX_OPERATIONS_PROPERTY = QStringLiteral("component"); const QString NB_MAX_SYNC_GROUPS_PROPERTY = QStringLiteral("nbSyncGroups"); const QString NB_MAX_VARIABLES_PROPERTY = QStringLiteral("nbMaxVariables"); diff --git a/plugins/amda/tests/FuzzingDefs.h b/plugins/amda/tests/FuzzingDefs.h index 2a2b110..6b66508 100644 --- a/plugins/amda/tests/FuzzingDefs.h +++ b/plugins/amda/tests/FuzzingDefs.h @@ -23,6 +23,9 @@ using Properties = QVariantHash; // Constants // // ///////// // +/// Timeout set for data acquisition for an operation (in ms) +extern const QString ACQUISITION_TIMEOUT_PROPERTY; + /// Max number of operations to generate extern const QString NB_MAX_OPERATIONS_PROPERTY; diff --git a/plugins/amda/tests/TestAmdaFuzzing.cpp b/plugins/amda/tests/TestAmdaFuzzing.cpp index 92b751b..21f8e4c 100644 --- a/plugins/amda/tests/TestAmdaFuzzing.cpp +++ b/plugins/amda/tests/TestAmdaFuzzing.cpp @@ -60,6 +60,7 @@ using Validators = std::vector >; // ///////// // // Defaults values used when the associated properties have not been set for the test +const auto ACQUISITION_TIMEOUT_DEFAULT_VALUE = 30000; const auto NB_MAX_OPERATIONS_DEFAULT_VALUE = 100; const auto NB_MAX_SYNC_GROUPS_DEFAULT_VALUE = 1; const auto NB_MAX_VARIABLES_DEFAULT_VALUE = 1; @@ -195,7 +196,7 @@ public: nextValidationCounter = RandomGenerator::instance().generateInt( validationFrequencies().first, validationFrequencies().second); qCInfo(LOG_TestAmdaFuzzing()).noquote() - << "Next validation in " << nextValidationCounter << "operations..."; + << "Next validation in " << nextValidationCounter << "operation(s)..."; }; updateValidationCounter(); @@ -218,21 +219,28 @@ public: auto variableId = variableOperation.first; auto fuzzingOperation = variableOperation.second; + auto waitAcquisition = nextValidationCounter == 0; + fuzzingOperation->execute(variableId, m_FuzzingState, m_VariableController, m_Properties); - // Delays the next operation with a randomly generated time - auto delay = RandomGenerator::instance().generateInt(operationDelays().first, - operationDelays().second); - qCDebug(LOG_TestAmdaFuzzing()) - << "Waiting " << delay << "ms before the next operation..."; - QTest::qWait(delay); + if (waitAcquisition) { + qCDebug(LOG_TestAmdaFuzzing()) << "Waiting for acquisition to finish..."; + SignalWaiter{m_VariableController, SIGNAL(acquisitionFinished())}.wait( + acquisitionTimeout()); - // Validates variables - if (nextValidationCounter == 0) { + // Validates variables validate(m_FuzzingState.m_VariablesPool, validators()); updateValidationCounter(); } + else { + // Delays the next operation with a randomly generated time + auto delay = RandomGenerator::instance().generateInt(operationDelays().first, + operationDelays().second); + qCDebug(LOG_TestAmdaFuzzing()) + << "Waiting " << delay << "ms before the next operation..."; + QTest::qWait(delay); + } } else { qCInfo(LOG_TestAmdaFuzzing()).noquote()