##// END OF EJS Templates
Implements execute() method of desync operation...
Implements execute() method of desync operation desync is also made for the delete operation

File last commit:

r1241:5f4e5de2ac36
r1241:5f4e5de2ac36
Show More
FuzzingDefs.cpp
91 lines | 2.9 KiB | text/x-c | CppLexer
Alexandre Leroux
Adds variable controller and properties to test structure...
r1200 #include "FuzzingDefs.h"
Alexandre Leroux
Adds "number of operations" and "number of variables" properties for the tests
r1201 const QString NB_MAX_OPERATIONS_PROPERTY = QStringLiteral("component");
Alexandre Leroux
Sets the number of sync groups to create for fuzzing tests
r1237 const QString NB_MAX_SYNC_GROUPS_PROPERTY = QStringLiteral("nbSyncGroups");
Alexandre Leroux
Adds "number of operations" and "number of variables" properties for the tests
r1201 const QString NB_MAX_VARIABLES_PROPERTY = QStringLiteral("nbMaxVariables");
Alexandre Leroux
Defines operations pool...
r1204 const QString AVAILABLE_OPERATIONS_PROPERTY = QStringLiteral("availableOperations");
Alexandre Leroux
Adds the ability to set cache tolerance for tests
r1224 const QString CACHE_TOLERANCE_PROPERTY = QStringLiteral("cacheTolerance");
Alexandre Leroux
Some fixes...
r1223 const QString INITIAL_RANGE_PROPERTY = QStringLiteral("initialRange");
Alexandre Leroux
Completes fuzzing test structure by setting initial range for the time controller
r1209 const QString MAX_RANGE_PROPERTY = QStringLiteral("maxRange");
Alexandre Leroux
Implements "Variable creation" operation (1)...
r1207 const QString METADATA_POOL_PROPERTY = QStringLiteral("metadataPool");
const QString PROVIDER_PROPERTY = QStringLiteral("provider");
Alexandre Leroux
Implements move operations (3)...
r1219 const QString OPERATION_DELAY_PROPERTY = QStringLiteral("operationDelay");
Alexandre Leroux
Adds validators to the fuzzing test...
r1228 const QString VALIDATORS_PROPERTY = QStringLiteral("validators");
Alexandre Leroux
Defines synchronization groups for fuzzing tests
r1235
// //////////// //
// FuzzingState //
// //////////// //
const SyncGroup &FuzzingState::syncGroup(SyncGroupId id) const
{
return m_SyncGroupsPool.at(id);
}
SyncGroup &FuzzingState::syncGroup(SyncGroupId id)
{
return m_SyncGroupsPool.at(id);
}
const VariableState &FuzzingState::variableState(VariableId id) const
{
return m_VariablesPool.at(id);
}
VariableState &FuzzingState::variableState(VariableId id)
{
return m_VariablesPool.at(id);
}
Alexandre Leroux
Implements canExecute() method of syn/desync operations
r1239 SyncGroupId FuzzingState::syncGroupId(VariableId variableId) const
{
auto end = m_SyncGroupsPool.cend();
auto it
= std::find_if(m_SyncGroupsPool.cbegin(), end, [&variableId](const auto &syncGroupEntry) {
const auto &syncGroup = syncGroupEntry.second;
return syncGroup.m_Variables.find(variableId) != syncGroup.m_Variables.end();
});
return it != end ? it->first : SyncGroupId{};
}
Alexandre Leroux
Implements execute() method of sync operation
r1240 std::vector<SyncGroupId> FuzzingState::syncGroupsIds() const
{
std::vector<SyncGroupId> result{};
for (const auto &entry : m_SyncGroupsPool) {
result.push_back(entry.first);
}
return result;
}
void FuzzingState::synchronizeVariable(VariableId variableId, SyncGroupId syncGroupId)
{
if (syncGroupId.isNull()) {
return;
}
// Registers variable into sync group: if it's the first variable, sets the variable range as
// the sync group range
auto &syncGroup = m_SyncGroupsPool.at(syncGroupId);
syncGroup.m_Variables.insert(variableId);
if (syncGroup.m_Variables.size() == 1) {
auto &variableState = m_VariablesPool.at(variableId);
syncGroup.m_Range = variableState.m_Range;
}
}
Alexandre Leroux
Implements execute() method of desync operation...
r1241 void FuzzingState::desynchronizeVariable(VariableId variableId, SyncGroupId syncGroupId)
{
if (syncGroupId.isNull()) {
return;
}
// Unregisters variable from sync group: if there is no more variable in the group, resets the range
auto &syncGroup = m_SyncGroupsPool.at(syncGroupId);
syncGroup.m_Variables.erase(variableId);
if (syncGroup.m_Variables.empty()) {
syncGroup.m_Range = INVALID_RANGE;
}
}