summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIngo Huerner <ingo.huerner@xse.de>2014-05-06 11:24:28 +0200
committerIngo Huerner <ingo.huerner@xse.de>2014-05-06 11:24:28 +0200
commit5d04ae9d019b1072612e935eb13e198834a23b0f (patch)
tree17101e888b1aba5d643558a96b7a237e7c7a1884
parent2cb97c5860b58b12bac1789ebb0f93513f91fade (diff)
downloadpersistence-client-library-5d04ae9d019b1072612e935eb13e198834a23b0f.tar.gz
Fixed a problem with default file data
-rw-r--r--src/persistence_client_library.c8
-rw-r--r--src/persistence_client_library_backup_filelist.c9
-rw-r--r--src/persistence_client_library_file.c18
-rw-r--r--test/persistence_client_library_test.c50
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