mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-19 20:25:29 +08:00
Ref T150, Ref T156 unit test for connectivity, watchdog etc.
This commit is contained in:
committed by
Mathew Sutcliffe
parent
155d436788
commit
1aa842ad5a
@@ -17,8 +17,9 @@
|
|||||||
#include "testblackcoremain.h"
|
#include "testblackcoremain.h"
|
||||||
#include "blackcore/application.h"
|
#include "blackcore/application.h"
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QtGlobal>
|
#include <QDebug>
|
||||||
|
|
||||||
|
using namespace BlackCore;
|
||||||
using namespace BlackCoreTest;
|
using namespace BlackCoreTest;
|
||||||
|
|
||||||
//! Starter for test cases
|
//! Starter for test cases
|
||||||
@@ -26,14 +27,18 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
QCoreApplication qa(argc, argv);
|
QCoreApplication qa(argc, argv);
|
||||||
Q_UNUSED(qa);
|
Q_UNUSED(qa);
|
||||||
BlackCore::CApplication a;
|
CApplication a;
|
||||||
a.addVatlibOptions();
|
a.addVatlibOptions();
|
||||||
|
const bool setup = a.parseAndSynchronizeSetup();
|
||||||
|
if (!setup) { qWarning() << "No setup loaded"; }
|
||||||
if (!a.start())
|
if (!a.start())
|
||||||
{
|
{
|
||||||
a.gracefulShutdown();
|
a.gracefulShutdown();
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
}
|
}
|
||||||
return CBlackCoreTestMain::unitMain(argc, argv);
|
const int r = CBlackCoreTestMain::unitMain(argc, argv);
|
||||||
|
a.gracefulShutdown();
|
||||||
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
//! \endcond
|
//! \endcond
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
#include "testnetwork.h"
|
#include "testnetwork.h"
|
||||||
#include "testreaders.h"
|
#include "testreaders.h"
|
||||||
#include "testcontext.h"
|
#include "testcontext.h"
|
||||||
|
#include "testconnectivity.h"
|
||||||
#include "blackmisc/test/test.h"
|
#include "blackmisc/test/test.h"
|
||||||
#include <QStringList>
|
#include <QStringList>
|
||||||
#include <QtTest>
|
#include <QtTest>
|
||||||
@@ -28,6 +29,10 @@ namespace BlackCoreTest
|
|||||||
{
|
{
|
||||||
BlackMisc::Test::CTest test(argc, argv);
|
BlackMisc::Test::CTest test(argc, argv);
|
||||||
int status = 0;
|
int status = 0;
|
||||||
|
{
|
||||||
|
CTestConnectivity connectivityTest;
|
||||||
|
status |= test.exec(&connectivityTest, "blackcore_network");
|
||||||
|
}
|
||||||
{
|
{
|
||||||
CTestContext contextTests;
|
CTestContext contextTests;
|
||||||
status |= test.exec(&contextTests, "blackcore_context");
|
status |= test.exec(&contextTests, "blackcore_context");
|
||||||
|
|||||||
94
tests/blackcore/testconnectivity.cpp
Normal file
94
tests/blackcore/testconnectivity.cpp
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
/* Copyright (C) 2017
|
||||||
|
* swift project Community / Contributors
|
||||||
|
*
|
||||||
|
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
||||||
|
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
|
||||||
|
* including this file, may be copied, modified, propagated, or distributed except according to the terms
|
||||||
|
* contained in the LICENSE file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
//! \cond PRIVATE_TESTS
|
||||||
|
//! \file
|
||||||
|
//! \ingroup testblackcore
|
||||||
|
|
||||||
|
#include "testconnectivity.h"
|
||||||
|
#include "blackcore/application.h"
|
||||||
|
#include <QDateTime>
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QTest>
|
||||||
|
#include <QString>
|
||||||
|
#include <QtDebug>
|
||||||
|
|
||||||
|
using namespace BlackCore;
|
||||||
|
using namespace BlackMisc::Network;
|
||||||
|
|
||||||
|
namespace BlackCoreTest
|
||||||
|
{
|
||||||
|
CTestConnectivity::CTestConnectivity(QObject *parent) :
|
||||||
|
QObject(parent)
|
||||||
|
{ }
|
||||||
|
|
||||||
|
CTestConnectivity::~CTestConnectivity()
|
||||||
|
{ }
|
||||||
|
|
||||||
|
void CTestConnectivity::initTestCase()
|
||||||
|
{
|
||||||
|
QVERIFY2(sApp, "sApp not available");
|
||||||
|
QVERIFY2(sApp->getNetworkWatchdog(), "No network watchdog");
|
||||||
|
|
||||||
|
const int n = sApp->triggerNetworkChecks();
|
||||||
|
QVERIFY2(n >= 0, "Cannot trigger setup reader");
|
||||||
|
m_networkCheckCount = n;
|
||||||
|
qDebug() << "Initial network check count:" << n;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CTestConnectivity::checkSetupReader()
|
||||||
|
{
|
||||||
|
if (!sApp->hasSetupReader()) { QSKIP("Cannot load bootstrap file, skip unit test"); }
|
||||||
|
}
|
||||||
|
|
||||||
|
void CTestConnectivity::connectServer()
|
||||||
|
{
|
||||||
|
if (!sApp->hasSetupReader()) { QSKIP("Cannot load bootstrap file, skip unit test"); }
|
||||||
|
const CUrl url = sApp->getGlobalSetup().getDbHomePageUrl();
|
||||||
|
QTime timer;
|
||||||
|
timer.start();
|
||||||
|
constexpr int max = 5;
|
||||||
|
for (int i = 0; i < max; i++)
|
||||||
|
{
|
||||||
|
bool ok = CNetworkUtils::canConnect(url, CNetworkUtils::getLongTimeoutMs());
|
||||||
|
if (!ok) { QSKIP(qPrintable("Cannot connect " + url.getFullUrl())); }
|
||||||
|
}
|
||||||
|
int elapsedMs = timer.elapsed();
|
||||||
|
qDebug() << "Completed" << max << "connection tests in" << elapsedMs << "ms to" << url.getFullUrl();
|
||||||
|
QVERIFY2(true, "connectServer");
|
||||||
|
}
|
||||||
|
|
||||||
|
void CTestConnectivity::pingServer()
|
||||||
|
{
|
||||||
|
if (!sApp->hasSetupReader()) { QSKIP("Cannot load bootstrap file, skip unit test"); }
|
||||||
|
const CUrl url = sApp->getGlobalSetup().getDbHomePageUrl();
|
||||||
|
const QString host(url.getHost());
|
||||||
|
QTime timer;
|
||||||
|
timer.start();
|
||||||
|
constexpr int max = 5;
|
||||||
|
for (int i = 0; i < max; i++)
|
||||||
|
{
|
||||||
|
bool ok = CNetworkUtils::canPing(host);
|
||||||
|
if (!ok) { QSKIP(qPrintable("Cannot ping " + url.getFullUrl())); }
|
||||||
|
}
|
||||||
|
int elapsedMs = timer.elapsed();
|
||||||
|
qDebug() << "Completed" << max << "ping tests in" << elapsedMs << "ms to" << url.getFullUrl();
|
||||||
|
QVERIFY2(true, "pingServer");
|
||||||
|
}
|
||||||
|
|
||||||
|
void CTestConnectivity::testNetworkWatchdog()
|
||||||
|
{
|
||||||
|
QVERIFY2(sApp->getNetworkWatchdog(), "No network watchdog");
|
||||||
|
QTRY_VERIFY2_WITH_TIMEOUT(sApp->isSwiftDbAccessible(), "Watchdog cannot connect db", 20000);
|
||||||
|
QTRY_VERIFY2_WITH_TIMEOUT(sApp->getNetworkWatchdog()->getCheckCount() >= m_networkCheckCount + 1, "Timeout of network check", 30000);
|
||||||
|
qDebug() << "Current network check count:" << sApp->getNetworkWatchdog()->getCheckCount();
|
||||||
|
}
|
||||||
|
} // ns
|
||||||
|
|
||||||
|
//! \endcond
|
||||||
63
tests/blackcore/testconnectivity.h
Normal file
63
tests/blackcore/testconnectivity.h
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
/* Copyright (C) 2017
|
||||||
|
* swift project community / contributors
|
||||||
|
*
|
||||||
|
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
|
||||||
|
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
|
||||||
|
* including this file, may be copied, modified, propagated, or distributed except according to the terms
|
||||||
|
* contained in the LICENSE file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BLACKCORETEST_TESTCONNECTIVITY_H
|
||||||
|
#define BLACKCORETEST_TESTCONNECTIVITY_H
|
||||||
|
|
||||||
|
//! \cond PRIVATE_TESTS
|
||||||
|
//! \file
|
||||||
|
//! \ingroup testblackcore
|
||||||
|
|
||||||
|
#include "blackcore/db/networkwatchdog.h"
|
||||||
|
#include "blackcore/setupreader.h"
|
||||||
|
#include "blackmisc/network/networkutils.h"
|
||||||
|
#include "blackmisc/statusmessagelist.h"
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
namespace BlackCoreTest
|
||||||
|
{
|
||||||
|
/*!
|
||||||
|
* Test connectivity such as \c canConnect \c ping and
|
||||||
|
* BlackCore::Db::CNetworkWatchdog
|
||||||
|
*/
|
||||||
|
class CTestConnectivity : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
//! Constructor.
|
||||||
|
explicit CTestConnectivity(QObject *parent = nullptr);
|
||||||
|
|
||||||
|
//! Destructor
|
||||||
|
virtual ~CTestConnectivity();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
//! Init
|
||||||
|
void initTestCase();
|
||||||
|
|
||||||
|
//! Setup reader
|
||||||
|
void checkSetupReader();
|
||||||
|
|
||||||
|
//! Connecting test server
|
||||||
|
void connectServer();
|
||||||
|
|
||||||
|
//! ping test server
|
||||||
|
void pingServer();
|
||||||
|
|
||||||
|
//! Test the watchdog BlackCore::Db::CNetworkWatchdog
|
||||||
|
void testNetworkWatchdog();
|
||||||
|
|
||||||
|
private:
|
||||||
|
int m_networkCheckCount = -1;
|
||||||
|
};
|
||||||
|
} //namespace
|
||||||
|
|
||||||
|
//! \endcond
|
||||||
|
|
||||||
|
#endif // guard
|
||||||
Reference in New Issue
Block a user