Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
+33
@@ -0,0 +1,33 @@
|
||||
#
|
||||
# $Id$
|
||||
# $HeadURL$
|
||||
# $Author$
|
||||
#
|
||||
|
||||
SET(SRCS_MRK_TEST
|
||||
evl_tests.cpp
|
||||
)
|
||||
SET(HDRS_MRK_TEST
|
||||
evl_tests.h
|
||||
)
|
||||
|
||||
IF(BUILD_TESTING)
|
||||
IF(TARGET svcEvlClient)
|
||||
|
||||
# Testing FunctionTopic Functionality (FTC)
|
||||
ADD_EXECUTABLE(evlTests ${SRCS_MRK_TEST} ${HDRS_MRK_TEST})
|
||||
TARGET_LINK_LIBRARIES(evlTests
|
||||
Qt5::Core
|
||||
Qt5::Test
|
||||
RTI::nddscpp2
|
||||
svcEvlClient
|
||||
LtsCommandLineParser
|
||||
ddsconnector
|
||||
nglcoreapplication
|
||||
)
|
||||
IF(NOT BUILD_RPM)
|
||||
NGL_INSTALL(AAR SV TARGETS evlTests DESTINATION bin/test)
|
||||
# NGL_INSTALL(AAR SV FILES ../log4cxx_evl.props DESTINATION bin/test)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
+867
@@ -0,0 +1,867 @@
|
||||
/**
|
||||
* Evl Function Topic test executable
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by hjl, SLSE, 2016-04-18
|
||||
*/
|
||||
#include "evl_tests.h"
|
||||
|
||||
#include <nglapplication/nglcoreapplication.h>
|
||||
#include <LtsCommandLineParser/LtsCommandLineParser.h>
|
||||
#include <QTimer>
|
||||
#include <QDateTime>
|
||||
#include <QString>
|
||||
#include <QVector>
|
||||
|
||||
#include <QJsonObject>
|
||||
#include <QJsonDocument>
|
||||
#include <QTest>
|
||||
|
||||
#include <Evaluations/evl_ftc.h>
|
||||
#include <Evaluations/evl_dtc.h>
|
||||
|
||||
#include "Evaluations/san_category_line_json.h"
|
||||
|
||||
using namespace Evaluations;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
EvlTests::EvlTests(QObject *parent)
|
||||
: QObject(parent)
|
||||
, m_logger(getLogger("EvlTests"))
|
||||
{
|
||||
qRegisterMetaType<Core::FunctionReply>("Core::FunctionReply");
|
||||
|
||||
// connect(m_dtc.get(), &Interface::Dtc::evaluationCriteriumChanged,
|
||||
// this, &EvlTests::onReceiveCriteriumChanged, Qt::UniqueConnection);
|
||||
|
||||
} // end of ctor()
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool EvlTests::init(int domainId, int exerciseId, int testId, int operatorId, int criteriumId, int elementId, int sanNineLinerId)
|
||||
{
|
||||
INFO_LOG(m_logger) << "EvlTests::init() "
|
||||
<< " domainId:" << domainId
|
||||
<< " exerciseId:" << exerciseId
|
||||
<< " testId: " << testId
|
||||
<< " criteriumId: " << criteriumId
|
||||
<< " sanNineLinerId: " << sanNineLinerId;
|
||||
|
||||
m_testId = testId;
|
||||
m_exerciseId = exerciseId;
|
||||
m_criteriumId = criteriumId;
|
||||
m_elementId = elementId;
|
||||
m_operatorId = operatorId;
|
||||
m_sanNineLinerId = sanNineLinerId;
|
||||
|
||||
DEBUG_LOG(m_logger) << "Operator Id = " << m_operatorId;
|
||||
|
||||
// initialize DDS
|
||||
m_ddsConnector.reset(new DDSConnector::DdsConnector(domainId, IDL::PartitionType::Exercise, exerciseId));
|
||||
if (!m_ddsConnector->init())
|
||||
return false;
|
||||
m_ddsConnector->initPublisherSubscriber();
|
||||
|
||||
// Access to FTC
|
||||
DEBUG_LOG(m_logger) << "create ftc";
|
||||
m_ftc = Evaluations::Interface::Ftc::create(m_ddsConnector);
|
||||
DEBUG_LOG(m_logger) << "init ftc";
|
||||
bool bRet = m_ftc->enableAll();
|
||||
DEBUG_LOG(m_logger) << "init end - bRet = " << bRet;
|
||||
|
||||
// Access to DTC
|
||||
DEBUG_LOG(m_logger) << "create dtc";
|
||||
m_dtc = Evaluations::Interface::Dtc::create(m_ddsConnector);
|
||||
DEBUG_LOG(m_logger) << "init dtc";
|
||||
bRet = m_dtc->enableAll();
|
||||
DEBUG_LOG(m_logger) << "init end - bRet = " << bRet;
|
||||
|
||||
return bRet;
|
||||
} // end of init()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::startTest()
|
||||
{
|
||||
INFO_LOG(m_logger) << "startTest() ******* "
|
||||
<< " exerciseId: " << m_exerciseId
|
||||
<< " testId: " << m_testId
|
||||
<< " criteriumId: " << m_criteriumId
|
||||
<< " operatorId: " << m_operatorId;
|
||||
|
||||
if (m_testId <= 1)
|
||||
QTimer::singleShot(0, this, &EvlTests::tryCreateCriterium);
|
||||
else if (m_testId == 2)
|
||||
QTimer::singleShot(0, this, &EvlTests::tryModifyCriterium);
|
||||
else if (m_testId == 3)
|
||||
QTimer::singleShot(0, this, &EvlTests::tryRemoveCriterium);
|
||||
else if (m_testId == 4)
|
||||
QTimer::singleShot(0, this, &EvlTests::tryCreateElement);
|
||||
else if (m_testId == 5)
|
||||
QTimer::singleShot(0, this, &EvlTests::tryModifyElement);
|
||||
else if (m_testId == 6)
|
||||
QTimer::singleShot(0, this, &EvlTests::tryRemoveElement);
|
||||
|
||||
else if (m_testId == 7)
|
||||
QTimer::singleShot(0, this, &EvlTests::tryCreateSanNineLiner);
|
||||
else if (m_testId == 8)
|
||||
QTimer::singleShot(0, this, &EvlTests::tryModifySanNineLiner);
|
||||
else if (m_testId == 9)
|
||||
QTimer::singleShot(0, this, &EvlTests::tryRemoveSanNineLiner);
|
||||
|
||||
|
||||
else if (m_testId == 10)
|
||||
QTimer::singleShot(0, this, &EvlTests::tryGetAllCriteria);
|
||||
else if (m_testId == 11)
|
||||
QTimer::singleShot(0, this, &EvlTests::tryGetCriterium);
|
||||
else if (m_testId == 12)
|
||||
QTimer::singleShot(0, this, &EvlTests::tryGetSanNineLiner);
|
||||
else
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Unknown test case !";
|
||||
failExit();
|
||||
}
|
||||
INFO_LOG(m_logger) << "endTest ******* ";
|
||||
QTimer::singleShot(0, qApp, QCoreApplication::quit);
|
||||
|
||||
} // end of startTest()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::tryCreateCriterium()
|
||||
{
|
||||
m_eTestStep = eCreateCriterium;
|
||||
EvlCriteriumModifyRequest data;
|
||||
|
||||
data.id(0); // id = 0 -> Create request
|
||||
data.name("Test Criterium");
|
||||
data.description("Test description");
|
||||
data.operatorId(m_operatorId);
|
||||
|
||||
INFO_LOG(m_logger) << "trying to send EvlCriteriumModifyRequest";
|
||||
if (!m_ftc->evlCriteriumModifyRequest(data, this))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error requesting create data";
|
||||
failExit();
|
||||
}
|
||||
QTest::qWait(1000);
|
||||
} // end of tryCreateCriterium()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::tryModifyCriterium()
|
||||
{
|
||||
m_eTestStep = eModifyCriterium;
|
||||
EvlCriteriumModifyRequest data;
|
||||
|
||||
data.id(m_criteriumId);
|
||||
data.name("Name criterium modified");
|
||||
data.description("Description modified");
|
||||
data.operatorId(m_operatorId);
|
||||
|
||||
INFO_LOG(m_logger) << "trying to send EvlCriteriumModifyRequest for criteriumId:" << data.id();
|
||||
if (!m_ftc->evlCriteriumModifyRequest(data, this))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error requesting modify data for criteriumId:" << data.id();
|
||||
failExit();
|
||||
}
|
||||
QTest::qWait(1000);
|
||||
} // end of tryModifyCriterium()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::tryRemoveCriterium()
|
||||
{
|
||||
m_eTestStep = eRemoveCriterium;
|
||||
EvlCriteriumRemoveRequest data;
|
||||
|
||||
data.id(m_criteriumId);
|
||||
|
||||
INFO_LOG(m_logger) << "trying to send remove request for criteriumId:" << data.id();
|
||||
if (!m_ftc->evlCriteriumRemoveRequest(data, this))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error requesting remove data for criteriumId:" << data.id();
|
||||
failExit();
|
||||
}
|
||||
QTest::qWait(1000);
|
||||
} // end of tryRemoveCriterum()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::tryGetAllCriteria()
|
||||
{
|
||||
m_eTestStep = eGetAllCriteria;
|
||||
DEBUG_LOG(m_logger) << "trying to get all criteria";
|
||||
|
||||
m_dtc->waitForHistoricalDataEvaluationCriterium(5000);
|
||||
m_criteriumId = -1;
|
||||
auto cb = [this] (const Evaluations::EvaluationCriterium &c)
|
||||
{
|
||||
m_criteriumId = c.id();
|
||||
INFO_LOG(m_logger) << "Evl(" << c.id() << ") :"
|
||||
<< " name:" << c.name()
|
||||
<< " desc:" << c.description()
|
||||
<< " operatorId:" << c.operatorId();
|
||||
};
|
||||
m_dtc->evaluationCriteriums(cb);
|
||||
if (m_criteriumId == -1)
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error requesting all criterium data";
|
||||
failExit();
|
||||
}
|
||||
QTimer::singleShot(0, qApp, &QCoreApplication::quit);
|
||||
} // end of tryGetAllCriteria()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::tryGetCriterium()
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "trying to get criterium with id:" << m_criteriumId;
|
||||
|
||||
if(m_testId > 1)
|
||||
{
|
||||
m_eTestStep = eGetCriterium;
|
||||
}
|
||||
|
||||
if (m_criteriumId <= 0)
|
||||
{
|
||||
ERROR_LOG(m_logger) << "invalid criteriumId - test aborted.";
|
||||
failExit();
|
||||
}
|
||||
|
||||
m_dtc->waitForHistoricalDataEvaluationCriterium(5000);
|
||||
Evaluations::EvaluationCriterium data = m_dtc->evaluationCriterium(m_criteriumId);
|
||||
|
||||
if (data.id() <= 0)
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error receiving data for criteriumId " << m_criteriumId << " returnVal: " << data.id();
|
||||
failExit();
|
||||
}
|
||||
else
|
||||
{
|
||||
INFO_LOG(m_logger) << "Evl(" << data.id() << ") :"
|
||||
<< " name:" << data.name()
|
||||
<< " desc:" << data.description()
|
||||
<< " operatorId:" << data.operatorId();
|
||||
}
|
||||
|
||||
if (m_testId == 0)
|
||||
{
|
||||
if (!onCompareCreatedData(data))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Compare created data failed!";
|
||||
failExit();
|
||||
}
|
||||
else
|
||||
{
|
||||
QTimer::singleShot(0, this, &EvlTests::tryModifyCriterium);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
QTimer::singleShot(0, qApp, QCoreApplication::quit);
|
||||
|
||||
} // end of tryGetCriterium()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::tryCreateElement()
|
||||
{
|
||||
m_eTestStep = eCreateElement;
|
||||
EvlElementModifyRequest data;
|
||||
|
||||
data.id(0);
|
||||
data.criteriumId(m_criteriumId);
|
||||
data.timestamp(QDateTime::currentMSecsSinceEpoch());
|
||||
data.note("Test test test");
|
||||
data.phaseId(1);
|
||||
data.rating(10);
|
||||
|
||||
QJsonObject obj;
|
||||
obj[QStringLiteral("actualStream")] = QJsonValue(QStringLiteral("av_0011"));
|
||||
obj[QStringLiteral("allStreams")] = QJsonValue(QStringLiteral("av_0011, av_0012, av_0013"));
|
||||
data.videoContent().set(QJsonDocument(obj).toJson().constData());
|
||||
|
||||
obj[QStringLiteral("actualStream")] = QJsonValue(QStringLiteral("vhf01"));
|
||||
obj[QStringLiteral("allStreams")] = QJsonValue(QStringLiteral("vhf01, hf01, hf02, vhf03"));
|
||||
data.audioContent().set(QJsonDocument(obj).toJson().constData());
|
||||
|
||||
INFO_LOG(m_logger) << "trying to send evlElementModifyRequest";
|
||||
if (!m_ftc->evlElementModifyRequest(data, this))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error requesting create data";
|
||||
failExit();
|
||||
}
|
||||
QTest::qWait(1000);
|
||||
} // end of tryCreateElement()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::tryModifyElement()
|
||||
{
|
||||
m_eTestStep = eModifyElement;
|
||||
EvlElementModifyRequest data;
|
||||
|
||||
data.id(m_elementId);
|
||||
data.criteriumId(m_criteriumId);
|
||||
data.timestamp(QDateTime::currentMSecsSinceEpoch());
|
||||
data.note("Test1 test2 test3");
|
||||
data.phaseId(2);
|
||||
data.rating(5);
|
||||
|
||||
QJsonObject obj;
|
||||
obj[QStringLiteral("actualStream")] = QJsonValue(QStringLiteral("av_0013"));
|
||||
obj[QStringLiteral("allStreams")] = QJsonValue(QStringLiteral("av_0011, av_0012, av_0013"));
|
||||
data.videoContent().set(QJsonDocument(obj).toJson().constData());
|
||||
|
||||
obj[QStringLiteral("actualStream")] = QJsonValue(QStringLiteral("hf01"));
|
||||
obj[QStringLiteral("allStreams")] = QJsonValue(QStringLiteral("vhf01, hf01, hf02, vhf03"));
|
||||
data.audioContent().set(QJsonDocument(obj).toJson().constData());
|
||||
|
||||
INFO_LOG(m_logger) << "trying to send evlElementModifyRequest for elementId:" << data.id();
|
||||
if (!m_ftc->evlElementModifyRequest(data, this))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error requesting modify data for snapshotId:" << data.id();
|
||||
failExit();
|
||||
}
|
||||
QTest::qWait(1000);
|
||||
} // end of tryModifyElement()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::tryRemoveElement()
|
||||
{
|
||||
m_eTestStep = eRemoveElement;
|
||||
EvlElementRemoveRequest data;
|
||||
|
||||
data.id(m_elementId);
|
||||
data.criteriumId(m_criteriumId);
|
||||
|
||||
INFO_LOG(m_logger) << "trying to send remove request for elementId:" << data.id();
|
||||
if (!m_ftc->evlElementRemoveRequest(data, this))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error requesting remove data for elementId:" << data.id();
|
||||
failExit();
|
||||
}
|
||||
QTest::qWait(1000);
|
||||
} // end of tryRemoveElement()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::tryCreateSanNineLiner()
|
||||
{
|
||||
m_eTestStep = eCreateSanNineLiner;
|
||||
SanNineLinerModifyRequest data;
|
||||
|
||||
data.id(0);
|
||||
data.lastModified(QDateTime::currentMSecsSinceEpoch());
|
||||
data.line1_position(Core::GeoPosition2D(0.100000, 0.2450000));
|
||||
data.line2_radioFrequencyCallSignSuffix("32.00 FM, Troublemaker");
|
||||
|
||||
Database::SanCategoryLine cl;
|
||||
std::vector<Database::SanCategoryLine> vecCl;
|
||||
|
||||
cl.line = 3;
|
||||
cl.amount = 1;
|
||||
cl.category = QStringLiteral("A");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.amount = 2;
|
||||
cl.category = QStringLiteral("B");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.amount = 1;
|
||||
cl.category = QStringLiteral("D");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.line = 4;
|
||||
cl.amount = 2;
|
||||
cl.category = QStringLiteral("D");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.line = 5;
|
||||
cl.amount = 2;
|
||||
cl.category = QStringLiteral("A");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.amount = 3;
|
||||
cl.category = QStringLiteral("B");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.line = 6;
|
||||
cl.category = QStringLiteral("D");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.line = 7;
|
||||
cl.category = QStringLiteral("C");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.line = 8;
|
||||
cl.amount = 2;
|
||||
cl.category = QStringLiteral("A");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.amount = 3;
|
||||
cl.category = QStringLiteral("C");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.line = 9;
|
||||
cl.category = QStringLiteral("None");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
QJsonDocument doc = SanCategoryLine::toJson(vecCl);
|
||||
data.lines(doc.toJson().toStdString());
|
||||
|
||||
INFO_LOG(m_logger) << "lines: " << data.lines();
|
||||
|
||||
INFO_LOG(m_logger) << "trying to send sanNineLinerRequest";
|
||||
if (!m_ftc->sanNineLinerModifyRequest(data, this))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error requesting create data";
|
||||
failExit();
|
||||
}
|
||||
QTest::qWait(1000);
|
||||
} // end of tryCreateElement()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::tryModifySanNineLiner()
|
||||
{
|
||||
m_eTestStep = eModifySanNineLiner;
|
||||
SanNineLinerModifyRequest data;
|
||||
|
||||
data.id(m_sanNineLinerId);
|
||||
data.lastModified(QDateTime::currentMSecsSinceEpoch());
|
||||
data.line1_position(Core::GeoPosition2D(0.200000, 0.4560000));
|
||||
data.line2_radioFrequencyCallSignSuffix("39.000 FM, Troublemaker");
|
||||
|
||||
Database::SanCategoryLine cl;
|
||||
std::vector<Database::SanCategoryLine> vecCl;
|
||||
|
||||
cl.line = 3;
|
||||
cl.amount = 2;
|
||||
cl.category = QStringLiteral("A");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.amount = 1;
|
||||
cl.category = QStringLiteral("B");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
|
||||
cl.line = 4;
|
||||
cl.amount = 1;
|
||||
cl.category = QStringLiteral("A");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.line = 5;
|
||||
cl.amount = 1;
|
||||
cl.category = QStringLiteral("A");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.amount = 1;
|
||||
cl.category = QStringLiteral("B");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.line = 6;
|
||||
cl.amount = 0;
|
||||
cl.category = QStringLiteral("D");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.line = 7;
|
||||
cl.category = QStringLiteral("C");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.line = 8;
|
||||
cl.amount = 1;
|
||||
cl.category = QStringLiteral("A");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.amount = 1;
|
||||
cl.category = QStringLiteral("C");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
cl.line = 9;
|
||||
cl.amount = 0;
|
||||
cl.category = QStringLiteral("None");
|
||||
vecCl.push_back(std::move(cl));
|
||||
|
||||
QJsonDocument doc = SanCategoryLine::toJson(vecCl);
|
||||
data.lines(doc.toJson().toStdString());
|
||||
|
||||
INFO_LOG(m_logger) << "lines: " << data.lines();
|
||||
|
||||
INFO_LOG(m_logger) << "trying to send sanNineLinerRequest";
|
||||
if (!m_ftc->sanNineLinerModifyRequest(data, this))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error requesting modify data";
|
||||
failExit();
|
||||
}
|
||||
QTest::qWait(1000);
|
||||
} // end of tryModifySanNineLiner()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::tryRemoveSanNineLiner()
|
||||
{
|
||||
m_eTestStep = eRemoveSanNineLiner;
|
||||
EvlCriteriumRemoveRequest data;
|
||||
|
||||
data.id(m_sanNineLinerId);
|
||||
|
||||
INFO_LOG(m_logger) << "trying to send remove request for sanNineLinerId:" << data.id();
|
||||
if (!m_ftc->sanNineLinerRemoveRequest(data, this))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error requesting remove data for sanNineLinerId:" << data.id();
|
||||
failExit();
|
||||
}
|
||||
QTest::qWait(1000);
|
||||
} // end of tryRemoveSanNineLiner()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::tryGetSanNineLiner()
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "trying to get sanNineLinerId with id:" << m_sanNineLinerId;
|
||||
|
||||
if(m_testId > 1)
|
||||
{
|
||||
m_eTestStep = eGetSanNineLiner;
|
||||
}
|
||||
|
||||
if (m_sanNineLinerId <= 0)
|
||||
{
|
||||
ERROR_LOG(m_logger) << "invalid sanNineLinerId - test aborted.";
|
||||
failExit();
|
||||
}
|
||||
|
||||
m_dtc->waitForHistoricalDataSanNineLiner(5000);
|
||||
Evaluations::SanNineLiner data = m_dtc->sanNineLiner(m_sanNineLinerId);
|
||||
|
||||
if (data.id() <= 0)
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error receiving data for sanNineLiner " << m_sanNineLinerId << " returnVal: " << data.id();
|
||||
failExit();
|
||||
}
|
||||
else
|
||||
{
|
||||
INFO_LOG(m_logger) << "SanNineLiner(" << data.id() << ") :"
|
||||
<< " lastModified: " << data.lastModified()
|
||||
<< " position lat: " << data.line1_position().lat()
|
||||
<< " position lon: " << data.line1_position().lon()
|
||||
<< " radiofreq, CallSign: " << data.line2_RadioFrequencyCallSignSuffix()
|
||||
<< " lines: " << data.lines();
|
||||
|
||||
}
|
||||
|
||||
if (m_testId == 0)
|
||||
{
|
||||
if (!onCompareCreatedData(data))
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Compare created data failed!";
|
||||
failExit();
|
||||
}
|
||||
else
|
||||
{
|
||||
QTimer::singleShot(0, this, &EvlTests::tryModifySanNineLiner);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
QTimer::singleShot(0, qApp, QCoreApplication::quit);
|
||||
|
||||
} // end of tryGetSanNineLiner()
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::onEvlCriteriumModifyReply(const Core::FunctionReplyObject &replyObject)
|
||||
{
|
||||
INFO_LOG(m_logger) << "Got onEvlCriteriumModifyReply with id " << replyObject.id()
|
||||
<< " and errorString " << replyObject.translated();
|
||||
|
||||
m_criteriumId = replyObject.id();
|
||||
|
||||
if (replyObject.error())
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error requesting create data";
|
||||
failExit();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "Requesting create data ok. Got new id:" << replyObject.id() << " ... ok.";
|
||||
}
|
||||
|
||||
QTimer::singleShot(0, this, &EvlTests::tryGetCriterium);
|
||||
} // end of onEvlCriteriumModifyReply()
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::onEvlCriteriumRemoveReply(const Core::FunctionReplyObject &replyObject)
|
||||
{
|
||||
INFO_LOG(m_logger) << "Got removeReply with id " << replyObject.id()
|
||||
<< " and errorString " << replyObject.translated();
|
||||
|
||||
if (replyObject.error())
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error requesting remove data for criteriumId:" << replyObject.id();
|
||||
failExit();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "Requesting remove data for criteriumd:" << replyObject.id() << " ... ok.";
|
||||
}
|
||||
|
||||
QTimer::singleShot(0, qApp, QCoreApplication::quit);
|
||||
|
||||
} // end of onEvlCriteriumRemoveReply()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::onEvlElementModifyReply(const Core::FunctionReplyObject &replyObject)
|
||||
{
|
||||
INFO_LOG(m_logger) << "Got modifyReply with id " << replyObject.id()
|
||||
<< " and errorString " << replyObject.translated();
|
||||
|
||||
m_elementId = replyObject.id();
|
||||
|
||||
if (replyObject.error())
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error requesting modify data";
|
||||
failExit();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "Requesting modify data ok. Got id:" << replyObject.id() << " ... ok.";
|
||||
}
|
||||
|
||||
QTimer::singleShot(0, qApp, &QCoreApplication::quit);
|
||||
|
||||
} // end of onEvlElementModifyReply()
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::onEvlElementRemoveReply(const Core::FunctionReplyObject &replyObject)
|
||||
{
|
||||
INFO_LOG(m_logger) << "Got removeReply with id " << replyObject.id()
|
||||
<< " and errorString " << replyObject.translated();
|
||||
|
||||
if (replyObject.error())
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error requesting remove data for elementId:" << replyObject.id();
|
||||
failExit();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "Requesting remove data for elementId:" << replyObject.id() << " ... ok.";
|
||||
}
|
||||
|
||||
QTimer::singleShot(0, qApp, &QCoreApplication::quit);
|
||||
|
||||
} // end of onEvlElementRemoveReplyF()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::onSanNineLinerModifyReply(const Core::FunctionReplyObject &replyObject)
|
||||
{
|
||||
INFO_LOG(m_logger) << "Got onSanNineLinerModifyReply with id " << replyObject.id()
|
||||
<< " and errorString " << replyObject.translated();
|
||||
|
||||
m_sanNineLinerId = replyObject.id();
|
||||
|
||||
if (replyObject.error())
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error requesting create data";
|
||||
failExit();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "Requesting create data ok. Got new id:" << replyObject.id() << " ... ok.";
|
||||
}
|
||||
|
||||
QTimer::singleShot(0, this, &EvlTests::tryGetSanNineLiner);
|
||||
} // end of onSanNineLinerModifyReply()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::onSanNineLinerRemoveReply(const Core::FunctionReplyObject &replyObject)
|
||||
{
|
||||
INFO_LOG(m_logger) << "Got removeReply with id " << replyObject.id()
|
||||
<< " and errorString " << replyObject.translated();
|
||||
|
||||
if (replyObject.error())
|
||||
{
|
||||
ERROR_LOG(m_logger) << "Error requesting remove data for sanNineLinerId:" << replyObject.id();
|
||||
failExit();
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "Requesting remove data for sanNineLinerId:" << replyObject.id() << " ... ok.";
|
||||
}
|
||||
|
||||
QTimer::singleShot(0, qApp, &QCoreApplication::quit);
|
||||
|
||||
} // end of onEvlElemonEvlElementRemoveReply()
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::onReceiveCriteriumChanged(const EvaluationCriterium &data, DataModification modType)
|
||||
{
|
||||
INFO_LOG(m_logger) << "onReceiveCriteriumChanged() criteriumId:" << data.id()
|
||||
<< " modificationType: = " << (int)modType<< " received";
|
||||
|
||||
switch (modType)
|
||||
{
|
||||
case DataModification::eAdded:
|
||||
INFO_LOG(m_logger) << "*** Criterium added received. criteriumId:" << data.id();
|
||||
break;
|
||||
|
||||
case DataModification::eModified:
|
||||
INFO_LOG(m_logger) << "*** Criterium modified received. criteriumId:" << data.id();
|
||||
break;
|
||||
|
||||
case DataModification::eRemoved:
|
||||
INFO_LOG(m_logger) << "*** Criterium removed received. criteriumId:" << data.id();
|
||||
break;
|
||||
}
|
||||
|
||||
} // end of onReceiveCriteriumChanged()
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::getCriteriumModifyRequestData(EvlCriteriumModifyRequest &data)
|
||||
{
|
||||
data.name("Name criterium modified");
|
||||
data.description("Description modified");
|
||||
data.operatorId(m_operatorId);
|
||||
|
||||
} // end of getCriteriumModifyRequestData()
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::getSanNineLinerModifyRequestData(SanNineLinerModifyRequest &data)
|
||||
{
|
||||
data.line1_position(Core::GeoPosition2D(0.200000, 0.4560000));
|
||||
data.line2_radioFrequencyCallSignSuffix("39.000 FM, Troublemaker");
|
||||
} // end of getNineLinerModifyRequestData()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool EvlTests::onCompareCreatedData(EvaluationCriterium &data)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "start onCompareCreatedData() for id :" << data.id();
|
||||
|
||||
// Vergleicht die zurueckgelesen Datan mit den statischen create Daten
|
||||
|
||||
EvlCriteriumModifyRequest createData;
|
||||
|
||||
getCriteriumModifyRequestData(createData);
|
||||
|
||||
if (createData.name() != data.name())
|
||||
return false;
|
||||
|
||||
if (createData.operatorId() != data.operatorId())
|
||||
return false;
|
||||
|
||||
if (createData.description() != data.description())
|
||||
return false;
|
||||
|
||||
|
||||
DEBUG_LOG(m_logger) << "successfully finished onCompareCreatedData() for id :" << data.id();
|
||||
|
||||
return true;
|
||||
} // end of onCompareCreatedData()
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
bool EvlTests::onCompareCreatedData(SanNineLiner &data)
|
||||
{
|
||||
DEBUG_LOG(m_logger) << "start onCompareCreatedData() for id :" << data.id();
|
||||
|
||||
SanNineLinerModifyRequest createData;
|
||||
|
||||
getSanNineLinerModifyRequestData(createData);
|
||||
|
||||
if (createData.line1_position() != data.line1_position())
|
||||
return false;
|
||||
|
||||
if (createData.line2_radioFrequencyCallSignSuffix() != data.line2_RadioFrequencyCallSignSuffix())
|
||||
return false;
|
||||
|
||||
DEBUG_LOG(m_logger) << "successfully finished onCompareCreatedData() for id :" << data.id();
|
||||
|
||||
return true;
|
||||
} // end of onCompareCreatedData()
|
||||
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
void EvlTests::failExit()
|
||||
{
|
||||
m_bTestsSuccessful = false;
|
||||
QTimer::singleShot(0, qApp, &QCoreApplication::quit);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
class CmdLineParser : public LtsCommandLineParser::LtsCommandLineParser
|
||||
{
|
||||
public:
|
||||
CmdLineParser()
|
||||
: LtsCommandLineParser()
|
||||
{
|
||||
addOption( { QStringList() << QLatin1String("t") << QLatin1String("testId")
|
||||
, QLatin1String("TestId.")
|
||||
, QLatin1String("Default: 0 (all FTC/DTC tests), 1 create, 2 modify, 3 remove, 10 getAllCriteria, 11 getCriterium")
|
||||
, QLatin1String("0")
|
||||
} );
|
||||
|
||||
addOption( { QStringList() << QLatin1String("o") << QLatin1String("operatorId")
|
||||
, QLatin1String("OperatorId.")
|
||||
, QLatin1String("Used in tests 1, 2.")
|
||||
, QLatin1String("0")
|
||||
} );
|
||||
|
||||
addOption( { QStringList() << QLatin1String("c") << QLatin1String("criteriumId")
|
||||
, QLatin1String("CriteriumId.")
|
||||
, QLatin1String("Used for tests 2, 3, 4, 5, 6 & 11 only to select the criterium")
|
||||
, QLatin1String("0")
|
||||
} );
|
||||
|
||||
addOption( { QStringList() << QLatin1String("l") << QLatin1String("elementId")
|
||||
, QLatin1String("ElementId.")
|
||||
, QLatin1String("Used for tests 4, 5 & 6 only to select the elementId")
|
||||
, QLatin1String("0")
|
||||
} );
|
||||
addOption( { QStringList() << QLatin1String("s") << QLatin1String("sanNineLinerId")
|
||||
, QLatin1String("SanNineLinerId.")
|
||||
, QLatin1String("Used for tests 7, 8 & 9 only to select the sanNineLinerId")
|
||||
, QLatin1String("0")
|
||||
} );
|
||||
}
|
||||
|
||||
int testId() const { return isSet(QLatin1String("t")) ? value(QLatin1String("t")).toInt() : -1; }
|
||||
int operatorId() const { return isSet(QLatin1String("o")) ? value(QLatin1String("o")).toInt() : -1; }
|
||||
int criteriumId() const { return isSet(QLatin1String("c")) ? value(QLatin1String("c")).toInt() : -1; }
|
||||
int elementId() const { return isSet(QLatin1String("l")) ? value(QLatin1String("l")).toInt() : -1; }
|
||||
int sanNineLinerId() const { return isSet(QLatin1String("s")) ? value(QLatin1String("s")).toInt() : -1; }
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
NGLCoreApplication app(argc, argv);
|
||||
|
||||
int iRet = -1;
|
||||
CmdLineParser options;
|
||||
if (!options.init())
|
||||
return iRet;
|
||||
|
||||
app.createLogger("EVL", options.exerciseId());
|
||||
|
||||
std::unique_ptr<Evaluations::EvlTests> EvlTests(new Evaluations::EvlTests);
|
||||
if(!EvlTests->init(options.domainId(), options.exerciseId(), options.testId(), options.operatorId(), options.criteriumId(), options.elementId(), options.sanNineLinerId() ))
|
||||
return iRet;
|
||||
|
||||
QTimer::singleShot(2000, EvlTests.get(), &Evaluations::EvlTests::startTest);
|
||||
|
||||
STARTUP_LOG(app.baseLogger());
|
||||
|
||||
app.exec();
|
||||
|
||||
iRet = EvlTests->testsSuccessful() ? 0 : 1;
|
||||
fprintf(stderr, "%d\n", iRet);
|
||||
|
||||
DEBUG_LOG(app.baseLogger()) << "** TEST result = " << iRet;
|
||||
|
||||
SHUTDOWN_LOG(app.baseLogger());
|
||||
|
||||
return iRet;
|
||||
}
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
*
|
||||
* EXM Function Topic test executable
|
||||
*
|
||||
* ModuleTests for create/modify/remove marker
|
||||
* ---------------------------------------------------
|
||||
* Client FTC is implemented
|
||||
*
|
||||
* => (!) Preconditon:
|
||||
* - Service svcMarkerManagent running
|
||||
*
|
||||
* -------------------------------------------------
|
||||
*
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by hjl, SLSE, 2016-04-18
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <Evaluations/evl_ftc.h>
|
||||
#include <Evaluations/evl_ftc_types.h>
|
||||
#include <Evaluations/evl_dtc.h>
|
||||
#include <Evaluations/evl_dtc_types.h>
|
||||
#include <Evaluations/logger.h>
|
||||
|
||||
#include <DDS/DDSConnector/dds_connector.h>
|
||||
|
||||
namespace Evaluations
|
||||
{
|
||||
class EvlTests : public QObject
|
||||
, protected Evaluations::Interface::Ftc::EvlCriteriumModifyReplyHandler
|
||||
, protected Evaluations::Interface::Ftc::EvlCriteriumRemoveReplyHandler
|
||||
, protected Evaluations::Interface::Ftc::EvlElementModifyReplyHandler
|
||||
, protected Evaluations::Interface::Ftc::EvlElementRemoveReplyHandler
|
||||
, protected Evaluations::Interface::Ftc::SanNineLinerModifyReplyHandler
|
||||
, protected Evaluations::Interface::Ftc::SanNineLinerRemoveReplyHandler
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit EvlTests(QObject *parent = nullptr);
|
||||
~EvlTests() = default;
|
||||
|
||||
bool init(int domainId, int exerciseId, int testId, int operatorId, int criteriumId, int elementId, int sanNineLinerId);
|
||||
bool testsSuccessful() const { return m_bTestsSuccessful; }
|
||||
|
||||
public Q_SLOTS:
|
||||
void startTest();
|
||||
|
||||
protected Q_SLOTS:
|
||||
// used to check FTC
|
||||
void tryCreateCriterium();
|
||||
void tryModifyCriterium();
|
||||
void tryRemoveCriterium();
|
||||
|
||||
void tryCreateElement();
|
||||
void tryModifyElement();
|
||||
void tryRemoveElement();
|
||||
|
||||
// used to check DTC
|
||||
void tryGetAllCriteria();
|
||||
void tryGetCriterium();
|
||||
void tryGetSanNineLiner();
|
||||
|
||||
void tryCreateSanNineLiner();
|
||||
void tryModifySanNineLiner();
|
||||
void tryRemoveSanNineLiner();
|
||||
|
||||
// used to check DTC signal/slot connection
|
||||
void onReceiveCriteriumChanged(const EvaluationCriterium &data, DataModification modType);
|
||||
|
||||
protected:
|
||||
// Callbackfunctions for FTC
|
||||
void onEvlCriteriumModifyReply(const Core::FunctionReplyObject &replyObject) override final;
|
||||
void onEvlCriteriumRemoveReply(const Core::FunctionReplyObject &replyObject) override final;
|
||||
|
||||
void onEvlElementModifyReply(const Core::FunctionReplyObject &replyObject) override final;
|
||||
void onEvlElementRemoveReply(const Core::FunctionReplyObject &replyObject) override final;
|
||||
|
||||
void onSanNineLinerModifyReply(const Core::FunctionReplyObject &replyObject) override final;
|
||||
void onSanNineLinerRemoveReply(const Core::FunctionReplyObject &replyObject) override final;
|
||||
|
||||
private Q_SLOTS:
|
||||
bool onCompareCreatedData(EvaluationCriterium &data);
|
||||
bool onCompareCreatedData(SanNineLiner &data);
|
||||
|
||||
private:
|
||||
void getCriteriumModifyRequestData(EvlCriteriumModifyRequest &data);
|
||||
void getSanNineLinerModifyRequestData(SanNineLinerModifyRequest &data);
|
||||
void failExit();
|
||||
|
||||
private:
|
||||
std::shared_ptr<DDSConnector::DdsConnector> m_ddsConnector;
|
||||
std::shared_ptr<Evaluations::Interface::Ftc> m_ftc;
|
||||
std::shared_ptr<Evaluations::Interface::Dtc> m_dtc;
|
||||
|
||||
int m_exerciseId = 0;
|
||||
int m_testId = 0;
|
||||
int m_operatorId = 0;
|
||||
int m_criteriumId = 0;
|
||||
int m_elementId = 0;
|
||||
int m_sanNineLinerId = 0;
|
||||
|
||||
enum TestStep
|
||||
{
|
||||
eUnknown,
|
||||
eCreateCriterium,
|
||||
eModifyCriterium,
|
||||
eRemoveCriterium,
|
||||
eGetAllCriteria,
|
||||
eGetCriterium,
|
||||
eCreateElement,
|
||||
eModifyElement,
|
||||
eRemoveElement,
|
||||
eCreateSanNineLiner,
|
||||
eModifySanNineLiner,
|
||||
eRemoveSanNineLiner,
|
||||
eGetSanNineLiner
|
||||
}
|
||||
m_eTestStep = eUnknown;
|
||||
|
||||
bool m_bTestsSuccessful = true;
|
||||
NGL::INGLLogger &m_logger;
|
||||
|
||||
};
|
||||
|
||||
} // namespace Evaluations
|
||||
Reference in new issue
Block a user