tests/cpsv/Makefile.am | 1 + tests/cpsv/test_cpa.c | 180 +++++++++++++++++++++++++++++++++++++++++++- tests/cpsv/test_cpa_util.c | 16 +++- tests/cpsv/test_cpsv.h | 6 + tests/cpsv/test_cpsv_conf.h | 3 + 5 files changed, 201 insertions(+), 5 deletions(-)
diff --git a/tests/cpsv/Makefile.am b/tests/cpsv/Makefile.am --- a/tests/cpsv/Makefile.am +++ b/tests/cpsv/Makefile.am @@ -21,6 +21,7 @@ MAINTAINERCLEANFILES = Makefile.in bin_PROGRAMS = ckpttest ckpttest_CPPFLAGS = \ + -DSA_EXTENDED_NAME_SOURCE \ $(AM_CPPFLAGS) \ -I$(top_srcdir)/tests/unit_test_fw/inc \ -I$(top_srcdir)/osaf/libs/common/immsv/include \ diff --git a/tests/cpsv/test_cpa.c b/tests/cpsv/test_cpa.c --- a/tests/cpsv/test_cpa.c +++ b/tests/cpsv/test_cpa.c @@ -1,6 +1,8 @@ #include <stdlib.h> #include <unistd.h> +#include "saAis.h" +#include "osaf_extended_name.h" #include "test_cpsv.h" #include "test_cpsv_conf.h" #include "ncs_main_papi.h" @@ -42,6 +44,10 @@ const char *saf_error_string[] = { #define m_TEST_CPSV_PRINTF(...) #endif +#define VALID_EXTENDED_NAME_LENGTH 400 +#define INVALID_EXTENDED_NAME_LENGTH 2049 + + extern int gl_prev_act; /********** Ultility Functions ************/ @@ -82,6 +88,18 @@ void printResult(int result) } +bool is_extended_name_enable() { + + char *extended_name_env = getenv("SA_ENABLE_EXTENDED_NAMES"); + if (extended_name_env == 0) + return false; + + if (strcmp(extended_name_env, "1") != 0) + return false; + + return true; +} + void handleAssigner(SaInvocationT invocation, SaCkptCheckpointHandleT checkpointHandle) { if (invocation == 1014) @@ -122,8 +140,7 @@ void fill_ckpt_attri(SaCkptCheckpointCre void fill_ckpt_name(SaNameT *name,char *string) { - strcpy((char *)name->value,string); - name->length = strlen((char *)name->value); + saAisNameLend(string, name); } void fill_sec_attri(SaCkptSectionCreationAttributesT *sec_cr_attr,SaCkptSectionIdT *sec,SaTimeT exp_time) @@ -279,6 +296,20 @@ void fill_testcase_data() fill_ckpt_name(&tcd.weak_replica_ckpt_large,"safCkpt=weak_replica_large_ckpt,safApp=safCkptService"); fill_ckpt_name(&tcd.collocated_ckpt_large,"safCkpt=collocated_large_ckpt,safApp=safCkptService"); + char *ckpt_name = malloc(VALID_EXTENDED_NAME_LENGTH); + memset(ckpt_name, 0, VALID_EXTENDED_NAME_LENGTH); + memset(ckpt_name, '.', VALID_EXTENDED_NAME_LENGTH - 1); + int length = sprintf(ckpt_name, "safCkpt=all_replicas_ckpt_with_valid_extended_name_length"); + *(ckpt_name + length) = '.'; + saAisNameLend(ckpt_name, &tcd.all_replicas_ckpt_with_valid_extended_name_length); + + ckpt_name = malloc(INVALID_EXTENDED_NAME_LENGTH); + memset(ckpt_name, 0, INVALID_EXTENDED_NAME_LENGTH); + memset(ckpt_name, '.', INVALID_EXTENDED_NAME_LENGTH - 1); + length = sprintf(ckpt_name, "safCkpt=all_replicas_ckpt_with_invalid_extended_name_length"); + *(ckpt_name + length) = '.'; + saAisNameLend(ckpt_name, &tcd.all_replicas_ckpt_with_invalid_extended_name_length); + /* Variables for sec create */ tcd.sec_id1 = (SaUint8T*)"11"; tcd.section1.idLen = 2; @@ -451,6 +482,9 @@ void test_ckpt_cleanup(CPSV_CLEANUP_CKPT error = test_ckptUnlink(CKPT_UNLINK_SUCCESS9_T,TEST_CONFIG_MODE); break; + case CPSV_CLEAN_ASYNC_ALL_REPLICAS_CKPT_EXTENDED_NAME: + error = test_ckptUnlink(CKPT_UNLINK_ALL_REPLICAS_EXTENDED_NAME_SUCCESS_T,TEST_CONFIG_MODE); + break; } if(error != TEST_PASS) @@ -2278,6 +2312,122 @@ final1: test_validate(result, TEST_PASS); } +void cpsv_it_open_55() +{ + int result; + printHead("To verify creating a ckpt with valid extended name length"); + + /* Skip the test if Extended Name is not enable */ + if (is_extended_name_enable() == false) + return test_validate(TEST_PASS, TEST_PASS); + + result = test_ckptInitialize(CKPT_INIT_SUCCESS_T,TEST_CONFIG_MODE); + if(result != TEST_PASS) + goto final1; + + result = test_ckptOpen(CKPT_OPEN_ALL_CREATE_EXTENDED_NAME_SUCCESS_T,TEST_NONCONFIG_MODE); + + test_cpsv_cleanup(CPSV_CLEAN_INIT_SUCCESS_T); + +final1: + printResult(result); + test_validate(result, TEST_PASS); +} + +void cpsv_it_open_56() +{ + int result; + printHead("To verify creating a ckpt with invalid extended name length"); + + /* Skip the test if Extended Name is not enable */ + if (is_extended_name_enable() == false) + return test_validate(TEST_PASS, TEST_PASS); + + result = test_ckptInitialize(CKPT_INIT_SUCCESS_T,TEST_CONFIG_MODE); + if(result != TEST_PASS) + goto final1; + + result = test_ckptOpen(CKPT_OPEN_ALL_CREATE_EXTENDED_NAME_INVALID_PARAM_T,TEST_NONCONFIG_MODE); + + test_cpsv_cleanup(CPSV_CLEAN_INIT_SUCCESS_T); + +final1: + printResult(result); + test_validate(result, TEST_PASS); +} + +void cpsv_it_open_57() +{ + int result; + fd_set read_fd; + struct timeval tv; + printHead("To verify openAsync a ckpt with valid extended name length"); + + /* Skip the test if Extended Name is not enable */ + if (is_extended_name_enable() == false) + return test_validate(TEST_PASS, TEST_PASS); + + result = test_ckptInitialize(CKPT_INIT_SUCCESS_T,TEST_CONFIG_MODE); + if(result != TEST_PASS) + goto final1; + + result = test_ckptSelectionObject(CKPT_SEL_SUCCESS_T,TEST_NONCONFIG_MODE); + if(result != TEST_PASS) + goto final2; + + result = test_ckptOpenAsync(CKPT_OPEN_ASYNC_ALL_CREATE_EXTENDED_NAME_SUCCESS_T,TEST_NONCONFIG_MODE); + if(result != TEST_PASS) + goto final2; + + tv.tv_sec = 60; + tv.tv_usec = 0; + FD_ZERO(&read_fd); + FD_SET(tcd.selobj, &read_fd); + select(tcd.selobj + 1, &read_fd, NULL, NULL, &tv); + + result = test_ckptDispatch(CKPT_DISPATCH_ONE_T,TEST_NONCONFIG_MODE); + if(result == TEST_PASS && tcd.open_clbk_invo == 1021 && tcd.open_clbk_err == SA_AIS_OK) + result = TEST_PASS; + else + { + result = TEST_FAIL; + goto final2; + } + + test_ckpt_cleanup(CPSV_CLEAN_ASYNC_ALL_REPLICAS_CKPT_EXTENDED_NAME); + +final2: + test_cpsv_cleanup(CPSV_CLEAN_INIT_SUCCESS_T); +final1: + printResult(result); + test_validate(result, TEST_PASS); +} + +void cpsv_it_open_58() +{ + int result; + printHead("To verify openAsync a ckpt with invalid extended name length"); + + /* Skip the test if Extended Name is not enable */ + if (is_extended_name_enable() == false) + return test_validate(TEST_PASS, TEST_PASS); + + result = test_ckptInitialize(CKPT_INIT_SUCCESS_T,TEST_CONFIG_MODE); + if(result != TEST_PASS) + goto final1; + + result = test_ckptSelectionObject(CKPT_SEL_SUCCESS_T,TEST_NONCONFIG_MODE); + if(result != TEST_PASS) + goto final2; + + result = test_ckptOpenAsync(CKPT_OPEN_ASYNC_ALL_CREATE_EXTENDED_NAME_INVALID_PARAM_T,TEST_NONCONFIG_MODE); + +final2: + test_cpsv_cleanup(CPSV_CLEAN_INIT_SUCCESS_T); +final1: + printResult(result); + test_validate(result, TEST_PASS); +} /****** saCkptCheckpointClose *******/ @@ -2853,6 +3003,27 @@ final: test_validate(result, TEST_PASS); } +void cpsv_it_unlink_12() +{ + int result; + printHead("To test unlink a ckpt with invalid extended name"); + + /* Skip the test if Extended Name is not enable */ + if (is_extended_name_enable() == false) + return test_validate(TEST_PASS, TEST_PASS); + + result = test_ckptInitialize(CKPT_INIT_SUCCESS_T,TEST_CONFIG_MODE); + if(result != TEST_PASS) + goto final; + + result = test_ckptUnlink(CKPT_UNLINK_ALL_REPLICAS_EXTENDED_NAME_INVALID_PARAM_T, TEST_NONCONFIG_MODE); + test_cpsv_cleanup(CPSV_CLEAN_INIT_SUCCESS_T); + +final: + printResult(result); + test_validate(result, TEST_PASS); +} + /******* saCkptRetentionDurationSet ******/ @@ -6904,6 +7075,10 @@ final1: test_case_add(5, cpsv_it_open_52, "To verify creating a ckpt with invalid creation flags"); test_case_add(5, cpsv_it_open_53, "To verify creating a ckpt with invalid creation flags"); test_case_add(5, cpsv_it_open_54, "To verify creating a ckpt with invalid creation flags"); + test_case_add(5, cpsv_it_open_55, "To verify creating a ckpt with valid extended name length"); + test_case_add(5, cpsv_it_open_56, "To verify creating a ckpt with invalid extended name length"); + test_case_add(5, cpsv_it_open_57, "To verify openAsync a ckpt with valid extended name length"); + test_case_add(5, cpsv_it_open_58, "To verify openAsync a ckpt with invalid extended name length"); test_suite_add(6, "CKPT API saCkptCheckpointClose()"); test_case_add(6, cpsv_it_close_01, "To verify Closing of the checkpoint designated by checkpointHandle"); @@ -6927,6 +7102,7 @@ final1: test_case_add(7, cpsv_it_unlink_09, "To test unlink with uninitialized handle"); test_case_add(7, cpsv_it_unlink_10, "To test unlink in the child process - NOT SUPPORTED"); test_case_add(7, cpsv_it_unlink_11, "To test unlink with NULL ckpt name"); + test_case_add(7, cpsv_it_unlink_12, "To test unlink a ckpt with invalid extended name"); test_suite_add(8, "CKPT API saCkptRetenionDurationSet()"); test_case_add(8, cpsv_it_rdset_01, "To test that invoking rdset changes the rd for the checkpoint"); diff --git a/tests/cpsv/test_cpa_util.c b/tests/cpsv/test_cpa_util.c --- a/tests/cpsv/test_cpa_util.c +++ b/tests/cpsv/test_cpa_util.c @@ -388,7 +388,10 @@ struct SafCheckpointOpen API_Open[]={ APP_TIMEOUT,&tcd.weak_replica_Createhdl ,SA_AIS_OK,"ckpt with WEAK REPLICA created"}, [CKPT_OPEN_ACTIVE_WRITE_READ_SUCCESS_T] = {&tcd.ckptHandle,&tcd.active_replica_ckpt,NULL,(SA_CKPT_CHECKPOINT_WRITE | SA_CKPT_CHECKPOINT_READ), APP_TIMEOUT,&tcd.active_replica_Writehdl ,SA_AIS_OK,"ckpt with ACTIVE REPLICA opened for writing"}, - + [CKPT_OPEN_ALL_CREATE_EXTENDED_NAME_SUCCESS_T] = {&tcd.ckptHandle,&tcd.all_replicas_ckpt_with_valid_extended_name_length,&tcd.all_replicas,SA_CKPT_CHECKPOINT_CREATE, + APP_TIMEOUT,&tcd.all_replicas_Createhdl,SA_AIS_OK,"ckpt with ALL_REPLICAS and valid extended name created"}, + [CKPT_OPEN_ALL_CREATE_EXTENDED_NAME_INVALID_PARAM_T] = {&tcd.ckptHandle,&tcd.all_replicas_ckpt_with_invalid_extended_name_length,&tcd.all_replicas,SA_CKPT_CHECKPOINT_CREATE, + APP_TIMEOUT,&tcd.all_replicas_Createhdl,SA_AIS_ERR_INVALID_PARAM,"ckpt with ALL_REPLICAS and invalid extended name created"}, /* NULL ckptHandle, */ @@ -554,7 +557,10 @@ struct SafCheckpointOpenAsync API_OpenAs [CKPT_OPEN_ASYNC_INVALID_PARAM7_T] = {&tcd.ckptHandle,1020,NULL,&tcd.all_replicas,SA_CKPT_CHECKPOINT_CREATE, SA_AIS_ERR_INVALID_PARAM,"Open Async with invalid param - NUll name"}, - + [CKPT_OPEN_ASYNC_ALL_CREATE_EXTENDED_NAME_SUCCESS_T] = {&tcd.ckptHandle,1021, &tcd.all_replicas_ckpt_with_valid_extended_name_length, &tcd.all_replicas, + SA_CKPT_CHECKPOINT_CREATE,SA_AIS_OK,"all replicas ckpt with valid extended name created with invocation 1021"}, + [CKPT_OPEN_ASYNC_ALL_CREATE_EXTENDED_NAME_INVALID_PARAM_T] = {&tcd.ckptHandle,0, &tcd.all_replicas_ckpt_with_invalid_extended_name_length, &tcd.all_replicas, + SA_CKPT_CHECKPOINT_CREATE,SA_AIS_ERR_INVALID_PARAM,"all replicas ckpt invalid with extended name created"}, }; int test_ckptOpenAsync(int i,CONFIG_FLAG cfg_flg) @@ -1938,7 +1944,11 @@ struct SafCheckpointUnlink API_Unlink[]= [CKPT_UNLINK_SUCCESS10_T] = {&tcd.ckptHandle,&tcd.weak_replica_ckpt,SA_AIS_OK,"Unlinked ckpt weak replica"}, -#if 0 + [CKPT_UNLINK_ALL_REPLICAS_EXTENDED_NAME_SUCCESS_T] = {&tcd.ckptHandle,&tcd.all_replicas_ckpt_with_valid_extended_name_length,SA_AIS_OK,"Unlinked ckpt all replicas with extended name length"}, + + [CKPT_UNLINK_ALL_REPLICAS_EXTENDED_NAME_INVALID_PARAM_T] = {&tcd.ckptHandle,&tcd.all_replicas_ckpt_with_invalid_extended_name_length,SA_AIS_ERR_INVALID_PARAM,"Unlinked ckpt all replicas with invalid extended name length"}, + + #if 0 [CKPT_UNLINK_NOT_EXIST4_T] = {&tcd.ckptHandle,&tcd.collocated_ckpt,SA_AIS_OK,"Unlinked ckpt collcated replicas"}, #endif diff --git a/tests/cpsv/test_cpsv.h b/tests/cpsv/test_cpsv.h --- a/tests/cpsv/test_cpsv.h +++ b/tests/cpsv/test_cpsv.h @@ -315,6 +315,8 @@ typedef enum { CKPT_OPEN_SUCCESS_EXIST2_T, CKPT_OPEN_WEAK_CREATE_READ_SUCCESS_T, CKPT_OPEN_ACTIVE_WRITE_READ_SUCCESS_T, + CKPT_OPEN_ALL_CREATE_EXTENDED_NAME_SUCCESS_T, + CKPT_OPEN_ALL_CREATE_EXTENDED_NAME_INVALID_PARAM_T }CKPT_OPEN_TC_TYPE; typedef enum { @@ -340,6 +342,8 @@ typedef enum { CKPT_OPEN_ASYNC_ALL_MODES_SUCCESS_T, CKPT_OPEN_ASYNC_NULL_INVOCATION, CKPT_OPEN_ASYNC_ERR_EXIST_T, + CKPT_OPEN_ASYNC_ALL_CREATE_EXTENDED_NAME_SUCCESS_T, + CKPT_OPEN_ASYNC_ALL_CREATE_EXTENDED_NAME_INVALID_PARAM_T }CKPT_OPEN_ASYNC_TC_TYPE; @@ -584,6 +588,8 @@ typedef enum { CKPT_UNLINK_SUCCESS10_T, CKPT_UNLINK_NOT_EXIST2_T, CKPT_UNLINK_NOT_EXIST3_T, + CKPT_UNLINK_ALL_REPLICAS_EXTENDED_NAME_SUCCESS_T, + CKPT_UNLINK_ALL_REPLICAS_EXTENDED_NAME_INVALID_PARAM_T, }CKPT_UNLINK_TC_TYPE; diff --git a/tests/cpsv/test_cpsv_conf.h b/tests/cpsv/test_cpsv_conf.h --- a/tests/cpsv/test_cpsv_conf.h +++ b/tests/cpsv/test_cpsv_conf.h @@ -39,6 +39,7 @@ typedef enum { CPSV_CLEAN_ASYNC_ACTIVE_REPLICAS_CKPT, CPSV_CLEAN_WEAK_REPLICAS_CKPT, CPSV_CLEAN_MULTI_VECTOR_CKPT, + CPSV_CLEAN_ASYNC_ALL_REPLICAS_CKPT_EXTENDED_NAME, }CPSV_CLEANUP_CKPT_TC_TYPE; @@ -65,6 +66,8 @@ struct cpsv_testcase_data SaNameT all_replicas_ckpt,active_replica_ckpt,weak_replica_ckpt,collocated_ckpt,async_all_replicas_ckpt,async_active_replica_ckpt; SaNameT smoketest_ckpt,all_collocated_ckpt,weak_collocated_ckpt,non_existing_ckpt,multi_vector_ckpt; SaNameT all_replicas_ckpt_large,active_replica_ckpt_large,weak_replica_ckpt_large,collocated_ckpt_large; + SaNameT all_replicas_ckpt_with_valid_extended_name_length; + SaNameT all_replicas_ckpt_with_invalid_extended_name_length; SaCkptSectionIdT section1,section2,section3,section4,section5,section6,section7,invalid_sec,invalidsection,gen_sec,invalidSection,gen_sec_del; SaCkptSectionIdT long_section_id; ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel