Fixed a problem with default file data
authorIngo Huerner <ingo.huerner@xse.de>
Tue, 6 May 2014 09:24:28 +0000 (11:24 +0200)
committerIngo Huerner <ingo.huerner@xse.de>
Tue, 6 May 2014 09:24:28 +0000 (11:24 +0200)
src/persistence_client_library.c
src/persistence_client_library_backup_filelist.c
src/persistence_client_library_file.c
test/persistence_client_library_test.c

index 42a1c5c..c439976 100644 (file)
@@ -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
 
index 8c98898..9f6e768 100644 (file)
 #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
    {
index ab8f7b2..d1ab60b 100644 (file)
@@ -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
index 18d0dbf..8a53d3b 100644 (file)
@@ -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