summaryrefslogtreecommitdiff
path: root/common/test/gtest_ctrl_packet.cpp
diff options
context:
space:
mode:
authorliuchang <[email protected]>2023-04-20 10:27:42 +0000
committerliuchang <[email protected]>2023-04-20 10:27:42 +0000
commita6e8f74211c181ea26539a305f2204485f60867c (patch)
treefb47beb29e59202fe860c302d5f02907f6bede36 /common/test/gtest_ctrl_packet.cpp
parent20a5b335bf018fed3294b09919cc76d8890df332 (diff)
change parse ctrl buf from json to msgpack
Diffstat (limited to 'common/test/gtest_ctrl_packet.cpp')
-rw-r--r--common/test/gtest_ctrl_packet.cpp67
1 files changed, 57 insertions, 10 deletions
diff --git a/common/test/gtest_ctrl_packet.cpp b/common/test/gtest_ctrl_packet.cpp
index 6c7efeb..eea2469 100644
--- a/common/test/gtest_ctrl_packet.cpp
+++ b/common/test/gtest_ctrl_packet.cpp
@@ -1,23 +1,70 @@
#include <cstring>
#include <gtest/gtest.h>
+#include <msgpack.h>
#include "shaper_marsio.h"
+static int construct_shaping_cmsg(const char *tsync, const char *session_id, const char *state, long long *shaping_rule_ids, int shaping_rule_id_num, msgpack_sbuffer *sbuf)
+{
+ msgpack_packer pk;
+
+ msgpack_packer_init(&pk, sbuf, msgpack_sbuffer_write);
+
+ msgpack_pack_array(&pk, INDEX_MAX);
+
+ // tsync
+ msgpack_pack_str(&pk, strlen(tsync));
+ msgpack_pack_str_body(&pk, tsync, strlen(tsync));
+
+ //session_id
+ msgpack_pack_str(&pk, strlen(session_id));
+ msgpack_pack_str_body(&pk, session_id, strlen(session_id));
+
+ // state
+ msgpack_pack_str(&pk, strlen(state));
+ msgpack_pack_str_body(&pk, state, strlen(state));
+
+ // type:sce
+ msgpack_pack_nil(&pk);
+
+ // type:shaper
+ msgpack_pack_array(&pk, 1);
+ msgpack_pack_array(&pk, shaping_rule_id_num);
+ for (int i = 0; i < shaping_rule_id_num; i++)
+ {
+ msgpack_pack_long_long(&pk, shaping_rule_ids[i]);
+ }
+
+ // type:proxy
+ msgpack_pack_nil(&pk);
+
+ return 0;
+
+}
+
TEST(CTRL_PACKET, PARSE)
{
- const char *data = "{\"tsync\":\"1.0\",\"session_id\":\"123456789\",\"state\":\"active\",\"method\":\"policy_update\",\"params\":{\"service_chaining\":[1,2,3],\"shaping\":[4,5,6]}}";
- size_t length = strlen(data);
+ const char *tsync = "2.0";
+ const char *session_id = "123456789";
+ const char *state = "active";
+ long long shaping_rule_ids[] = {4, 5, 6};
+ msgpack_sbuffer sbuf;
+
+ msgpack_sbuffer_init(&sbuf);
+ construct_shaping_cmsg(tsync, session_id, state, shaping_rule_ids, 3, &sbuf);
struct ctrl_pkt_data ctrl_data;
memset(&ctrl_data, 0, sizeof(ctrl_data));
- EXPECT_TRUE(shaper_marsio_ctrl_pkt_data_parse(&ctrl_data, data, length) == 0);
-
- EXPECT_TRUE(ctrl_data.session_id == 123456789);
- EXPECT_TRUE(ctrl_data.state == SESSION_STATE_ACTIVE);
- EXPECT_TRUE(ctrl_data.shaping_rule_num == 3);
- EXPECT_TRUE(ctrl_data.shaping_rule_ids[0] == 4);
- EXPECT_TRUE(ctrl_data.shaping_rule_ids[1] == 5);
- EXPECT_TRUE(ctrl_data.shaping_rule_ids[2] == 6);
+ EXPECT_EQ(shaper_marsio_ctrl_pkt_data_parse(&ctrl_data, sbuf.data, sbuf.size + 1), 0);
+
+ EXPECT_EQ(ctrl_data.session_id, 123456789);
+ EXPECT_EQ(ctrl_data.state, SESSION_STATE_ACTIVE);
+ EXPECT_EQ(ctrl_data.shaping_rule_num, 3);
+ EXPECT_EQ(ctrl_data.shaping_rule_ids[0], 4);
+ EXPECT_EQ(ctrl_data.shaping_rule_ids[1], 5);
+ EXPECT_EQ(ctrl_data.shaping_rule_ids[2], 6);
+
+ msgpack_sbuffer_destroy(&sbuf);
}
int main(int argc, char **argv)