- CMakeLists.txt: Include-Pfade von ../ zu . geändert, json.h hinzugefügt - ~95 Dateien: Include-Pfade systematisch korrigiert - LtsUtils/ → LtsUtilsCore/ für alle Core-Header - LtsUtilsGui/LtsUtils/LtsUtilsGui/ → LtsUtilsGui/LtsUtilsGuiDds/ - Logger-API: getLogger() mit const char* Parameter - DataModification: enum class global (nicht im Lts-Namespace) - Participant-Struct: Member mit m_-Präfix - Export-Macro: SVCALMCOMMON_EXPORT statt ALMCOMMON_EXPORT - Signal/Slot-Signaturen korrigiert für Qt6 template matching Build validiert: LtsUtilsCore, LtsUtilsDds, LtsSessionData erfolgreich
886 lines
26 KiB
C++
Executable File
886 lines
26 KiB
C++
Executable File
/**
|
|
* @RDE_HEADER@
|
|
* ISM Function Topic test executable
|
|
* $Id$
|
|
* @RDE_HEADER@
|
|
* Module Tests for FLM
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
* Created by Iuliana Ojog, SLSE, 2017-04-05
|
|
*/
|
|
|
|
#include "flm_tests.h"
|
|
#include <utility>
|
|
|
|
#include <nglapplication/nglcoreapplication.h>
|
|
#include <LtsCommandLineParser/LtsCommandLineParser.h>
|
|
|
|
#include <QTimer>
|
|
#include <QDateTime>
|
|
#include <QTest>
|
|
#include <QSet>
|
|
#include <QVector>
|
|
#include <QJsonObject>
|
|
#include <QJsonDocument>
|
|
|
|
#include <LtsUtils/pgarray.h>
|
|
#include <LtsUtilsCore/dds_vector.h>
|
|
#include <FileManagement/flm_ftc.h>
|
|
#include <FileManagement/flm_dtc.h>
|
|
#include <FileManagement/settings.h>
|
|
|
|
/* ----------------------------------------------------------------------------------
|
|
* HOW TO RUN THE TESTS (for example)
|
|
* ----------------------------------------------------------------------------------
|
|
* 0. Preconditions:
|
|
* Start with an empty database (BUILD)
|
|
* make db
|
|
* Start services: (SV)
|
|
* ./bin/svcExerciseManagement -d 74 &
|
|
* ./bin/svcFileManagement -d 74 &
|
|
* Test steps (sample):
|
|
* 1. ./bin/tests/flmTests -d 74 -t 11 -f 11
|
|
*/
|
|
|
|
// ------------------------------------------------------------------------------
|
|
using namespace FileManagement;
|
|
|
|
FlmTests::FlmTests(QObject *parent)
|
|
: QObject(parent)
|
|
, m_testId(-1)
|
|
, m_folderId(0)
|
|
, m_fileContentId(-1)
|
|
, m_operatorId(99)
|
|
, m_bTestsSuccessful(true)
|
|
{
|
|
qRegisterMetaType<Core::FunctionReply>("Core::FunctionReply");
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
FlmTests::~FlmTests()
|
|
{
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
bool FlmTests::init(int domainId, int testId, int folderId, int fileContentId, int operatorId)
|
|
{
|
|
INFO_LOG(m_logger) << "init begin";
|
|
|
|
m_testId = testId;
|
|
m_folderId = folderId;
|
|
m_fileContentId = fileContentId;
|
|
m_operatorId = operatorId;
|
|
m_content.clear();
|
|
|
|
// initialize DDS, always on exercise 0
|
|
m_ddsConnector.reset(new DDSConnector::DdsConnector(domainId, IDL::PartitionType::Global));
|
|
if (!m_ddsConnector->init())
|
|
return false;
|
|
m_ddsConnector->initPublisherSubscriber();
|
|
|
|
TRACE_LOG(m_logger) << "create dtc";
|
|
m_dtc = FileManagement::Interface::Dtc::create(m_ddsConnector);
|
|
TRACE_LOG(m_logger) << "init dtc";
|
|
bool bRet = m_dtc->enableAll();
|
|
TRACE_LOG(m_logger) << "init dtc end - bRet = " << bRet;
|
|
|
|
TRACE_LOG(m_logger) << "create ftc";
|
|
m_ftc = FileManagement::Interface::Ftc::create(m_ddsConnector);
|
|
TRACE_LOG(m_logger) << "init ftc";
|
|
bRet &= m_ftc->enableAll();
|
|
TRACE_LOG(m_logger) << "init ftc end - bRet = " << bRet;
|
|
|
|
// initialize database
|
|
m_dbHandler = std::make_shared<DbHandler>();
|
|
if(!m_dbHandler->init(0, Settings::settings()))
|
|
{
|
|
ERROR_LOG(m_logger) << "Initialisation dbHandler failed.";
|
|
return false;
|
|
}
|
|
DEBUG_LOG(m_logger) << "Initialisation dbHandler succesful.";
|
|
m_db = m_dbHandler->db();
|
|
|
|
DEBUG_LOG(m_logger) << "########### Domain Id = " << domainId;
|
|
DEBUG_LOG(m_logger) << "########### Test Id = " << testId;
|
|
DEBUG_LOG(m_logger) << "########### Folder Id = " << folderId;
|
|
DEBUG_LOG(m_logger) << "########### File Content Id = " << fileContentId;
|
|
DEBUG_LOG(m_logger) << "########### Operator Id = " << operatorId;
|
|
|
|
return bRet;
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::startTest()
|
|
{
|
|
INFO_LOG(m_logger) << "********* startTest **************";
|
|
switch (m_testId)
|
|
{
|
|
// folder
|
|
case 1:
|
|
tryCreateFolder();
|
|
break;
|
|
case 2:
|
|
tryModifyFolder();
|
|
break;
|
|
case 3:
|
|
tryRemoveFolder();
|
|
break;
|
|
// file content
|
|
case 11:
|
|
tryCreateFileContent();
|
|
break;
|
|
case 12:
|
|
tryModifyFileContent();
|
|
break;
|
|
case 13:
|
|
tryRemoveFileContent();
|
|
break;
|
|
case 14:
|
|
tryExportFileContent();
|
|
break;
|
|
case 15:
|
|
tryGetContent();
|
|
break;
|
|
case 16:
|
|
tryUpdateStatus();
|
|
break;
|
|
case 20:
|
|
tryGetAllTemplates();
|
|
break;
|
|
case 21:
|
|
tryGetAllPlans();
|
|
break;
|
|
case 22:
|
|
tryGetAllFavs();
|
|
break;
|
|
case 23:
|
|
tryGetAllSymbols();
|
|
break;
|
|
// plans
|
|
case 31:
|
|
tryCreatePlan();
|
|
break;
|
|
case 32:
|
|
tryCreateFav();
|
|
break;
|
|
case 33:
|
|
tryCreateSymbol();
|
|
break;
|
|
default:
|
|
ERROR_LOG(m_logger) << "Unknown test case !";
|
|
failExit();
|
|
break;
|
|
}
|
|
INFO_LOG(m_logger) << "********* endTest **************";
|
|
QTimer::singleShot(0, qApp, &QCoreApplication::quit);
|
|
}
|
|
|
|
|
|
// ************* FOLDER **********************************************************
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::tryCreateFolder()
|
|
{
|
|
INFO_LOG(m_logger) << "trying to send FolderCreateRequest";
|
|
|
|
int parentFolderId = m_folderId;
|
|
if (parentFolderId == 0)
|
|
parentFolderId = 1;
|
|
|
|
DEBUG_LOG(m_logger) << "Creating Folder under folder id = " << parentFolderId;
|
|
|
|
// Creating hidden folder
|
|
m_folderId = createFolder(parentFolderId, QStringLiteral("Test Folder"), true);
|
|
|
|
QTRY_VERIFY(m_folderId != 0);
|
|
|
|
parentFolderId = m_folderId;
|
|
m_folderId = 0;
|
|
|
|
DEBUG_LOG(m_logger) << "Creating Subfolder for folder id = " << parentFolderId;
|
|
|
|
m_folderId = createFolder(parentFolderId, QStringLiteral("Test Sub Folder"));
|
|
|
|
QTRY_VERIFY(m_folderId != 0);
|
|
|
|
QTimer::singleShot(0, qApp, &QCoreApplication::quit);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::tryModifyFolder()
|
|
{
|
|
INFO_LOG(m_logger) << "trying to send folder modify request ";
|
|
|
|
DEBUG_LOG(m_logger) << "m_folderId = " << m_folderId;
|
|
|
|
m_dtc->waitForHistoricalDataFolder();
|
|
const FileManagement::Folder &fld = m_dtc->folder(m_folderId);
|
|
FileManagement::FolderModifyRequest data;
|
|
|
|
DEBUG_LOG(m_logger) << "fld.id() = " << fld.id();
|
|
|
|
if (fld.id() == 0)
|
|
{
|
|
ERROR_LOG(m_logger) << "Cannot find Folder Id = " << m_folderId;
|
|
failExit();
|
|
}
|
|
else
|
|
{
|
|
m_folderId = 0;
|
|
data.id(fld.id());
|
|
data.name(fld.name());
|
|
data.path(fld.path());
|
|
data.isEditable(fld.isEditable());
|
|
data.isHidden(fld.isHidden());
|
|
data.parentId(fld.parentId());
|
|
data.operatorId(m_operatorId);
|
|
|
|
// changing only name
|
|
data.name("Folder-Updated");
|
|
|
|
if (!m_ftc->folderModifyRequest(FolderModifyRequest(data), this))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error requesting modify data";
|
|
failExit();
|
|
}
|
|
QTRY_VERIFY(m_folderId > 0);
|
|
}
|
|
|
|
QTimer::singleShot(0, qApp, &QCoreApplication::quit);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::tryRemoveFolder()
|
|
{
|
|
INFO_LOG(m_logger) << "trying to send FolderRemoveRequest ";
|
|
m_dtc->waitForHistoricalDataFolder();
|
|
if (!m_ftc->folderRemoveRequest(FolderRemoveRequest(m_folderId), this))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error requesting delete data";
|
|
failExit();
|
|
}
|
|
QTest::qWait(1000);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
int FlmTests::createFolder(int parentFolderId, const QString &folderName, bool isHidden)
|
|
{
|
|
FileManagement::Folder parentFolder = m_dtc->folder(parentFolderId);
|
|
const std::vector<int32_t> &parentPath = parentFolder.path();
|
|
|
|
FileManagement::FolderModifyRequest req;
|
|
req.name(folderName.toStdString());
|
|
req.path(parentPath);
|
|
req.isEditable(false);
|
|
req.isHidden(isHidden);
|
|
req.parentId(parentFolderId);
|
|
req.operatorId(m_operatorId);
|
|
|
|
if (!m_ftc->folderModifyRequest(req, this))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error creating folder with parent = " << parentFolderId << " and name = " << folderName ;
|
|
failExit();
|
|
}
|
|
|
|
return m_folderId;
|
|
}
|
|
|
|
|
|
//********************* FILE CONTENT ********************************************
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::tryCreateFileContent()
|
|
{
|
|
INFO_LOG(m_logger) << "trying to send file content create request ";
|
|
m_dtc->waitForHistoricalDataFileContent();
|
|
|
|
FileContentModifyRequest data;
|
|
|
|
data.name("Test Document");
|
|
data.isTemplate(false);
|
|
data.isUsedBy(false);
|
|
data.usedBy(0);
|
|
data.folderId(m_folderId);
|
|
data.fileStatus(FileManagement::FileStatus::Valid);
|
|
data.fileCategory(FileManagement::FileCategory::User); // user docs
|
|
data.fileType(FileManagement::FileType::MSOfficeDocument); // doc
|
|
data.operatorId(m_operatorId);
|
|
data.lastModified(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
QByteArray vmTest;
|
|
vmTest += "bla-bla-bla";
|
|
data.content(LtsUtils::convert<std::vector<uint8_t>>(vmTest));
|
|
|
|
m_fileContentId = 0;
|
|
if (!m_ftc->fileContentModifyRequest(data, this))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error requesting create data";
|
|
failExit();
|
|
}
|
|
QTRY_VERIFY(m_fileContentId > 0);
|
|
|
|
data.name("Test PDF");
|
|
data.isTemplate(false);
|
|
data.folderId(m_folderId);
|
|
data.fileStatus(FileManagement::FileStatus::Valid);
|
|
data.fileCategory(FileManagement::FileCategory::User); // user docs
|
|
data.fileType(FileManagement::FileType::Pdf); // pdf
|
|
data.operatorId(m_operatorId);
|
|
data.lastModified(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
vmTest += "\npdf-pdf-pdf";
|
|
data.content(LtsUtils::convert<std::vector<uint8_t>>(vmTest));
|
|
|
|
m_fileContentId = 0;
|
|
if (!m_ftc->fileContentModifyRequest(data, this))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error requesting create data";
|
|
failExit();
|
|
}
|
|
QTRY_VERIFY(m_fileContentId > 0);
|
|
|
|
data.name("Test JPG");
|
|
data.isTemplate(false);
|
|
data.folderId(m_folderId);
|
|
data.fileStatus(FileManagement::FileStatus::Valid);
|
|
data.fileCategory(FileManagement::FileCategory::User); // user docs
|
|
data.fileType(FileManagement::FileType::Jpg);
|
|
data.operatorId(m_operatorId);
|
|
data.lastModified(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
QString fileName = QLatin1String("/titel_logo_RDE.jpg");
|
|
QFile file;
|
|
file.setFileName(QCoreApplication::applicationDirPath()+fileName);
|
|
if (!file.open(QFile::ReadOnly))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error opening file " << fileName;
|
|
failExit();
|
|
}
|
|
QByteArray rawImage = file.readAll();
|
|
DEBUG_LOG(m_logger) << "Read file " << fileName;
|
|
file.close();
|
|
|
|
data.content(LtsUtils::convert<std::vector<uint8_t>>(rawImage));
|
|
|
|
m_fileContentId = 0;
|
|
if (!m_ftc->fileContentModifyRequest(data, this))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error requesting create data";
|
|
failExit();
|
|
}
|
|
QTRY_VERIFY(m_fileContentId > 0);
|
|
|
|
data.name("Test big JPG");
|
|
data.isTemplate(false);
|
|
data.folderId(m_folderId);
|
|
data.fileStatus(FileManagement::FileStatus::Valid);
|
|
data.fileCategory(FileManagement::FileCategory::User); // user docs
|
|
data.fileType(FileManagement::FileType::Jpg);
|
|
data.operatorId(m_operatorId);
|
|
data.lastModified(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
fileName = QLatin1String("/logo_Project.jpg");
|
|
file.setFileName(QCoreApplication::applicationDirPath()+fileName);
|
|
if (!file.open(QFile::ReadOnly))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error opening file " << fileName;
|
|
failExit();
|
|
}
|
|
rawImage = file.readAll();
|
|
DEBUG_LOG(m_logger) << "Read file " << fileName;
|
|
file.close();
|
|
|
|
data.content(LtsUtils::convert<std::vector<uint8_t>>(rawImage));
|
|
|
|
m_fileContentId = 0;
|
|
if (!m_ftc->fileContentModifyRequest(data, this))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error requesting create data";
|
|
failExit();
|
|
}
|
|
QTRY_VERIFY(m_fileContentId > 0);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::tryModifyFileContent()
|
|
{
|
|
INFO_LOG(m_logger) << "trying to send file content modify request ";
|
|
|
|
DEBUG_LOG(m_logger) << "m_fileContentId = " << m_fileContentId;
|
|
|
|
m_dtc->waitForHistoricalDataFileContent();
|
|
const FileManagement::FileContent &flc = m_dtc->fileContent(m_fileContentId);
|
|
FileManagement::FileContentModifyRequest data;
|
|
|
|
DEBUG_LOG(m_logger) << "flc.id() = " << flc.id();
|
|
|
|
if (flc.id() == 0)
|
|
{
|
|
ERROR_LOG(m_logger) << "Cannot find File Content Id = " << m_fileContentId;
|
|
failExit();
|
|
}
|
|
else
|
|
{
|
|
if (!checkContentSize(m_fileContentId))
|
|
{
|
|
ERROR_LOG(m_logger) << "Content size 0";
|
|
failExit();
|
|
}
|
|
|
|
DEBUG_LOG(m_logger) << "Content size = " << m_content.size();
|
|
|
|
data.id(flc.id());
|
|
data.name(flc.name());
|
|
if (flc.exerciseId().is_set())
|
|
{
|
|
data.exerciseId(flc.exerciseId().get());
|
|
if (flc.phaseId().is_set())
|
|
data.phaseId(flc.phaseId().get());
|
|
}
|
|
data.fileCategory(flc.fileCategory());
|
|
data.fileStatus(flc.fileStatus());
|
|
data.fileType(flc.fileType());
|
|
data.folderId(flc.folderId());
|
|
data.isTemplate(flc.isTemplate());
|
|
data.isUsedBy(flc.isUsedBy());
|
|
data.usedBy(flc.usedBy());
|
|
data.operatorId(flc.operatorId());
|
|
data.properties(flc.properties());
|
|
data.content(m_content);
|
|
|
|
// changing only name, template, last modified
|
|
data.name("Test File Content Updated");
|
|
data.isTemplate(true);
|
|
data.lastModified(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
if (!m_ftc->fileContentModifyRequest(FileContentModifyRequest(data), this))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error requesting modify data";
|
|
failExit();
|
|
}
|
|
|
|
QTest::qWait(1000);
|
|
}
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
bool FlmTests::checkContentSize(int fileId)
|
|
{
|
|
GetFileContentDataRequest request;
|
|
request.fileContentId(fileId);
|
|
|
|
m_content.clear();
|
|
if (!m_ftc->getFileContentDataRequest(request, this))
|
|
{
|
|
ERROR_LOG(m_logger) << "Cannot retrieve file content for id = " << fileId;
|
|
return false;
|
|
}
|
|
|
|
QTest::qWait(1000);
|
|
|
|
return (m_content.size() > 0);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::tryUpdateStatus()
|
|
{
|
|
INFO_LOG(m_logger) << "trying update status file content";
|
|
|
|
DEBUG_LOG(m_logger) << "m_fileContentId = " << m_fileContentId;
|
|
|
|
m_dtc->waitForHistoricalDataFileContent();
|
|
const FileManagement::FileContent &flc = m_dtc->fileContent(m_fileContentId);
|
|
|
|
DEBUG_LOG(m_logger) << "flc.id() = " << flc.id();
|
|
|
|
if (flc.id() == 0)
|
|
{
|
|
ERROR_LOG(m_logger) << "Cannot find File Content Id = " << m_fileContentId;
|
|
failExit();
|
|
}
|
|
else
|
|
{
|
|
if (!m_db->updateStatus(m_fileContentId, FileManagement::FileStatus::Deleted, m_operatorId))
|
|
{
|
|
ERROR_LOG(m_logger) << "Cannot update status for File Content Id = " << m_fileContentId;
|
|
failExit();
|
|
}
|
|
|
|
QTest::qWait(1000);
|
|
|
|
if (!checkContentSize(m_fileContentId))
|
|
{
|
|
ERROR_LOG(m_logger) << "Content size 0";
|
|
failExit();
|
|
}
|
|
|
|
QTest::qWait(1000);
|
|
}
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::tryRemoveFileContent()
|
|
{
|
|
INFO_LOG(m_logger) << "trying to send FileContentRemoveRequest ";
|
|
m_dtc->waitForHistoricalDataFileContent();
|
|
if (!m_ftc->fileContentRemoveRequest(FileContentRemoveRequest(m_fileContentId), this))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error requesting delete data";
|
|
failExit();
|
|
}
|
|
QTest::qWait(1000);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::tryExportFileContent()
|
|
{
|
|
INFO_LOG(m_logger) << "trying to send FileContentExportRequest ";
|
|
m_dtc->waitForHistoricalDataFileContent();
|
|
if (!m_ftc->fileContentExportRequest(FileContentExportRequest(m_fileContentId), this))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error requesting export data";
|
|
failExit();
|
|
}
|
|
|
|
QTest::qWait(1000);
|
|
|
|
if (!checkContentSize(m_fileContentId))
|
|
{
|
|
ERROR_LOG(m_logger) << "Content size 0";
|
|
failExit();
|
|
}
|
|
|
|
QTest::qWait(1000);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::tryCreatePlan()
|
|
{
|
|
INFO_LOG(m_logger) << "trying to send file content create request ";
|
|
|
|
FileContentModifyRequest data;
|
|
|
|
data.name("Test Plan");
|
|
data.isTemplate(false);
|
|
data.folderId(m_folderId);
|
|
data.fileStatus(FileManagement::FileStatus::Valid);
|
|
data.fileCategory(FileManagement::FileCategory::Global); // global
|
|
data.fileType(FileManagement::FileType::TacticalPlan); // plan
|
|
data.operatorId(m_operatorId);
|
|
data.lastModified(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
QByteArray vmTest;
|
|
vmTest += "bla-bla-bla";
|
|
data.content(LtsUtils::convert<std::vector<uint8_t>>(vmTest));
|
|
|
|
m_fileContentId = 0;
|
|
if (!m_ftc->fileContentModifyRequest(data, this))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error requesting create data";
|
|
failExit();
|
|
}
|
|
QTRY_VERIFY(m_fileContentId > 0);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::tryCreateFav()
|
|
{
|
|
INFO_LOG(m_logger) << "trying to send file content create request ";
|
|
|
|
FileContentModifyRequest data;
|
|
|
|
data.name("Test Fav");
|
|
data.isTemplate(false);
|
|
data.folderId(m_folderId);
|
|
data.fileStatus(FileManagement::FileStatus::Valid);
|
|
data.fileCategory(FileManagement::FileCategory::User); // user
|
|
data.fileType(FileManagement::FileType::OperatorFavourite); // fav
|
|
data.operatorId(m_operatorId);
|
|
data.lastModified(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
QByteArray vmTest;
|
|
vmTest += "bla-bla-bla";
|
|
data.content(LtsUtils::convert<std::vector<uint8_t>>(vmTest));
|
|
|
|
m_fileContentId = 0;
|
|
if (!m_ftc->fileContentModifyRequest(data, this))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error requesting create data";
|
|
failExit();
|
|
}
|
|
QTRY_VERIFY(m_fileContentId > 0);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::tryCreateSymbol()
|
|
{
|
|
INFO_LOG(m_logger) << "trying to send file content create request ";
|
|
|
|
FileContentModifyRequest data;
|
|
|
|
data.name("Test Symbol");
|
|
data.isTemplate(false);
|
|
data.folderId(m_folderId);
|
|
data.fileStatus(FileManagement::FileStatus::Valid);
|
|
data.fileCategory(FileManagement::FileCategory::Global); // global
|
|
data.fileType(FileManagement::FileType::OperatorDefinedSymbol);
|
|
data.operatorId(m_operatorId);
|
|
data.lastModified(QDateTime::currentMSecsSinceEpoch());
|
|
|
|
QByteArray vmTest;
|
|
vmTest += "bla-bla-bla";
|
|
data.content(LtsUtils::convert<std::vector<uint8_t>>(vmTest));
|
|
|
|
m_fileContentId = 0;
|
|
if (!m_ftc->fileContentModifyRequest(data, this))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error requesting create data";
|
|
failExit();
|
|
}
|
|
QTRY_VERIFY(m_fileContentId > 0);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::tryGetContent()
|
|
{
|
|
GetFileContentDataRequest request;
|
|
|
|
request.fileContentId(m_fileContentId);
|
|
INFO_LOG(m_logger) << "trying to send content request for file Id = " << m_fileContentId;
|
|
|
|
if (!m_ftc->getFileContentDataRequest(request, this))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error requesting content for id : " << m_fileContentId;
|
|
failExit();
|
|
}
|
|
QTRY_VERIFY(m_content.size() > 0);
|
|
DEBUG_LOG(m_logger) << "Got content size: " << m_content.size();
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::onGetFileContentDataReply(const GetFileContentDataReply &replyObject)
|
|
{
|
|
if (replyObject.errorString().size() > 0)
|
|
{
|
|
ERROR_LOG(m_logger) << "Got onGetFileContentDataReply error: " << replyObject.errorString();
|
|
failExit();
|
|
}
|
|
|
|
INFO_LOG(m_logger) << "Got reply with id " << replyObject.id()
|
|
<< " and errorString " << replyObject.errorString();
|
|
|
|
m_content = replyObject.content();
|
|
|
|
DEBUG_LOG(m_logger) << "Content size: " << m_content.size();
|
|
|
|
// QTimer::singleShot(0, qApp, &QCoreApplication::quit);
|
|
}
|
|
|
|
// ************* CUSTOM DTC's*****************************************************
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::tryGetAllTemplates()
|
|
{
|
|
INFO_LOG(m_logger) << "tryGetAllTemplates";
|
|
|
|
QList<FileContent> allTemplates;
|
|
m_dtc->waitForHistoricalDataFileContent();
|
|
if (!m_dtc->getAllTemplates(allTemplates))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error requesting dtc data";
|
|
failExit();
|
|
}
|
|
|
|
DEBUG_LOG(m_logger) << "Found " << allTemplates.size() << " templates";
|
|
for (const FileContent &fc : std::as_const(allTemplates))
|
|
DEBUG_LOG(m_logger) << "Found template (id, name) = (" << fc.id() << ", " << fc.name() << ")";
|
|
|
|
QTest::qWait(1000);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::tryGetAllPlans()
|
|
{
|
|
INFO_LOG(m_logger) << "tryGetAllPlans";
|
|
|
|
QStringList allPlans;
|
|
m_dtc->waitForHistoricalDataFileContent();
|
|
if (!m_dtc->getAllFiles(FileManagement::FileType::TacticalPlan, m_folderId, allPlans))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error requesting dtc data";
|
|
failExit();
|
|
}
|
|
|
|
DEBUG_LOG(m_logger) << "Found " << allPlans.size() << " plans";
|
|
for (const QString &plan : std::as_const(allPlans))
|
|
DEBUG_LOG(m_logger) << "Found plan = " << plan;
|
|
|
|
QTest::qWait(1000);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::tryGetAllFavs()
|
|
{
|
|
INFO_LOG(m_logger) << "tryGetAllFavs";
|
|
|
|
QStringList allFavs;
|
|
m_dtc->waitForHistoricalDataFileContent();
|
|
if (!m_dtc->getAllFiles(FileManagement::FileType::OperatorFavourite, m_folderId, allFavs))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error requesting dtc data";
|
|
failExit();
|
|
}
|
|
|
|
DEBUG_LOG(m_logger) << "Found " << allFavs.size() << " favs";
|
|
for (const QString &fav : std::as_const(allFavs))
|
|
DEBUG_LOG(m_logger) << "Found fav = " << fav;
|
|
|
|
QTest::qWait(1000);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::tryGetAllSymbols()
|
|
{
|
|
INFO_LOG(m_logger) << "tryGetAllSymbols";
|
|
|
|
QStringList allSymbols;
|
|
m_dtc->waitForHistoricalDataFileContent();
|
|
if (!m_dtc->getAllFiles(FileManagement::FileType::OperatorDefinedSymbol, m_folderId, allSymbols))
|
|
{
|
|
ERROR_LOG(m_logger) << "Error requesting dtc data";
|
|
failExit();
|
|
}
|
|
|
|
DEBUG_LOG(m_logger) << "Found " << allSymbols.size() << " symbols";
|
|
for (const QString &symbol : std::as_const(allSymbols))
|
|
DEBUG_LOG(m_logger) << "Found symbol = " << symbol;
|
|
|
|
QTest::qWait(1000);
|
|
}
|
|
|
|
//********************* GENERAL *************************************************
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::onError(const QString &reason)
|
|
{
|
|
ERROR_LOG(m_logger) << "Got Reply error: " << reason;
|
|
failExit();
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::onReply(const Core::FunctionReplyObject &replyObject)
|
|
{
|
|
if (replyObject.error())
|
|
{
|
|
onError(replyObject.translated());
|
|
return;
|
|
}
|
|
INFO_LOG(m_logger) << "Got Reply with id " << replyObject.id()
|
|
<< " and errorString " << replyObject.translated();
|
|
// QTimer::singleShot(0, qApp, &QCoreApplication::quit);
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------
|
|
void FlmTests::failExit()
|
|
{
|
|
ERROR_LOG(m_logger) << "FAIL EXIT !";
|
|
m_bTestsSuccessful = false;
|
|
QTimer::singleShot(0, qApp, &QCoreApplication::quit);
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
void FlmTests::onFolderModifyReply(const Core::FunctionReplyObject &replyObject)
|
|
{
|
|
if (replyObject.error())
|
|
{
|
|
ERROR_LOG(m_logger) << "Got onFolderModifyReply error: " << replyObject();
|
|
failExit();
|
|
return;
|
|
}
|
|
INFO_LOG(m_logger) << "Got modifyFolderReply with id " << replyObject.id()
|
|
<< " and errorString " << replyObject.translated();
|
|
m_folderId = replyObject.id();
|
|
}
|
|
|
|
//--------------------------------------------------------------------------
|
|
void FlmTests::onFileContentModifyReply(const Core::FunctionReplyObject &replyObject)
|
|
{
|
|
if (replyObject.error())
|
|
{
|
|
ERROR_LOG(m_logger) << "Got onFileContentModifyReply error: " << replyObject();
|
|
failExit();
|
|
return;
|
|
}
|
|
INFO_LOG(m_logger) << "Got modifyFileReply with id " << replyObject.id()
|
|
<< " and errorString " << replyObject.translated();
|
|
m_fileContentId = replyObject.id();
|
|
}
|
|
|
|
// ------------------------------------------------------------------
|
|
class CmdLineParser : public LtsCommandLineParser::LtsCommandLineParser
|
|
{
|
|
public:
|
|
CmdLineParser()
|
|
: LtsCommandLineParser()
|
|
{
|
|
addOption({ QStringList() << QLatin1String("t") << QLatin1String("testId")
|
|
, QLatin1String("TestId.")
|
|
, QLatin1String("Default: -1")
|
|
, QLatin1String("-1")
|
|
});
|
|
|
|
addOption({ QStringList() << QLatin1String("f") << QLatin1String("folderId")
|
|
, QLatin1String("FolderId.")
|
|
, QLatin1String("Default: 0 (root folder)")
|
|
, QLatin1String("-1")
|
|
});
|
|
|
|
addOption({ QStringList() << QLatin1String("c") << QLatin1String("fileContentId")
|
|
, QLatin1String("FileContentId.")
|
|
, QLatin1String("Default: -1")
|
|
, QLatin1String("-1")
|
|
});
|
|
|
|
addOption({ QStringList() << QLatin1String("o") << QLatin1String("operatorId")
|
|
, QLatin1String("OperatorId.")
|
|
, QLatin1String("Default: 99 (Organisator)")
|
|
, QLatin1String("-1")
|
|
});
|
|
}
|
|
|
|
int testId() const { return isSet(QLatin1String("t")) ? value(QLatin1String("t")).toInt() : -1; }
|
|
int folderId() const { return isSet(QLatin1String("f")) ? value(QLatin1String("f")).toInt() : 0; }
|
|
int fileContentId() const { return isSet(QLatin1String("c")) ? value(QLatin1String("c")).toInt() : -1; }
|
|
int operatorId() const { return isSet(QLatin1String("o")) ? value(QLatin1String("o")).toInt() : 99; }
|
|
};
|
|
|
|
// ------------------------------------------------------------------
|
|
int main(int argc, char **argv)
|
|
{
|
|
int iRet = -1;
|
|
|
|
NGLCoreApplication app(argc, argv);
|
|
app.createLogger("FLM", 0);
|
|
|
|
CmdLineParser options;
|
|
if (!options.init())
|
|
return iRet;
|
|
|
|
std::unique_ptr<FileManagement::FlmTests> FlmTests(new FileManagement::FlmTests());
|
|
|
|
if (!FlmTests->init(options.domainId(), options.testId(), options.folderId(), options.fileContentId(), options.operatorId()))
|
|
return iRet;
|
|
|
|
QTimer::singleShot(0, FlmTests.get(), &FileManagement::FlmTests::startTest);
|
|
|
|
STARTUP_LOG(app.baseLogger());
|
|
|
|
app.exec();
|
|
|
|
iRet = FlmTests->testsSuccessful() ? 0 : 1;
|
|
fprintf(stderr, "\n%d\n\n", iRet);
|
|
|
|
INFO_LOG(app.baseLogger()) << "** TEST result = " << iRet;
|
|
|
|
SHUTDOWN_LOG(app.baseLogger());
|
|
|
|
return iRet;
|
|
}
|