126 lines
2.8 KiB
C++
126 lines
2.8 KiB
C++
#include <string>
|
|
#include <memory>
|
|
|
|
#include <di/rpc.h>
|
|
#include <di/time.h>
|
|
#include <gtest/gtest.h>
|
|
|
|
#include <di/device/uid.h>
|
|
|
|
#include "tests/rpc_serialize.h"
|
|
|
|
/** Used because serialize message header loads di_time_get_stamp */
|
|
TEST(time, init)
|
|
{
|
|
di_time_init();
|
|
}
|
|
|
|
/** Serialize RPC message publish */
|
|
TEST(rpc, serialize_rpc_msg_pub)
|
|
{
|
|
auto writer = TEST_RPC_SERIALIZE_WRITER;
|
|
struct di_rpc_msg msg;
|
|
|
|
di_rpc_msg_reset(&msg, di_device_uid_get());
|
|
|
|
msg.msg_type = DI_RPC_MSG_TYPE_PUBLISH;
|
|
msg.type = DI_RPC_TYPE_NOTIFY_INFO;
|
|
|
|
di_rpc_serialize_msg(writer->get(), &msg);
|
|
}
|
|
|
|
/** Serialize RPC RT message publish without project:id */
|
|
TEST(rpc, serialize_rpc_msg_rt_pub)
|
|
{
|
|
auto writer = TEST_RPC_SERIALIZE_WRITER;
|
|
struct di_rpc_msg msg;
|
|
|
|
di_rpc_msg_reset(&msg, di_device_uid_get());
|
|
|
|
msg.msg_type = DI_RPC_MSG_TYPE_PUBLISH;
|
|
msg.type = DI_RPC_TYPE_DEVICE_DATA;
|
|
msg.rt = true;
|
|
msg.rt_seqnr = 1337;
|
|
|
|
di_rpc_serialize_msg(writer->get(), &msg);
|
|
}
|
|
|
|
/** Serialize RPC RT message publish with project:id */
|
|
TEST(rpc, serialize_rpc_msg_rt_pub_with_project_id)
|
|
{
|
|
auto writer = TEST_RPC_SERIALIZE_WRITER;
|
|
struct di_rpc_msg msg;
|
|
|
|
di_rpc_msg_reset(&msg, di_device_uid_get());
|
|
|
|
msg.project_id = 666;
|
|
msg.msg_type = DI_RPC_MSG_TYPE_PUBLISH;
|
|
msg.type = DI_RPC_TYPE_DEVICE_DATA;
|
|
msg.rt = true;
|
|
msg.rt_seqnr = 1337;
|
|
|
|
di_rpc_serialize_msg(writer->get(), &msg);
|
|
}
|
|
|
|
/** Serialize RPC message request */
|
|
TEST(rpc, serialize_rpc_msg_req)
|
|
{
|
|
auto writer = TEST_RPC_SERIALIZE_WRITER;
|
|
struct di_rpc_msg msg;
|
|
|
|
di_rpc_msg_reset(&msg, di_device_uid_get());
|
|
|
|
msg.msg_type = DI_RPC_MSG_TYPE_REQUEST;
|
|
msg.type = DI_RPC_TYPE_NOTIFY_INFO;
|
|
msg.id = 1;
|
|
|
|
di_rpc_serialize_msg(writer->get(), &msg);
|
|
}
|
|
|
|
/** Serialize RPC message reply */
|
|
TEST(rpc, serialize_rpc_msg_rep)
|
|
{
|
|
auto writer = TEST_RPC_SERIALIZE_WRITER;
|
|
struct di_rpc_msg msg;
|
|
|
|
di_rpc_msg_reset(&msg, di_device_uid_get());
|
|
|
|
msg.id = 2;
|
|
msg.msg_type = DI_RPC_MSG_TYPE_REPLY;
|
|
msg.type = DI_RPC_TYPE_NOTIFY_INFO;
|
|
msg.err = DNOK;
|
|
|
|
di_rpc_serialize_msg(writer->get(), &msg);
|
|
}
|
|
|
|
/** Serialize RPC message reply error */
|
|
TEST(rpc, serialize_rpc_msg_rep_error)
|
|
{
|
|
auto writer = TEST_RPC_SERIALIZE_WRITER;
|
|
struct di_rpc_msg msg;
|
|
|
|
di_rpc_msg_reset(&msg, di_device_uid_get());
|
|
|
|
msg.id = 1234;
|
|
msg.msg_type = DI_RPC_MSG_TYPE_REPLY;
|
|
msg.type = DI_RPC_TYPE_NOTIFY_INFO;
|
|
|
|
di_rpc_serialize_msg(writer->get(), &msg);
|
|
}
|
|
|
|
/** Serialize RPC message reply error */
|
|
TEST(rpc, serialize_rpc_msg_rep_error_unknown_type)
|
|
{
|
|
auto writer = TEST_RPC_SERIALIZE_WRITER;
|
|
struct di_rpc_msg msg;
|
|
|
|
di_rpc_msg_reset(&msg, di_device_uid_get());
|
|
|
|
msg.id = 1234;
|
|
msg.err = DNE_OPNOTSUPP;
|
|
msg.msg_type = DI_RPC_MSG_TYPE_REPLY;
|
|
msg.type = DI_RPC_TYPE_UNKNOWN;
|
|
|
|
di_rpc_serialize_msg(writer->get(), &msg);
|
|
}
|