From 6de10dfc01a15ef927418889e557f17f0d2bd53c Mon Sep 17 00:00:00 2001 From: ChengqiangMeng Date: Thu, 4 Mar 2021 09:23:48 +0800 Subject: [PATCH] unittest/nvme_tcp: increase code coverage for nvme_tcp_parse_addr nvme_tcp_parse_addr code comprehensive coverage. res->ai_addrlen is returned by getaddrinfo(), and it is an IPV4 or IPV6 address, so its maximum length is not more than 46. And sizeof(*sa) is always 128,so ai_addrlen cannot be greater than sizeof(*sa). Signed-off-by: ChengqiangMeng Change-Id: Id432a39c1461c484ea871e7e9d8d3ed7a8391200 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/6512 Tested-by: SPDK CI Jenkins Reviewed-by: Changpeng Liu Reviewed-by: Aleksey Marchuk Community-CI: Mellanox Build Bot --- test/unit/lib/nvme/nvme_tcp.c/nvme_tcp_ut.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/test/unit/lib/nvme/nvme_tcp.c/nvme_tcp_ut.c b/test/unit/lib/nvme/nvme_tcp.c/nvme_tcp_ut.c index a8f9b3bc0..e3774fc09 100644 --- a/test/unit/lib/nvme/nvme_tcp.c/nvme_tcp_ut.c +++ b/test/unit/lib/nvme/nvme_tcp.c/nvme_tcp_ut.c @@ -873,6 +873,23 @@ test_nvme_tcp_alloc_reqs(void) CU_ASSERT(tqpair.send_pdus == NULL); } +static void +test_nvme_tcp_parse_addr(void) +{ + struct sockaddr_storage dst_addr; + int rc = 0; + + memset(&dst_addr, 0, sizeof(dst_addr)); + /* case1: getaddrinfo failed */ + rc = nvme_tcp_parse_addr(&dst_addr, AF_INET, NULL, NULL); + CU_ASSERT(rc != 0); + + /* case2: res->ai_addrlen < sizeof(*sa). Expect: Pass. */ + rc = nvme_tcp_parse_addr(&dst_addr, AF_INET, "12.34.56.78", "23"); + CU_ASSERT(rc == 0); + CU_ASSERT(dst_addr.ss_family == AF_INET); +} + int main(int argc, char **argv) { CU_pSuite suite = NULL; @@ -894,6 +911,7 @@ int main(int argc, char **argv) CU_ADD_TEST(suite, test_nvme_tcp_qpair_write_pdu); CU_ADD_TEST(suite, test_nvme_tcp_qpair_set_recv_state); CU_ADD_TEST(suite, test_nvme_tcp_alloc_reqs); + CU_ADD_TEST(suite, test_nvme_tcp_parse_addr); CU_basic_set_mode(CU_BRM_VERBOSE); CU_basic_run_tests();