diff options
author | Ingo Huerner <ingo.huerner@xse.de> | 2014-05-06 11:24:28 +0200 |
---|---|---|
committer | Ingo Huerner <ingo.huerner@xse.de> | 2014-05-06 11:24:28 +0200 |
commit | 5d04ae9d019b1072612e935eb13e198834a23b0f (patch) | |
tree | 17101e888b1aba5d643558a96b7a237e7c7a1884 | |
parent | 2cb97c5860b58b12bac1789ebb0f93513f91fade (diff) | |
download | persistence-client-library-5d04ae9d019b1072612e935eb13e198834a23b0f.tar.gz |
Fixed a problem with default file data
-rw-r--r-- | src/persistence_client_library.c | 8 | ||||
-rw-r--r-- | src/persistence_client_library_backup_filelist.c | 9 | ||||
-rw-r--r-- | src/persistence_client_library_file.c | 18 | ||||
-rw-r--r-- | test/persistence_client_library_test.c | 50 |
4 files changed, 56 insertions, 29 deletions
diff --git a/src/persistence_client_library.c b/src/persistence_client_library.c index 42a1c5c..c439976 100644 --- a/src/persistence_client_library.c +++ b/src/persistence_client_library.c @@ -66,18 +66,14 @@ int pclInitLibrary(const char* appName, int shutdownMode) const char *pBlacklistPath = getenv("PERS_BLACKLIST_PATH"); #if USE_FILECACHE - printf("* * * * * * Using the filecache! * * * * * * * * *\n"); - + DLT_LOG(gPclDLTContext, DLT_LOG_INFO, DLT_STRING("Using the filecache!!!")); pfcInitCache(appName); -#else - printf("* * * * * * N O T using the filecache! * * * * * *\n"); #endif + #if USE_PASINTERFACE == 1 - //printf("* ADMIN INTERFACE is - e n a b l e d - \n"); DLT_LOG(gPclDLTContext, DLT_LOG_INFO, DLT_STRING("PAS interface is enabled!!")); #else - //printf("* ADMIN INTERFACE is - d i s a b l e d - enable with \"./configure --enable-pasinterface\"\n"); DLT_LOG(gPclDLTContext, DLT_LOG_WARN, DLT_STRING("PAS interface is not enabled, enable with \"./configure --enable-pasinterface\"")); #endif diff --git a/src/persistence_client_library_backup_filelist.c b/src/persistence_client_library_backup_filelist.c index 8c98898..9f6e768 100644 --- a/src/persistence_client_library_backup_filelist.c +++ b/src/persistence_client_library_backup_filelist.c @@ -24,6 +24,11 @@ #include "persistence_client_library_data_organization.h" +#if USE_FILECACHE + #include <persistence_file_cache.h> +#endif + + #include <sys/mman.h> #include <sys/stat.h> #include <errno.h> @@ -369,7 +374,11 @@ int pclCreateFile(const char* path) // finally create the file strncat(createPath, "/", DbPathMaxLen-1); strncat(createPath, tokenArray[i], DbPathMaxLen-1); +#if USE_FILECACHE + handle = pfcOpenFile(createPath, CreateFile); +#else handle = open(createPath, O_CREAT|O_RDWR |O_TRUNC, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH); +#endif } else { diff --git a/src/persistence_client_library_file.c b/src/persistence_client_library_file.c index ab8f7b2..d1ab60b 100644 --- a/src/persistence_client_library_file.c +++ b/src/persistence_client_library_file.c @@ -207,7 +207,7 @@ int pclFileOpen(unsigned int ldbid, const char* resource_id, unsigned int user_n close(handle); } - handle = pfcOpenFile(dbPath); + handle = pfcOpenFile(dbPath, DontCreateFile); #else if(handle <= 0) // check if open is needed or already done in verifyConsistency { @@ -224,10 +224,9 @@ int pclFileOpen(unsigned int ldbid, const char* resource_id, unsigned int user_n } else { - if(pclFileGetDefaultData(handle, resource_id, dbContext.configKey.policy) == -1) // try to get default data { - printf("pclFileOpen => No default data!!\n"); + DLT_LOG(gPclDLTContext, DLT_LOG_WARN, DLT_STRING("pclFileOpen: no default data available: "), DLT_STRING(resource_id)); } } } @@ -530,7 +529,7 @@ int pclFileCreatePath(unsigned int ldbid, const char* resource_id, unsigned int { if(pclFileGetDefaultData(handle, resource_id, dbContext.configKey.policy) == -1) // try to get default data { - printf("pclFileCreatePath => No default data!!\n"); + DLT_LOG(gPclDLTContext, DLT_LOG_WARN, DLT_STRING("pclFileCreatePath => no default data available: "), DLT_STRING(resource_id)); } } close(handle); // don't need the open file @@ -647,7 +646,16 @@ int pclFileGetDefaultData(int handle, const char* resource_id, int policy) memset(&buf, 0, sizeof(buf)); fstat(defaultHandle, &buf); - sendfile(handle, defaultHandle, 0, buf.st_size); + rval = sendfile(handle, defaultHandle, 0, buf.st_size); + if(rval != -1) + { + rval = lseek(handle, 0, SEEK_SET); // set fd back to beginning of the file + } + else + { + DLT_LOG(gPclDLTContext, DLT_LOG_WARN, DLT_STRING("pclFileGetDefaultData => failed to copy file "), DLT_STRING(strerror(errno))); + } + close(defaultHandle); } else diff --git a/test/persistence_client_library_test.c b/test/persistence_client_library_test.c index 18d0dbf..8a53d3b 100644 --- a/test/persistence_client_library_test.c +++ b/test/persistence_client_library_test.c @@ -609,9 +609,11 @@ START_TEST(test_DataFile) fd = pclFileOpen(0xFF, "media/mediaDB.db", 1, 1); x_fail_unless(fd != -1, "Could not open file ==> /media/mediaDB.db"); + size = pclFileGetSize(fd); x_fail_unless(size == 68, "Wrong file size"); + size = pclFileReadData(fd, buffer, READ_SIZE); x_fail_unless(strncmp((char*)buffer, refBuffer, strlen(refBuffer)) == 0, "Buffer not correctly read => media/mediaDB.db"); x_fail_unless(size == (strlen(refBuffer)+1), "Wrong size returned"); // strlen + 1 ==> inlcude cr/lf @@ -1026,25 +1028,21 @@ END_TEST START_TEST(test_InitDeinit) { - int i = 0; unsigned int shutdownReg = PCL_SHUTDOWN_TYPE_FAST | PCL_SHUTDOWN_TYPE_NORMAL; - for(i=0; i< 3; i++) - { - // initialize and deinitialize 1. time - (void)pclInitLibrary(gTheAppId, shutdownReg); - pclDeinitLibrary(); + // initialize and deinitialize 1. time + (void)pclInitLibrary(gTheAppId, shutdownReg); + pclDeinitLibrary(); - // initialize and deinitialize 2. time - (void)pclInitLibrary(gTheAppId, shutdownReg); - pclDeinitLibrary(); + // initialize and deinitialize 2. time + (void)pclInitLibrary(gTheAppId, shutdownReg); + pclDeinitLibrary(); - // initialize and deinitialize 3. time - (void)pclInitLibrary(gTheAppId, shutdownReg); - pclDeinitLibrary(); - } + // initialize and deinitialize 3. time + (void)pclInitLibrary(gTheAppId, shutdownReg); + pclDeinitLibrary(); } END_TEST @@ -1104,53 +1102,67 @@ static Suite * persistencyClientLib_suite() TCase * tc_persGetData = tcase_create("GetData"); tcase_add_test(tc_persGetData, test_GetData); + tcase_set_timeout(tc_persGetData, 8); TCase * tc_persSetData = tcase_create("SetData"); tcase_add_test(tc_persSetData, test_SetData); + tcase_set_timeout(tc_persSetData, 8); TCase * tc_persSetDataNoPRCT = tcase_create("SetDataNoPRCT"); tcase_add_test(tc_persSetDataNoPRCT, test_SetDataNoPRCT); + tcase_set_timeout(tc_persSetDataNoPRCT, 8); TCase * tc_persGetDataSize = tcase_create("GetDataSize"); tcase_add_test(tc_persGetDataSize, test_GetDataSize); + tcase_set_timeout(tc_persGetDataSize, 8); TCase * tc_persDeleteData = tcase_create("DeleteData"); tcase_add_test(tc_persDeleteData, test_DeleteData); - - + tcase_set_timeout(tc_persDeleteData, 8); TCase * tc_persGetDataHandle = tcase_create("GetDataHandle"); tcase_add_test(tc_persGetDataHandle, test_GetDataHandle); + tcase_set_timeout(tc_persGetDataHandle, 8); TCase * tc_persDataHandle = tcase_create("DataHandle"); tcase_add_test(tc_persDataHandle, test_DataHandle); + tcase_set_timeout(tc_persGetData, 8); TCase * tc_persDataHandleOpen = tcase_create("DataHandleOpen"); tcase_add_test(tc_persDataHandleOpen, test_DataHandleOpen); + tcase_set_timeout(tc_persDataHandleOpen, 8); TCase * tc_persDataFile = tcase_create("DataFile"); tcase_add_test(tc_persDataFile, test_DataFile); + tcase_set_timeout(tc_persDataFile, 8); TCase * tc_persDataFileRecovery = tcase_create("DataFileRecovery"); tcase_add_test(tc_persDataFileRecovery, test_DataFileRecovery); + tcase_set_timeout(tc_persDataFileRecovery, 8); TCase * tc_Plugin = tcase_create("Plugin"); tcase_add_test(tc_Plugin, test_Plugin); + tcase_set_timeout(tc_Plugin, 8); TCase * tc_ReadDefault = tcase_create("ReadDefault"); tcase_add_test(tc_ReadDefault, test_ReadDefault); + tcase_set_timeout(tc_ReadDefault, 8); TCase * tc_ReadConfDefault = tcase_create("ReadConfDefault"); tcase_add_test(tc_ReadConfDefault, test_ReadConfDefault); + tcase_set_timeout(tc_ReadConfDefault, 8); TCase * tc_GetPath = tcase_create("GetPath"); tcase_add_test(tc_GetPath, test_GetPath); + tcase_set_timeout(tc_GetPath, 8); TCase * tc_InitDeinit = tcase_create("InitDeinit"); tcase_add_test(tc_InitDeinit, test_InitDeinit); + tcase_set_timeout(tc_InitDeinit, 8); TCase * tc_NegHandle = tcase_create("NegHandle"); tcase_add_test(tc_NegHandle, test_NegHandle); + tcase_set_timeout(tc_NegHandle, 8); suite_add_tcase(s, tc_persSetData); suite_add_tcase(s, tc_persGetData); @@ -1160,13 +1172,15 @@ static Suite * persistencyClientLib_suite() suite_add_tcase(s, tc_persGetDataHandle); suite_add_tcase(s, tc_persDataHandle); suite_add_tcase(s, tc_persDataHandleOpen); - suite_add_tcase(s, tc_persDataFile); - suite_add_tcase(s, tc_persDataFileRecovery); suite_add_tcase(s, tc_ReadDefault); suite_add_tcase(s, tc_ReadConfDefault); + + suite_add_tcase(s, tc_persDataFile); + suite_add_tcase(s, tc_persDataFileRecovery); suite_add_tcase(s, tc_GetPath); - suite_add_tcase(s, tc_InitDeinit); suite_add_tcase(s, tc_NegHandle); + suite_add_tcase(s, tc_InitDeinit); + //suite_add_tcase(s, tc_Plugin); // activate only if the plugins are available |