2022-06-03 19:15:11 +00:00
|
|
|
/* SPDX-License-Identifier: BSD-3-Clause
|
2022-11-01 20:26:26 +00:00
|
|
|
* Copyright (C) 2017 Intel Corporation.
|
2017-11-15 00:10:00 +00:00
|
|
|
* All rights reserved.
|
|
|
|
*/
|
2022-11-01 20:26:26 +00:00
|
|
|
|
2017-11-15 00:10:00 +00:00
|
|
|
#include "spdk/stdinc.h"
|
|
|
|
|
2018-02-06 23:22:00 +00:00
|
|
|
#include "spdk_cunit.h"
|
2017-11-15 00:10:00 +00:00
|
|
|
#include "CUnit/Basic.h"
|
|
|
|
|
|
|
|
#include "iscsi/init_grp.c"
|
2018-05-09 22:55:12 +00:00
|
|
|
#include "unit/lib/json_mock.c"
|
2017-11-15 00:10:00 +00:00
|
|
|
|
2020-09-04 11:27:29 +00:00
|
|
|
SPDK_LOG_REGISTER_COMPONENT(iscsi)
|
2017-11-15 00:10:00 +00:00
|
|
|
|
2021-01-27 17:17:14 +00:00
|
|
|
struct spdk_iscsi_globals g_iscsi = {
|
|
|
|
.mutex = PTHREAD_MUTEX_INITIALIZER
|
|
|
|
};
|
2017-11-15 00:10:00 +00:00
|
|
|
|
|
|
|
static int
|
|
|
|
test_setup(void)
|
|
|
|
{
|
2020-04-13 21:05:20 +00:00
|
|
|
TAILQ_INIT(&g_iscsi.ig_head);
|
2017-11-15 00:10:00 +00:00
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2017-11-15 00:14:27 +00:00
|
|
|
static void
|
|
|
|
create_initiator_group_success_case(void)
|
|
|
|
{
|
|
|
|
struct spdk_iscsi_init_grp *ig;
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
ig = iscsi_init_grp_create(1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(ig != NULL);
|
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
iscsi_init_grp_destroy(ig);
|
2017-11-15 00:14:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
find_initiator_group_success_case(void)
|
|
|
|
{
|
2018-02-05 04:02:25 +00:00
|
|
|
struct spdk_iscsi_init_grp *ig, *tmp;
|
|
|
|
int rc;
|
2017-11-15 00:14:27 +00:00
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
ig = iscsi_init_grp_create(1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(ig != NULL);
|
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
rc = iscsi_init_grp_register(ig);
|
2018-02-05 04:02:25 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
2017-11-15 00:14:27 +00:00
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
ig = iscsi_init_grp_find_by_tag(1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(ig != NULL);
|
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
tmp = iscsi_init_grp_unregister(1);
|
2018-02-05 04:02:25 +00:00
|
|
|
CU_ASSERT(ig == tmp);
|
2020-04-15 21:39:41 +00:00
|
|
|
iscsi_init_grp_destroy(ig);
|
2017-11-15 00:14:27 +00:00
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
ig = iscsi_init_grp_find_by_tag(1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(ig == NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
2018-02-05 04:02:25 +00:00
|
|
|
register_initiator_group_twice_case(void)
|
2017-11-15 00:14:27 +00:00
|
|
|
{
|
2018-02-05 04:02:25 +00:00
|
|
|
struct spdk_iscsi_init_grp *ig, *tmp;
|
|
|
|
int rc;
|
2017-11-15 00:14:27 +00:00
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
ig = iscsi_init_grp_create(1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(ig != NULL);
|
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
rc = iscsi_init_grp_register(ig);
|
2018-02-05 04:02:25 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
2017-11-15 00:14:27 +00:00
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
rc = iscsi_init_grp_register(ig);
|
2018-02-05 04:02:25 +00:00
|
|
|
CU_ASSERT(rc != 0);
|
2017-11-15 00:14:27 +00:00
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
ig = iscsi_init_grp_find_by_tag(1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(ig != NULL);
|
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
tmp = iscsi_init_grp_unregister(1);
|
2018-02-05 04:02:25 +00:00
|
|
|
CU_ASSERT(tmp == ig);
|
2020-04-15 21:39:41 +00:00
|
|
|
iscsi_init_grp_destroy(ig);
|
2017-11-15 00:14:27 +00:00
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
ig = iscsi_init_grp_find_by_tag(1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(ig == NULL);
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
add_initiator_name_success_case(void)
|
|
|
|
{
|
2018-02-05 04:02:25 +00:00
|
|
|
|
2017-11-15 00:14:27 +00:00
|
|
|
int rc;
|
|
|
|
struct spdk_iscsi_init_grp *ig;
|
|
|
|
struct spdk_iscsi_initiator_name *iname;
|
|
|
|
char *name1 = "iqn.2017-10.spdk.io:0001";
|
|
|
|
char *name2 = "iqn.2017-10.spdk.io:0002";
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
ig = iscsi_init_grp_create(1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(ig != NULL);
|
|
|
|
|
|
|
|
/* add two different names to the empty name list */
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_initiator(ig, name1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_initiator(ig, name2);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
|
|
|
/* check if two names are added correctly. */
|
2019-03-27 21:53:37 +00:00
|
|
|
iname = iscsi_init_grp_find_initiator(ig, name1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(iname != NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
iname = iscsi_init_grp_find_initiator(ig, name2);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(iname != NULL);
|
|
|
|
|
|
|
|
/* restore the initial state */
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_delete_initiator(ig, name1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
iname = iscsi_init_grp_find_initiator(ig, name1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(iname == NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_delete_initiator(ig, name2);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
iname = iscsi_init_grp_find_initiator(ig, name2);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(iname == NULL);
|
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
iscsi_init_grp_destroy(ig);
|
2017-11-15 00:14:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
add_initiator_name_fail_case(void)
|
|
|
|
{
|
|
|
|
int rc;
|
|
|
|
struct spdk_iscsi_init_grp *ig;
|
|
|
|
struct spdk_iscsi_initiator_name *iname;
|
|
|
|
char *name1 = "iqn.2017-10.spdk.io:0001";
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
ig = iscsi_init_grp_create(1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(ig != NULL);
|
|
|
|
|
|
|
|
/* add an name to the full name list */
|
|
|
|
ig->ninitiators = MAX_INITIATOR;
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_initiator(ig, name1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc != 0);
|
|
|
|
|
|
|
|
ig->ninitiators = 0;
|
|
|
|
|
|
|
|
/* add the same name to the name list twice */
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_initiator(ig, name1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_initiator(ig, name1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc != 0);
|
|
|
|
|
|
|
|
/* restore the initial state */
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_delete_initiator(ig, name1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
iname = iscsi_init_grp_find_initiator(ig, name1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(iname == NULL);
|
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
iscsi_init_grp_destroy(ig);
|
2017-11-15 00:14:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
delete_all_initiator_names_success_case(void)
|
|
|
|
{
|
|
|
|
int rc;
|
|
|
|
struct spdk_iscsi_init_grp *ig;
|
|
|
|
struct spdk_iscsi_initiator_name *iname;
|
|
|
|
char *name1 = "iqn.2017-10.spdk.io:0001";
|
|
|
|
char *name2 = "iqn.2017-10.spdk.io:0002";
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
ig = iscsi_init_grp_create(1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(ig != NULL);
|
|
|
|
|
|
|
|
/* add two different names to the empty name list */
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_initiator(ig, name1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_initiator(ig, name2);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
|
|
|
/* delete all initiator names */
|
2019-03-27 21:53:37 +00:00
|
|
|
iscsi_init_grp_delete_all_initiators(ig);
|
2017-11-15 00:14:27 +00:00
|
|
|
|
|
|
|
/* check if two names are deleted correctly. */
|
2019-03-27 21:53:37 +00:00
|
|
|
iname = iscsi_init_grp_find_initiator(ig, name1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(iname == NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
iname = iscsi_init_grp_find_initiator(ig, name2);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(iname == NULL);
|
|
|
|
|
|
|
|
/* restore the initial state */
|
2020-04-15 21:39:41 +00:00
|
|
|
iscsi_init_grp_destroy(ig);
|
2017-11-15 00:14:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
add_netmask_success_case(void)
|
|
|
|
{
|
|
|
|
int rc;
|
|
|
|
struct spdk_iscsi_init_grp *ig;
|
|
|
|
struct spdk_iscsi_initiator_netmask *imask;
|
|
|
|
char *netmask1 = "192.168.2.0";
|
|
|
|
char *netmask2 = "192.168.2.1";
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
ig = iscsi_init_grp_create(1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(ig != NULL);
|
|
|
|
|
|
|
|
/* add two different netmasks to the empty netmask list */
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_netmask(ig, netmask1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_netmask(ig, netmask2);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
|
|
|
/* check if two netmasks are added correctly. */
|
2019-03-27 21:53:37 +00:00
|
|
|
imask = iscsi_init_grp_find_netmask(ig, netmask1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(imask != NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
imask = iscsi_init_grp_find_netmask(ig, netmask2);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(imask != NULL);
|
|
|
|
|
|
|
|
/* restore the initial state */
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_delete_netmask(ig, netmask1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
imask = iscsi_init_grp_find_netmask(ig, netmask1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(imask == NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_delete_netmask(ig, netmask2);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
imask = iscsi_init_grp_find_netmask(ig, netmask2);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(imask == NULL);
|
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
iscsi_init_grp_destroy(ig);
|
2017-11-15 00:14:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
add_netmask_fail_case(void)
|
|
|
|
{
|
|
|
|
int rc;
|
|
|
|
struct spdk_iscsi_init_grp *ig;
|
|
|
|
struct spdk_iscsi_initiator_netmask *imask;
|
|
|
|
char *netmask1 = "192.168.2.0";
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
ig = iscsi_init_grp_create(1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(ig != NULL);
|
|
|
|
|
|
|
|
/* add an netmask to the full netmask list */
|
|
|
|
ig->nnetmasks = MAX_NETMASK;
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_netmask(ig, netmask1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc != 0);
|
|
|
|
|
|
|
|
ig->nnetmasks = 0;
|
|
|
|
|
|
|
|
/* add the same netmask to the netmask list twice */
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_netmask(ig, netmask1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_netmask(ig, netmask1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc != 0);
|
|
|
|
|
|
|
|
/* restore the initial state */
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_delete_netmask(ig, netmask1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
imask = iscsi_init_grp_find_netmask(ig, netmask1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(imask == NULL);
|
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
iscsi_init_grp_destroy(ig);
|
2017-11-15 00:14:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
delete_all_netmasks_success_case(void)
|
|
|
|
{
|
|
|
|
int rc;
|
|
|
|
struct spdk_iscsi_init_grp *ig;
|
|
|
|
struct spdk_iscsi_initiator_netmask *imask;
|
|
|
|
char *netmask1 = "192.168.2.0";
|
|
|
|
char *netmask2 = "192.168.2.1";
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
ig = iscsi_init_grp_create(1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(ig != NULL);
|
|
|
|
|
|
|
|
/* add two different netmasks to the empty netmask list */
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_netmask(ig, netmask1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_netmask(ig, netmask2);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
|
|
|
/* delete all netmasks */
|
2019-03-27 21:53:37 +00:00
|
|
|
iscsi_init_grp_delete_all_netmasks(ig);
|
2017-11-15 00:14:27 +00:00
|
|
|
|
|
|
|
/* check if two netmasks are deleted correctly. */
|
2019-03-27 21:53:37 +00:00
|
|
|
imask = iscsi_init_grp_find_netmask(ig, netmask1);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(imask == NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
imask = iscsi_init_grp_find_netmask(ig, netmask2);
|
2017-11-15 00:14:27 +00:00
|
|
|
CU_ASSERT(imask == NULL);
|
|
|
|
|
|
|
|
/* restore the initial state */
|
2020-04-15 21:39:41 +00:00
|
|
|
iscsi_init_grp_destroy(ig);
|
2017-11-15 00:14:27 +00:00
|
|
|
}
|
|
|
|
|
2017-11-29 05:51:23 +00:00
|
|
|
static void
|
|
|
|
initiator_name_overwrite_all_to_any_case(void)
|
|
|
|
{
|
|
|
|
int rc;
|
|
|
|
struct spdk_iscsi_init_grp *ig;
|
|
|
|
struct spdk_iscsi_initiator_name *iname;
|
|
|
|
char *all = "ALL";
|
|
|
|
char *any = "ANY";
|
|
|
|
char *all_not = "!ALL";
|
|
|
|
char *any_not = "!ANY";
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
ig = iscsi_init_grp_create(1);
|
2017-11-29 05:51:23 +00:00
|
|
|
CU_ASSERT(ig != NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_initiator(ig, all);
|
2017-11-29 05:51:23 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
iname = iscsi_init_grp_find_initiator(ig, all);
|
2017-11-29 05:51:23 +00:00
|
|
|
CU_ASSERT(iname == NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
iname = iscsi_init_grp_find_initiator(ig, any);
|
2017-11-29 05:51:23 +00:00
|
|
|
CU_ASSERT(iname != NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_delete_initiator(ig, any);
|
2017-11-29 05:51:23 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_initiator(ig, all_not);
|
2017-11-29 05:51:23 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
iname = iscsi_init_grp_find_initiator(ig, all_not);
|
2017-11-29 05:51:23 +00:00
|
|
|
CU_ASSERT(iname == NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
iname = iscsi_init_grp_find_initiator(ig, any_not);
|
2017-11-29 05:51:23 +00:00
|
|
|
CU_ASSERT(iname != NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_delete_initiator(ig, any_not);
|
2017-11-29 05:51:23 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
iscsi_init_grp_destroy(ig);
|
2017-11-29 05:51:23 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
netmask_overwrite_all_to_any_case(void)
|
|
|
|
{
|
|
|
|
int rc;
|
|
|
|
struct spdk_iscsi_init_grp *ig;
|
|
|
|
struct spdk_iscsi_initiator_netmask *imask;
|
|
|
|
char *all = "ALL";
|
|
|
|
char *any = "ANY";
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
ig = iscsi_init_grp_create(1);
|
2017-11-29 05:51:23 +00:00
|
|
|
CU_ASSERT(ig != NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_netmask(ig, all);
|
2017-11-29 05:51:23 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
imask = iscsi_init_grp_find_netmask(ig, all);
|
2017-11-29 05:51:23 +00:00
|
|
|
CU_ASSERT(imask == NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
imask = iscsi_init_grp_find_netmask(ig, any);
|
2017-11-29 05:51:23 +00:00
|
|
|
CU_ASSERT(imask != NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_delete_netmask(ig, any);
|
2017-11-29 05:51:23 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
iscsi_init_grp_destroy(ig);
|
2017-11-29 05:51:23 +00:00
|
|
|
}
|
|
|
|
|
2018-02-06 23:22:00 +00:00
|
|
|
static void
|
|
|
|
add_delete_initiator_names_case(void)
|
|
|
|
{
|
|
|
|
int rc, i;
|
|
|
|
struct spdk_iscsi_init_grp *ig;
|
|
|
|
struct spdk_iscsi_initiator_name *iname;
|
|
|
|
char *names[3] = {"iqn.2018-02.spdk.io:0001", "iqn.2018-02.spdk.io:0002", "iqn.2018-02.spdk.io:0003"};
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
ig = iscsi_init_grp_create(1);
|
2018-02-06 23:22:00 +00:00
|
|
|
SPDK_CU_ASSERT_FATAL(ig != NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_initiators(ig, 3, names);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
|
|
|
for (i = 0; i < 3; i++) {
|
2019-03-27 21:53:37 +00:00
|
|
|
iname = iscsi_init_grp_find_initiator(ig, names[i]);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(iname != NULL);
|
|
|
|
}
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_delete_initiators(ig, 3, names);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
|
|
|
if (ig != NULL) {
|
|
|
|
CU_ASSERT(TAILQ_EMPTY(&ig->initiator_head));
|
|
|
|
}
|
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
iscsi_init_grp_destroy(ig);
|
2018-02-06 23:22:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
add_duplicated_initiator_names_case(void)
|
|
|
|
{
|
|
|
|
int rc;
|
|
|
|
struct spdk_iscsi_init_grp *ig;
|
|
|
|
char *names[3] = {"iqn.2018-02.spdk.io:0001", "iqn.2018-02.spdk.io:0002", "iqn.2018-02.spdk.io:0001"};
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
ig = iscsi_init_grp_create(1);
|
2018-02-06 23:22:00 +00:00
|
|
|
SPDK_CU_ASSERT_FATAL(ig != NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_initiators(ig, 3, names);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(rc != 0);
|
|
|
|
|
|
|
|
if (ig != NULL) {
|
|
|
|
CU_ASSERT(TAILQ_EMPTY(&ig->initiator_head));
|
|
|
|
}
|
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
iscsi_init_grp_destroy(ig);
|
2018-02-06 23:22:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
delete_nonexisting_initiator_names_case(void)
|
|
|
|
{
|
|
|
|
int rc, i;
|
|
|
|
struct spdk_iscsi_init_grp *ig;
|
|
|
|
struct spdk_iscsi_initiator_name *iname;
|
|
|
|
char *names1[3] = {"iqn.2018-02.spdk.io:0001", "iqn.2018-02.spdk.io:0002", "iqn.2018-02.spdk.io:0003"};
|
|
|
|
char *names2[3] = {"iqn.2018-02.spdk.io:0001", "iqn.2018-02.spdk.io:0002", "iqn.2018-02.spdk.io:0004"};
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
ig = iscsi_init_grp_create(1);
|
2018-02-06 23:22:00 +00:00
|
|
|
SPDK_CU_ASSERT_FATAL(ig != NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_initiators(ig, 3, names1);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
|
|
|
for (i = 0; i < 3; i++) {
|
2019-03-27 21:53:37 +00:00
|
|
|
iname = iscsi_init_grp_find_initiator(ig, names1[i]);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(iname != NULL);
|
|
|
|
}
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_delete_initiators(ig, 3, names2);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(rc != 0);
|
|
|
|
|
|
|
|
for (i = 0; i < 3; i++) {
|
2019-03-27 21:53:37 +00:00
|
|
|
iname = iscsi_init_grp_find_initiator(ig, names1[i]);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(iname != NULL);
|
|
|
|
}
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_delete_initiators(ig, 3, names1);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
|
|
|
if (ig != NULL) {
|
|
|
|
CU_ASSERT(TAILQ_EMPTY(&ig->initiator_head));
|
|
|
|
}
|
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
iscsi_init_grp_destroy(ig);
|
2018-02-06 23:22:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
add_delete_netmasks_case(void)
|
|
|
|
{
|
|
|
|
int rc, i;
|
|
|
|
struct spdk_iscsi_init_grp *ig;
|
|
|
|
struct spdk_iscsi_initiator_netmask *netmask;
|
|
|
|
char *netmasks[3] = {"192.168.2.0", "192.168.2.1", "192.168.2.2"};
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
ig = iscsi_init_grp_create(1);
|
2018-02-06 23:22:00 +00:00
|
|
|
SPDK_CU_ASSERT_FATAL(ig != NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_netmasks(ig, 3, netmasks);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
|
|
|
for (i = 0; i < 3; i++) {
|
2019-03-27 21:53:37 +00:00
|
|
|
netmask = iscsi_init_grp_find_netmask(ig, netmasks[i]);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(netmask != NULL);
|
|
|
|
}
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_delete_netmasks(ig, 3, netmasks);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
|
|
|
if (ig != NULL) {
|
|
|
|
CU_ASSERT(TAILQ_EMPTY(&ig->netmask_head));
|
|
|
|
}
|
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
iscsi_init_grp_destroy(ig);
|
2018-02-06 23:22:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
add_duplicated_netmasks_case(void)
|
|
|
|
{
|
|
|
|
int rc;
|
|
|
|
struct spdk_iscsi_init_grp *ig;
|
|
|
|
char *netmasks[3] = {"192.168.2.0", "192.168.2.1", "192.168.2.0"};
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
ig = iscsi_init_grp_create(1);
|
2018-02-06 23:22:00 +00:00
|
|
|
SPDK_CU_ASSERT_FATAL(ig != NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_netmasks(ig, 3, netmasks);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(rc != 0);
|
|
|
|
|
|
|
|
if (ig != NULL) {
|
|
|
|
CU_ASSERT(TAILQ_EMPTY(&ig->netmask_head));
|
|
|
|
}
|
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
iscsi_init_grp_destroy(ig);
|
2018-02-06 23:22:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
delete_nonexisting_netmasks_case(void)
|
|
|
|
{
|
|
|
|
int rc, i;
|
|
|
|
struct spdk_iscsi_init_grp *ig;
|
|
|
|
struct spdk_iscsi_initiator_netmask *netmask;
|
|
|
|
char *netmasks1[3] = {"192.168.2.0", "192.168.2.1", "192.168.2.2"};
|
|
|
|
char *netmasks2[3] = {"192.168.2.0", "192.168.2.1", "192.168.2.3"};
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
ig = iscsi_init_grp_create(1);
|
2018-02-06 23:22:00 +00:00
|
|
|
SPDK_CU_ASSERT_FATAL(ig != NULL);
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_add_netmasks(ig, 3, netmasks1);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
|
|
|
for (i = 0; i < 3; i++) {
|
2019-03-27 21:53:37 +00:00
|
|
|
netmask = iscsi_init_grp_find_netmask(ig, netmasks1[i]);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(netmask != NULL);
|
|
|
|
}
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_delete_netmasks(ig, 3, netmasks2);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(rc != 0);
|
|
|
|
|
|
|
|
for (i = 0; i < 3; i++) {
|
2019-03-27 21:53:37 +00:00
|
|
|
netmask = iscsi_init_grp_find_netmask(ig, netmasks1[i]);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(netmask != NULL);
|
|
|
|
}
|
|
|
|
|
2019-03-27 21:53:37 +00:00
|
|
|
rc = iscsi_init_grp_delete_netmasks(ig, 3, netmasks1);
|
2018-02-06 23:22:00 +00:00
|
|
|
CU_ASSERT(rc == 0);
|
|
|
|
|
|
|
|
if (ig != NULL) {
|
|
|
|
CU_ASSERT(TAILQ_EMPTY(&ig->netmask_head));
|
|
|
|
}
|
|
|
|
|
2020-04-15 21:39:41 +00:00
|
|
|
iscsi_init_grp_destroy(ig);
|
2018-02-06 23:22:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2017-11-15 00:10:00 +00:00
|
|
|
int
|
|
|
|
main(int argc, char **argv)
|
|
|
|
{
|
|
|
|
CU_pSuite suite = NULL;
|
|
|
|
unsigned int num_failures;
|
|
|
|
|
2020-03-11 17:59:24 +00:00
|
|
|
CU_set_error_action(CUEA_ABORT);
|
|
|
|
CU_initialize_registry();
|
2017-11-15 00:10:00 +00:00
|
|
|
|
|
|
|
suite = CU_add_suite("init_grp_suite", test_setup, NULL);
|
|
|
|
|
2020-03-11 19:15:39 +00:00
|
|
|
CU_ADD_TEST(suite, create_initiator_group_success_case);
|
|
|
|
CU_ADD_TEST(suite, find_initiator_group_success_case);
|
|
|
|
CU_ADD_TEST(suite, register_initiator_group_twice_case);
|
|
|
|
CU_ADD_TEST(suite, add_initiator_name_success_case);
|
|
|
|
CU_ADD_TEST(suite, add_initiator_name_fail_case);
|
|
|
|
CU_ADD_TEST(suite, delete_all_initiator_names_success_case);
|
|
|
|
CU_ADD_TEST(suite, add_netmask_success_case);
|
|
|
|
CU_ADD_TEST(suite, add_netmask_fail_case);
|
|
|
|
CU_ADD_TEST(suite, delete_all_netmasks_success_case);
|
|
|
|
CU_ADD_TEST(suite, initiator_name_overwrite_all_to_any_case);
|
|
|
|
CU_ADD_TEST(suite, netmask_overwrite_all_to_any_case);
|
|
|
|
CU_ADD_TEST(suite, add_delete_initiator_names_case);
|
|
|
|
CU_ADD_TEST(suite, add_duplicated_initiator_names_case);
|
|
|
|
CU_ADD_TEST(suite, delete_nonexisting_initiator_names_case);
|
|
|
|
CU_ADD_TEST(suite, add_delete_netmasks_case);
|
|
|
|
CU_ADD_TEST(suite, add_duplicated_netmasks_case);
|
|
|
|
CU_ADD_TEST(suite, delete_nonexisting_netmasks_case);
|
2017-11-15 00:10:00 +00:00
|
|
|
|
|
|
|
CU_basic_set_mode(CU_BRM_VERBOSE);
|
|
|
|
CU_basic_run_tests();
|
|
|
|
num_failures = CU_get_number_of_failures();
|
|
|
|
CU_cleanup_registry();
|
|
|
|
return num_failures;
|
|
|
|
}
|