summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorQiuwen Lu <[email protected]>2016-09-01 16:30:23 +0800
committerQiuwen Lu <[email protected]>2016-09-01 16:30:23 +0800
commitafc6a119a40f4aad838447a4aaa49e6cdb2ece40 (patch)
treebc6901b4e1eaa0eb1329f68d094657269893b3fe /test
parent700f8996610251bc324dc1f34f462625def4dfb3 (diff)
完成service基础服务
Diffstat (limited to 'test')
-rw-r--r--test/TestMrbuf.cc163
1 files changed, 163 insertions, 0 deletions
diff --git a/test/TestMrbuf.cc b/test/TestMrbuf.cc
new file mode 100644
index 0000000..1336b30
--- /dev/null
+++ b/test/TestMrbuf.cc
@@ -0,0 +1,163 @@
+#if SELF_TEST
+static struct rte_mempool * g_pktmbuf_pool = NULL;
+#endif
+
+#if SELF_TEST
+
+static void marsio_mbuf_test(void)
+{
+#define BATCH_TEST_NUM (32)
+ marsio_buf_t *mbuf, *mnext;
+ struct rte_mbuf *rbuf;
+ char *data;
+ char *pri_data = (char *)"test ctrlzone";
+ uint32_t pkt_len;
+ int ctrl_id = -1, i;
+ marsio_buf_t *batch_mbuf[BATCH_TEST_NUM];
+
+ ctrl_id = marsio_buf_ctrlzone_alloc_id();
+
+ while (1) {
+ printf("ctrl_id = %u\n", ctrl_id);
+ mbuf = marsio_buf_alloc();
+ rbuf = (struct rte_mbuf *)mbuf;
+
+ marsio_buf_batch_alloc(batch_mbuf, BATCH_TEST_NUM);
+
+ printf("headroom = %u\n", marsio_buf_headroom(mbuf));
+ printf("tailroom = %u\n", marsio_buf_tailroom(mbuf));
+ printf("bufaddr-buf = %ld\n", (char *)rbuf->buf_addr - (char *)rbuf);
+
+ data = marsio_buf_mtod(mbuf);
+ pkt_len = marsio_buf_pkt_len(mbuf);
+ printf("init pkt_len = %u\n", pkt_len);
+
+ marsio_buf_prepend(mbuf, 20);
+ pkt_len = marsio_buf_pkt_len(mbuf);
+ printf("after prepend, pkt_len = %u\n", pkt_len);
+
+ marsio_buf_append(mbuf, 100);
+ pkt_len = marsio_buf_pkt_len(mbuf);
+ printf("after append, pkt_len = %u\n", pkt_len);
+
+ marsio_buf_trim(mbuf, 60);
+ pkt_len = marsio_buf_pkt_len(mbuf);
+ printf("after trim, pkt_len = %u\n", pkt_len);
+
+ printf("tailroom = %u\n", marsio_buf_tailroom(mbuf));
+
+ mnext = marsio_buf_alloc();
+
+ marsio_buf_append_pkt(mbuf, mnext);
+ printf("next is :%p\n", marsio_buf_get_nextpkt(mbuf));
+
+ marsio_buf_set_ctrlzone(mbuf, ctrl_id, (void *)pri_data);
+ pri_data = marsio_buf_get_ctrlzone(mbuf, ctrl_id);
+ printf("ctrlzone pri data : %s\n", pri_data);
+
+#if MEM_RECORD
+ for (i = 0; i < lcore_num; i += 8) {
+ printf("%ld %ld %ld %ld %ld %ld %ld %ld\n",
+ marsio_buf_record[i].alloc_mbuf_num,
+ marsio_buf_record[i + 1].alloc_mbuf_num,
+ marsio_buf_record[i + 2].alloc_mbuf_num,
+ marsio_buf_record[i + 3].alloc_mbuf_num,
+ marsio_buf_record[i + 4].alloc_mbuf_num,
+ marsio_buf_record[i + 5].alloc_mbuf_num,
+ marsio_buf_record[i + 6].alloc_mbuf_num,
+ marsio_buf_record[i + 7].alloc_mbuf_num);
+ }
+#endif
+
+ marsio_buf_batch_free(batch_mbuf, BATCH_TEST_NUM);
+ marsio_buf_free(mnext);
+
+ marsio_buf_dup(mbuf);
+ marsio_buf_free(mbuf);
+ marsio_buf_free(mbuf);
+
+ sleep(1);
+ printf("\n ---------------------------------------------------- \n");
+ }
+
+}
+
+static void *marsio_mbuf_test_thread(void *arg)
+{
+ marsio_mbuf_test();
+
+ return NULL;
+}
+
+static int dpdk_common_init(int argc, char *argv[])
+{
+ int ret;
+
+ /* init EAL */
+ ret = rte_eal_init(argc, argv);
+ if (ret < 0)
+ rte_exit(EXIT_FAILURE, "Invalid EAL arguments\n");
+
+ /* ��ʼ��ʱ��ô��ÿ��socket����һ��mpool, ����ÿ��core����һ��? */
+ g_pktmbuf_pool = rte_pktmbuf_pool_create("mbuf_pool", 1024,
+ 256, 128, RTE_MBUF_DEFAULT_BUF_SIZE,
+ rte_socket_id());
+ if (g_pktmbuf_pool == NULL)
+ rte_exit(EXIT_FAILURE, "Cannot init mbuf pool\n");
+
+ rte_eal_mp_wait_lcore();
+
+ return 0;
+}
+
+/*
+��ȡȫ��������.
+*/
+static inline void *marsio_get_global_self_ctx(void)
+{
+#if SELF_TEST
+ static char global_tmp[1024];
+#endif
+
+ return global_tmp;
+}
+
+/*
+��ȡ��ǰ�������������.
+*/
+static inline void *marsio_get_process_self_ctx(void)
+{
+ return MODULE_CTX(mr_proc_ctx_get(), MR_MID_MRBUF_MGR);
+}
+
+/*
+��ȡ��ǰ�߳����������.
+*/
+static inline void *marsio_get_thread_self_ctx(void)
+{
+#if SELF_TEST
+ static char thread_tmp[1024];
+#endif
+
+ return thread_tmp;
+}
+
+
+int main(int argc, char *argv[])
+{
+ pthread_t pid;
+
+ marsio_buf_init();
+
+ if (dpdk_common_init(argc, argv) < 0) {
+ return -1;
+ }
+
+ while (1) {
+ marsio_mbuf_test();
+ }
+
+ return 0;
+}
+
+#endif