Commit 40b14690 authored by paul luse's avatar paul luse Committed by Jim Harris
Browse files

ut/compress: add and beef up mbuf testing



In prep for testing the 2MB boundary condition multiple changes
were needed:

* update mocked mbuf function for chaining
* init next pointer to NULL during mbuf allocation
* set and check expected physcal addresses in _compress_operation()
* init iovec values in test routines to more sane values

Change-Id: Icff030e8bef693952f7da66e7aae77e207fbfd40
Signed-off-by: default avatarpaul luse <paul.e.luse@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/465983


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent 00728233
Loading
Loading
Loading
Loading
+45 −10
Original line number Diff line number Diff line
@@ -85,7 +85,11 @@ static inline int mock_rte_pktmbuf_chain(struct rte_mbuf *head, struct rte_mbuf
#define rte_pktmbuf_chain mock_rte_pktmbuf_chain
static inline int mock_rte_pktmbuf_chain(struct rte_mbuf *head, struct rte_mbuf *tail)
{
	head->next = tail;
	struct rte_mbuf *cur_tail;

	cur_tail = rte_pktmbuf_lastseg(head);
	cur_tail->next = tail;

	return 0;
}

@@ -176,8 +180,16 @@ int mock_rte_pktmbuf_alloc_bulk(struct rte_mempool *pool, struct rte_mbuf **mbuf
int mock_rte_pktmbuf_alloc_bulk(struct rte_mempool *pool, struct rte_mbuf **mbufs,
				unsigned count)
{
	int i;

	/* This mocked function only supports the alloc of up to 3 src and 3 dst. */
	ut_rte_pktmbuf_alloc_bulk += count;

	for (i = 0; i < 3; i++) {
		g_src_mbufs[i]->next = NULL;
		g_dst_mbufs[i]->next = NULL;
	}

	if (ut_rte_pktmbuf_alloc_bulk == 3) {
		*mbufs++ = g_src_mbufs[0];
		*mbufs++ = g_src_mbufs[1];
@@ -396,6 +408,8 @@ rte_compressdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id, struct rte_comp_op
	 * to indirectly test functionality in the code under test.
	 */
	CU_ASSERT(op->m_src->buf_addr == ut_expected_op.m_src->buf_addr);
	CU_ASSERT(op->m_src->next->buf_addr == ut_expected_op.m_src->next->buf_addr);
	CU_ASSERT(op->m_src->next->next->buf_addr == ut_expected_op.m_src->next->next->buf_addr);
	CU_ASSERT(op->m_src->buf_iova == ut_expected_op.m_src->buf_iova);
	CU_ASSERT(op->m_src->buf_len == ut_expected_op.m_src->buf_len);
	CU_ASSERT(op->m_src->pkt_len == ut_expected_op.m_src->pkt_len);
@@ -405,6 +419,8 @@ rte_compressdev_enqueue_burst(uint8_t dev_id, uint16_t qp_id, struct rte_comp_op

	/* check dst mbuf values */
	CU_ASSERT(op->m_dst->buf_addr == ut_expected_op.m_dst->buf_addr);
	CU_ASSERT(op->m_dst->next->buf_addr == ut_expected_op.m_dst->next->buf_addr);
	CU_ASSERT(op->m_dst->next->next->buf_addr == ut_expected_op.m_dst->next->next->buf_addr);
	CU_ASSERT(op->m_dst->buf_iova == ut_expected_op.m_dst->buf_iova);
	CU_ASSERT(op->m_dst->buf_len == ut_expected_op.m_dst->buf_len);
	CU_ASSERT(op->m_dst->pkt_len == ut_expected_op.m_dst->pkt_len);
@@ -511,10 +527,10 @@ test_compress_operation(void)

	src_iovcnt = dst_iovcnt = 3;
	for (i = 0; i < dst_iovcnt; i++) {
		src_iovs[i].iov_len = 1024 * 4;
		dst_iovs[i].iov_len = 1024 * 4;
		src_iovs[i].iov_base = (void *)0x10000000;
		dst_iovs[i].iov_base = (void *)0x20000000;
		src_iovs[i].iov_len = 0x1000;
		dst_iovs[i].iov_len = 0x1000;
		src_iovs[i].iov_base = (void *)0x10000000 + 0x1000 * i;
		dst_iovs[i].iov_base = (void *)0x20000000 + 0x1000 * i;
	}

	/* test rte_comp_op_alloc failure */
@@ -568,9 +584,14 @@ test_compress_operation(void)
	ut_expected_op.src.length = src_iovs[0].iov_len + src_iovs[1].iov_len + src_iovs[2].iov_len;
	ut_expected_op.m_src = &g_expected_src_mbufs[0];
	ut_expected_op.m_src->buf_addr = src_iovs[0].iov_base;
	ut_expected_op.m_src->buf_iova = spdk_vtophys(src_iovs[0].iov_base, NULL);
	ut_expected_op.m_src->next = &g_expected_src_mbufs[1];
	ut_expected_op.m_src->next->buf_addr = src_iovs[1].iov_base;
	ut_expected_op.m_src->buf_iova = spdk_vtophys((void *)ut_expected_op.m_src->buf_addr, NULL);
	ut_expected_op.m_src->next->buf_iova = spdk_vtophys(src_iovs[1].iov_base, NULL);
	ut_expected_op.m_src->next->next = &g_expected_src_mbufs[2];
	ut_expected_op.m_src->next->next->buf_addr = src_iovs[2].iov_base;
	ut_expected_op.m_src->next->next->buf_iova = spdk_vtophys(src_iovs[2].iov_base, NULL);

	ut_expected_op.m_src->buf_len = src_iovs[0].iov_len;
	ut_expected_op.m_src->pkt_len = src_iovs[0].iov_len;
	ut_expected_op.m_src->userdata = &cb_arg;
@@ -578,9 +599,14 @@ test_compress_operation(void)
	ut_expected_op.dst.offset = 0;
	ut_expected_op.m_dst = &g_expected_dst_mbufs[0];
	ut_expected_op.m_dst->buf_addr = dst_iovs[0].iov_base;
	ut_expected_op.m_dst->buf_iova = spdk_vtophys(dst_iovs[0].iov_base, NULL);
	ut_expected_op.m_dst->next = &g_expected_dst_mbufs[1];
	ut_expected_op.m_dst->next->buf_addr = dst_iovs[1].iov_base;
	ut_expected_op.m_dst->buf_iova = spdk_vtophys((void *)ut_expected_op.m_dst->buf_addr, NULL);
	ut_expected_op.m_dst->next->buf_iova = spdk_vtophys(dst_iovs[1].iov_base, NULL);
	ut_expected_op.m_dst->next->next = &g_expected_dst_mbufs[2];
	ut_expected_op.m_dst->next->next->buf_addr = dst_iovs[2].iov_base;
	ut_expected_op.m_dst->next->next->buf_iova = spdk_vtophys(dst_iovs[2].iov_base, NULL);

	ut_expected_op.m_dst->buf_len = dst_iovs[0].iov_len;
	ut_expected_op.m_dst->pkt_len = dst_iovs[0].iov_len;

@@ -595,10 +621,11 @@ test_poller(void)
{
	int rc;
	struct spdk_reduce_vol_cb_args *cb_args;
	struct rte_mbuf mbuf[2];
	struct rte_mbuf mbuf[4];
	struct vbdev_comp_op *op_to_queue;
	struct iovec src_iovs[2] = {};
	struct iovec dst_iovs[2] = {};
	struct iovec src_iovs[3] = {};
	struct iovec dst_iovs[3] = {};
	int i;

	cb_args = calloc(1, sizeof(*cb_args));
	SPDK_CU_ASSERT_FATAL(cb_args != NULL);
@@ -606,6 +633,14 @@ test_poller(void)
	memset(&g_comp_op[0], 0, sizeof(struct rte_comp_op));
	g_comp_op[0].m_src = &mbuf[0];
	g_comp_op[1].m_src = &mbuf[1];
	g_comp_op[0].m_dst = &mbuf[2];
	g_comp_op[1].m_dst = &mbuf[3];
	for (i = 0; i < 3; i++) {
		src_iovs[i].iov_len = 0x1000;
		dst_iovs[i].iov_len = 0x1000;
		src_iovs[i].iov_base = (void *)0x10000000 + 0x1000 * i;
		dst_iovs[i].iov_base = (void *)0x20000000 + 0x1000 * i;
	}

	/* Error from dequeue, nothing needing to be resubmitted.
	 */