#include #include #include #include #include #include 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; // 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 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; }