Skip to content

Commit

Permalink
tests/unit: Add unit tests for fill_vdi_state_list()
Browse files Browse the repository at this point in the history
The function fill_vdi_state_list() implementing SD_OP_GET_VDI_COPIES
should set the 'deleted' member of struct vdi_state and respond it.

This is mainly for sheep/group.c:get_vdis_from() because it set
VDI bitmap 'sys->vdi_deleted' based on the value of 'deleted' member
responded by SD_OP_GET_VDI_COPIES request.

Signed-off-by: Takashi Menjo <menjo.takashi@lab.ntt.co.jp>
  • Loading branch information
tmenjo committed Apr 22, 2016
1 parent 84358b2 commit 0bbaeaf
Showing 1 changed file with 47 additions and 0 deletions.
47 changes: 47 additions & 0 deletions tests/unit/sheep/test_vdi.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,56 @@ static void test_vdi(void)
TEST_ASSERT_EQUAL_INT(2, get_vdi_copy_number(3));
}

static void test_fill_vdi_state_list_empty(void)
{
const struct sd_req request = {0};
struct sd_rsp response = {0};
TEST_ASSERT_EQUAL_INT(SD_RES_SUCCESS, fill_vdi_state_list(&request, &response, NULL));
}

static void test_fill_vdi_state_list_one(void)
{
const size_t SIZE_VDI_STATE = sizeof(struct vdi_state);
const struct sd_req request = { .data_length = SIZE_VDI_STATE };
struct sd_rsp response = {0};
struct vdi_state state = {0};
add_vdi_state(1, 3, false, 0, 22, 0);
TEST_ASSERT_EQUAL_INT(SD_RES_SUCCESS, fill_vdi_state_list(&request, &response, &state));
TEST_ASSERT_EQUAL_UINT32(SIZE_VDI_STATE, response.data_length);
TEST_ASSERT_EQUAL_UINT32(1, state.vid);
TEST_ASSERT_EQUAL_INT(3, state.nr_copies);
TEST_ASSERT_FALSE(state.snapshot);
TEST_ASSERT_EQUAL_UINT8(0, state.copy_policy);
TEST_ASSERT_EQUAL_UINT8(22, state.block_size_shift);
TEST_ASSERT_EQUAL_UINT32(0, state.parent_vid);
TEST_ASSERT_FALSE(state.deleted);
}

static void test_fill_vdi_state_list_should_set_deleted(void)
{
const size_t SIZE_VDI_STATE = sizeof(struct vdi_state);
const struct sd_req request = { .data_length = SIZE_VDI_STATE };
struct sd_rsp response = {0};
struct vdi_state state = {0};
add_vdi_state(1, 3, false, 0, 22, 0);
vdi_mark_deleted(1);
TEST_ASSERT_EQUAL_INT(SD_RES_SUCCESS, fill_vdi_state_list(&request, &response, &state));
TEST_ASSERT_EQUAL_UINT32(SIZE_VDI_STATE, response.data_length);
TEST_ASSERT_EQUAL_UINT32(1, state.vid);
TEST_ASSERT_EQUAL_INT(3, state.nr_copies);
TEST_ASSERT_FALSE(state.snapshot);
TEST_ASSERT_EQUAL_UINT8(0, state.copy_policy);
TEST_ASSERT_EQUAL_UINT8(22, state.block_size_shift);
TEST_ASSERT_EQUAL_UINT32(0, state.parent_vid);
TEST_ASSERT_TRUE(state.deleted); /* FAIL */
}

int main(void)
{
UNITY_BEGIN();
RUN_TEST(test_vdi);
RUN_TEST(test_fill_vdi_state_list_empty);
RUN_TEST(test_fill_vdi_state_list_one);
RUN_TEST(test_fill_vdi_state_list_should_set_deleted);
return UNITY_END();
}

0 comments on commit 0bbaeaf

Please sign in to comment.