147 lines
5.1 KiB
C++
147 lines
5.1 KiB
C++
#include <memory>
|
|
#include <iostream>
|
|
|
|
#include <di/errno.h>
|
|
#include <di/rpc/Class.h>
|
|
#include <di/rpc/Reader.h>
|
|
#include <gtest/gtest.h>
|
|
|
|
using namespace std;
|
|
using namespace Di::Rpc;
|
|
|
|
int DiRpcReaderCallbackDevice(Device *msg) {
|
|
cout << "hello from " << __func__ << endl;
|
|
cout << "msgtype: " << msg->getMsgType() << endl;
|
|
|
|
return 1;
|
|
}
|
|
|
|
int DiRpcReaderCallbackSensor(Sensor *msg) {
|
|
cout << "hello from " << __func__ << endl;
|
|
cout << "msgtype: " << msg->getMsgType() << endl;
|
|
|
|
return 2;
|
|
}
|
|
|
|
int DiRpcReaderCallbackConnectionConnect(Connection *msg) {
|
|
cout << "hello from " << __func__ << endl;
|
|
cout << "msgtype: " << msg->getMsgType() << endl;
|
|
|
|
return 3;
|
|
}
|
|
|
|
int DiRpcReaderCallbackConnectionDisconnect(Connection *msg) {
|
|
cout << "hello from " << __func__ << endl;
|
|
cout << "msgtype: " << msg->getMsgType() << endl;
|
|
|
|
return 4;
|
|
}
|
|
|
|
int DiRpcReaderCallbackDNCMPing(DNCM *msg) {
|
|
cout << "hello from " << __func__ << endl;
|
|
cout << "msgtype: " << msg->getMsgType() << endl;
|
|
|
|
return 5;
|
|
}
|
|
|
|
TEST(Reader, Read) {
|
|
Reader r;
|
|
string json = "{}";
|
|
shared_ptr<Msg> msg;
|
|
|
|
// EXPECT_EQ(-1, r.read("invalid", msg));
|
|
|
|
// EXPECT_EQ(-1, r.read(json, msg));
|
|
|
|
// EXPECT_EQ(-1, r.read(json, msg, false));
|
|
|
|
// EXPECT_EQ(0, r.read(json, msg, true));
|
|
}
|
|
|
|
TEST(Reader, testFaultyCallback) {
|
|
Reader r = Reader();
|
|
string temp;
|
|
EXPECT_FALSE(r.registerCallback(nullptr, "sensor"));
|
|
EXPECT_FALSE(r.registerCallback(nullptr, nullptr));
|
|
EXPECT_FALSE(r.registerCallback(DiRpcMsgCallback(DiRpcReaderCallbackSensor), "aap"));
|
|
EXPECT_FALSE(r.registerCallback(DiRpcMsgCallback(DiRpcReaderCallbackSensor), nullptr));
|
|
EXPECT_TRUE(r.registerCallback(DiRpcMsgCallback(DiRpcReaderCallbackSensor), "*"));
|
|
EXPECT_TRUE(r.registerCallback(DiRpcMsgCallback(DiRpcReaderCallbackSensor), "sensor", nullptr));
|
|
temp = "sensor";
|
|
EXPECT_TRUE(r.registerCallback(DiRpcMsgCallback(DiRpcReaderCallbackSensor), temp));
|
|
EXPECT_TRUE(r.registerCallback(DiRpcMsgCallback(DiRpcReaderCallbackSensor), temp, temp));
|
|
EXPECT_TRUE(r.registerCallback(DiRpcMsgCallback(DiRpcReaderCallbackSensor), "sensor", ""));
|
|
}
|
|
|
|
TEST(Reader, classCreate) {
|
|
shared_ptr<Msg> m;
|
|
Reader r = Reader();
|
|
|
|
EXPECT_TRUE(r.registerCallback(DiRpcMsgCallback(DiRpcReaderCallbackSensor), "sensor"));
|
|
|
|
EXPECT_TRUE(r.registerCallback(DiRpcMsgCallback(DiRpcReaderCallbackDevice), "device"));
|
|
|
|
EXPECT_TRUE(r.registerCallback(DiRpcMsgCallback(DiRpcReaderCallbackConnectionConnect), "connection", "connect"));
|
|
|
|
EXPECT_TRUE(
|
|
r.registerCallback(DiRpcMsgCallback(DiRpcReaderCallbackConnectionDisconnect), "connection", "disconnect"));
|
|
|
|
EXPECT_TRUE(r.registerCallback(DiRpcMsgCallback(DiRpcReaderCallbackDNCMPing), "dncm", "ping"));
|
|
|
|
EXPECT_EQ(
|
|
r.read("{ \"dinetrpc\" : 1, \"time\" : 1, \"device:uid\" : \"5f5f64695f73696d756c61746f725f5f\", \"id\" : 1234, \"req\" : \"device:aap\" }",
|
|
nullptr), DNE_PARAM);
|
|
|
|
EXPECT_EQ(r.read("{\"dinetrpc\":1, \"time\" : 1, \"device:uid\":\"012d2d2d4c45474143592d2d0000026f\",\"result\":[{\"peer\":\"127.0.0.1:51394\",\"time\":20218668}],\"pub\":\"connection:disconnect\"}",
|
|
&m), DNOK);
|
|
EXPECT_EQ(m->runCallback(), 4);
|
|
m = nullptr;
|
|
|
|
EXPECT_EQ(r.read("{\"dinetrpc\":1,\"time\" : 0, \"device:uid\":\"012d2d2d4c45474143592d2d0000026f\",\"result\":[{\"peer\":\"127.0.0.1:51394\",\"time\":202181668}],\"pub\":\"connection:connect\"}",
|
|
&m), DNOK);
|
|
EXPECT_EQ(m->runCallback(), 3);
|
|
m = nullptr;
|
|
|
|
EXPECT_EQ(
|
|
r.read("{ \"dinetrpc\" : 1, \"time\":1, \"device:uid\" : \"5f5f64695f73696d756c61746f725f5ff\", \"id\" : 1234, \"req\" : \"device:aap\" }",
|
|
&m), DNE_PROTO);
|
|
EXPECT_EQ(
|
|
r.read("{ \"dinetrpc\" : 1, \"time\":1, \"device:uid\" : \"5f5f64695f73696d756c61746f725f5\", \"id\" : 1234, \"req\" : \"device:aap\" }",
|
|
&m), DNE_PROTO);
|
|
EXPECT_EQ(
|
|
r.read("{ \"dinetrpc\" : 1, \"time\":1, \"id\" : 1234, \"req\" : \"device:aap\" }",
|
|
&m), DNE_PROTO);
|
|
EXPECT_EQ(
|
|
r.read("{ \"dinetrpc\" : 1, \"device:uid\":\"012d2d2d4c45474143592d2d0000026f\", \"id\" : 1234, \"req\" : \"device:aap\" }",
|
|
&m), DNE_PROTO);
|
|
EXPECT_EQ(
|
|
r.read("{ \"time\" : 1, \"device:uid\":\"012d2d2d4c45474143592d2d0000026f\", \"id\" : 1234, \"req\" : \"device:aap\" }",
|
|
&m), DNE_PROTO);
|
|
|
|
EXPECT_EQ(
|
|
r.read("{ \"dinetrpc\" : 1, \"time\":1, \"device:uid\" : \"5f5f64695f73696d756c61746f725f5f\", \"id\" : 1234, \"req\" : \"device:aap\" }",
|
|
&m), 0);
|
|
EXPECT_EQ(m->runCallback(), 1);
|
|
m = nullptr;
|
|
|
|
EXPECT_EQ(r.read("{ \"dinetrpc\" : 1, \"time\":1, \"device:uid\" : \"5f5f64695f73696d756c61746f725f5f\", \"id\" : 1234, \"req\" : \"nonexisting:info\" }",
|
|
&m, true), 0);
|
|
EXPECT_EQ(m->runCallback(), DNE_NOTFOUND);
|
|
m = nullptr;
|
|
|
|
EXPECT_EQ(r.read("{ \"dinetrpc\" : 1, \"time\":1, \"device:uid\" : \"5f5f64695f73696d756c61746f725f5f\", \"id\" : 1234, \"req\" : \"sensor:info\" }",
|
|
&m), 0);
|
|
EXPECT_EQ(m->runCallback(), 2);
|
|
m = nullptr;
|
|
|
|
EXPECT_EQ(r.read("{ \"dinetrpc\" : 1, \"time\":1, \"device:uid\" : \"5f5f64695f73696d756c61746f725f5f\", \"id\" : 5678, \"req\" : \"sensor:aap\" }",
|
|
&m), 0);
|
|
EXPECT_EQ(m->runCallback(), 2);
|
|
m = nullptr;
|
|
|
|
EXPECT_EQ(r.read("{ \"dinetrpc\" : 1, \"time\":1, \"device:uid\" : \"5f5f64695f73696d756c61746f725f5f\", \"id\" : 234, \"req\" : \"dncm:ping\" }",
|
|
&m), 0);
|
|
EXPECT_EQ(m->runCallback(), 5);
|
|
m = nullptr;
|
|
}
|