static int generate_ivshmem_cmdline(const char *config_name) { char cmdline[PATH_MAX]; if (rte_ivshmem_metadata_cmdline_generate(cmdline, sizeof(cmdline), config_name) < 0) return -1; if (print_to_file(cmdline, config_name) < 0) return -1; rte_ivshmem_metadata_dump(stdout, config_name); return 0; }
static int test_ivshmem_api_test(void) { const struct rte_memzone * mz; struct rte_mempool * mp; struct rte_ring * r; char buf[BUFSIZ]; memset(buf, 0, sizeof(buf)); r = rte_ring_create("ring", 1, SOCKET_ID_ANY, 0); mp = rte_mempool_create("mempool", 1, 1, 1, 1, NULL, NULL, NULL, NULL, SOCKET_ID_ANY, 0); mz = rte_memzone_reserve("memzone", 64, SOCKET_ID_ANY, 0); ASSERT(r != NULL, "Failed to create ring"); ASSERT(mp != NULL, "Failed to create mempool"); ASSERT(mz != NULL, "Failed to reserve memzone"); /* try to create NULL metadata */ ASSERT(rte_ivshmem_metadata_create(NULL) < 0, "Created metadata with NULL name"); /* create valid metadata to do tests on */ ASSERT(rte_ivshmem_metadata_create(METADATA_NAME) == 0, "Failed to create metadata"); /* test adding memzone */ ASSERT(rte_ivshmem_metadata_add_memzone(NULL, NULL) < 0, "Added NULL memzone to NULL metadata"); ASSERT(rte_ivshmem_metadata_add_memzone(NULL, METADATA_NAME) < 0, "Added NULL memzone"); ASSERT(rte_ivshmem_metadata_add_memzone(mz, NULL) < 0, "Added memzone to NULL metadata"); ASSERT(rte_ivshmem_metadata_add_memzone(mz, NONEXISTENT_METADATA) < 0, "Added memzone to nonexistent metadata"); /* test adding ring */ ASSERT(rte_ivshmem_metadata_add_ring(NULL, NULL) < 0, "Added NULL ring to NULL metadata"); ASSERT(rte_ivshmem_metadata_add_ring(NULL, METADATA_NAME) < 0, "Added NULL ring"); ASSERT(rte_ivshmem_metadata_add_ring(r, NULL) < 0, "Added ring to NULL metadata"); ASSERT(rte_ivshmem_metadata_add_ring(r, NONEXISTENT_METADATA) < 0, "Added ring to nonexistent metadata"); /* test adding mempool */ ASSERT(rte_ivshmem_metadata_add_mempool(NULL, NULL) < 0, "Added NULL mempool to NULL metadata"); ASSERT(rte_ivshmem_metadata_add_mempool(NULL, METADATA_NAME) < 0, "Added NULL mempool"); ASSERT(rte_ivshmem_metadata_add_mempool(mp, NULL) < 0, "Added mempool to NULL metadata"); ASSERT(rte_ivshmem_metadata_add_mempool(mp, NONEXISTENT_METADATA) < 0, "Added mempool to nonexistent metadata"); /* test creating command line */ ASSERT(rte_ivshmem_metadata_cmdline_generate(NULL, sizeof(buf), METADATA_NAME) < 0, "Written command line into NULL buffer"); ASSERT(strnlen(buf, sizeof(buf)) == 0, "Buffer is not empty"); ASSERT(rte_ivshmem_metadata_cmdline_generate(buf, 0, METADATA_NAME) < 0, "Written command line into small buffer"); ASSERT(strnlen(buf, sizeof(buf)) == 0, "Buffer is not empty"); ASSERT(rte_ivshmem_metadata_cmdline_generate(buf, sizeof(buf), NULL) < 0, "Written command line for NULL metadata"); ASSERT(strnlen(buf, sizeof(buf)) == 0, "Buffer is not empty"); ASSERT(rte_ivshmem_metadata_cmdline_generate(buf, sizeof(buf), NONEXISTENT_METADATA) < 0, "Writen command line for nonexistent metadata"); ASSERT(strnlen(buf, sizeof(buf)) == 0, "Buffer is not empty"); /* add stuff to config */ ASSERT(rte_ivshmem_metadata_add_memzone(mz, METADATA_NAME) == 0, "Failed to add memzone to valid config"); ASSERT(rte_ivshmem_metadata_add_ring(r, METADATA_NAME) == 0, "Failed to add ring to valid config"); ASSERT(rte_ivshmem_metadata_add_mempool(mp, METADATA_NAME) == 0, "Failed to add mempool to valid config"); /* create config */ ASSERT(rte_ivshmem_metadata_cmdline_generate(buf, sizeof(buf), METADATA_NAME) == 0, "Failed to write command-line"); /* check if something was written */ ASSERT(strnlen(buf, sizeof(buf)) != 0, "Buffer is empty"); /* make sure we don't segfault */ rte_ivshmem_metadata_dump(stdout, NULL); /* dump our metadata */ rte_ivshmem_metadata_dump(stdout, METADATA_NAME); return 0; }