1#include "testengine.hpp"
3#include "testengine_p.h"
9TestEngine::TestEngine(
Application *app,
const QVariantMap &opts)
14int TestEngine::workerId()
const
19TestEngine::TestResponse TestEngine::createRequest(
const QByteArray &method,
20 const QByteArray &path,
21 const QByteArray &query,
25 QIODevice *bodyDevice =
nullptr;
26 if (headers.
header(
"Sequential"_qba).isEmpty()) {
27 bodyDevice =
new QBuffer(body);
29 bodyDevice =
new SequentialBuffer(body);
31 bodyDevice->open(QIODevice::ReadOnly);
34 if (bodyDevice->size()) {
38 TestEngineConnection req;
40 QByteArray _path = path;
43 req.protocol =
"HTTP/1.1"_qba;
45 req.serverAddress =
"127.0.0.1"_qba;
46 req.remoteAddress = QHostAddress(u
"127.0.0.1"_qs);
47 req.remotePort = 3000;
48 req.remoteUser = QString{};
49 req.headers = headersCL;
50 req.startOfRequest = std::chrono::steady_clock::now();
51 req.body = bodyDevice;
53 Q_EMIT processRequestAsync(&req);
56 req.m_eventLoop.exec();
59 ret.body = req.m_responseData;
60 ret.statusCode = req.m_statusCode;
61 ret.headers = req.m_headers;
66TestEngine::TestResponse TestEngine::createRequest(
const QByteArray &method,
68 const QByteArray &query,
72 return createRequest(method, path.toLatin1(), query, headers, body);
75bool TestEngine::init()
77 return initApplication() && postForkApplication();
80SequentialBuffer::SequentialBuffer(QByteArray *buffer)
85bool SequentialBuffer::isSequential()
const
90qint64 SequentialBuffer::bytesAvailable()
const
92 return buf->size() + QIODevice::bytesAvailable();
95qint64 SequentialBuffer::readData(
char *data, qint64 maxlen)
97 QByteArray mid = buf->mid(pos(), maxlen);
98 memcpy(data, mid.data(), mid.size());
100 buf->remove(0, mid.size());
104qint64 SequentialBuffer::writeData(
const char *data, qint64 len)
111qint64 TestEngineConnection::doWrite(
const char *data, qint64 len)
113 m_responseData.append(data, len);
117bool TestEngineConnection::writeHeaders(quint16 status,
const Headers &headers)
119 m_statusCode = status;
125void TestEngineConnection::processingFinished()
130#include "moc_testengine.cpp"
The Cutelyst application.
The Cutelyst namespace holds all public Cutelyst API.