diff options
Diffstat (limited to 'test/interface_test.cpp')
-rw-r--r-- | test/interface_test.cpp | 302 |
1 files changed, 291 insertions, 11 deletions
diff --git a/test/interface_test.cpp b/test/interface_test.cpp index dec50bc..8d2df17 100644 --- a/test/interface_test.cpp +++ b/test/interface_test.cpp @@ -15,7 +15,15 @@ using namespace ::testing; struct interface_test : Test {}; +//dummy data +static const char directry[] = "/tmp/refop-test/"; +static const char file[] = "test.bin"; +static const char newfile[] = "/tmp/refop-test/test.bin.tmp"; +static const char latestfile[] = "/tmp/refop-test/test.bin"; +static const char backupfile[] = "/tmp/refop-test/test.bin.bk1"; + //-------------------------------------------------------------------------------------------------------- +// Interface test for data set with some data pattern. TEST_F(interface_test, interface_test_refop_set_redundancy_data__success) { struct refop_halndle *hndl; @@ -23,16 +31,17 @@ TEST_F(interface_test, interface_test_refop_set_redundancy_data__success) refop_handle_t handle = NULL; //dummy data - char directry[] = "/tmp/refop-test/"; - char file[] = "test.bin"; uint8_t *pbuf = NULL; int64_t sz = 1 * 1024 * 1024; + //clean up (void)mkdir(directry, 0777); + (void)unlink(newfile); + (void)unlink(latestfile); + (void)unlink(backupfile); pbuf = (uint8_t*)malloc(sz); - //short directry string ret = refop_create_redundancy_handle(&handle, directry, file); ASSERT_EQ(REFOP_SUCCESS, ret); @@ -58,6 +67,7 @@ TEST_F(interface_test, interface_test_refop_set_redundancy_data__success) free(pbuf); } //-------------------------------------------------------------------------------------------------------- +// Interface test for data get. TEST_F(interface_test, interface_test_refop_get_redundancy_data__success) { struct refop_halndle *hndl; @@ -65,21 +75,37 @@ TEST_F(interface_test, interface_test_refop_get_redundancy_data__success) refop_handle_t handle = NULL; //dummy data - char directry[] = "/tmp/refop-test/"; - char file[] = "test.bin"; uint8_t *pbuf = NULL; int64_t sz = 1 * 1024 * 1024; int64_t szr = 0; + //clean up (void)mkdir(directry, 0777); + (void)unlink(newfile); + (void)unlink(latestfile); + (void)unlink(backupfile); pbuf = (uint8_t*)malloc(sz); - //short directry string ret = refop_create_redundancy_handle(&handle, directry, file); ASSERT_EQ(REFOP_SUCCESS, ret); ret = refop_get_redundancy_data(handle, pbuf, sz, &szr); + ASSERT_EQ(REFOP_NOENT, ret); + + memset(pbuf,0xff,sz); + ret = refop_set_redundancy_data(handle, pbuf, sz); + ASSERT_EQ(REFOP_SUCCESS, ret); + + ret = refop_get_redundancy_data(handle, pbuf, sz, &szr); + ASSERT_EQ(REFOP_SUCCESS, ret); + ASSERT_EQ(sz, szr); + + memset(pbuf,0x00,sz); + ret = refop_set_redundancy_data(handle, pbuf, sz); + ASSERT_EQ(REFOP_SUCCESS, ret); + + ret = refop_get_redundancy_data(handle, pbuf, sz, &szr); ASSERT_EQ(REFOP_SUCCESS, ret); ASSERT_EQ(sz, szr); @@ -89,6 +115,7 @@ TEST_F(interface_test, interface_test_refop_get_redundancy_data__success) free(pbuf); } //-------------------------------------------------------------------------------------------------------- +// Interface test for data rotate. TEST_F(interface_test, interface_test_refop_set_and_get) { struct refop_halndle *hndl; @@ -108,12 +135,15 @@ TEST_F(interface_test, interface_test_refop_set_and_get) int64_t szr = 0; int checker = 0; + //clean up (void)mkdir(directry, 0777); + (void)unlink(newfile); + (void)unlink(latestfile); + (void)unlink(backupfile); pbuf = (uint8_t*)malloc(sz); prbuf = (uint8_t*)malloc(sz); - //short directry string ret = refop_create_redundancy_handle(&handle, directry, file); ASSERT_EQ(REFOP_SUCCESS, ret); @@ -195,6 +225,7 @@ TEST_F(interface_test, interface_test_refop_set_and_get) free(prbuf); } //-------------------------------------------------------------------------------------------------------- +// Interface test for data rotate with small data read. TEST_F(interface_test, interface_test_refop_set_and_get_smallread) { struct refop_halndle *hndl; @@ -214,12 +245,15 @@ TEST_F(interface_test, interface_test_refop_set_and_get_smallread) int64_t szr = 0; int checker = 0; + //clean up (void)mkdir(directry, 0777); + (void)unlink(newfile); + (void)unlink(latestfile); + (void)unlink(backupfile); pbuf = (uint8_t*)malloc(sz); prbuf = (uint8_t*)malloc(sz); - //short directry string ret = refop_create_redundancy_handle(&handle, directry, file); ASSERT_EQ(REFOP_SUCCESS, ret); @@ -252,7 +286,6 @@ TEST_F(interface_test, interface_test_refop_set_and_get_smallread) ret = refop_set_redundancy_data(handle, pbuf, sz); ASSERT_EQ(REFOP_SUCCESS, ret); - // a2 unlink(backupfile); ret = refop_get_redundancy_data(handle, prbuf, sz/2, &szr); @@ -301,6 +334,7 @@ TEST_F(interface_test, interface_test_refop_set_and_get_smallread) free(prbuf); } //-------------------------------------------------------------------------------------------------------- +// Interface test for data rotate with large data read. TEST_F(interface_test, interface_test_refop_set_and_get_largeread) { struct refop_halndle *hndl; @@ -320,12 +354,15 @@ TEST_F(interface_test, interface_test_refop_set_and_get_largeread) int64_t szr = 0; int checker = 0; + //clean up (void)mkdir(directry, 0777); + (void)unlink(newfile); + (void)unlink(latestfile); + (void)unlink(backupfile); pbuf = (uint8_t*)malloc(sz); prbuf = (uint8_t*)malloc(sz); - //short directry string ret = refop_create_redundancy_handle(&handle, directry, file); ASSERT_EQ(REFOP_SUCCESS, ret); @@ -358,7 +395,6 @@ TEST_F(interface_test, interface_test_refop_set_and_get_largeread) ret = refop_set_redundancy_data(handle, pbuf, sz); ASSERT_EQ(REFOP_SUCCESS, ret); - // a2 unlink(backupfile); ret = refop_get_redundancy_data(handle, prbuf, sz*2, &szr); @@ -407,3 +443,247 @@ TEST_F(interface_test, interface_test_refop_set_and_get_largeread) free(prbuf); } //-------------------------------------------------------------------------------------------------------- +// Interface test for data pick up with small data read. +TEST_F(interface_test, interface_test_no_file_f1) +{ + struct refop_halndle *hndl; + refop_error_t ret = REFOP_SUCCESS; + refop_handle_t handle = NULL; + + //dummy data + uint8_t *pbuf = NULL; + uint8_t *prbuf = NULL; + int64_t sz = 4 * 1024; + int64_t szr = 0; + int checker = 0; + + //clean up + (void)mkdir(directry, 0777); + (void)unlink(newfile); + (void)unlink(latestfile); + (void)unlink(backupfile); + + pbuf = (uint8_t*)malloc(sz); + prbuf = (uint8_t*)malloc(sz); + + ret = refop_create_redundancy_handle(&handle, directry, file); + ASSERT_EQ(REFOP_SUCCESS, ret); + + memset(pbuf,0,sz); + ret = refop_set_redundancy_data(handle, pbuf, sz); + ASSERT_EQ(REFOP_SUCCESS, ret); + + memset(pbuf,0xff,sz); + ret = refop_set_redundancy_data(handle, pbuf, sz); + ASSERT_EQ(REFOP_SUCCESS, ret); + + // file pattern + // | latest | backup | + // f1 | o | o | + // f2 | o | - | + // f3 | - | o | + // f4 | - | - | + + // f1 + ret = refop_get_redundancy_data(handle, prbuf, sz, &szr); + ASSERT_EQ(REFOP_SUCCESS, ret); + ASSERT_EQ(sz, szr); + for(int i=0;i < szr;i++) { + checker += (prbuf[i] - (uint8_t)0xff); + } + ASSERT_EQ(0, checker); + + ret = refop_remove_redundancy_data(handle); + ASSERT_EQ(REFOP_SUCCESS, ret); + + ret = refop_release_redundancy_handle(handle); + ASSERT_EQ(REFOP_SUCCESS, ret); + + free(pbuf); + free(prbuf); +} +//-------------------------------------------------------------------------------------------------------- +// Interface test for data pick up with small data read. +TEST_F(interface_test, interface_test_no_file_f2) +{ + struct refop_halndle *hndl; + refop_error_t ret = REFOP_SUCCESS; + refop_handle_t handle = NULL; + + //dummy data + uint8_t *pbuf = NULL; + uint8_t *prbuf = NULL; + int64_t sz = 4 * 1024; + int64_t szr = 0; + int checker = 0; + + //clean up + (void)mkdir(directry, 0777); + (void)unlink(newfile); + (void)unlink(latestfile); + (void)unlink(backupfile); + + pbuf = (uint8_t*)malloc(sz); + prbuf = (uint8_t*)malloc(sz); + + //short directry string + ret = refop_create_redundancy_handle(&handle, directry, file); + ASSERT_EQ(REFOP_SUCCESS, ret); + + memset(pbuf,0,sz); + ret = refop_set_redundancy_data(handle, pbuf, sz); + ASSERT_EQ(REFOP_SUCCESS, ret); + + memset(pbuf,0xff,sz); + ret = refop_set_redundancy_data(handle, pbuf, sz); + ASSERT_EQ(REFOP_SUCCESS, ret); + + // file pattern + // | latest | backup | + // f1 | o | o | + // f2 | o | - | + // f3 | - | o | + // f4 | - | - | + + (void)unlink(backupfile); + + // f2 + ret = refop_get_redundancy_data(handle, prbuf, sz, &szr); + ASSERT_EQ(REFOP_SUCCESS, ret); + ASSERT_EQ(sz, szr); + for(int i=0;i < szr;i++) { + checker += (prbuf[i] - (uint8_t)0xff); + } + ASSERT_EQ(0, checker); + + ret = refop_remove_redundancy_data(handle); + ASSERT_EQ(REFOP_SUCCESS, ret); + + ret = refop_release_redundancy_handle(handle); + ASSERT_EQ(REFOP_SUCCESS, ret); + + free(pbuf); + free(prbuf); +} +//-------------------------------------------------------------------------------------------------------- +// Interface test for data pick up with small data read. +TEST_F(interface_test, interface_test_no_file_f3) +{ + struct refop_halndle *hndl; + refop_error_t ret = REFOP_SUCCESS; + refop_handle_t handle = NULL; + + //dummy data + uint8_t *pbuf = NULL; + uint8_t *prbuf = NULL; + int64_t sz = 4 * 1024; + int64_t szr = 0; + int checker = 0; + + //clean up + (void)mkdir(directry, 0777); + (void)unlink(newfile); + (void)unlink(latestfile); + (void)unlink(backupfile); + + pbuf = (uint8_t*)malloc(sz); + prbuf = (uint8_t*)malloc(sz); + + //short directry string + ret = refop_create_redundancy_handle(&handle, directry, file); + ASSERT_EQ(REFOP_SUCCESS, ret); + + memset(pbuf,0,sz); + ret = refop_set_redundancy_data(handle, pbuf, sz); + ASSERT_EQ(REFOP_SUCCESS, ret); + + memset(pbuf,0xff,sz); + ret = refop_set_redundancy_data(handle, pbuf, sz); + ASSERT_EQ(REFOP_SUCCESS, ret); + + // file pattern + // | latest | backup | + // f1 | o | o | + // f2 | o | - | + // f3 | - | o | + // f4 | - | - | + + (void)unlink(latestfile); + + // f3 + ret = refop_get_redundancy_data(handle, prbuf, sz, &szr); + ASSERT_EQ(REFOP_RECOVER, ret); + ASSERT_EQ(sz, szr); + for(int i=0;i < szr;i++) { + checker += (prbuf[i] - (uint8_t)0); + } + ASSERT_EQ(0, checker); + + ret = refop_remove_redundancy_data(handle); + ASSERT_EQ(REFOP_SUCCESS, ret); + + ret = refop_release_redundancy_handle(handle); + ASSERT_EQ(REFOP_SUCCESS, ret); + + free(pbuf); + free(prbuf); +} +//-------------------------------------------------------------------------------------------------------- +// Interface test for data pick up with small data read. +TEST_F(interface_test, interface_test_no_file_f4) +{ + struct refop_halndle *hndl; + refop_error_t ret = REFOP_SUCCESS; + refop_handle_t handle = NULL; + + //dummy data + uint8_t *pbuf = NULL; + uint8_t *prbuf = NULL; + int64_t sz = 4 * 1024; + int64_t szr = 0; + int checker = 0; + + //clean up + (void)mkdir(directry, 0777); + (void)unlink(newfile); + (void)unlink(latestfile); + (void)unlink(backupfile); + + pbuf = (uint8_t*)malloc(sz); + prbuf = (uint8_t*)malloc(sz); + + //short directry string + ret = refop_create_redundancy_handle(&handle, directry, file); + ASSERT_EQ(REFOP_SUCCESS, ret); + + memset(pbuf,0,sz); + ret = refop_set_redundancy_data(handle, pbuf, sz); + ASSERT_EQ(REFOP_SUCCESS, ret); + + memset(pbuf,0xff,sz); + ret = refop_set_redundancy_data(handle, pbuf, sz); + ASSERT_EQ(REFOP_SUCCESS, ret); + + // file pattern + // | latest | backup | + // f1 | o | o | + // f2 | o | - | + // f3 | - | o | + // f4 | - | - | + + (void)unlink(latestfile); + (void)unlink(backupfile); + + // f4 + ret = refop_get_redundancy_data(handle, prbuf, sz, &szr); + ASSERT_EQ(REFOP_NOENT, ret); + + ret = refop_remove_redundancy_data(handle); + ASSERT_EQ(REFOP_SUCCESS, ret); + + ret = refop_release_redundancy_handle(handle); + ASSERT_EQ(REFOP_SUCCESS, ret); + + free(pbuf); + free(prbuf); +} |