Skip to content

Commit 617d4b9

Browse files
author
Evgeny Prikhodko
committed
TCP read/write test improved
1 parent 8683fd5 commit 617d4b9

File tree

2 files changed

+33
-16
lines changed

2 files changed

+33
-16
lines changed

tests/tcp_read_write_test.cpp

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
#include "tcp_read_write_test.h"
2-
#include "factory.h"
32

43
void libmodbus_cpp::TcpReadWriteTest::initTestCase()
54
{
6-
// m_slaveBackend = new libmodbus_cpp::SlaveTcpBackend("127.0.0.1", 1502);
7-
// m_slaveBackend->initMap(TABLE_SIZE, TABLE_SIZE, TABLE_SIZE, TABLE_SIZE);
8-
// m_slave = new libmodbus_cpp::SlaveTcp(m_slaveBackend);
9-
10-
// m_masterBackend = new libmodbus_cpp::MasterTcpBackend("127.0.0.1", 1502);
11-
// m_master = new libmodbus_cpp::MasterTcp(m_masterBackend);
12-
m_master = Factory::createTcpMaster("127.0.0.1", 1502);
5+
m_serverStarter.reset(new ServerStarter);
6+
QThreadPool::globalInstance()->start(m_serverStarter.data());
7+
while (!m_serverStarter->isReady())
8+
QThread::msleep(50);
9+
m_master.reset(Factory::createTcpMaster("127.0.0.1", 1502));
1310
}
1411

1512
void libmodbus_cpp::TcpReadWriteTest::testConnection()
@@ -270,15 +267,10 @@ void libmodbus_cpp::TcpReadWriteTest::writeReadHoldingRegisters_double()
270267

271268
void libmodbus_cpp::TcpReadWriteTest::cleanupTestCase()
272269
{
273-
delete m_master;
274-
// delete m_slave;
275270
}
276271

277272
void libmodbus_cpp::TcpReadWriteTest::connect()
278273
{
279-
// bool serverSocketCreated = m_slaveBackend->startListen(1);
280-
// QCOMPARE(serverSocketCreated, true);
281-
282274
bool masterConnected = m_master->connect();
283275
QCOMPARE(masterConnected, true);
284276
}

tests/tcp_read_write_test.h

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,43 @@
33

44
#include <QObject>
55
#include <QtTest/QtTest>
6+
#include <atomic>
7+
#include <QThreadPool>
8+
9+
#include "factory.h"
610
#include "slave_tcp.h"
711
#include "master_tcp.h"
812

13+
class ServerStarter : public QRunnable {
14+
std::atomic_bool m_ready { false };
15+
public:
16+
void run() {
17+
using namespace libmodbus_cpp;
18+
QScopedPointer<SlaveTcp> s(Factory::createTcpSlave("127.0.0.1", 1502));
19+
s->initMap(64, 64, 64, 64);
20+
for (int i = 0; i < 64; ++i) {
21+
s->setValueToCoil(i, (bool)(i & 1));
22+
s->setValueToDiscreteInput(i, !(bool)(i & 1));
23+
s->setValueToHoldingRegister(i, (uint16_t)1);
24+
s->setValueToInputRegister(i, (uint16_t)1);
25+
}
26+
s->startListen(10);
27+
m_ready = true;
28+
QEventLoop().exec();
29+
}
30+
bool isReady() const {
31+
return m_ready;
32+
}
33+
};
34+
935
namespace libmodbus_cpp {
1036

1137
class TcpReadWriteTest : public QObject
1238
{
1339
Q_OBJECT
1440
static const int TABLE_SIZE = 64;
15-
// libmodbus_cpp::SlaveTcpBackend *m_slaveBackend = Q_NULLPTR;
16-
// libmodbus_cpp::SlaveTcp *m_slave = Q_NULLPTR;
17-
libmodbus_cpp::MasterTcp *m_master = Q_NULLPTR;
41+
QScopedPointer<ServerStarter> m_serverStarter;
42+
QScopedPointer<libmodbus_cpp::MasterTcp> m_master;
1843

1944
private slots:
2045
void initTestCase();

0 commit comments

Comments
 (0)