diff --git a/plugins/amda/tests/FuzzingDefs.cpp b/plugins/amda/tests/FuzzingDefs.cpp index 145d0d2..b55f4ec 100644 --- a/plugins/amda/tests/FuzzingDefs.cpp +++ b/plugins/amda/tests/FuzzingDefs.cpp @@ -9,3 +9,4 @@ const QString MAX_RANGE_PROPERTY = QStringLiteral("maxRange"); const QString METADATA_POOL_PROPERTY = QStringLiteral("metadataPool"); const QString PROVIDER_PROPERTY = QStringLiteral("provider"); const QString OPERATION_DELAY_PROPERTY = QStringLiteral("operationDelay"); +const QString VALIDATORS_PROPERTY = QStringLiteral("validators"); diff --git a/plugins/amda/tests/FuzzingDefs.h b/plugins/amda/tests/FuzzingDefs.h index 076f282..ba8b424 100644 --- a/plugins/amda/tests/FuzzingDefs.h +++ b/plugins/amda/tests/FuzzingDefs.h @@ -48,6 +48,8 @@ extern const QString PROVIDER_PROPERTY; /// Time left for an operation to execute extern const QString OPERATION_DELAY_PROPERTY; +/// Validators used to validate an operation +extern const QString VALIDATORS_PROPERTY; // /////// // // Structs // diff --git a/plugins/amda/tests/FuzzingValidators.h b/plugins/amda/tests/FuzzingValidators.h index 5ef7b25..33a538e 100644 --- a/plugins/amda/tests/FuzzingValidators.h +++ b/plugins/amda/tests/FuzzingValidators.h @@ -1,7 +1,11 @@ #ifndef SCIQLOP_FUZZINGVALIDATORS_H #define SCIQLOP_FUZZINGVALIDATORS_H +#include +#include + #include +#include Q_DECLARE_LOGGING_CATEGORY(LOG_FuzzingValidators) @@ -30,4 +34,7 @@ struct FuzzingValidatorFactory { static std::unique_ptr create(FuzzingValidatorType type); }; +using ValidatorsTypes = std::vector; +Q_DECLARE_METATYPE(ValidatorsTypes) + #endif // SCIQLOP_FUZZINGVALIDATORS_H diff --git a/plugins/amda/tests/TestAmdaFuzzing.cpp b/plugins/amda/tests/TestAmdaFuzzing.cpp index 2085055..e85cc2d 100644 --- a/plugins/amda/tests/TestAmdaFuzzing.cpp +++ b/plugins/amda/tests/TestAmdaFuzzing.cpp @@ -1,6 +1,7 @@ #include "FuzzingDefs.h" #include "FuzzingOperations.h" #include "FuzzingUtils.h" +#include "FuzzingValidators.h" #include "AmdaProvider.h" @@ -34,6 +35,7 @@ using VariablesOperations = std::vector; using WeightedOperationsPool = std::map, Weight>; using VariablesPool = std::map; +using Validators = std::vector >; // ///////// // // Constants // @@ -54,6 +56,10 @@ const auto CACHE_TOLERANCE_DEFAULT_VALUE = 0.2; /// Delay between each operation (in ms) const auto OPERATION_DELAY_DEFAULT_VALUE = 3000; +/// Validators for the tests (executed in the order in which they're defined) +const auto VALIDATORS_DEFAULT_VALUE = QVariant::fromValue( + ValidatorsTypes{{FuzzingValidatorType::RANGE, FuzzingValidatorType::DATA}}); + // /////// // // Methods // // /////// // @@ -98,6 +104,16 @@ WeightedOperationsPool createOperationsPool(const WeightedOperationsTypes &types return result; } +Validators createValidators(const ValidatorsTypes &types) +{ + Validators result{}; + + std::transform(types.cbegin(), types.cend(), std::inserter(result, result.end()), + [](const auto &type) { return FuzzingValidatorFactory::create(type); }); + + return result; +} + /** * Class to run random tests */ @@ -180,6 +196,14 @@ private: return result; } + Validators validators() const + { + static auto result + = createValidators(m_Properties.value(VALIDATORS_PROPERTY, VALIDATORS_DEFAULT_VALUE) + .value()); + return result; + } + VariableController &m_VariableController; Properties m_Properties; VariablesPool m_VariablesPool; @@ -265,6 +289,7 @@ int main(int argc, char *argv[]) "*.info=false\n" "*.debug=false\n" "FuzzingOperations.info=true\n" + "FuzzingValidators.info=true\n" "TestAmdaFuzzing.info=true\n"); SqpApplication app{argc, argv};