mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-31 14:05:33 +00:00
[1924] Get rid of IO test code
It isn't used any more and it is complicated, so remove it.
This commit is contained in:
@@ -29,14 +29,12 @@
|
|||||||
#include <exceptions/exceptions.h>
|
#include <exceptions/exceptions.h>
|
||||||
|
|
||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
|
||||||
#include <list>
|
#include <list>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
using namespace isc::cc;
|
using namespace isc::cc;
|
||||||
using std::pair;
|
using std::pair;
|
||||||
using std::vector;
|
|
||||||
using std::list;
|
using std::list;
|
||||||
using std::string;
|
using std::string;
|
||||||
using isc::data::ConstElementPtr;
|
using isc::data::ConstElementPtr;
|
||||||
@@ -66,9 +64,6 @@ TEST(AsioSession, establish) {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// \brief Pair holding header and data of a message sent over the wire.
|
|
||||||
typedef pair<ConstElementPtr, ConstElementPtr> SentMessage;
|
|
||||||
|
|
||||||
// This class sets up a domain socket for the session to connect to
|
// This class sets up a domain socket for the session to connect to
|
||||||
// it will impersonate the msgq a tiny bit (if setSendLname() has
|
// it will impersonate the msgq a tiny bit (if setSendLname() has
|
||||||
// been called, it will send an 'answer' to the lname query that is
|
// been called, it will send an 'answer' to the lname query that is
|
||||||
@@ -111,53 +106,6 @@ public:
|
|||||||
socket_.send(asio::buffer(body_wire.data(), body_wire.length()));
|
socket_.send(asio::buffer(body_wire.data(), body_wire.length()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// \brief Read a message from the socket
|
|
||||||
///
|
|
||||||
/// Read a message from the socket and parse it. Block until it is
|
|
||||||
/// read or error happens. If error happens, it asio::system_error.
|
|
||||||
///
|
|
||||||
/// This method would block for ever if the sender is not sending.
|
|
||||||
/// But the whole test has a timeout of 10 seconds (see the
|
|
||||||
/// SessionTest::SetUp and SessionTest::TearDown).
|
|
||||||
///
|
|
||||||
/// \note The method assumes the wire data are correct and does not check
|
|
||||||
/// it. Strange things might happen if it is not the case, but the
|
|
||||||
/// test would likely fail as a result, so we prefer simplicity here.
|
|
||||||
///
|
|
||||||
/// \return Pair containing the header and body elements (in this order).
|
|
||||||
SentMessage readmsg() {
|
|
||||||
// The format is:
|
|
||||||
// <uint32_t in net order = total length>
|
|
||||||
// <uint16_t in net order = header length>
|
|
||||||
// <char * header length = the header>
|
|
||||||
// <char * the rest of the total length = the data>
|
|
||||||
|
|
||||||
// Read and convert the lengths first.
|
|
||||||
uint32_t total_len_data;
|
|
||||||
uint16_t header_len_data;
|
|
||||||
vector<asio::mutable_buffer> len_buffers;
|
|
||||||
len_buffers.push_back(asio::buffer(&total_len_data,
|
|
||||||
sizeof total_len_data));
|
|
||||||
len_buffers.push_back(asio::buffer(&header_len_data,
|
|
||||||
sizeof header_len_data));
|
|
||||||
asio::read(socket_, len_buffers);
|
|
||||||
const uint32_t total_len = ntohl(total_len_data);
|
|
||||||
const uint16_t header_len = ntohs(header_len_data);
|
|
||||||
string header, msg;
|
|
||||||
header.resize(header_len);
|
|
||||||
msg.resize(total_len - header_len - sizeof header_len_data);
|
|
||||||
vector<asio::mutable_buffer> data_buffers;
|
|
||||||
data_buffers.push_back(asio::buffer(&header[0], header.size()));
|
|
||||||
data_buffers.push_back(asio::buffer(&msg[0], msg.size()));
|
|
||||||
asio::read(socket_, data_buffers);
|
|
||||||
if (msg == "") { // The case of no msg present, for control messages
|
|
||||||
msg = "null";
|
|
||||||
}
|
|
||||||
// Extract the right data into each string and convert.
|
|
||||||
return (SentMessage(Element::fromWire(header),
|
|
||||||
Element::fromWire(msg)));
|
|
||||||
}
|
|
||||||
|
|
||||||
void sendLname() {
|
void sendLname() {
|
||||||
isc::data::ElementPtr lname_answer1 =
|
isc::data::ElementPtr lname_answer1 =
|
||||||
isc::data::Element::fromJSON("{ \"type\": \"lname\" }");
|
isc::data::Element::fromJSON("{ \"type\": \"lname\" }");
|
||||||
@@ -180,6 +128,9 @@ private:
|
|||||||
char data_buf[1024];
|
char data_buf[1024];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// \brief Pair holding header and data of a message sent over the connection.
|
||||||
|
typedef pair<ConstElementPtr, ConstElementPtr> SentMessage;
|
||||||
|
|
||||||
// We specialize the tested class a little. We replace some low-level
|
// We specialize the tested class a little. We replace some low-level
|
||||||
// methods so we can examine the rest without relying on real network IO
|
// methods so we can examine the rest without relying on real network IO
|
||||||
class TestSession : public Session {
|
class TestSession : public Session {
|
||||||
@@ -187,6 +138,8 @@ public:
|
|||||||
TestSession(asio::io_service& ioservice) :
|
TestSession(asio::io_service& ioservice) :
|
||||||
Session(ioservice)
|
Session(ioservice)
|
||||||
{}
|
{}
|
||||||
|
// Get first message previously sent by sendmsg and remove it from the
|
||||||
|
// buffer. Expects there's at leas one message in the buffer.
|
||||||
SentMessage getSentMessage() {
|
SentMessage getSentMessage() {
|
||||||
assert(!sent_messages_.empty());
|
assert(!sent_messages_.empty());
|
||||||
SentMessage result(sent_messages_.front());
|
SentMessage result(sent_messages_.front());
|
||||||
@@ -194,6 +147,8 @@ public:
|
|||||||
return (result);
|
return (result);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
|
// Override the sendmsg. They are not sent over the real connection, but
|
||||||
|
// stored locally and can be extracted by getSentMessage()
|
||||||
virtual void sendmsg(ConstElementPtr msg) {
|
virtual void sendmsg(ConstElementPtr msg) {
|
||||||
sendmsg(msg, ConstElementPtr(new isc::data::NullElement));
|
sendmsg(msg, ConstElementPtr(new isc::data::NullElement));
|
||||||
}
|
}
|
||||||
@@ -201,6 +156,7 @@ private:
|
|||||||
sent_messages_.push_back(SentMessage(env, msg));
|
sent_messages_.push_back(SentMessage(env, msg));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The sendmsg stores data here.
|
||||||
list<SentMessage> sent_messages_;
|
list<SentMessage> sent_messages_;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -217,21 +173,6 @@ protected:
|
|||||||
delete tds;
|
delete tds;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetUp() {
|
|
||||||
// There are blocking reads in some tests. We want to have a safety
|
|
||||||
// catch in case the sender didn't write enough. We set a timeout of
|
|
||||||
// 10 seconds per one test (which should really be enough even on
|
|
||||||
// slow machines). If the timeout happens, it kills the test and
|
|
||||||
// the whole test fails.
|
|
||||||
//alarm(10);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TearDown() {
|
|
||||||
// Cancel the timeout scheduled in SetUp. We don't want to kill any
|
|
||||||
// of the other tests by it by accident.
|
|
||||||
alarm(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check two elements are equal
|
// Check two elements are equal
|
||||||
void elementsEqual(const ConstElementPtr& expected,
|
void elementsEqual(const ConstElementPtr& expected,
|
||||||
const ConstElementPtr& actual)
|
const ConstElementPtr& actual)
|
||||||
|
Reference in New Issue
Block a user