diff options
| author | Qiuwen Lu <[email protected]> | 2016-09-01 16:30:23 +0800 |
|---|---|---|
| committer | Qiuwen Lu <[email protected]> | 2016-09-01 16:30:23 +0800 |
| commit | afc6a119a40f4aad838447a4aaa49e6cdb2ece40 (patch) | |
| tree | bc6901b4e1eaa0eb1329f68d094657269893b3fe /test | |
| parent | 700f8996610251bc324dc1f34f462625def4dfb3 (diff) | |
完成service基础服务
Diffstat (limited to 'test')
| -rw-r--r-- | test/TestMrbuf.cc | 163 |
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 |
