summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuy Sagnes <guy.sagnes@continental-corporation.com>2014-03-06 12:03:50 +0100
committerGuy Sagnes <guy.sagnes@continental-corporation.com>2014-03-06 15:42:15 +0100
commitc5c11f1be06e74e92cda091de7a04bd3fb7e937e (patch)
tree4f1563fa1eb722d2e1e5ab6d90efdb70ff2755e8
parent3a6cc3228b93c647f0ffed4b53641572e78f71d7 (diff)
downloadpersistence-administrator-c5c11f1be06e74e92cda091de7a04bd3fb7e937e.tar.gz
Bugfix: Convert files to unix expected format
Issue reported by Ingo Hürner / Marko Hoyer Signed-off-by: Guy Sagnes <guy.sagnes@continental-corporation.com>
-rw-r--r--Administrator/inc/private/ssw_pers_admin_database_helper.h168
-rw-r--r--Administrator/src/ssw_pers_admin_common.c102
-rw-r--r--Administrator/src/ssw_pers_admin_database_helper.c1232
-rw-r--r--test/pers_svc_test/inc/test_pas_resource_config_add.h98
-rw-r--r--test/pers_svc_test/src/test_pas_check_data_after_reset.c236
-rw-r--r--test/pers_svc_test/src/test_pas_resource_config_add.c1458
-rw-r--r--test/persadmin_tool/src/persadmin_tool.c814
7 files changed, 2054 insertions, 2054 deletions
diff --git a/Administrator/inc/private/ssw_pers_admin_database_helper.h b/Administrator/inc/private/ssw_pers_admin_database_helper.h
index 0452f66..6155765 100644
--- a/Administrator/inc/private/ssw_pers_admin_database_helper.h
+++ b/Administrator/inc/private/ssw_pers_admin_database_helper.h
@@ -1,84 +1,84 @@
-#ifndef SSW_PERS_ADMIN_DATABASE_HELPER_H
-#define SSW_PERS_ADMIN_DATABASE_HELPER_H
-
-/**********************************************************************************************************************
-*
-* Copyright (C) 2012 Continental Automotive Systems, Inc.
-*
-* Author: Ana.Chisca@continental-corporation.com
-*
-* Interface: private - common functionality for database manipulation
-*
-* The file defines contains the defines according to
-* https://collab.genivi.org/wiki/display/genivi/SysInfraEGPersistenceConceptInterface
-*
-* This Source Code Form is subject to the terms of the Mozilla Public
-* License, v. 2.0. If a copy of the MPL was not distributed with this
-* file, You can obtain one at http://mozilla.org/MPL/2.0/.
-*
-* Date Author Version Reason
-* 2013.01.19 uidn3591 1.0.0.0 CSP_WZ#2060: Fix delete and copy keys by filter to conform to requirements
-* 2013.01.03 uidl9757 1.0.0.0 CSP_WZ#2060: Use pers_resource_config_table_if.h
-* 2012.11.12 uidn3591 1.0.0.0 CSP_WZ#1280: Created
-*
-**********************************************************************************************************************/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* #ifdef __cplusplus */
-
-#include "persComTypes.h"
-
-#include "persistence_admin_service.h"
-#include "persComRct.h"
-
-/**
- * @brief get the names of an application's databases based on the databases' type (local/shared)
- * @usage:
- *
- * @param pchDBRootPath [in] path to the folder where to look for the databases
- * @param pchAppName [in] application for which the databases are requested
- * @param eStorage [in] the type of the requested databases
- * @param pchDBPaths_out [out] pointer to a buffer where to store the databases' names [the databases' names are separated by '\0']
- * @param bufSize [in] size of buffer
- *
- * @return positive value: size of data passed in pchDBPaths_out ; negative value - error
- * TODO: define error codes
- */
-sint_t persadmin_get_all_db_paths_with_names(pconststr_t pchDBRootPath, pconststr_t pchAppName, PersistenceStorage_e eStorage, pstr_t pchDBPaths_out, sint_t bufSize);
-
-
-/**
- * @brief deletes keys filtered by user name and seat number
- *
- * @param pchDBPath[in] path to where the DB can be located
- * @param user_no [in] the user ID
- * @param seat_no [in] the seat number (seat 1 to 4; 0 is for all seats)
- *
- * @return 0 for success, negative value otherwise;
- * TODO: define error codes
- */
-sint_t persadmin_delete_keys_by_filter(PersASSelectionType_e type, pstr_t pchDBPath, uint32_t user_no, uint32_t seat_no);
-
-
-/**
- * @brief copies keys filtered by user name and seat number
- *
- * @param pchdestDBPath [in] destination DB path
- * @param pchsourceDBPath[in] source DB path
- * @param user_no [in] the user ID
- * @param seat_no [in] the seat number (seat 1 to 4; 0 is for all seats)
- *
- * @return 0 for success, negative value otherwise;
- * TODO: define error codes
- */
-sint_t persadmin_copy_keys_by_filter(PersASSelectionType_e type, pstr_t pchdestDBPath, pstr_t pchsourceDBPath, uint32_t user_no, uint32_t seat_no);
-
-
-
-#ifdef __cplusplus
-}
-#endif /* extern "C" { */
-
-#endif /*SSW_PERS_ADMIN_DATABASE_HELPER_H */
+#ifndef SSW_PERS_ADMIN_DATABASE_HELPER_H
+#define SSW_PERS_ADMIN_DATABASE_HELPER_H
+
+/**********************************************************************************************************************
+*
+* Copyright (C) 2012 Continental Automotive Systems, Inc.
+*
+* Author: Ana.Chisca@continental-corporation.com
+*
+* Interface: private - common functionality for database manipulation
+*
+* The file defines contains the defines according to
+* https://collab.genivi.org/wiki/display/genivi/SysInfraEGPersistenceConceptInterface
+*
+* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*
+* Date Author Version Reason
+* 2013.01.19 uidn3591 1.0.0.0 CSP_WZ#2060: Fix delete and copy keys by filter to conform to requirements
+* 2013.01.03 uidl9757 1.0.0.0 CSP_WZ#2060: Use pers_resource_config_table_if.h
+* 2012.11.12 uidn3591 1.0.0.0 CSP_WZ#1280: Created
+*
+**********************************************************************************************************************/
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* #ifdef __cplusplus */
+
+#include "persComTypes.h"
+
+#include "persistence_admin_service.h"
+#include "persComRct.h"
+
+/**
+ * @brief get the names of an application's databases based on the databases' type (local/shared)
+ * @usage:
+ *
+ * @param pchDBRootPath [in] path to the folder where to look for the databases
+ * @param pchAppName [in] application for which the databases are requested
+ * @param eStorage [in] the type of the requested databases
+ * @param pchDBPaths_out [out] pointer to a buffer where to store the databases' names [the databases' names are separated by '\0']
+ * @param bufSize [in] size of buffer
+ *
+ * @return positive value: size of data passed in pchDBPaths_out ; negative value - error
+ * TODO: define error codes
+ */
+sint_t persadmin_get_all_db_paths_with_names(pconststr_t pchDBRootPath, pconststr_t pchAppName, PersistenceStorage_e eStorage, pstr_t pchDBPaths_out, sint_t bufSize);
+
+
+/**
+ * @brief deletes keys filtered by user name and seat number
+ *
+ * @param pchDBPath[in] path to where the DB can be located
+ * @param user_no [in] the user ID
+ * @param seat_no [in] the seat number (seat 1 to 4; 0 is for all seats)
+ *
+ * @return 0 for success, negative value otherwise;
+ * TODO: define error codes
+ */
+sint_t persadmin_delete_keys_by_filter(PersASSelectionType_e type, pstr_t pchDBPath, uint32_t user_no, uint32_t seat_no);
+
+
+/**
+ * @brief copies keys filtered by user name and seat number
+ *
+ * @param pchdestDBPath [in] destination DB path
+ * @param pchsourceDBPath[in] source DB path
+ * @param user_no [in] the user ID
+ * @param seat_no [in] the seat number (seat 1 to 4; 0 is for all seats)
+ *
+ * @return 0 for success, negative value otherwise;
+ * TODO: define error codes
+ */
+sint_t persadmin_copy_keys_by_filter(PersASSelectionType_e type, pstr_t pchdestDBPath, pstr_t pchsourceDBPath, uint32_t user_no, uint32_t seat_no);
+
+
+
+#ifdef __cplusplus
+}
+#endif /* extern "C" { */
+
+#endif /*SSW_PERS_ADMIN_DATABASE_HELPER_H */
diff --git a/Administrator/src/ssw_pers_admin_common.c b/Administrator/src/ssw_pers_admin_common.c
index 0b0d640..839dff0 100644
--- a/Administrator/src/ssw_pers_admin_common.c
+++ b/Administrator/src/ssw_pers_admin_common.c
@@ -1,51 +1,51 @@
-/********************************************************************************************************************* * * Copyright (C) 2012 Continental Automotive Systems, Inc. * * Author: Ionut.Ieremie@continental-corporation.com * * Implementation of funtions declaredin ssw_pers_admin_common.h * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Date Author Reason * 2013.03.20 uidu0250 CSP_WZ#2250: Provide compress/uncompress functionality * 2013.02.07 uidu0250 CSP_WZ#2220: Removed Helplibs dependency (CRC16 checksum calculation) * 2013.01.22 uidn3591 CSP_WZ#2060: Implemented wrappers over libarchive to compress/uncompress files into/from an archive * 2013.01.04 uidu0250 CSP_WZ#2060: Switched get_hash_for_file implementation from using CRC32 to using CRC16 provided by HelpLibs * 2012.11.15 uidl9757 CSP_WZ#1280: Use protected interface pers_data_organization_if.h * 2012.11.16 uidn3565 CSP_WZ#1280: Added implementation for - persadmin_list_application_folders - persadmin_list_application_folders_get_size * 2012.11.15 uidl9757 CSP_WZ#1280: Created * **********************************************************************************************************************/
-/* ---------------------- include files --------------------------------- */ #include "persComTypes.h" #include <stddef.h> #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <dirent.h> #include <errno.h> #include <unistd.h> #include <fcntl.h> /* compress/uncompress */ #include <archive.h> #include <archive_entry.h> #include "malloc.h" #include "ssw_pers_admin_common.h" #include "ssw_pers_admin_files_helper.h" #include "persComDataOrg.h" #include "persistence_admin_service.h"
- /* ---------------------- local definitions -------------------------------- */ #define READ_BUFFER_LENGTH (16384) #define COPY_BUFFER_LENGTH (128) #define PATH_ABS_MAX_SIZE ( 512) #define PERSADMIN_POLICY_MARKER_CACHED PERS_ORG_CACHE_FOLDER_NAME #define PERSADMIN_POLICY_MARKER_WT PERS_ORG_WT_FOLDER_NAME
-#define CRC16_FILE_CHUNK_SIZE (10 * 1024) /* TO DO : This should be published in a protected interface */ #define PERSADMIN_LINKS_INFO_FILENAME "linksInfo.lnk"
-#define GetApplicationRootPath( RootPath, FullPath ) \ int pathLength = strlen( RootPath ); \ char FullPath[ strlen( gLocalCachePath ) + pathLength + sizeof( StringTerminator ) ]; \ snprintf( FullPath, sizeof( FullPath ), "%s", RootPath ); \ snprintf( FullPath + pathLength, sizeof( FullPath ) - pathLength, gLocalCachePath, "", "" )
-/* ---------------------- local types -------------------------------------- */
- /* ---------------------- local functions ---------------------------------- */ static sint_t persadmin_common_extract_group_id(pstr_t linkName) ; static void persadmin_common_remove_endofline(pstr_t line) ; static bool_t persadmin_is_shared_folder( pconststr_t name, int length ); static sint_t persadmin_copy_data(struct archive *ar, struct archive *aw);
- /* ---------------------- local variables ---------------------------------- */ //moved to "ssw_pers_admin_common.h" //extern const char StringTerminator;
- /* * export the application's information about links (to groups and public data) * returns the number of exported links, or a negative value in case of error */ sint_t persadmin_export_links(pstr_t absPathApplicationFolder, pstr_t absPathExportFolder) { pstr_t FuncName = "persadmin_export_links:" ; bool_t bEverythingOK = true ; pstr_t buffer = NIL ; bool_t bNothingToExport = false ; sint_t exportedLinks = 0 ; sint_t neededBufferSize = 0 ; FILE * fileExport = NIL ;
- if( (NIL == absPathApplicationFolder) || (NIL == absPathExportFolder)) { bEverythingOK = false ; printf("\n%s NIL param \n", FuncName) ; } else { if(0 != persadmin_check_if_file_exists(absPathApplicationFolder, true)) { bEverythingOK = false ; printf("\n%s folder does not exist (%s) \n", FuncName, absPathApplicationFolder) ; } else { if(0 != persadmin_check_if_file_exists(absPathExportFolder, true)) { bEverythingOK = false ; printf("\n%s folder does not exist (%s) \n", FuncName, absPathExportFolder) ; } } }
- if(bEverythingOK) { neededBufferSize = persadmin_list_folder_get_size(absPathApplicationFolder, PersadminFilterFilesLink, false) ; if(neededBufferSize > 0) { buffer = (pstr_t)malloc(neededBufferSize*sizeof(str_t)) ; if(NIL == buffer) { bEverythingOK = false ; } else { sint_t listingSize = persadmin_list_folder(absPathApplicationFolder, buffer, neededBufferSize, PersadminFilterFilesLink, false) ; if(neededBufferSize != listingSize) { bEverythingOK = false ; printf("\n%s persadmin_list_folder(%s) returned %d (expected %d) \n", FuncName, absPathApplicationFolder, listingSize, neededBufferSize) ; } } } else { if(0 == neededBufferSize) { /* no links to export */ bNothingToExport = true ; } else { bEverythingOK = false ; printf("\n%s persadmin_list_folder_get_size(<%s>, FilterFilesLink, false) failed\n", FuncName, absPathApplicationFolder) ; } } }
- if(bEverythingOK && (! bNothingToExport)) { /* create the export file */ str_t completePath[PERSADMIN_MAX_PATH_LENGHT] ; sint_t lenPathExport = strlen(absPathExportFolder) ; sint_t lenLinkFilename = strlen(PERSADMIN_LINKS_INFO_FILENAME) ;
- if( (lenPathExport + 1 + lenLinkFilename) < PERSADMIN_MAX_PATH_LENGHT ) { strncpy(completePath, absPathExportFolder, sizeof(completePath)) ; if('/' != completePath[lenPathExport -1]) { strncat(completePath, "/", sizeof(completePath)) ; } strncat(completePath, PERSADMIN_LINKS_INFO_FILENAME, sizeof(completePath)) ;
- fileExport = fopen(completePath, "w") ; if(NIL == fileExport) { bEverythingOK = false ; printf("\n%s fopen(<%s>, w) errno = %s\n", FuncName, completePath, strerror(errno)) ; } } else { bEverythingOK = false ; printf("\n%s path too long (%s/%s)\n", FuncName, absPathExportFolder, PERSADMIN_LINKS_INFO_FILENAME) ; } }
- if(bEverythingOK && (! bNothingToExport)) { /* for each link file in buffer, create an entry (line) in the export file * for links to group - only the number of the group (i.e. a hex value in 0x00 - 0xFF domain) is stored * for links to public data - the word "public" is stored **/ sint_t posInBuffer = 0 ; while((posInBuffer < neededBufferSize) && bEverythingOK) { sint_t lenCurrentLink = strlen(buffer+posInBuffer) ; if(0 == strcmp(buffer+posInBuffer, PERS_ORG_SHARED_PUBLIC_SYMLINK_NAME)) { /* it is the link to the public data */ if(0 > fputs("public\n", fileExport)) { bEverythingOK = false ; printf("\n%s fputs(public) errno=%s\n", FuncName, strerror(errno)) ; } else { exportedLinks++ ; } } else { sint_t groupID = persadmin_common_extract_group_id(buffer+posInBuffer) ; if(groupID >= 0) { str_t line[PERSADMIN_MAX_PATH_LENGHT] ; printf("\n%s groupID(%s)=0x%02X\n", FuncName, buffer+posInBuffer, groupID) ; snprintf(line, sizeof(line), "%02X\n", groupID) ; if(0 > fputs(line, fileExport)) { bEverythingOK = false ; printf("\n%s fputs(%02X) errno=%s\n", FuncName, groupID, strerror(errno)) ; } else { exportedLinks++ ; } } else { printf("\n%s unable to extract group ID from (%s). Ignore it\n", FuncName, buffer+posInBuffer) ; } } posInBuffer += (lenCurrentLink + 1) ; } }
- if(NIL != buffer) { free(buffer) ; }
- if(NIL != fileExport) { fclose(fileExport) ; }
- return bEverythingOK ? exportedLinks : PAS_FAILURE; }
-/* * install links (to groups and public data) into the application folder(indicated by absPathApplicationFolder) * based on information available inside the import folder (indicated by absPathImportFolder) * returns the number of installed links, or a negative value in case of error */ sint_t persadmin_import_links(pstr_t absPathImportFolder, pstr_t absPathApplicationFolder) { pstr_t FuncName = "persadmin_import_links:" ; bool_t bEverythingOK = true ; bool_t bNothingToImport = false ; sint_t importedLinks = 0 ; FILE * fileImport = NIL ; bool_t bImportInCachedPath = true ;
- if( (NIL == absPathImportFolder) || (NIL == absPathApplicationFolder)) { bEverythingOK = false ; printf("\n%s NIL param \n", FuncName) ; } else { if(0 != persadmin_check_if_file_exists(absPathImportFolder, true)) { bEverythingOK = false ; printf("\n%s folder does not exist (%s) \n", FuncName, absPathImportFolder) ; } else { if(0 != persadmin_check_if_file_exists(absPathApplicationFolder, true)) { bEverythingOK = false ; printf("\n%s folder does not exist (%s) \n", FuncName, absPathApplicationFolder) ; } } }
- if(bEverythingOK) { /* check if the absPathApplicationFolder is a cached or write-through path */ if(NIL != strstr(absPathApplicationFolder, PERSADMIN_POLICY_MARKER_CACHED)) { /* cached path */ bImportInCachedPath = true ; } else { /* not a cached path, so it ahould be a write-through path */ if(NIL != strstr(absPathApplicationFolder, PERSADMIN_POLICY_MARKER_WT)) { /* write-through */ bImportInCachedPath = false ; } else { bEverythingOK = false ; printf("\n%s no cached or wt path (%s) \n", FuncName, absPathApplicationFolder) ; } } }
- if(bEverythingOK) { /* open the source file */ str_t completePath[PERSADMIN_MAX_PATH_LENGHT] ; sint_t lenPathImport = strlen(absPathImportFolder) ; sint_t lenLinkFilename = strlen(PERSADMIN_LINKS_INFO_FILENAME) ;
- if( (lenPathImport + 1 + lenLinkFilename) < PERSADMIN_MAX_PATH_LENGHT ) { strncpy(completePath, absPathImportFolder, sizeof(completePath)) ; if('/' != completePath[lenPathImport -1]) { strncat(completePath, "/", sizeof(completePath)) ; } strncat(completePath, PERSADMIN_LINKS_INFO_FILENAME, sizeof(completePath)) ;
- fileImport = fopen(completePath, "r") ; if(NIL == fileImport) { /* nothing to import */ bNothingToImport = true ; printf("\n%s fopen(<%s>, r) errno = %s\n", FuncName, completePath, strerror(errno)) ; } } else { bEverythingOK = false ; printf("\n%s path too long (%s/%s)\n", FuncName, absPathImportFolder, PERSADMIN_LINKS_INFO_FILENAME) ; } }
- if(bEverythingOK && (! bNothingToImport)) { bool_t bEndOfFileReached = false ;
- str_t appFolderPath[PERSADMIN_MAX_PATH_LENGHT] ; sint_t lenAppFolder = strlen(absPathApplicationFolder) ;
- if(lenAppFolder + 1 < PERSADMIN_MAX_PATH_LENGHT) { strncpy(appFolderPath, absPathApplicationFolder, sizeof(appFolderPath)) ; if('/' != appFolderPath[lenAppFolder-1]) { strncat(appFolderPath, "/", sizeof(appFolderPath)) ; lenAppFolder += 1 ; } } else { bEverythingOK = false ; printf("\n%s path too long (%s)\n", FuncName, absPathImportFolder) ; } while((! bEndOfFileReached) && bEverythingOK) { str_t line[256] ; pstr_t pResult = fgets(line, sizeof(line), fileImport) ; if(NIL == pResult) { /* end of file */ bEndOfFileReached = true ; } else { if(strlen(line) > (sizeof(line) - 3)) /* 3 <=> \n \r \0 */ { bEverythingOK = false ; printf("%s - unexpected line too long \n", FuncName) ; } else { str_t linkTarget[256] ; str_t linkPathname[256] ; bool_t bIgnoreLine = false ; persadmin_common_remove_endofline(line) ; if(0 == strcmp(line, "public")) { snprintf(linkTarget, sizeof(linkTarget), "%s", bImportInCachedPath ? PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ : PERS_ORG_SHARED_PUBLIC_WT_PATH_) ; if((sizeof(linkPathname)-1) < snprintf(linkPathname, sizeof(linkPathname), "%s%s", appFolderPath, PERS_ORG_SHARED_PUBLIC_SYMLINK_NAME)) { /* hard to believe, but anyway */ bIgnoreLine = true ; printf("%s - unexpected linkPathname too long (%s%s) \n", FuncName, appFolderPath, PERS_ORG_SHARED_PUBLIC_SYMLINK_NAME) ; } } else { sint_t groupID ; sint_t result = sscanf(line, "%X", &groupID) ; if(1 == result) { snprintf(linkTarget, sizeof(linkTarget), "%s%02X", (bImportInCachedPath ? PERS_ORG_SHARED_GROUP_CACHE_PATH_ : PERS_ORG_SHARED_GROUP_WT_PATH_), groupID) ; if((sizeof(linkPathname)-1) < snprintf(linkPathname, sizeof(linkPathname), "%s%s%02X", appFolderPath, PERS_ORG_SHARED_GROUP_SYMLINK_PREFIX, groupID)) { /* hard to believe, but anyway */ bIgnoreLine = true ; printf("%s - unexpected linkPathname too long (%s%s%02X) \n", FuncName, appFolderPath, PERS_ORG_SHARED_GROUP_SYMLINK_PREFIX, groupID) ; } } else { bIgnoreLine = true ; printf("%s - unable to extract group ID from (%s) - ignore it \n", FuncName, line) ; } }
- if( ! bIgnoreLine) { if(0 <= persadmin_check_if_file_exists(linkPathname, false)) { if(0 > persadmin_delete_file(linkPathname)) { bEverythingOK = false ; printf("%s - unable to delete existing link (%s) \n", FuncName, linkPathname) ; } }
- if(bEverythingOK) { if(0 == persadmin_create_symbolic_link(linkPathname, linkTarget)) { importedLinks++ ; } else { bEverythingOK = false ; printf("%s - persadmin_create_symbolic_link(<%s>, <%s>) failed \n", FuncName, linkPathname, linkTarget) ; } } } } }
- } }
- if(NIL != fileImport) { fclose(fileImport) ; }
- return bEverythingOK ? importedLinks : PAS_FAILURE; }
-
-/* * linkName is not checked against NIL * return group ID, or negative value for error * it is assumed that lenght of linkName < PERSADMIN_MAX_PATH_LENGHT **/ static sint_t persadmin_common_extract_group_id(pstr_t linkName) { sint_t groupID = -1 ; sint_t lenPrefix = strlen(PERS_ORG_SHARED_GROUP_SYMLINK_PREFIX) ;
- if(strlen(linkName) > lenPrefix) { if(0 == strncmp(linkName, PERS_ORG_SHARED_GROUP_SYMLINK_PREFIX, lenPrefix)) { if(1 != sscanf(linkName+lenPrefix, "%X", &groupID)) { groupID = -1 ; } } }
- return groupID ; }
-/* * line is not checked against NIL * the content of line is changed **/ static void persadmin_common_remove_endofline(pstr_t line) { sint_t len = strlen(line) ; if((len > 0) && (('\r' == line[len-1]) || ('\n' == line[len-1]))) { line[len-1] = '\0' ; }
- if((len > 1) && (('\r' == line[len-2]) || ('\n' == line[len-2]))) { line[len-2] = '\0' ; } }
- sint_t persadmin_list_application_folders( pconststr_t rootPath, pstr_t list, sint_t listSize ) { sint_t result = PAS_FAILURE;
- if ( ( rootPath != 0 ) && ( list != 0 ) && ( listSize > 0 ) ) { GetApplicationRootPath( rootPath, completeRootPath );
- // Clear the output buffer before retrieving the actual list memset( list, 0, listSize );
- result = persadmin_list_folder( completeRootPath, list, listSize, PersadminFilterFolders, false );
- if ( result >= 0 ) { char * crtName = list; bool_t done = false; result += sizeof( StringTerminator ); while ( ( ( * crtName ) != 0 ) && ( done == false ) ) { int length = strlen( crtName ); if ( persadmin_is_shared_folder( crtName, length ) == true ) { result -= length + sizeof( StringTerminator ); memmove( crtName, crtName + length + sizeof( StringTerminator ), listSize - ( crtName - list ) - length - sizeof( StringTerminator ) ); done = true; } else { crtName += length + sizeof( StringTerminator ); } } } }
- return result; }
-sint_t persadmin_list_application_folders_get_size( pconststr_t rootPath ) { sint_t result = PAS_FAILURE;
- GetApplicationRootPath( rootPath, completeRootPath ); result = persadmin_list_folder_get_size( completeRootPath, PersadminFilterFolders, false );
- if ( result > 0 ) { // Add space for doubling the final '\0' - this is not done inside persadmin_list_folder_get_size() result += sizeof( StringTerminator ); }
- return result; }
-bool_t persadmin_is_shared_folder( pconststr_t name, int length ) { bool_t result = false; int compLen = strlen( gSharedPathName );
- if ( ( name != 0 ) && ( length == compLen ) ) { int i = 0; result = true; for ( ; ( ( i < compLen ) && ( result == true ) ); ++i ) { if ( gSharedPathName[ i ] != name[ i ] ) { result = false; } } }
- return result; } /** * @brief Saves files together into a single archive. * @usage persadmin_compress("/path/to/compress/to/archive_name.tgz", "/path/from/where/to/compress") * @return 0 for success, negative value otherwise. */ sint_t persadmin_compress(pstr_t compressTo, pstr_t compressFrom) { uint8_t buffer [READ_BUFFER_LENGTH]; str_t pchParentPath [PATH_ABS_MAX_SIZE]; pstr_t pchStrPos = NIL; struct archive *psArchive = NIL; struct archive *psDisk = NIL; struct archive_entry *psEntry = NIL; sint_t s32Result = ARCHIVE_OK; sint_t s32Length = 0; sint_t fd; sint_t s32ParentPathLength = 0; if( (NIL == compressTo) || (NIL == compressFrom) ) { s32Result = ARCHIVE_FAILED; printf("persadmin_compress - invalid parameters \n"); } if( ARCHIVE_OK == s32Result ) { printf("persadmin_compress - create <%s> from <%s>\n", compressTo, compressFrom); psArchive = archive_write_new(); if( NIL == psArchive ) { s32Result = ARCHIVE_FAILED; printf("persadmin_compress - archive_write_new ERR\n"); } } if( ARCHIVE_OK == s32Result ) { /* this in turn calls archive_write_add_filter_gzip; */ s32Result = archive_write_set_compression_gzip(psArchive); if( ARCHIVE_OK != s32Result ) { printf("persadmin_compress - archive_write_set_compression_gzip ERR %d\n", s32Result); } } if( ARCHIVE_OK == s32Result ) { /* portable archive exchange; */ archive_write_set_format_pax(psArchive); compressTo = (strcmp(compressTo, "-") == 0) ? NIL : compressTo; s32Result = archive_write_open_filename(psArchive, compressTo); if( ARCHIVE_OK != s32Result ) { printf("persadmin_compress - archive_write_open_filename ERR %d\n", s32Result); } } if( ARCHIVE_OK == s32Result ) { psDisk = archive_read_disk_new(); if( NIL == psDisk ) { s32Result = ARCHIVE_FAILED; printf("persadmin_compress - archive_read_disk_new ERR\n"); } } if( ARCHIVE_OK == s32Result ) { archive_read_disk_set_standard_lookup(psDisk); s32Result = archive_read_disk_open(psDisk, compressFrom); if( ARCHIVE_OK != s32Result ) { printf("persadmin_compress - archive_read_disk_new ERR %s\n", archive_error_string(psDisk)); } } memset(pchParentPath, 0, sizeof(pchParentPath)); snprintf(pchParentPath, sizeof(pchParentPath), compressFrom); pchStrPos = strrchr(pchParentPath, '/'); if(NIL != pchStrPos) { *pchStrPos = '\0'; } s32ParentPathLength = strlen(pchParentPath); while( ARCHIVE_OK == s32Result ) { psEntry = archive_entry_new(); s32Result = archive_read_next_header2(psDisk, psEntry); switch( s32Result ) { case ARCHIVE_EOF: { /* nothing else to do; */ break; } case ARCHIVE_OK: { str_t pstrTemp[PATH_ABS_MAX_SIZE]; pstr_t p = (pstr_t)archive_entry_pathname(psEntry); if(NIL != p) { /* remove parent section and save relative pathnames */ memset(pstrTemp, 0, sizeof(pstrTemp)); snprintf(pstrTemp, sizeof(pstrTemp), "%s", p + (s32ParentPathLength + 1)); archive_entry_copy_pathname(psEntry, pstrTemp); } archive_read_disk_descend(psDisk); s32Result = archive_write_header(psArchive, psEntry); if( ARCHIVE_OK > s32Result) { printf("persadmin_compress - archive_write_header ERR %s\n", archive_error_string(psArchive)); } if( ARCHIVE_FATAL == s32Result ) { /* exit; */ printf("persadmin_compress - archive_write_header ERR FATAL\n"); } if( ARCHIVE_FAILED < s32Result ) { #if 0 /* Ideally, we would be able to use * the same code to copy a body from * an archive_read_disk to an * archive_write that we use for * copying data from an archive_read * to an archive_write_disk. * Unfortunately, this doesn't quite * work yet. */ persadmin_copy_data(psDisk, psArchive); #else /* For now, we use a simpler loop to copy data * into the target archive. */ fd = open(archive_entry_sourcepath(psEntry), O_RDONLY); s32Length = read(fd, buffer, READ_BUFFER_LENGTH); while( s32Length > 0 ) { archive_write_data(psArchive, buffer, s32Length); s32Length = read(fd, buffer, READ_BUFFER_LENGTH); } close(fd); #endif } break; } default: { printf("persadmin_compress - archive_read_next_header2 ERR %s\n", archive_error_string(psDisk)); /* exit; */ break; } } if( NIL != psEntry ) { archive_entry_free(psEntry); } } /* perform cleaning operations; */ if( NIL != psDisk ) { archive_read_close(psDisk); archive_read_free(psDisk); } if( NIL != psArchive ) { archive_write_close(psArchive); archive_write_free(psArchive); } /* overwrite result; */ s32Result = (s32Result == ARCHIVE_EOF) ? ARCHIVE_OK : s32Result; /* return result; */ return s32Result; } /* persadmin_compress() */ /** * @brief Restore files from an archive. * @usage persadmin_uncompress("/path/from/where/to/extract/archive_name.tgz", "/path/where/to/extract/") - extract to specified folder * @usage persadmin_uncompress("/path/from/where/to/extract/archive_name.tgz", "") - extract to local folder * @return 0 for success, negative value otherwise. */ sint_t persadmin_uncompress(pstr_t extractFrom, pstr_t extractTo) { struct archive *psArchive = NIL; struct archive *psExtract = NIL; struct archive_entry *psEntry = NIL; sint_t s32Result = ARCHIVE_OK; sint_t s32Flags = ARCHIVE_EXTRACT_TIME; /* select which attributes to restore; */ s32Flags |= ARCHIVE_EXTRACT_PERM; s32Flags |= ARCHIVE_EXTRACT_ACL; s32Flags |= ARCHIVE_EXTRACT_FFLAGS; if( (NIL == extractFrom) || (NIL == extractTo) ) { s32Result = ARCHIVE_FAILED; printf("persadmin_uncompress - invalid parameters\n"); } if( ARCHIVE_OK == s32Result ) { psArchive = archive_read_new(); if( NIL == psArchive ) { s32Result = ARCHIVE_FAILED; printf("persadmin_uncompress - archive_read_new ERR\n"); } } if( ARCHIVE_OK == s32Result ) { archive_read_support_format_all(psArchive); archive_read_support_compression_all(psArchive); psExtract = archive_write_disk_new(); s32Result = ((NIL == psExtract) ? ARCHIVE_FAILED : s32Result); archive_write_disk_set_options(psExtract, s32Flags); archive_write_disk_set_standard_lookup(psExtract); } if( ARCHIVE_OK == s32Result ) { s32Result = archive_read_open_filename(psArchive, extractFrom, 10240); /* exit if s32Result != ARCHIVE_OK; */ } while( ARCHIVE_OK == s32Result ) { s32Result = archive_read_next_header(psArchive, &psEntry); switch( s32Result ) { case ARCHIVE_EOF: { /* nothing else to do; */ break; } case ARCHIVE_OK: { /* modify entry here to extract to the needed location; */ str_t pstrTemp[PATH_ABS_MAX_SIZE]; memset(pstrTemp, 0, sizeof(pstrTemp)); snprintf(pstrTemp, sizeof(pstrTemp), "%s%s", extractTo, archive_entry_pathname(psEntry)); printf("persadmin_uncompress - archive_entry_pathname %s\n", pstrTemp); archive_entry_copy_pathname(psEntry, pstrTemp); s32Result = archive_write_header(psExtract, psEntry); if( ARCHIVE_OK == s32Result ) { if( archive_entry_size(psEntry) > 0 ) { s32Result = persadmin_copy_data(psArchive, psExtract); if( ARCHIVE_OK != s32Result ) { printf("persadmin_uncompress - copy_data ERR %s\n", archive_error_string(psExtract)); } /* if( ARCHIVE_WARN > s32Result ) exit; */ } if( ARCHIVE_OK == s32Result ) { s32Result = archive_write_finish_entry(psExtract); if( ARCHIVE_OK != s32Result ) { printf("persadmin_uncompress - archive_write_finish_entry ERR %s\n", archive_error_string(psExtract)); } /* if( ARCHIVE_WARN > s32Result ) exit; */ } } else { printf("persadmin_uncompress - archive_write_header ERR %s\n", archive_error_string(psExtract)); } break; } default: { printf("persadmin_uncompress - archive_read_next_header ERR %d\n", s32Result); break; } } } /* perform cleaning operations; */ if( NIL != psArchive ) { archive_read_close(psArchive); archive_read_free(psArchive); } if( NIL != psExtract ) { archive_write_close(psExtract); archive_write_free(psExtract); } /* overwrite result; */ s32Result = (s32Result == ARCHIVE_EOF) ? ARCHIVE_OK : s32Result; /* return result; */ return s32Result; } /* persadmin_uncompress() */ static sint_t persadmin_copy_data(struct archive *ar, struct archive *aw) { sint_t s32Result = ARCHIVE_OK; sint_t s32Size = 0; uint8_t buffer[COPY_BUFFER_LENGTH]; while( ARCHIVE_OK == s32Result ) { s32Size = archive_read_data(ar, buffer, COPY_BUFFER_LENGTH); if( 0 > s32Size ) { printf("persadmin_copy_data - archive_read_data ERR\n"); s32Result = ARCHIVE_FAILED; } else { if( 0 < s32Size ) { s32Size = archive_write_data(aw, buffer, COPY_BUFFER_LENGTH); if( 0 > s32Size ) { printf("persadmin_copy_data - archive_write_data ERR\n"); s32Result = ARCHIVE_FAILED; } } else { /* nothing to copy; */ break; } } } /* return result; */ return s32Result; } /* persadmin_copy_data() */
+/********************************************************************************************************************* * * Copyright (C) 2012 Continental Automotive Systems, Inc. * * Author: Ionut.Ieremie@continental-corporation.com * * Implementation of funtions declaredin ssw_pers_admin_common.h * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Date Author Reason * 2013.03.20 uidu0250 CSP_WZ#2250: Provide compress/uncompress functionality * 2013.02.07 uidu0250 CSP_WZ#2220: Removed Helplibs dependency (CRC16 checksum calculation) * 2013.01.22 uidn3591 CSP_WZ#2060: Implemented wrappers over libarchive to compress/uncompress files into/from an archive * 2013.01.04 uidu0250 CSP_WZ#2060: Switched get_hash_for_file implementation from using CRC32 to using CRC16 provided by HelpLibs * 2012.11.15 uidl9757 CSP_WZ#1280: Use protected interface pers_data_organization_if.h * 2012.11.16 uidn3565 CSP_WZ#1280: Added implementation for - persadmin_list_application_folders - persadmin_list_application_folders_get_size * 2012.11.15 uidl9757 CSP_WZ#1280: Created * **********************************************************************************************************************/
+/* ---------------------- include files --------------------------------- */ #include "persComTypes.h" #include <stddef.h> #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/stat.h> #include <dirent.h> #include <errno.h> #include <unistd.h> #include <fcntl.h> /* compress/uncompress */ #include <archive.h> #include <archive_entry.h> #include "malloc.h" #include "ssw_pers_admin_common.h" #include "ssw_pers_admin_files_helper.h" #include "persComDataOrg.h" #include "persistence_admin_service.h"
+ /* ---------------------- local definitions -------------------------------- */ #define READ_BUFFER_LENGTH (16384) #define COPY_BUFFER_LENGTH (128) #define PATH_ABS_MAX_SIZE ( 512) #define PERSADMIN_POLICY_MARKER_CACHED PERS_ORG_CACHE_FOLDER_NAME #define PERSADMIN_POLICY_MARKER_WT PERS_ORG_WT_FOLDER_NAME
+#define CRC16_FILE_CHUNK_SIZE (10 * 1024) /* TO DO : This should be published in a protected interface */ #define PERSADMIN_LINKS_INFO_FILENAME "linksInfo.lnk"
+#define GetApplicationRootPath( RootPath, FullPath ) \ int pathLength = strlen( RootPath ); \ char FullPath[ strlen( gLocalCachePath ) + pathLength + sizeof( StringTerminator ) ]; \ snprintf( FullPath, sizeof( FullPath ), "%s", RootPath ); \ snprintf( FullPath + pathLength, sizeof( FullPath ) - pathLength, gLocalCachePath, "", "" )
+/* ---------------------- local types -------------------------------------- */
+ /* ---------------------- local functions ---------------------------------- */ static sint_t persadmin_common_extract_group_id(pstr_t linkName) ; static void persadmin_common_remove_endofline(pstr_t line) ; static bool_t persadmin_is_shared_folder( pconststr_t name, int length ); static sint_t persadmin_copy_data(struct archive *ar, struct archive *aw);
+ /* ---------------------- local variables ---------------------------------- */ //moved to "ssw_pers_admin_common.h" //extern const char StringTerminator;
+ /* * export the application's information about links (to groups and public data) * returns the number of exported links, or a negative value in case of error */ sint_t persadmin_export_links(pstr_t absPathApplicationFolder, pstr_t absPathExportFolder) { pstr_t FuncName = "persadmin_export_links:" ; bool_t bEverythingOK = true ; pstr_t buffer = NIL ; bool_t bNothingToExport = false ; sint_t exportedLinks = 0 ; sint_t neededBufferSize = 0 ; FILE * fileExport = NIL ;
+ if( (NIL == absPathApplicationFolder) || (NIL == absPathExportFolder)) { bEverythingOK = false ; printf("\n%s NIL param \n", FuncName) ; } else { if(0 != persadmin_check_if_file_exists(absPathApplicationFolder, true)) { bEverythingOK = false ; printf("\n%s folder does not exist (%s) \n", FuncName, absPathApplicationFolder) ; } else { if(0 != persadmin_check_if_file_exists(absPathExportFolder, true)) { bEverythingOK = false ; printf("\n%s folder does not exist (%s) \n", FuncName, absPathExportFolder) ; } } }
+ if(bEverythingOK) { neededBufferSize = persadmin_list_folder_get_size(absPathApplicationFolder, PersadminFilterFilesLink, false) ; if(neededBufferSize > 0) { buffer = (pstr_t)malloc(neededBufferSize*sizeof(str_t)) ; if(NIL == buffer) { bEverythingOK = false ; } else { sint_t listingSize = persadmin_list_folder(absPathApplicationFolder, buffer, neededBufferSize, PersadminFilterFilesLink, false) ; if(neededBufferSize != listingSize) { bEverythingOK = false ; printf("\n%s persadmin_list_folder(%s) returned %d (expected %d) \n", FuncName, absPathApplicationFolder, listingSize, neededBufferSize) ; } } } else { if(0 == neededBufferSize) { /* no links to export */ bNothingToExport = true ; } else { bEverythingOK = false ; printf("\n%s persadmin_list_folder_get_size(<%s>, FilterFilesLink, false) failed\n", FuncName, absPathApplicationFolder) ; } } }
+ if(bEverythingOK && (! bNothingToExport)) { /* create the export file */ str_t completePath[PERSADMIN_MAX_PATH_LENGHT] ; sint_t lenPathExport = strlen(absPathExportFolder) ; sint_t lenLinkFilename = strlen(PERSADMIN_LINKS_INFO_FILENAME) ;
+ if( (lenPathExport + 1 + lenLinkFilename) < PERSADMIN_MAX_PATH_LENGHT ) { strncpy(completePath, absPathExportFolder, sizeof(completePath)) ; if('/' != completePath[lenPathExport -1]) { strncat(completePath, "/", sizeof(completePath)) ; } strncat(completePath, PERSADMIN_LINKS_INFO_FILENAME, sizeof(completePath)) ;
+ fileExport = fopen(completePath, "w") ; if(NIL == fileExport) { bEverythingOK = false ; printf("\n%s fopen(<%s>, w) errno = %s\n", FuncName, completePath, strerror(errno)) ; } } else { bEverythingOK = false ; printf("\n%s path too long (%s/%s)\n", FuncName, absPathExportFolder, PERSADMIN_LINKS_INFO_FILENAME) ; } }
+ if(bEverythingOK && (! bNothingToExport)) { /* for each link file in buffer, create an entry (line) in the export file * for links to group - only the number of the group (i.e. a hex value in 0x00 - 0xFF domain) is stored * for links to public data - the word "public" is stored **/ sint_t posInBuffer = 0 ; while((posInBuffer < neededBufferSize) && bEverythingOK) { sint_t lenCurrentLink = strlen(buffer+posInBuffer) ; if(0 == strcmp(buffer+posInBuffer, PERS_ORG_SHARED_PUBLIC_SYMLINK_NAME)) { /* it is the link to the public data */ if(0 > fputs("public\n", fileExport)) { bEverythingOK = false ; printf("\n%s fputs(public) errno=%s\n", FuncName, strerror(errno)) ; } else { exportedLinks++ ; } } else { sint_t groupID = persadmin_common_extract_group_id(buffer+posInBuffer) ; if(groupID >= 0) { str_t line[PERSADMIN_MAX_PATH_LENGHT] ; printf("\n%s groupID(%s)=0x%02X\n", FuncName, buffer+posInBuffer, groupID) ; snprintf(line, sizeof(line), "%02X\n", groupID) ; if(0 > fputs(line, fileExport)) { bEverythingOK = false ; printf("\n%s fputs(%02X) errno=%s\n", FuncName, groupID, strerror(errno)) ; } else { exportedLinks++ ; } } else { printf("\n%s unable to extract group ID from (%s). Ignore it\n", FuncName, buffer+posInBuffer) ; } } posInBuffer += (lenCurrentLink + 1) ; } }
+ if(NIL != buffer) { free(buffer) ; }
+ if(NIL != fileExport) { fclose(fileExport) ; }
+ return bEverythingOK ? exportedLinks : PAS_FAILURE; }
+/* * install links (to groups and public data) into the application folder(indicated by absPathApplicationFolder) * based on information available inside the import folder (indicated by absPathImportFolder) * returns the number of installed links, or a negative value in case of error */ sint_t persadmin_import_links(pstr_t absPathImportFolder, pstr_t absPathApplicationFolder) { pstr_t FuncName = "persadmin_import_links:" ; bool_t bEverythingOK = true ; bool_t bNothingToImport = false ; sint_t importedLinks = 0 ; FILE * fileImport = NIL ; bool_t bImportInCachedPath = true ;
+ if( (NIL == absPathImportFolder) || (NIL == absPathApplicationFolder)) { bEverythingOK = false ; printf("\n%s NIL param \n", FuncName) ; } else { if(0 != persadmin_check_if_file_exists(absPathImportFolder, true)) { bEverythingOK = false ; printf("\n%s folder does not exist (%s) \n", FuncName, absPathImportFolder) ; } else { if(0 != persadmin_check_if_file_exists(absPathApplicationFolder, true)) { bEverythingOK = false ; printf("\n%s folder does not exist (%s) \n", FuncName, absPathApplicationFolder) ; } } }
+ if(bEverythingOK) { /* check if the absPathApplicationFolder is a cached or write-through path */ if(NIL != strstr(absPathApplicationFolder, PERSADMIN_POLICY_MARKER_CACHED)) { /* cached path */ bImportInCachedPath = true ; } else { /* not a cached path, so it ahould be a write-through path */ if(NIL != strstr(absPathApplicationFolder, PERSADMIN_POLICY_MARKER_WT)) { /* write-through */ bImportInCachedPath = false ; } else { bEverythingOK = false ; printf("\n%s no cached or wt path (%s) \n", FuncName, absPathApplicationFolder) ; } } }
+ if(bEverythingOK) { /* open the source file */ str_t completePath[PERSADMIN_MAX_PATH_LENGHT] ; sint_t lenPathImport = strlen(absPathImportFolder) ; sint_t lenLinkFilename = strlen(PERSADMIN_LINKS_INFO_FILENAME) ;
+ if( (lenPathImport + 1 + lenLinkFilename) < PERSADMIN_MAX_PATH_LENGHT ) { strncpy(completePath, absPathImportFolder, sizeof(completePath)) ; if('/' != completePath[lenPathImport -1]) { strncat(completePath, "/", sizeof(completePath)) ; } strncat(completePath, PERSADMIN_LINKS_INFO_FILENAME, sizeof(completePath)) ;
+ fileImport = fopen(completePath, "r") ; if(NIL == fileImport) { /* nothing to import */ bNothingToImport = true ; printf("\n%s fopen(<%s>, r) errno = %s\n", FuncName, completePath, strerror(errno)) ; } } else { bEverythingOK = false ; printf("\n%s path too long (%s/%s)\n", FuncName, absPathImportFolder, PERSADMIN_LINKS_INFO_FILENAME) ; } }
+ if(bEverythingOK && (! bNothingToImport)) { bool_t bEndOfFileReached = false ;
+ str_t appFolderPath[PERSADMIN_MAX_PATH_LENGHT] ; sint_t lenAppFolder = strlen(absPathApplicationFolder) ;
+ if(lenAppFolder + 1 < PERSADMIN_MAX_PATH_LENGHT) { strncpy(appFolderPath, absPathApplicationFolder, sizeof(appFolderPath)) ; if('/' != appFolderPath[lenAppFolder-1]) { strncat(appFolderPath, "/", sizeof(appFolderPath)) ; lenAppFolder += 1 ; } } else { bEverythingOK = false ; printf("\n%s path too long (%s)\n", FuncName, absPathImportFolder) ; } while((! bEndOfFileReached) && bEverythingOK) { str_t line[256] ; pstr_t pResult = fgets(line, sizeof(line), fileImport) ; if(NIL == pResult) { /* end of file */ bEndOfFileReached = true ; } else { if(strlen(line) > (sizeof(line) - 3)) /* 3 <=> \n \r \0 */ { bEverythingOK = false ; printf("%s - unexpected line too long \n", FuncName) ; } else { str_t linkTarget[256] ; str_t linkPathname[256] ; bool_t bIgnoreLine = false ; persadmin_common_remove_endofline(line) ; if(0 == strcmp(line, "public")) { snprintf(linkTarget, sizeof(linkTarget), "%s", bImportInCachedPath ? PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ : PERS_ORG_SHARED_PUBLIC_WT_PATH_) ; if((sizeof(linkPathname)-1) < snprintf(linkPathname, sizeof(linkPathname), "%s%s", appFolderPath, PERS_ORG_SHARED_PUBLIC_SYMLINK_NAME)) { /* hard to believe, but anyway */ bIgnoreLine = true ; printf("%s - unexpected linkPathname too long (%s%s) \n", FuncName, appFolderPath, PERS_ORG_SHARED_PUBLIC_SYMLINK_NAME) ; } } else { sint_t groupID ; sint_t result = sscanf(line, "%X", &groupID) ; if(1 == result) { snprintf(linkTarget, sizeof(linkTarget), "%s%02X", (bImportInCachedPath ? PERS_ORG_SHARED_GROUP_CACHE_PATH_ : PERS_ORG_SHARED_GROUP_WT_PATH_), groupID) ; if((sizeof(linkPathname)-1) < snprintf(linkPathname, sizeof(linkPathname), "%s%s%02X", appFolderPath, PERS_ORG_SHARED_GROUP_SYMLINK_PREFIX, groupID)) { /* hard to believe, but anyway */ bIgnoreLine = true ; printf("%s - unexpected linkPathname too long (%s%s%02X) \n", FuncName, appFolderPath, PERS_ORG_SHARED_GROUP_SYMLINK_PREFIX, groupID) ; } } else { bIgnoreLine = true ; printf("%s - unable to extract group ID from (%s) - ignore it \n", FuncName, line) ; } }
+ if( ! bIgnoreLine) { if(0 <= persadmin_check_if_file_exists(linkPathname, false)) { if(0 > persadmin_delete_file(linkPathname)) { bEverythingOK = false ; printf("%s - unable to delete existing link (%s) \n", FuncName, linkPathname) ; } }
+ if(bEverythingOK) { if(0 == persadmin_create_symbolic_link(linkPathname, linkTarget)) { importedLinks++ ; } else { bEverythingOK = false ; printf("%s - persadmin_create_symbolic_link(<%s>, <%s>) failed \n", FuncName, linkPathname, linkTarget) ; } } } } }
+ } }
+ if(NIL != fileImport) { fclose(fileImport) ; }
+ return bEverythingOK ? importedLinks : PAS_FAILURE; }
+
+/* * linkName is not checked against NIL * return group ID, or negative value for error * it is assumed that lenght of linkName < PERSADMIN_MAX_PATH_LENGHT **/ static sint_t persadmin_common_extract_group_id(pstr_t linkName) { sint_t groupID = -1 ; sint_t lenPrefix = strlen(PERS_ORG_SHARED_GROUP_SYMLINK_PREFIX) ;
+ if(strlen(linkName) > lenPrefix) { if(0 == strncmp(linkName, PERS_ORG_SHARED_GROUP_SYMLINK_PREFIX, lenPrefix)) { if(1 != sscanf(linkName+lenPrefix, "%X", &groupID)) { groupID = -1 ; } } }
+ return groupID ; }
+/* * line is not checked against NIL * the content of line is changed **/ static void persadmin_common_remove_endofline(pstr_t line) { sint_t len = strlen(line) ; if((len > 0) && (('\r' == line[len-1]) || ('\n' == line[len-1]))) { line[len-1] = '\0' ; }
+ if((len > 1) && (('\r' == line[len-2]) || ('\n' == line[len-2]))) { line[len-2] = '\0' ; } }
+ sint_t persadmin_list_application_folders( pconststr_t rootPath, pstr_t list, sint_t listSize ) { sint_t result = PAS_FAILURE;
+ if ( ( rootPath != 0 ) && ( list != 0 ) && ( listSize > 0 ) ) { GetApplicationRootPath( rootPath, completeRootPath );
+ // Clear the output buffer before retrieving the actual list memset( list, 0, listSize );
+ result = persadmin_list_folder( completeRootPath, list, listSize, PersadminFilterFolders, false );
+ if ( result >= 0 ) { char * crtName = list; bool_t done = false; result += sizeof( StringTerminator ); while ( ( ( * crtName ) != 0 ) && ( done == false ) ) { int length = strlen( crtName ); if ( persadmin_is_shared_folder( crtName, length ) == true ) { result -= length + sizeof( StringTerminator ); memmove( crtName, crtName + length + sizeof( StringTerminator ), listSize - ( crtName - list ) - length - sizeof( StringTerminator ) ); done = true; } else { crtName += length + sizeof( StringTerminator ); } } } }
+ return result; }
+sint_t persadmin_list_application_folders_get_size( pconststr_t rootPath ) { sint_t result = PAS_FAILURE;
+ GetApplicationRootPath( rootPath, completeRootPath ); result = persadmin_list_folder_get_size( completeRootPath, PersadminFilterFolders, false );
+ if ( result > 0 ) { // Add space for doubling the final '\0' - this is not done inside persadmin_list_folder_get_size() result += sizeof( StringTerminator ); }
+ return result; }
+bool_t persadmin_is_shared_folder( pconststr_t name, int length ) { bool_t result = false; int compLen = strlen( gSharedPathName );
+ if ( ( name != 0 ) && ( length == compLen ) ) { int i = 0; result = true; for ( ; ( ( i < compLen ) && ( result == true ) ); ++i ) { if ( gSharedPathName[ i ] != name[ i ] ) { result = false; } } }
+ return result; } /** * @brief Saves files together into a single archive. * @usage persadmin_compress("/path/to/compress/to/archive_name.tgz", "/path/from/where/to/compress") * @return 0 for success, negative value otherwise. */ sint_t persadmin_compress(pstr_t compressTo, pstr_t compressFrom) { uint8_t buffer [READ_BUFFER_LENGTH]; str_t pchParentPath [PATH_ABS_MAX_SIZE]; pstr_t pchStrPos = NIL; struct archive *psArchive = NIL; struct archive *psDisk = NIL; struct archive_entry *psEntry = NIL; sint_t s32Result = ARCHIVE_OK; sint_t s32Length = 0; sint_t fd; sint_t s32ParentPathLength = 0; if( (NIL == compressTo) || (NIL == compressFrom) ) { s32Result = ARCHIVE_FAILED; printf("persadmin_compress - invalid parameters \n"); } if( ARCHIVE_OK == s32Result ) { printf("persadmin_compress - create <%s> from <%s>\n", compressTo, compressFrom); psArchive = archive_write_new(); if( NIL == psArchive ) { s32Result = ARCHIVE_FAILED; printf("persadmin_compress - archive_write_new ERR\n"); } } if( ARCHIVE_OK == s32Result ) { /* this in turn calls archive_write_add_filter_gzip; */ s32Result = archive_write_set_compression_gzip(psArchive); if( ARCHIVE_OK != s32Result ) { printf("persadmin_compress - archive_write_set_compression_gzip ERR %d\n", s32Result); } } if( ARCHIVE_OK == s32Result ) { /* portable archive exchange; */ archive_write_set_format_pax(psArchive); compressTo = (strcmp(compressTo, "-") == 0) ? NIL : compressTo; s32Result = archive_write_open_filename(psArchive, compressTo); if( ARCHIVE_OK != s32Result ) { printf("persadmin_compress - archive_write_open_filename ERR %d\n", s32Result); } } if( ARCHIVE_OK == s32Result ) { psDisk = archive_read_disk_new(); if( NIL == psDisk ) { s32Result = ARCHIVE_FAILED; printf("persadmin_compress - archive_read_disk_new ERR\n"); } } if( ARCHIVE_OK == s32Result ) { archive_read_disk_set_standard_lookup(psDisk); s32Result = archive_read_disk_open(psDisk, compressFrom); if( ARCHIVE_OK != s32Result ) { printf("persadmin_compress - archive_read_disk_new ERR %s\n", archive_error_string(psDisk)); } } memset(pchParentPath, 0, sizeof(pchParentPath)); snprintf(pchParentPath, sizeof(pchParentPath), compressFrom); pchStrPos = strrchr(pchParentPath, '/'); if(NIL != pchStrPos) { *pchStrPos = '\0'; } s32ParentPathLength = strlen(pchParentPath); while( ARCHIVE_OK == s32Result ) { psEntry = archive_entry_new(); s32Result = archive_read_next_header2(psDisk, psEntry); switch( s32Result ) { case ARCHIVE_EOF: { /* nothing else to do; */ break; } case ARCHIVE_OK: { str_t pstrTemp[PATH_ABS_MAX_SIZE]; pstr_t p = (pstr_t)archive_entry_pathname(psEntry); if(NIL != p) { /* remove parent section and save relative pathnames */ memset(pstrTemp, 0, sizeof(pstrTemp)); snprintf(pstrTemp, sizeof(pstrTemp), "%s", p + (s32ParentPathLength + 1)); archive_entry_copy_pathname(psEntry, pstrTemp); } archive_read_disk_descend(psDisk); s32Result = archive_write_header(psArchive, psEntry); if( ARCHIVE_OK > s32Result) { printf("persadmin_compress - archive_write_header ERR %s\n", archive_error_string(psArchive)); } if( ARCHIVE_FATAL == s32Result ) { /* exit; */ printf("persadmin_compress - archive_write_header ERR FATAL\n"); } if( ARCHIVE_FAILED < s32Result ) { #if 0 /* Ideally, we would be able to use * the same code to copy a body from * an archive_read_disk to an * archive_write that we use for * copying data from an archive_read * to an archive_write_disk. * Unfortunately, this doesn't quite * work yet. */ persadmin_copy_data(psDisk, psArchive); #else /* For now, we use a simpler loop to copy data * into the target archive. */ fd = open(archive_entry_sourcepath(psEntry), O_RDONLY); s32Length = read(fd, buffer, READ_BUFFER_LENGTH); while( s32Length > 0 ) { archive_write_data(psArchive, buffer, s32Length); s32Length = read(fd, buffer, READ_BUFFER_LENGTH); } close(fd); #endif } break; } default: { printf("persadmin_compress - archive_read_next_header2 ERR %s\n", archive_error_string(psDisk)); /* exit; */ break; } } if( NIL != psEntry ) { archive_entry_free(psEntry); } } /* perform cleaning operations; */ if( NIL != psDisk ) { archive_read_close(psDisk); archive_read_free(psDisk); } if( NIL != psArchive ) { archive_write_close(psArchive); archive_write_free(psArchive); } /* overwrite result; */ s32Result = (s32Result == ARCHIVE_EOF) ? ARCHIVE_OK : s32Result; /* return result; */ return s32Result; } /* persadmin_compress() */ /** * @brief Restore files from an archive. * @usage persadmin_uncompress("/path/from/where/to/extract/archive_name.tgz", "/path/where/to/extract/") - extract to specified folder * @usage persadmin_uncompress("/path/from/where/to/extract/archive_name.tgz", "") - extract to local folder * @return 0 for success, negative value otherwise. */ sint_t persadmin_uncompress(pstr_t extractFrom, pstr_t extractTo) { struct archive *psArchive = NIL; struct archive *psExtract = NIL; struct archive_entry *psEntry = NIL; sint_t s32Result = ARCHIVE_OK; sint_t s32Flags = ARCHIVE_EXTRACT_TIME; /* select which attributes to restore; */ s32Flags |= ARCHIVE_EXTRACT_PERM; s32Flags |= ARCHIVE_EXTRACT_ACL; s32Flags |= ARCHIVE_EXTRACT_FFLAGS; if( (NIL == extractFrom) || (NIL == extractTo) ) { s32Result = ARCHIVE_FAILED; printf("persadmin_uncompress - invalid parameters\n"); } if( ARCHIVE_OK == s32Result ) { psArchive = archive_read_new(); if( NIL == psArchive ) { s32Result = ARCHIVE_FAILED; printf("persadmin_uncompress - archive_read_new ERR\n"); } } if( ARCHIVE_OK == s32Result ) { archive_read_support_format_all(psArchive); archive_read_support_compression_all(psArchive); psExtract = archive_write_disk_new(); s32Result = ((NIL == psExtract) ? ARCHIVE_FAILED : s32Result); archive_write_disk_set_options(psExtract, s32Flags); archive_write_disk_set_standard_lookup(psExtract); } if( ARCHIVE_OK == s32Result ) { s32Result = archive_read_open_filename(psArchive, extractFrom, 10240); /* exit if s32Result != ARCHIVE_OK; */ } while( ARCHIVE_OK == s32Result ) { s32Result = archive_read_next_header(psArchive, &psEntry); switch( s32Result ) { case ARCHIVE_EOF: { /* nothing else to do; */ break; } case ARCHIVE_OK: { /* modify entry here to extract to the needed location; */ str_t pstrTemp[PATH_ABS_MAX_SIZE]; memset(pstrTemp, 0, sizeof(pstrTemp)); snprintf(pstrTemp, sizeof(pstrTemp), "%s%s", extractTo, archive_entry_pathname(psEntry)); printf("persadmin_uncompress - archive_entry_pathname %s\n", pstrTemp); archive_entry_copy_pathname(psEntry, pstrTemp); s32Result = archive_write_header(psExtract, psEntry); if( ARCHIVE_OK == s32Result ) { if( archive_entry_size(psEntry) > 0 ) { s32Result = persadmin_copy_data(psArchive, psExtract); if( ARCHIVE_OK != s32Result ) { printf("persadmin_uncompress - copy_data ERR %s\n", archive_error_string(psExtract)); } /* if( ARCHIVE_WARN > s32Result ) exit; */ } if( ARCHIVE_OK == s32Result ) { s32Result = archive_write_finish_entry(psExtract); if( ARCHIVE_OK != s32Result ) { printf("persadmin_uncompress - archive_write_finish_entry ERR %s\n", archive_error_string(psExtract)); } /* if( ARCHIVE_WARN > s32Result ) exit; */ } } else { printf("persadmin_uncompress - archive_write_header ERR %s\n", archive_error_string(psExtract)); } break; } default: { printf("persadmin_uncompress - archive_read_next_header ERR %d\n", s32Result); break; } } } /* perform cleaning operations; */ if( NIL != psArchive ) { archive_read_close(psArchive); archive_read_free(psArchive); } if( NIL != psExtract ) { archive_write_close(psExtract); archive_write_free(psExtract); } /* overwrite result; */ s32Result = (s32Result == ARCHIVE_EOF) ? ARCHIVE_OK : s32Result; /* return result; */ return s32Result; } /* persadmin_uncompress() */ static sint_t persadmin_copy_data(struct archive *ar, struct archive *aw) { sint_t s32Result = ARCHIVE_OK; sint_t s32Size = 0; uint8_t buffer[COPY_BUFFER_LENGTH]; while( ARCHIVE_OK == s32Result ) { s32Size = archive_read_data(ar, buffer, COPY_BUFFER_LENGTH); if( 0 > s32Size ) { printf("persadmin_copy_data - archive_read_data ERR\n"); s32Result = ARCHIVE_FAILED; } else { if( 0 < s32Size ) { s32Size = archive_write_data(aw, buffer, COPY_BUFFER_LENGTH); if( 0 > s32Size ) { printf("persadmin_copy_data - archive_write_data ERR\n"); s32Result = ARCHIVE_FAILED; } } else { /* nothing to copy; */ break; } } } /* return result; */ return s32Result; } /* persadmin_copy_data() */
diff --git a/Administrator/src/ssw_pers_admin_database_helper.c b/Administrator/src/ssw_pers_admin_database_helper.c
index 8f90c75..4ee8fd4 100644
--- a/Administrator/src/ssw_pers_admin_database_helper.c
+++ b/Administrator/src/ssw_pers_admin_database_helper.c
@@ -1,616 +1,616 @@
-/*********************************************************************************************************************
-*
-* Copyright (C) 2012 Continental Automotive Systems, Inc.
-*
-* Author: Ana.Chisca@continental-corporation.com
-*
-* Implementation of functions declared in ssw_pers_admin_database_helper.h
-*
-* This Source Code Form is subject to the terms of the Mozilla Public
-* License, v. 2.0. If a copy of the MPL was not distributed with this
-* file, You can obtain one at http://mozilla.org/MPL/2.0/.
-*
-* Date Author Reason
-* 2013.01.08 uidn3591 CSP_WZ#9979: Cleaning & fix delete and copy keys by filter to conform to requirements
-* 2013.01.03 uidl9757 CSP_WZ#2060: Common interface to be used by both PCL and PAS
-* 2012.12.04 uidn3591 CSP_WZ#1280: Bug fix
-* 2012.11.22 uidn3591 CSP_WZ#1280: Minor bug fix
-* 2012.11.19 uidn3591 CSP_WZ#1280: Creation
-*
-**********************************************************************************************************************/
-
-#include <ctype.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "persComTypes.h"
-#include "dlt.h" /* L&T */
-#include "ssw_pers_admin_files_helper.h" /* defined interface */
-
-#include "persComDataOrg.h"
-#include "persComDbAccess.h"
-#include "persComRct.h"
-
-#include "ssw_pers_admin_database_helper.h" /* defined interface */
-#include "ssw_pers_admin_common.h"
-#include "persistence_admin_service.h"
-
-/* L&T context */
-#define LT_HDR "DB >> "
-DLT_IMPORT_CONTEXT (persAdminSvcDLTCtx)
-
-#define PAS_USER_IDENTIFIER PERS_ORG_USER_FOLDER_NAME
-#define PAS_SEAT_IDENTIFIER PERS_ORG_SEAT_FOLDER_NAME
-#define PAS_SHARED_IDENTIFIER PERS_ORG_SHARED_FOLDER_NAME
-
-
-#define PrintDbPath( Root, DataPath, ... ) \
- if ( bufSize > 0 ) { \
- int toWrite = snprintf( pchDBPaths_out, bufSize, "%s", Root ); \
- bufSize -= toWrite; \
- pchDBPaths_out += toWrite; \
- totalAmountWritten += toWrite; \
- } \
- if ( bufSize > 0 ) { \
- int toWrite = snprintf( pchDBPaths_out, bufSize, DataPath, __VA_ARGS__ ); \
- totalAmountWritten += toWrite += sizeof( StringTerminator ); \
- bufSize -= toWrite; \
- pchDBPaths_out += toWrite; \
- }
-
-static int persadmin_priv_copy_keys_by_filter (PersASSelectionType_e type, char* pchdestDBPath, char* pchsourceDBPath, unsigned int user_no, unsigned int seat_no);
-static int persadmin_priv_delete_keys_by_filter (PersASSelectionType_e type, char* pchDBPath, unsigned int user_no, unsigned int seat_no);
-static sint_t persadmin_priv_filter_keys_in_list (PersASSelectionType_e type, unsigned int user_no, unsigned int seat_no, pstr_t pUnfilteredList, pstr_t pFilteredList_out, sint_t iListSize) ;
-
-static int persadmin_priv_get_all_local_db_names ( const char * pchRootPath, const char * pchAppName, char* pchDBPaths_out, int bufSize );
-static int persadmin_priv_get_all_shared_db_names ( const char * pchRootPath, char* pchDBPaths_out, int bufSize );
-static int persadmin_priv_get_all_shared_group_db_names ( const char * pchRootPath, const char * pchDataPathFormat, const char * dbName, const char * defaultDbName, char* pchDBPaths_out, int * bufferSize );
-
-/**
- * @brief get the names of an application's databases based on the databases' type (local/shared)
- * @usage:
- *
- * @param pchDBRootPath [in] path to the folder where to look for the databases
- * @param pchAppName [in] application for which the databases are requested
- * @param eStorage [in] the type of the requested databases
- * @param pchDBPaths_out [out] pointer to a buffer where to store the databases' names [the databases' names are separated by '\0']
- * @param bufSize [in] size of buffer
- *
- * @return positive value: size of data passed in pchDBPaths_out ; negative value - error
- * TODO: define error codes
- */
-sint_t persadmin_get_all_db_paths_with_names(pconststr_t pchDBRootPath, pconststr_t pchAppName, PersistenceStorage_e eStorage, pstr_t pchDBPaths_out, sint_t bufSize)
-{
- sint_t result = PAS_FAILURE ;
-
- if ( ( pchDBRootPath != NIL ) && ( ( pchAppName != NIL ) || ( eStorage != PersistenceStorage_local ) ) && ( pchDBPaths_out != NIL ) && ( bufSize >= sizeof( StringTerminator ) ) && ( eStorage < PersistenceStorage_LastEntry ) )
- {
- int writtenAmount = 0;
-
- switch ( eStorage )
- {
- case PersistenceStorage_local :
- {
- result = persadmin_priv_get_all_local_db_names( pchDBRootPath, pchAppName, pchDBPaths_out, bufSize );
- break;
- }
- case PersistenceStorage_shared :
- {
- result = persadmin_priv_get_all_shared_db_names( pchDBRootPath, pchDBPaths_out, bufSize );
- break;
- }
- default :
- {
- result = PAS_FAILURE_INVALID_PARAMETER;
- break;
- }
- }
-
- if ( result >= 0 )
- {
- writtenAmount += result;
- bufSize -= result;
- if ( bufSize > 0 )
- {
- memmove( pchDBPaths_out + writtenAmount, & StringTerminator, sizeof( StringTerminator ) );
- result = writtenAmount + sizeof( StringTerminator );
- }
- else
- {
- result = PAS_FAILURE_BUFFER_TOO_SMALL ;
- }
- }
- }
-
- return result;
-} /* persadmin_get_all_db_paths_with_names() */
-
-
-/**
- * @brief deletes keys filtered by user name and seat number
- *
- * @param pchDBPath[in] path to where the DB can be located
- * @param user_no [in] the user ID
- * @param seat_no [in] the seat number (seat 1 to 4; 0xFF is for all seats)
- *
- * @return 0 for success, negative value otherwise;
- * TODO: define error codes
- */
-int persadmin_delete_keys_by_filter(PersASSelectionType_e type, char* pchDBPath, unsigned int user_no, unsigned int seat_no)
-{
- sint_t s32Result = PAS_SUCCESS;
-
- if( NIL == pchDBPath )
- {
- // set error;
- s32Result = PAS_FAILURE_INVALID_PARAMETER;
- // some info;
- DLT_LOG(persAdminSvcDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING("persadmin_delete_keys_by_filter -"), DLT_STRING("invalid input parameters"));
- }
-
- if( PAS_SUCCESS == s32Result )
- {
- // some info;
- DLT_LOG(persAdminSvcDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("persadmin_delete_keys_by_filter -"), DLT_INT(user_no), DLT_INT(seat_no), DLT_STRING(pchDBPath));
-
- // select what keys to delete from the database;
- s32Result = persadmin_priv_delete_keys_by_filter(type, pchDBPath, user_no, seat_no);
- }
-
- // return result;
- return s32Result;
-
-} /* persadmin_delete_keys_by_filter() */
-
-
-/**
- * @brief copies keys filtered by user name and seat number
- *
- * @param pchdestDBPath [in] destination DB path
- * @param pchsourceDBPath[in] source DB path
- * @param user_no [in] the user ID
- * @param seat_no [in] the seat number (seat 1 to 4; 0xFF is for all seats)
- *
- * @return 0 for success, negative value otherwise;
- * TODO: define error codes
- */
-int persadmin_copy_keys_by_filter(PersASSelectionType_e type, char* pchdestDBPath, char* pchsourceDBPath, unsigned int user_no, unsigned int seat_no)
-{
- sint_t s32Result = PAS_SUCCESS;
-
- if( (NIL == pchsourceDBPath) || (NIL == pchdestDBPath) || (PersASSelectionType_All > type ) || (PersASSelectionType_LastEntry < type ))
- {
- // set error;
- s32Result = PAS_FAILURE_INVALID_PARAMETER;
- // some info;
- DLT_LOG(persAdminSvcDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING("persadmin_copy_keys_by_filter -"),
- DLT_STRING("invalid input parameters"));
- }
-
- if( PAS_SUCCESS == s32Result )
- {
- // some info;
- DLT_LOG(persAdminSvcDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("persadmin_copy_keys_by_filter -"),
- DLT_INT(user_no), DLT_INT(seat_no),
- DLT_STRING("from"),
- DLT_STRING("\""), DLT_STRING(pchsourceDBPath), DLT_STRING("\" "),
- DLT_STRING("to"),
- DLT_STRING("\""), DLT_STRING(pchdestDBPath), DLT_STRING("\" "));
-
- if( 0 <= persadmin_check_if_file_exists(pchsourceDBPath, false) )
- {
- // select what keys to copy from one database to another;
- s32Result = persadmin_priv_copy_keys_by_filter(type, pchdestDBPath, pchsourceDBPath, user_no, seat_no);
- }
- }
-
- // return result;
- return s32Result;
-
-} /* persadmin_copy_keys_by_filter() */
-
-
-static int persadmin_priv_copy_keys_by_filter(PersASSelectionType_e type, char* pchdestDBPath, char* pchsourceDBPath, unsigned int user_no, unsigned int seat_no)
-{
- sint_t s32Result = PAS_FAILURE ;
-
- bool_t bEverythingOK = true ;
- pstr_t pSrcUnfilteredList = NIL ;
- pstr_t pSrcListFiltered = NIL ;
- sint_t iSrcListUnfilteredSize = 0 ;
- sint_t iSrcListFilteredSize = 0 ;
-
- sint_t iHandlerSrcDB = -1 ;
- sint_t iHandlerDestDB = -1 ;
-
- /* get a list of the keys in pchsourceDBPath */
- iHandlerSrcDB = persComDbOpen(pchsourceDBPath, false) ;
- if(iHandlerSrcDB >= 0)
- {
- iSrcListUnfilteredSize = persComDbGetSizeKeysList(iHandlerSrcDB) ;
- if(iSrcListUnfilteredSize > 0)
- {
- pSrcUnfilteredList = (pstr_t)malloc(iSrcListUnfilteredSize) ;
- pSrcListFiltered = (pstr_t)malloc(iSrcListUnfilteredSize) ;
- if((NIL != pSrcUnfilteredList) && (NIL != pSrcListFiltered))
- {
- if(iSrcListUnfilteredSize != persComDbGetKeysList(iHandlerSrcDB, pSrcUnfilteredList, iSrcListUnfilteredSize))
- {
- bEverythingOK = false ;
- }
- }
- else
- {
- bEverythingOK = false ;
- s32Result = PAS_FAILURE_OUT_OF_MEMORY ;
- }
- }
- else
- {
- if(iSrcListUnfilteredSize < 0)
- {
- bEverythingOK = false ;
- }
- }
- }
- else
- {
- bEverythingOK = false ;
- s32Result = iHandlerSrcDB ;
- }
-
- if(bEverythingOK && (iSrcListUnfilteredSize > 0))
- {
- iHandlerDestDB = persComDbOpen(pchdestDBPath, true) ;
- if(iHandlerDestDB < 0)
- {
- bEverythingOK = false ;
- s32Result = iHandlerDestDB ;
- }
- }
-
- if(bEverythingOK && (iSrcListUnfilteredSize > 0))
- {
- iSrcListFilteredSize = persadmin_priv_filter_keys_in_list(type, user_no, seat_no, pSrcUnfilteredList, pSrcListFiltered, iSrcListUnfilteredSize) ;
- }
-
- if(bEverythingOK && (iSrcListFilteredSize > 0))
- {
- sint_t iPosInList = 0 ;
- pstr_t pCurrentKeyName = NIL ;
-
- while(bEverythingOK && (iPosInList < iSrcListFilteredSize))
- {
- pCurrentKeyName = pSrcListFiltered + iPosInList ;
-
- str_t keyData[PERS_DB_MAX_SIZE_KEY_DATA] ;
- sint_t iDataSize = persComDbReadKey(iHandlerSrcDB, pCurrentKeyName, keyData, sizeof(keyData)) ;
- if(iDataSize >= 0)
- {
- sint_t iError = persComDbWriteKey(iHandlerDestDB, pCurrentKeyName, keyData, iDataSize) ;
- if(iError < 0)
- {
- bEverythingOK = false ;
- s32Result = iError ;
- }
-
- DLT_LOG(persAdminSvcDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR),
- DLT_STRING("persadmin_priv_copy_keys_by_filter - persComDbWriteKey"),
- DLT_STRING(pCurrentKeyName),
- DLT_STRING("size = "), DLT_INT(iDataSize),
- DLT_STRING((iError >= 0) ? "OK" : "FAILED")) ;
- }
-
-
- iPosInList += strlen(pCurrentKeyName) + 1 ; /* 1 <=> list items separator */
- }
- }
-
- if(pSrcUnfilteredList != NIL)
- {
- free(pSrcUnfilteredList) ;
- }
- if(pSrcListFiltered!= NIL)
- {
- free(pSrcListFiltered) ;
- }
- if(iHandlerSrcDB >= 0)
- {
- persComDbClose(iHandlerSrcDB) ;
- }
- if(iHandlerDestDB >= 0)
- {
- persComDbClose(iHandlerDestDB) ;
- }
-
- return bEverythingOK ? PAS_SUCCESS : s32Result ;
-} /* persadmin_priv_copy_keys_by_filter() */
-
-
-static int persadmin_priv_delete_keys_by_filter(PersASSelectionType_e type, char* pchDBPath, unsigned int user_no, unsigned int seat_no)
-{
- sint_t s32Result = PAS_FAILURE ;
-
- bool_t bEverythingOK = true ;
- pstr_t pListUnfiltered = NIL ;
- sint_t iListUnfilteredSize = 0 ;
- pstr_t pListFiltered = NIL ;
- sint_t iListFilteredSize = 0 ;
-
- sint_t iHandlerDB = -1 ;
-
- /* get a list of the keys in pchsourceDBPath */
- iHandlerDB = persComDbOpen(pchDBPath, false) ;
- if(iHandlerDB >= 0)
- {
- iListUnfilteredSize = persComDbGetSizeKeysList(iHandlerDB) ;
- if(iListUnfilteredSize > 0)
- {
- pListUnfiltered = (pstr_t)malloc(iListUnfilteredSize) ;
- pListFiltered = (pstr_t)malloc(iListUnfilteredSize) ;
- if((NIL != pListUnfiltered) && (NIL != pListFiltered))
- {
- if(iListUnfilteredSize != persComDbGetKeysList(iHandlerDB, pListUnfiltered, iListUnfilteredSize))
- {
- bEverythingOK = false ;
- }
- }
- else
- {
- bEverythingOK = false ;
- s32Result = PAS_FAILURE_OUT_OF_MEMORY ;
- }
- }
- else
- {
- if(iListUnfilteredSize < 0)
- {
- bEverythingOK = false ;
- }
- }
- }
- else
- {
- bEverythingOK = false ;
- s32Result = iHandlerDB ;
- }
-
- if(bEverythingOK && (iListUnfilteredSize > 0))
- {
- iListFilteredSize = persadmin_priv_filter_keys_in_list(type, user_no, seat_no, pListUnfiltered, pListFiltered, iListUnfilteredSize) ;
- }
-
- if(bEverythingOK && (iListFilteredSize > 0))
- {
- sint_t iPosInList = 0 ;
- pstr_t pCurrentKeyName = NIL ;
-
- while(bEverythingOK && (iPosInList < iListFilteredSize))
- {
- pCurrentKeyName = pListFiltered + iPosInList ;
-
- sint_t iError = persComDbDeleteKey(iHandlerDB, pCurrentKeyName) ;
- if(iError < 0)
- {
- bEverythingOK = false ;
- }
-
- DLT_LOG(persAdminSvcDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR),
- DLT_STRING("persadmin_priv_delete_keys_by_filter - persComDbDeleteKey"), DLT_STRING(pCurrentKeyName), DLT_STRING((iError >= 0) ? "OK" : "FAILED")) ;
-
- iPosInList += strlen(pCurrentKeyName) + 1 ; /* 1 <=> list items separator */
- }
- }
-
-
- if(pListUnfiltered != NIL)
- {
- free(pListUnfiltered) ;
- }
- if(pListFiltered!= NIL)
- {
- free(pListFiltered) ;
- }
- if(iHandlerDB >= 0)
- {
- persComDbClose(iHandlerDB) ;
- }
-
- return bEverythingOK ? PAS_SUCCESS : s32Result ;
-
-} /* persadmin_priv_delete_keys_by_filter() */
-
-
-static sint_t persadmin_priv_filter_keys_in_list(PersASSelectionType_e type, unsigned int user_no, unsigned int seat_no, pstr_t pUnfilteredList, pstr_t pFilteredList_out, sint_t iListSize)
-{
- str_t prefixToSearch[64] ; /* enough for something like "/user/1/seat/2/" */
- sint_t iPrefixLength ;
- sint_t iPosInUnfilteredList = 0 ;
- sint_t iPosInFilteredList = 0 ;
-
- if( PERSIST_SELECT_ALL_USERS != user_no )
- {
- if( PERSIST_SELECT_ALL_SEATS != seat_no )
- {
- // "/user/1/seat/4";
- snprintf(prefixToSearch, sizeof(prefixToSearch), "/%s/%d/%s/%d/",
- PERS_ORG_USER_FOLDER_NAME, user_no, PERS_ORG_SEAT_FOLDER_NAME, seat_no);
- }
- else
- {
- // "/user/1/";
- snprintf(prefixToSearch, sizeof(prefixToSearch), "/%s/%d/",
- PERS_ORG_USER_FOLDER_NAME, user_no);
- }
- }
- else
- {
- switch( type )
- {
- case PersASSelectionType_All:
- case PersASSelectionType_Application:
- {
- // let everything pass through (actually we should look for "/node/" or "/user/");
- snprintf(prefixToSearch, sizeof(prefixToSearch), "/");
- break;
- }
-
- case PersASSelectionType_User:
- {
- // "/user/";
- snprintf(prefixToSearch, sizeof(prefixToSearch), "/%s/",
- PERS_ORG_USER_FOLDER_NAME);
- break;
- }
-
- default:
- {
- /* nothing to do */
- break;
- }
- }
-
- }
-
- iPrefixLength = strlen(prefixToSearch);
- while( iPosInUnfilteredList < iListSize )
- {
- pstr_t pCurrentKeyName = pUnfilteredList + iPosInUnfilteredList;
- sint_t iKeyLength = strlen(pCurrentKeyName) ;
-
- // check if pCurrentKeyName begins with the searched prefix;
- if( 0 == strncmp(pCurrentKeyName, prefixToSearch, iPrefixLength) )
- {
- strcpy(pFilteredList_out + iPosInFilteredList, pCurrentKeyName);
- iPosInFilteredList += (iKeyLength + 1); /* 1 <=> list items separator */
- }
-
- iPosInUnfilteredList += (iKeyLength + 1); /* 1 <=> list items separator */
- }
-
- return iPosInFilteredList;
-
-} /* persadmin_priv_filter_keys_in_list() */
-
-
-static int persadmin_priv_get_all_local_db_names( const char * pchRootPath, const char * pchAppName, char* pchDBPaths_out, int bufSize )
-{
- int result = PAS_FAILURE, totalAmountWritten = 0;
-
- PrintDbPath( pchRootPath, gLocalCachePath, pchAppName, gLocalCached );
- PrintDbPath( pchRootPath, gLocalCachePath, pchAppName, gLocalCachedDefault );
- PrintDbPath( pchRootPath, gLocalCachePath, pchAppName, gLocalWt );
- PrintDbPath( pchRootPath, gLocalCachePath, pchAppName, gLocalWtDefault );
-
- PrintDbPath( pchRootPath, gLocalWtPath, pchAppName, gLocalWt );
- PrintDbPath( pchRootPath, gLocalWtPath, pchAppName, gLocalWtDefault );
- PrintDbPath( pchRootPath, gLocalWtPath, pchAppName, gLocalCached );
- PrintDbPath( pchRootPath, gLocalWtPath, pchAppName, gLocalCachedDefault );
-
- if ( bufSize >= 0 )
- {
- result = totalAmountWritten;
- }
-
- return result;
-} /* persadmin_priv_get_all_local_db_names() */
-
-
-static int persadmin_priv_get_all_shared_db_names( const char * pchRootPath, char* pchDBPaths_out, int bufSize )
-{
- int result = PAS_FAILURE, totalAmountWritten = 0;
-
- PrintDbPath( pchRootPath, gSharedPublicCachePath, gSharedCached );
- PrintDbPath( pchRootPath, gSharedPublicCachePath, gSharedCachedDefault );
- PrintDbPath( pchRootPath, gSharedPublicCachePath, gSharedWt );
- PrintDbPath( pchRootPath, gSharedPublicCachePath, gSharedWtDefault );
-
- PrintDbPath( pchRootPath, gSharedPublicWtPath, gSharedWt );
- PrintDbPath( pchRootPath, gSharedPublicWtPath, gSharedWtDefault );
- PrintDbPath( pchRootPath, gSharedPublicWtPath, gSharedCached );
- PrintDbPath( pchRootPath, gSharedPublicWtPath, gSharedCachedDefault );
-
- if ( bufSize > 0 )
- {
- result = persadmin_priv_get_all_shared_group_db_names( pchRootPath, gSharedCachePathString, gSharedCached, gSharedCachedDefault, pchDBPaths_out, & bufSize );
- if ( result >= 0 )
- {
- totalAmountWritten += result;
- pchDBPaths_out += result;
- }
- }
- if ( bufSize > 0 )
- {
- result = persadmin_priv_get_all_shared_group_db_names( pchRootPath, gSharedWtPathString, gSharedWt, gSharedWtDefault, pchDBPaths_out, & bufSize );
- if ( result >= 0 )
- {
- totalAmountWritten += result;
- pchDBPaths_out += result;
- }
- }
- if ( bufSize > 0 )
- {
- result = persadmin_priv_get_all_shared_group_db_names( pchRootPath, gSharedCachePathString, gSharedWt, gSharedWtDefault, pchDBPaths_out, & bufSize );
- if ( result >= 0 )
- {
- totalAmountWritten += result;
- pchDBPaths_out += result;
- }
- }
- if ( bufSize > 0 )
- {
- result = persadmin_priv_get_all_shared_group_db_names( pchRootPath, gSharedWtPathString, gSharedCached, gSharedCachedDefault, pchDBPaths_out, & bufSize );
- if ( result >= 0 )
- {
- totalAmountWritten += result;
- pchDBPaths_out += result;
- }
- }
-
- if ( bufSize >= 0 )
- {
- result = totalAmountWritten;
- }
-
- return result;
-} /* persadmin_priv_get_all_shared_db_names() */
-
-
-static int persadmin_priv_get_all_shared_group_db_names( const char * pchRootPath, const char * pchDataPathFormat, const char * dbName, const char * defaultDbName, char* pchDBPaths_out, int * bufferSize )
-{
- int result = PAS_FAILURE, totalAmountWritten = 0;
-
- int rootPathLen = strlen( pchRootPath );
- char sharedPath[ rootPathLen + sizeof( PathSeparator ) + strlen( pchDataPathFormat ) + sizeof( StringTerminator ) ];
- snprintf( sharedPath, sizeof( sharedPath ), "%s%c", pchRootPath, PathSeparator );
- snprintf( sharedPath + rootPathLen + sizeof( PathSeparator ), sizeof( sharedPath ) - rootPathLen - sizeof( PathSeparator ), pchDataPathFormat, "", "" );
-
- result = persadmin_list_folder_get_size( sharedPath, PersadminFilterFolders, false );
- if ( result > 0 )
- {
- char fileList[ result + sizeof( StringTerminator ) ];
- memset( fileList, 0, sizeof( fileList ) );
- result = persadmin_list_folder( sharedPath, fileList, result, PersadminFilterFolders, false );
-
- if ( result > 0 )
- {
- char * crtPath = fileList;
- int bufSize = ( * bufferSize );
- while ( ( bufSize >= 0 ) && ( ( * crtPath ) != StringTerminator ) )
- {
- PrintDbPath( pchRootPath, pchDataPathFormat, crtPath, dbName );
- PrintDbPath( pchRootPath, pchDataPathFormat, crtPath, defaultDbName );
- crtPath += strlen( crtPath ) + sizeof( StringTerminator );
- }
- ( * bufferSize ) = bufSize;
-
- if ( bufSize >= 0 )
- {
- result = totalAmountWritten;
- }
- }
- }
-
- return result;
-} /* persadmin_priv_get_all_shared_group_db_names() */
+/*********************************************************************************************************************
+*
+* Copyright (C) 2012 Continental Automotive Systems, Inc.
+*
+* Author: Ana.Chisca@continental-corporation.com
+*
+* Implementation of functions declared in ssw_pers_admin_database_helper.h
+*
+* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*
+* Date Author Reason
+* 2013.01.08 uidn3591 CSP_WZ#9979: Cleaning & fix delete and copy keys by filter to conform to requirements
+* 2013.01.03 uidl9757 CSP_WZ#2060: Common interface to be used by both PCL and PAS
+* 2012.12.04 uidn3591 CSP_WZ#1280: Bug fix
+* 2012.11.22 uidn3591 CSP_WZ#1280: Minor bug fix
+* 2012.11.19 uidn3591 CSP_WZ#1280: Creation
+*
+**********************************************************************************************************************/
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "persComTypes.h"
+#include "dlt.h" /* L&T */
+#include "ssw_pers_admin_files_helper.h" /* defined interface */
+
+#include "persComDataOrg.h"
+#include "persComDbAccess.h"
+#include "persComRct.h"
+
+#include "ssw_pers_admin_database_helper.h" /* defined interface */
+#include "ssw_pers_admin_common.h"
+#include "persistence_admin_service.h"
+
+/* L&T context */
+#define LT_HDR "DB >> "
+DLT_IMPORT_CONTEXT (persAdminSvcDLTCtx)
+
+#define PAS_USER_IDENTIFIER PERS_ORG_USER_FOLDER_NAME
+#define PAS_SEAT_IDENTIFIER PERS_ORG_SEAT_FOLDER_NAME
+#define PAS_SHARED_IDENTIFIER PERS_ORG_SHARED_FOLDER_NAME
+
+
+#define PrintDbPath( Root, DataPath, ... ) \
+ if ( bufSize > 0 ) { \
+ int toWrite = snprintf( pchDBPaths_out, bufSize, "%s", Root ); \
+ bufSize -= toWrite; \
+ pchDBPaths_out += toWrite; \
+ totalAmountWritten += toWrite; \
+ } \
+ if ( bufSize > 0 ) { \
+ int toWrite = snprintf( pchDBPaths_out, bufSize, DataPath, __VA_ARGS__ ); \
+ totalAmountWritten += toWrite += sizeof( StringTerminator ); \
+ bufSize -= toWrite; \
+ pchDBPaths_out += toWrite; \
+ }
+
+static int persadmin_priv_copy_keys_by_filter (PersASSelectionType_e type, char* pchdestDBPath, char* pchsourceDBPath, unsigned int user_no, unsigned int seat_no);
+static int persadmin_priv_delete_keys_by_filter (PersASSelectionType_e type, char* pchDBPath, unsigned int user_no, unsigned int seat_no);
+static sint_t persadmin_priv_filter_keys_in_list (PersASSelectionType_e type, unsigned int user_no, unsigned int seat_no, pstr_t pUnfilteredList, pstr_t pFilteredList_out, sint_t iListSize) ;
+
+static int persadmin_priv_get_all_local_db_names ( const char * pchRootPath, const char * pchAppName, char* pchDBPaths_out, int bufSize );
+static int persadmin_priv_get_all_shared_db_names ( const char * pchRootPath, char* pchDBPaths_out, int bufSize );
+static int persadmin_priv_get_all_shared_group_db_names ( const char * pchRootPath, const char * pchDataPathFormat, const char * dbName, const char * defaultDbName, char* pchDBPaths_out, int * bufferSize );
+
+/**
+ * @brief get the names of an application's databases based on the databases' type (local/shared)
+ * @usage:
+ *
+ * @param pchDBRootPath [in] path to the folder where to look for the databases
+ * @param pchAppName [in] application for which the databases are requested
+ * @param eStorage [in] the type of the requested databases
+ * @param pchDBPaths_out [out] pointer to a buffer where to store the databases' names [the databases' names are separated by '\0']
+ * @param bufSize [in] size of buffer
+ *
+ * @return positive value: size of data passed in pchDBPaths_out ; negative value - error
+ * TODO: define error codes
+ */
+sint_t persadmin_get_all_db_paths_with_names(pconststr_t pchDBRootPath, pconststr_t pchAppName, PersistenceStorage_e eStorage, pstr_t pchDBPaths_out, sint_t bufSize)
+{
+ sint_t result = PAS_FAILURE ;
+
+ if ( ( pchDBRootPath != NIL ) && ( ( pchAppName != NIL ) || ( eStorage != PersistenceStorage_local ) ) && ( pchDBPaths_out != NIL ) && ( bufSize >= sizeof( StringTerminator ) ) && ( eStorage < PersistenceStorage_LastEntry ) )
+ {
+ int writtenAmount = 0;
+
+ switch ( eStorage )
+ {
+ case PersistenceStorage_local :
+ {
+ result = persadmin_priv_get_all_local_db_names( pchDBRootPath, pchAppName, pchDBPaths_out, bufSize );
+ break;
+ }
+ case PersistenceStorage_shared :
+ {
+ result = persadmin_priv_get_all_shared_db_names( pchDBRootPath, pchDBPaths_out, bufSize );
+ break;
+ }
+ default :
+ {
+ result = PAS_FAILURE_INVALID_PARAMETER;
+ break;
+ }
+ }
+
+ if ( result >= 0 )
+ {
+ writtenAmount += result;
+ bufSize -= result;
+ if ( bufSize > 0 )
+ {
+ memmove( pchDBPaths_out + writtenAmount, & StringTerminator, sizeof( StringTerminator ) );
+ result = writtenAmount + sizeof( StringTerminator );
+ }
+ else
+ {
+ result = PAS_FAILURE_BUFFER_TOO_SMALL ;
+ }
+ }
+ }
+
+ return result;
+} /* persadmin_get_all_db_paths_with_names() */
+
+
+/**
+ * @brief deletes keys filtered by user name and seat number
+ *
+ * @param pchDBPath[in] path to where the DB can be located
+ * @param user_no [in] the user ID
+ * @param seat_no [in] the seat number (seat 1 to 4; 0xFF is for all seats)
+ *
+ * @return 0 for success, negative value otherwise;
+ * TODO: define error codes
+ */
+int persadmin_delete_keys_by_filter(PersASSelectionType_e type, char* pchDBPath, unsigned int user_no, unsigned int seat_no)
+{
+ sint_t s32Result = PAS_SUCCESS;
+
+ if( NIL == pchDBPath )
+ {
+ // set error;
+ s32Result = PAS_FAILURE_INVALID_PARAMETER;
+ // some info;
+ DLT_LOG(persAdminSvcDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING("persadmin_delete_keys_by_filter -"), DLT_STRING("invalid input parameters"));
+ }
+
+ if( PAS_SUCCESS == s32Result )
+ {
+ // some info;
+ DLT_LOG(persAdminSvcDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("persadmin_delete_keys_by_filter -"), DLT_INT(user_no), DLT_INT(seat_no), DLT_STRING(pchDBPath));
+
+ // select what keys to delete from the database;
+ s32Result = persadmin_priv_delete_keys_by_filter(type, pchDBPath, user_no, seat_no);
+ }
+
+ // return result;
+ return s32Result;
+
+} /* persadmin_delete_keys_by_filter() */
+
+
+/**
+ * @brief copies keys filtered by user name and seat number
+ *
+ * @param pchdestDBPath [in] destination DB path
+ * @param pchsourceDBPath[in] source DB path
+ * @param user_no [in] the user ID
+ * @param seat_no [in] the seat number (seat 1 to 4; 0xFF is for all seats)
+ *
+ * @return 0 for success, negative value otherwise;
+ * TODO: define error codes
+ */
+int persadmin_copy_keys_by_filter(PersASSelectionType_e type, char* pchdestDBPath, char* pchsourceDBPath, unsigned int user_no, unsigned int seat_no)
+{
+ sint_t s32Result = PAS_SUCCESS;
+
+ if( (NIL == pchsourceDBPath) || (NIL == pchdestDBPath) || (PersASSelectionType_All > type ) || (PersASSelectionType_LastEntry < type ))
+ {
+ // set error;
+ s32Result = PAS_FAILURE_INVALID_PARAMETER;
+ // some info;
+ DLT_LOG(persAdminSvcDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING("persadmin_copy_keys_by_filter -"),
+ DLT_STRING("invalid input parameters"));
+ }
+
+ if( PAS_SUCCESS == s32Result )
+ {
+ // some info;
+ DLT_LOG(persAdminSvcDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("persadmin_copy_keys_by_filter -"),
+ DLT_INT(user_no), DLT_INT(seat_no),
+ DLT_STRING("from"),
+ DLT_STRING("\""), DLT_STRING(pchsourceDBPath), DLT_STRING("\" "),
+ DLT_STRING("to"),
+ DLT_STRING("\""), DLT_STRING(pchdestDBPath), DLT_STRING("\" "));
+
+ if( 0 <= persadmin_check_if_file_exists(pchsourceDBPath, false) )
+ {
+ // select what keys to copy from one database to another;
+ s32Result = persadmin_priv_copy_keys_by_filter(type, pchdestDBPath, pchsourceDBPath, user_no, seat_no);
+ }
+ }
+
+ // return result;
+ return s32Result;
+
+} /* persadmin_copy_keys_by_filter() */
+
+
+static int persadmin_priv_copy_keys_by_filter(PersASSelectionType_e type, char* pchdestDBPath, char* pchsourceDBPath, unsigned int user_no, unsigned int seat_no)
+{
+ sint_t s32Result = PAS_FAILURE ;
+
+ bool_t bEverythingOK = true ;
+ pstr_t pSrcUnfilteredList = NIL ;
+ pstr_t pSrcListFiltered = NIL ;
+ sint_t iSrcListUnfilteredSize = 0 ;
+ sint_t iSrcListFilteredSize = 0 ;
+
+ sint_t iHandlerSrcDB = -1 ;
+ sint_t iHandlerDestDB = -1 ;
+
+ /* get a list of the keys in pchsourceDBPath */
+ iHandlerSrcDB = persComDbOpen(pchsourceDBPath, false) ;
+ if(iHandlerSrcDB >= 0)
+ {
+ iSrcListUnfilteredSize = persComDbGetSizeKeysList(iHandlerSrcDB) ;
+ if(iSrcListUnfilteredSize > 0)
+ {
+ pSrcUnfilteredList = (pstr_t)malloc(iSrcListUnfilteredSize) ;
+ pSrcListFiltered = (pstr_t)malloc(iSrcListUnfilteredSize) ;
+ if((NIL != pSrcUnfilteredList) && (NIL != pSrcListFiltered))
+ {
+ if(iSrcListUnfilteredSize != persComDbGetKeysList(iHandlerSrcDB, pSrcUnfilteredList, iSrcListUnfilteredSize))
+ {
+ bEverythingOK = false ;
+ }
+ }
+ else
+ {
+ bEverythingOK = false ;
+ s32Result = PAS_FAILURE_OUT_OF_MEMORY ;
+ }
+ }
+ else
+ {
+ if(iSrcListUnfilteredSize < 0)
+ {
+ bEverythingOK = false ;
+ }
+ }
+ }
+ else
+ {
+ bEverythingOK = false ;
+ s32Result = iHandlerSrcDB ;
+ }
+
+ if(bEverythingOK && (iSrcListUnfilteredSize > 0))
+ {
+ iHandlerDestDB = persComDbOpen(pchdestDBPath, true) ;
+ if(iHandlerDestDB < 0)
+ {
+ bEverythingOK = false ;
+ s32Result = iHandlerDestDB ;
+ }
+ }
+
+ if(bEverythingOK && (iSrcListUnfilteredSize > 0))
+ {
+ iSrcListFilteredSize = persadmin_priv_filter_keys_in_list(type, user_no, seat_no, pSrcUnfilteredList, pSrcListFiltered, iSrcListUnfilteredSize) ;
+ }
+
+ if(bEverythingOK && (iSrcListFilteredSize > 0))
+ {
+ sint_t iPosInList = 0 ;
+ pstr_t pCurrentKeyName = NIL ;
+
+ while(bEverythingOK && (iPosInList < iSrcListFilteredSize))
+ {
+ pCurrentKeyName = pSrcListFiltered + iPosInList ;
+
+ str_t keyData[PERS_DB_MAX_SIZE_KEY_DATA] ;
+ sint_t iDataSize = persComDbReadKey(iHandlerSrcDB, pCurrentKeyName, keyData, sizeof(keyData)) ;
+ if(iDataSize >= 0)
+ {
+ sint_t iError = persComDbWriteKey(iHandlerDestDB, pCurrentKeyName, keyData, iDataSize) ;
+ if(iError < 0)
+ {
+ bEverythingOK = false ;
+ s32Result = iError ;
+ }
+
+ DLT_LOG(persAdminSvcDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR),
+ DLT_STRING("persadmin_priv_copy_keys_by_filter - persComDbWriteKey"),
+ DLT_STRING(pCurrentKeyName),
+ DLT_STRING("size = "), DLT_INT(iDataSize),
+ DLT_STRING((iError >= 0) ? "OK" : "FAILED")) ;
+ }
+
+
+ iPosInList += strlen(pCurrentKeyName) + 1 ; /* 1 <=> list items separator */
+ }
+ }
+
+ if(pSrcUnfilteredList != NIL)
+ {
+ free(pSrcUnfilteredList) ;
+ }
+ if(pSrcListFiltered!= NIL)
+ {
+ free(pSrcListFiltered) ;
+ }
+ if(iHandlerSrcDB >= 0)
+ {
+ persComDbClose(iHandlerSrcDB) ;
+ }
+ if(iHandlerDestDB >= 0)
+ {
+ persComDbClose(iHandlerDestDB) ;
+ }
+
+ return bEverythingOK ? PAS_SUCCESS : s32Result ;
+} /* persadmin_priv_copy_keys_by_filter() */
+
+
+static int persadmin_priv_delete_keys_by_filter(PersASSelectionType_e type, char* pchDBPath, unsigned int user_no, unsigned int seat_no)
+{
+ sint_t s32Result = PAS_FAILURE ;
+
+ bool_t bEverythingOK = true ;
+ pstr_t pListUnfiltered = NIL ;
+ sint_t iListUnfilteredSize = 0 ;
+ pstr_t pListFiltered = NIL ;
+ sint_t iListFilteredSize = 0 ;
+
+ sint_t iHandlerDB = -1 ;
+
+ /* get a list of the keys in pchsourceDBPath */
+ iHandlerDB = persComDbOpen(pchDBPath, false) ;
+ if(iHandlerDB >= 0)
+ {
+ iListUnfilteredSize = persComDbGetSizeKeysList(iHandlerDB) ;
+ if(iListUnfilteredSize > 0)
+ {
+ pListUnfiltered = (pstr_t)malloc(iListUnfilteredSize) ;
+ pListFiltered = (pstr_t)malloc(iListUnfilteredSize) ;
+ if((NIL != pListUnfiltered) && (NIL != pListFiltered))
+ {
+ if(iListUnfilteredSize != persComDbGetKeysList(iHandlerDB, pListUnfiltered, iListUnfilteredSize))
+ {
+ bEverythingOK = false ;
+ }
+ }
+ else
+ {
+ bEverythingOK = false ;
+ s32Result = PAS_FAILURE_OUT_OF_MEMORY ;
+ }
+ }
+ else
+ {
+ if(iListUnfilteredSize < 0)
+ {
+ bEverythingOK = false ;
+ }
+ }
+ }
+ else
+ {
+ bEverythingOK = false ;
+ s32Result = iHandlerDB ;
+ }
+
+ if(bEverythingOK && (iListUnfilteredSize > 0))
+ {
+ iListFilteredSize = persadmin_priv_filter_keys_in_list(type, user_no, seat_no, pListUnfiltered, pListFiltered, iListUnfilteredSize) ;
+ }
+
+ if(bEverythingOK && (iListFilteredSize > 0))
+ {
+ sint_t iPosInList = 0 ;
+ pstr_t pCurrentKeyName = NIL ;
+
+ while(bEverythingOK && (iPosInList < iListFilteredSize))
+ {
+ pCurrentKeyName = pListFiltered + iPosInList ;
+
+ sint_t iError = persComDbDeleteKey(iHandlerDB, pCurrentKeyName) ;
+ if(iError < 0)
+ {
+ bEverythingOK = false ;
+ }
+
+ DLT_LOG(persAdminSvcDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR),
+ DLT_STRING("persadmin_priv_delete_keys_by_filter - persComDbDeleteKey"), DLT_STRING(pCurrentKeyName), DLT_STRING((iError >= 0) ? "OK" : "FAILED")) ;
+
+ iPosInList += strlen(pCurrentKeyName) + 1 ; /* 1 <=> list items separator */
+ }
+ }
+
+
+ if(pListUnfiltered != NIL)
+ {
+ free(pListUnfiltered) ;
+ }
+ if(pListFiltered!= NIL)
+ {
+ free(pListFiltered) ;
+ }
+ if(iHandlerDB >= 0)
+ {
+ persComDbClose(iHandlerDB) ;
+ }
+
+ return bEverythingOK ? PAS_SUCCESS : s32Result ;
+
+} /* persadmin_priv_delete_keys_by_filter() */
+
+
+static sint_t persadmin_priv_filter_keys_in_list(PersASSelectionType_e type, unsigned int user_no, unsigned int seat_no, pstr_t pUnfilteredList, pstr_t pFilteredList_out, sint_t iListSize)
+{
+ str_t prefixToSearch[64] ; /* enough for something like "/user/1/seat/2/" */
+ sint_t iPrefixLength ;
+ sint_t iPosInUnfilteredList = 0 ;
+ sint_t iPosInFilteredList = 0 ;
+
+ if( PERSIST_SELECT_ALL_USERS != user_no )
+ {
+ if( PERSIST_SELECT_ALL_SEATS != seat_no )
+ {
+ // "/user/1/seat/4";
+ snprintf(prefixToSearch, sizeof(prefixToSearch), "/%s/%d/%s/%d/",
+ PERS_ORG_USER_FOLDER_NAME, user_no, PERS_ORG_SEAT_FOLDER_NAME, seat_no);
+ }
+ else
+ {
+ // "/user/1/";
+ snprintf(prefixToSearch, sizeof(prefixToSearch), "/%s/%d/",
+ PERS_ORG_USER_FOLDER_NAME, user_no);
+ }
+ }
+ else
+ {
+ switch( type )
+ {
+ case PersASSelectionType_All:
+ case PersASSelectionType_Application:
+ {
+ // let everything pass through (actually we should look for "/node/" or "/user/");
+ snprintf(prefixToSearch, sizeof(prefixToSearch), "/");
+ break;
+ }
+
+ case PersASSelectionType_User:
+ {
+ // "/user/";
+ snprintf(prefixToSearch, sizeof(prefixToSearch), "/%s/",
+ PERS_ORG_USER_FOLDER_NAME);
+ break;
+ }
+
+ default:
+ {
+ /* nothing to do */
+ break;
+ }
+ }
+
+ }
+
+ iPrefixLength = strlen(prefixToSearch);
+ while( iPosInUnfilteredList < iListSize )
+ {
+ pstr_t pCurrentKeyName = pUnfilteredList + iPosInUnfilteredList;
+ sint_t iKeyLength = strlen(pCurrentKeyName) ;
+
+ // check if pCurrentKeyName begins with the searched prefix;
+ if( 0 == strncmp(pCurrentKeyName, prefixToSearch, iPrefixLength) )
+ {
+ strcpy(pFilteredList_out + iPosInFilteredList, pCurrentKeyName);
+ iPosInFilteredList += (iKeyLength + 1); /* 1 <=> list items separator */
+ }
+
+ iPosInUnfilteredList += (iKeyLength + 1); /* 1 <=> list items separator */
+ }
+
+ return iPosInFilteredList;
+
+} /* persadmin_priv_filter_keys_in_list() */
+
+
+static int persadmin_priv_get_all_local_db_names( const char * pchRootPath, const char * pchAppName, char* pchDBPaths_out, int bufSize )
+{
+ int result = PAS_FAILURE, totalAmountWritten = 0;
+
+ PrintDbPath( pchRootPath, gLocalCachePath, pchAppName, gLocalCached );
+ PrintDbPath( pchRootPath, gLocalCachePath, pchAppName, gLocalCachedDefault );
+ PrintDbPath( pchRootPath, gLocalCachePath, pchAppName, gLocalWt );
+ PrintDbPath( pchRootPath, gLocalCachePath, pchAppName, gLocalWtDefault );
+
+ PrintDbPath( pchRootPath, gLocalWtPath, pchAppName, gLocalWt );
+ PrintDbPath( pchRootPath, gLocalWtPath, pchAppName, gLocalWtDefault );
+ PrintDbPath( pchRootPath, gLocalWtPath, pchAppName, gLocalCached );
+ PrintDbPath( pchRootPath, gLocalWtPath, pchAppName, gLocalCachedDefault );
+
+ if ( bufSize >= 0 )
+ {
+ result = totalAmountWritten;
+ }
+
+ return result;
+} /* persadmin_priv_get_all_local_db_names() */
+
+
+static int persadmin_priv_get_all_shared_db_names( const char * pchRootPath, char* pchDBPaths_out, int bufSize )
+{
+ int result = PAS_FAILURE, totalAmountWritten = 0;
+
+ PrintDbPath( pchRootPath, gSharedPublicCachePath, gSharedCached );
+ PrintDbPath( pchRootPath, gSharedPublicCachePath, gSharedCachedDefault );
+ PrintDbPath( pchRootPath, gSharedPublicCachePath, gSharedWt );
+ PrintDbPath( pchRootPath, gSharedPublicCachePath, gSharedWtDefault );
+
+ PrintDbPath( pchRootPath, gSharedPublicWtPath, gSharedWt );
+ PrintDbPath( pchRootPath, gSharedPublicWtPath, gSharedWtDefault );
+ PrintDbPath( pchRootPath, gSharedPublicWtPath, gSharedCached );
+ PrintDbPath( pchRootPath, gSharedPublicWtPath, gSharedCachedDefault );
+
+ if ( bufSize > 0 )
+ {
+ result = persadmin_priv_get_all_shared_group_db_names( pchRootPath, gSharedCachePathString, gSharedCached, gSharedCachedDefault, pchDBPaths_out, & bufSize );
+ if ( result >= 0 )
+ {
+ totalAmountWritten += result;
+ pchDBPaths_out += result;
+ }
+ }
+ if ( bufSize > 0 )
+ {
+ result = persadmin_priv_get_all_shared_group_db_names( pchRootPath, gSharedWtPathString, gSharedWt, gSharedWtDefault, pchDBPaths_out, & bufSize );
+ if ( result >= 0 )
+ {
+ totalAmountWritten += result;
+ pchDBPaths_out += result;
+ }
+ }
+ if ( bufSize > 0 )
+ {
+ result = persadmin_priv_get_all_shared_group_db_names( pchRootPath, gSharedCachePathString, gSharedWt, gSharedWtDefault, pchDBPaths_out, & bufSize );
+ if ( result >= 0 )
+ {
+ totalAmountWritten += result;
+ pchDBPaths_out += result;
+ }
+ }
+ if ( bufSize > 0 )
+ {
+ result = persadmin_priv_get_all_shared_group_db_names( pchRootPath, gSharedWtPathString, gSharedCached, gSharedCachedDefault, pchDBPaths_out, & bufSize );
+ if ( result >= 0 )
+ {
+ totalAmountWritten += result;
+ pchDBPaths_out += result;
+ }
+ }
+
+ if ( bufSize >= 0 )
+ {
+ result = totalAmountWritten;
+ }
+
+ return result;
+} /* persadmin_priv_get_all_shared_db_names() */
+
+
+static int persadmin_priv_get_all_shared_group_db_names( const char * pchRootPath, const char * pchDataPathFormat, const char * dbName, const char * defaultDbName, char* pchDBPaths_out, int * bufferSize )
+{
+ int result = PAS_FAILURE, totalAmountWritten = 0;
+
+ int rootPathLen = strlen( pchRootPath );
+ char sharedPath[ rootPathLen + sizeof( PathSeparator ) + strlen( pchDataPathFormat ) + sizeof( StringTerminator ) ];
+ snprintf( sharedPath, sizeof( sharedPath ), "%s%c", pchRootPath, PathSeparator );
+ snprintf( sharedPath + rootPathLen + sizeof( PathSeparator ), sizeof( sharedPath ) - rootPathLen - sizeof( PathSeparator ), pchDataPathFormat, "", "" );
+
+ result = persadmin_list_folder_get_size( sharedPath, PersadminFilterFolders, false );
+ if ( result > 0 )
+ {
+ char fileList[ result + sizeof( StringTerminator ) ];
+ memset( fileList, 0, sizeof( fileList ) );
+ result = persadmin_list_folder( sharedPath, fileList, result, PersadminFilterFolders, false );
+
+ if ( result > 0 )
+ {
+ char * crtPath = fileList;
+ int bufSize = ( * bufferSize );
+ while ( ( bufSize >= 0 ) && ( ( * crtPath ) != StringTerminator ) )
+ {
+ PrintDbPath( pchRootPath, pchDataPathFormat, crtPath, dbName );
+ PrintDbPath( pchRootPath, pchDataPathFormat, crtPath, defaultDbName );
+ crtPath += strlen( crtPath ) + sizeof( StringTerminator );
+ }
+ ( * bufferSize ) = bufSize;
+
+ if ( bufSize >= 0 )
+ {
+ result = totalAmountWritten;
+ }
+ }
+ }
+
+ return result;
+} /* persadmin_priv_get_all_shared_group_db_names() */
diff --git a/test/pers_svc_test/inc/test_pas_resource_config_add.h b/test/pers_svc_test/inc/test_pas_resource_config_add.h
index d2ee86e..a06a413 100644
--- a/test/pers_svc_test/inc/test_pas_resource_config_add.h
+++ b/test/pers_svc_test/inc/test_pas_resource_config_add.h
@@ -1,49 +1,49 @@
-/********************************************************************************************************************* * * Copyright (C) 2012 Continental Automotive Systems, Inc. * * Author: Petrica.Manoila@continental-corporation.com * * Implementation of backup process * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Date Author Reason * 2012.11.27 uidu0250 CSP_WZ#1280: Initial version * **********************************************************************************************************************/ #ifndef SSW_TEST_PAS_RESOURCE_CONFIG_ADD_H
-#define SSW_TEST_PAS_RESOURCE_CONFIG_ADD_H
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* #ifdef __cplusplus */
-
-#include "persComTypes.h"
-#include "test_PAS.h"
-
-extern expected_key_data_RCT_s expectedKeyData_RCT_resConfAdd_1[17] ;
-extern expected_key_data_localDB_s expectedKeyData_localDB_resConfAdd_1[41] ;
-expected_file_data_s expectedKeyData_files_resConfAdd_1[16] ;
-//extern expected_file_data_s expectedFileData_shared_public_AfterReset[11] ;
-
-extern expected_key_data_RCT_s expected_RCT_public[13] ;
-extern expected_key_data_localDB_s expectedKeyData_public[29] ;
-extern expected_file_data_s expectedFileData_public[18] ;
-
-extern expected_key_data_RCT_s expected_RCT_group_10[12] ;
-extern expected_key_data_localDB_s expectedKeyData_group_10[24] ;
-extern expected_file_data_s expectedFileData_group_10[18] ;
-
-extern expected_key_data_RCT_s expected_RCT_group_20[12] ;
-extern expected_key_data_localDB_s expectedKeyData_group_20[16] ;
-extern expected_file_data_s expectedFileData_group_20[10] ;
-
-extern expected_key_data_RCT_s expected_RCT_group_30[6] ;
-extern expected_key_data_localDB_s expectedKeyData_group_30[8] ;
-extern expected_file_data_s expectedFileData_group_30[4] ;
-
-extern expected_key_data_RCT_s expected_RCT_App30_Phase_1[6] ;
-extern expected_key_data_localDB_s expectedKeyData_App30_Phase_1[8] ;
-extern expected_file_data_s expectedFileData_App30_Phase_1[4] ;
-
-extern expected_key_data_RCT_s expected_RCT_public[13] ;
-extern expected_key_data_localDB_s expectedKeyData_public_phase2[29] ;
-extern expected_file_data_s expectedFileData_public_phase2[18] ;
-
-bool_t Test_ResourceConfigAdd_1(int ceva, void* pAltceva) ;
-bool_t Test_ResourceConfigAdd_2(int ceva, void* pAltceva) ;
-
-#ifdef __cplusplus
-}
-#endif /* extern "C" { */
-
-#endif /*SSW_TEST_PAS_RESOURCE_CONFIG_ADD_H */
+/********************************************************************************************************************* * * Copyright (C) 2012 Continental Automotive Systems, Inc. * * Author: Petrica.Manoila@continental-corporation.com * * Implementation of backup process * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Date Author Reason * 2012.11.27 uidu0250 CSP_WZ#1280: Initial version * **********************************************************************************************************************/ #ifndef SSW_TEST_PAS_RESOURCE_CONFIG_ADD_H
+#define SSW_TEST_PAS_RESOURCE_CONFIG_ADD_H
+
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* #ifdef __cplusplus */
+
+#include "persComTypes.h"
+#include "test_PAS.h"
+
+extern expected_key_data_RCT_s expectedKeyData_RCT_resConfAdd_1[17] ;
+extern expected_key_data_localDB_s expectedKeyData_localDB_resConfAdd_1[41] ;
+expected_file_data_s expectedKeyData_files_resConfAdd_1[16] ;
+//extern expected_file_data_s expectedFileData_shared_public_AfterReset[11] ;
+
+extern expected_key_data_RCT_s expected_RCT_public[13] ;
+extern expected_key_data_localDB_s expectedKeyData_public[29] ;
+extern expected_file_data_s expectedFileData_public[18] ;
+
+extern expected_key_data_RCT_s expected_RCT_group_10[12] ;
+extern expected_key_data_localDB_s expectedKeyData_group_10[24] ;
+extern expected_file_data_s expectedFileData_group_10[18] ;
+
+extern expected_key_data_RCT_s expected_RCT_group_20[12] ;
+extern expected_key_data_localDB_s expectedKeyData_group_20[16] ;
+extern expected_file_data_s expectedFileData_group_20[10] ;
+
+extern expected_key_data_RCT_s expected_RCT_group_30[6] ;
+extern expected_key_data_localDB_s expectedKeyData_group_30[8] ;
+extern expected_file_data_s expectedFileData_group_30[4] ;
+
+extern expected_key_data_RCT_s expected_RCT_App30_Phase_1[6] ;
+extern expected_key_data_localDB_s expectedKeyData_App30_Phase_1[8] ;
+extern expected_file_data_s expectedFileData_App30_Phase_1[4] ;
+
+extern expected_key_data_RCT_s expected_RCT_public[13] ;
+extern expected_key_data_localDB_s expectedKeyData_public_phase2[29] ;
+extern expected_file_data_s expectedFileData_public_phase2[18] ;
+
+bool_t Test_ResourceConfigAdd_1(int ceva, void* pAltceva) ;
+bool_t Test_ResourceConfigAdd_2(int ceva, void* pAltceva) ;
+
+#ifdef __cplusplus
+}
+#endif /* extern "C" { */
+
+#endif /*SSW_TEST_PAS_RESOURCE_CONFIG_ADD_H */
diff --git a/test/pers_svc_test/src/test_pas_check_data_after_reset.c b/test/pers_svc_test/src/test_pas_check_data_after_reset.c
index 2608105..2623dbe 100644
--- a/test/pers_svc_test/src/test_pas_check_data_after_reset.c
+++ b/test/pers_svc_test/src/test_pas_check_data_after_reset.c
@@ -1,118 +1,118 @@
-/********************************************************************************************************************* * * Copyright (C) 2012 Continental Automotive Systems, Inc. * * Author: Petrica.Manoila@continental-corporation.com * * Implementation of backup process * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Date Author Reason * 2012.11.27 uidu0250 CSP_WZ#1280: Initial version * **********************************************************************************************************************/ #include "persComTypes.h"
-#include "stdio.h"
-
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <unistd.h>
-#include <dirent.h>
-
-#include "ssw_pers_admin_files_helper.h"
-
-#include "test_PAS.h"
-#include "test_pas_check_data_after_reset.h"
-
-#define File_t PersistenceResourceType_file
-#define Key_t PersistenceResourceType_key
-
-expected_key_data_RCT_s expectedKeyData_shared_public_RCT_AfterReset[13] =
-{
- {"pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
- {PersistencePolicy_wt, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
- {PersistencePolicy_wt, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"pubSettingC", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
- {PersistencePolicy_wt, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
- {PersistencePolicy_wt, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
- {PersistencePolicy_wc, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
- {PersistencePolicy_wc, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"pubSettingF", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
- {PersistencePolicy_wc, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
- {PersistencePolicy_wc, PersistenceStorage_shared, File_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"doc1.txt", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
- {PersistencePolicy_wt, PersistenceStorage_shared, File_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"Docs/doc2.txt", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
- {PersistencePolicy_wt, PersistenceStorage_shared, File_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"docA.txt", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
- {PersistencePolicy_wc, PersistenceStorage_shared, File_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"Docs/docB.txt", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
- {PersistencePolicy_wc, PersistenceStorage_shared, File_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"pubSetting/DEE", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, false,
- {PersistencePolicy_wc, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}}
-};
-
-expected_key_data_localDB_s expectedKeyData_shared_public_localDB_AfterReset[18] =
-{
- { PERS_ORG_NODE_FOLDER_NAME_"/pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, true, "Data>>/pubSettingA", sizeof("Data>>/pubSettingA")},
- { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, true, "Data>>/pubSettingB::user2::seat1", sizeof("Data>>/pubSettingB::user2::seat1")},
- { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, true, "Data>>/pubSettingB::user2:seat2", sizeof("Data>>/pubSettingB::user2:seat2")},
- { PERS_ORG_NODE_FOLDER_NAME_"/pubSettingC", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, true, "Data>>/pubSettingC", sizeof("Data>>/pubSettingC")},
- { PERS_ORG_USER_FOLDER_NAME_"1/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, true, "Data>>/pubSetting/ABC::user1", sizeof("Data>>/pubSetting/ABC::user1")},
- { PERS_ORG_USER_FOLDER_NAME_"2/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, true, "Data>>/pubSetting/ABC::user2", sizeof("Data>>/pubSetting/ABC::user2")},
- { PERS_ORG_USER_FOLDER_NAME_"3/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, true, "Data>>/pubSetting/ABC::user3", sizeof("Data>>/pubSetting/ABC::user3")},
- { PERS_ORG_USER_FOLDER_NAME_"4/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, true, "Data>>/pubSetting/ABC::user4", sizeof("Data>>/pubSetting/ABC::user4")},
- { PERS_ORG_NODE_FOLDER_NAME_"/pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, true, "Data>>/pubSettingD", sizeof("Data>>/pubSettingD")},
- { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, true, "Data>>/pubSettingE::user2:seat1", sizeof("Data>>/pubSettingE::user2:seat1")},
- { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, true, "Data>>/pubSettingE::user2:seat2", sizeof("Data>>/pubSettingE::user2:seat2")},
- { PERS_ORG_NODE_FOLDER_NAME_"/pubSettingF", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, true, "Data>>/pubSettingF", sizeof("Data>>/pubSettingF")},
- { PERS_ORG_USER_FOLDER_NAME_"1/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, true, "Data>>/pubSetting/DEF::user1", sizeof("Data>>/pubSetting/DEF::user1")},
- { PERS_ORG_USER_FOLDER_NAME_"2/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, true, "Data>>/pubSetting/DEF::user2", sizeof("Data>>/pubSetting/DEF::user2")},
- { PERS_ORG_USER_FOLDER_NAME_"3/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, true, "Data>>/pubSetting/DEF::user3", sizeof("Data>>/pubSetting/DEF::user3")},
- { PERS_ORG_USER_FOLDER_NAME_"4/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, true, "Data>>/pubSetting/DEF::user4", sizeof("Data>>/pubSetting/DEF::user4")},
- { PERS_ORG_USER_FOLDER_NAME_"4/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, false, NIL, 0},
- { PERS_ORG_NODE_FOLDER_NAME_"/pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, false, NIL, 0}
-};
-
-expected_file_data_s expectedFileData_shared_public_AfterReset[11] =
-{
- { PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_NODE_FOLDER_NAME"/doc1.txt", true, "File>>/doc1.txt", sizeof("File>>/doc1.txt")},
- { PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_NODE_FOLDER_NAME"/Docs/doc2.txt", true, "File>>/Docs/doc2.txt", sizeof("File>>/Docs/doc2.txt")},
- { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/1/docA.txt", true, "File>>/docA.txt::user1", sizeof("File>>/docA.txt::user1")},
- { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/2/docA.txt", true, "File>>/docA.txt::user2", sizeof("File>>/docA.txt::user2")},
- { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/3/docA.txt", true, "File>>/docA.txt::user3", sizeof("File>>/docA.txt::user3")},
- { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/4/docA.txt", true, "File>>/docA.txt::user4", sizeof("File>>/docA.txt::user4")},
- { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"1/Docs/docB.txt", true, "File>>/docB.txt::user2:seat1", sizeof("File>>/docB.txt::user2:seat1")},
- { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"2/Docs/docB.txt", true, "File>>/docB.txt::user2:seat2", sizeof("File>>/docB.txt::user2:seat2")},
- { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"3/Docs/docB.txt", true, "File>>/docB.txt::user2:seat3", sizeof("File>>/docB.txt::user2:seat3")},
- { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/docB.txt", true, "File>>/docB.txt::user2:seat4", sizeof("File>>/docB.txt::user2:seat4")},
- { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/1"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/docB.txt", false,NIL, 0},
-} ;
-
-#if 0
-bool_t Test_DataAfterReset(int ceva, void* pAltceva) ;
-
-testcase_s tc_testDataAfterReset =
-{
- Test_DataAfterReset,
- 0,
- NIL,
- "Check reference data structure after initialization",
- expectedKeyData_shared_public_RCT_AfterReset,
- sizeof(expectedKeyData_shared_public_RCT_AfterReset)/sizeof(expectedKeyData_shared_public_RCT_AfterReset[0]),
- expectedKeyData_shared_public_localDB_AfterReset,
- sizeof(expectedKeyData_shared_public_localDB_AfterReset)/sizeof(expectedKeyData_shared_public_localDB_AfterReset[0]),
- expectedFileData_shared_public_AfterReset,
- sizeof(expectedFileData_shared_public_AfterReset)/sizeof(expectedFileData_shared_public_AfterReset[0])
-};
-
-const testcase_s const* pTC_testDataAfterReset = &tc_testDataAfterReset ;
-#endif
-
-/**************************************************************************************************************
-***************************************** ADD TEST CASES HERE ********************************************
-**************************************************************************************************************/
-bool_t Test_DataAfterReset(int ceva, void* pAltceva)
-{
- bool_t bEverythingOK = true ;
-
- //bEverythingOK = ResetReferenceData() ;
- //printf("\nTest_DataAfterReset: ResetReferenceData() - %s \n", bEverythingOK ? "OK" : "FAILED") ;
- printf("\nTest_DataAfterReset: Data was reset... \n") ;
-
- return bEverythingOK ;
-}
+/********************************************************************************************************************* * * Copyright (C) 2012 Continental Automotive Systems, Inc. * * Author: Petrica.Manoila@continental-corporation.com * * Implementation of backup process * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Date Author Reason * 2012.11.27 uidu0250 CSP_WZ#1280: Initial version * **********************************************************************************************************************/ #include "persComTypes.h"
+#include "stdio.h"
+
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <unistd.h>
+#include <dirent.h>
+
+#include "ssw_pers_admin_files_helper.h"
+
+#include "test_PAS.h"
+#include "test_pas_check_data_after_reset.h"
+
+#define File_t PersistenceResourceType_file
+#define Key_t PersistenceResourceType_key
+
+expected_key_data_RCT_s expectedKeyData_shared_public_RCT_AfterReset[13] =
+{
+ {"pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
+ {PersistencePolicy_wt, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
+ {PersistencePolicy_wt, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSettingC", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
+ {PersistencePolicy_wt, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
+ {PersistencePolicy_wt, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
+ {PersistencePolicy_wc, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
+ {PersistencePolicy_wc, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSettingF", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
+ {PersistencePolicy_wc, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
+ {PersistencePolicy_wc, PersistenceStorage_shared, File_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"doc1.txt", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
+ {PersistencePolicy_wt, PersistenceStorage_shared, File_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"Docs/doc2.txt", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
+ {PersistencePolicy_wt, PersistenceStorage_shared, File_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"docA.txt", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
+ {PersistencePolicy_wc, PersistenceStorage_shared, File_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"Docs/docB.txt", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, true,
+ {PersistencePolicy_wc, PersistenceStorage_shared, File_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSetting/DEE", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME, false,
+ {PersistencePolicy_wc, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}}
+};
+
+expected_key_data_localDB_s expectedKeyData_shared_public_localDB_AfterReset[18] =
+{
+ { PERS_ORG_NODE_FOLDER_NAME_"/pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, true, "Data>>/pubSettingA", sizeof("Data>>/pubSettingA")},
+ { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, true, "Data>>/pubSettingB::user2::seat1", sizeof("Data>>/pubSettingB::user2::seat1")},
+ { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, true, "Data>>/pubSettingB::user2:seat2", sizeof("Data>>/pubSettingB::user2:seat2")},
+ { PERS_ORG_NODE_FOLDER_NAME_"/pubSettingC", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, true, "Data>>/pubSettingC", sizeof("Data>>/pubSettingC")},
+ { PERS_ORG_USER_FOLDER_NAME_"1/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, true, "Data>>/pubSetting/ABC::user1", sizeof("Data>>/pubSetting/ABC::user1")},
+ { PERS_ORG_USER_FOLDER_NAME_"2/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, true, "Data>>/pubSetting/ABC::user2", sizeof("Data>>/pubSetting/ABC::user2")},
+ { PERS_ORG_USER_FOLDER_NAME_"3/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, true, "Data>>/pubSetting/ABC::user3", sizeof("Data>>/pubSetting/ABC::user3")},
+ { PERS_ORG_USER_FOLDER_NAME_"4/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, true, "Data>>/pubSetting/ABC::user4", sizeof("Data>>/pubSetting/ABC::user4")},
+ { PERS_ORG_NODE_FOLDER_NAME_"/pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, true, "Data>>/pubSettingD", sizeof("Data>>/pubSettingD")},
+ { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, true, "Data>>/pubSettingE::user2:seat1", sizeof("Data>>/pubSettingE::user2:seat1")},
+ { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, true, "Data>>/pubSettingE::user2:seat2", sizeof("Data>>/pubSettingE::user2:seat2")},
+ { PERS_ORG_NODE_FOLDER_NAME_"/pubSettingF", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, true, "Data>>/pubSettingF", sizeof("Data>>/pubSettingF")},
+ { PERS_ORG_USER_FOLDER_NAME_"1/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, true, "Data>>/pubSetting/DEF::user1", sizeof("Data>>/pubSetting/DEF::user1")},
+ { PERS_ORG_USER_FOLDER_NAME_"2/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, true, "Data>>/pubSetting/DEF::user2", sizeof("Data>>/pubSetting/DEF::user2")},
+ { PERS_ORG_USER_FOLDER_NAME_"3/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, true, "Data>>/pubSetting/DEF::user3", sizeof("Data>>/pubSetting/DEF::user3")},
+ { PERS_ORG_USER_FOLDER_NAME_"4/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, true, "Data>>/pubSetting/DEF::user4", sizeof("Data>>/pubSetting/DEF::user4")},
+ { PERS_ORG_USER_FOLDER_NAME_"4/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME, false, NIL, 0},
+ { PERS_ORG_NODE_FOLDER_NAME_"/pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME, false, NIL, 0}
+};
+
+expected_file_data_s expectedFileData_shared_public_AfterReset[11] =
+{
+ { PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_NODE_FOLDER_NAME"/doc1.txt", true, "File>>/doc1.txt", sizeof("File>>/doc1.txt")},
+ { PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_NODE_FOLDER_NAME"/Docs/doc2.txt", true, "File>>/Docs/doc2.txt", sizeof("File>>/Docs/doc2.txt")},
+ { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/1/docA.txt", true, "File>>/docA.txt::user1", sizeof("File>>/docA.txt::user1")},
+ { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/2/docA.txt", true, "File>>/docA.txt::user2", sizeof("File>>/docA.txt::user2")},
+ { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/3/docA.txt", true, "File>>/docA.txt::user3", sizeof("File>>/docA.txt::user3")},
+ { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/4/docA.txt", true, "File>>/docA.txt::user4", sizeof("File>>/docA.txt::user4")},
+ { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"1/Docs/docB.txt", true, "File>>/docB.txt::user2:seat1", sizeof("File>>/docB.txt::user2:seat1")},
+ { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"2/Docs/docB.txt", true, "File>>/docB.txt::user2:seat2", sizeof("File>>/docB.txt::user2:seat2")},
+ { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"3/Docs/docB.txt", true, "File>>/docB.txt::user2:seat3", sizeof("File>>/docB.txt::user2:seat3")},
+ { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/docB.txt", true, "File>>/docB.txt::user2:seat4", sizeof("File>>/docB.txt::user2:seat4")},
+ { PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/1"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/docB.txt", false,NIL, 0},
+} ;
+
+#if 0
+bool_t Test_DataAfterReset(int ceva, void* pAltceva) ;
+
+testcase_s tc_testDataAfterReset =
+{
+ Test_DataAfterReset,
+ 0,
+ NIL,
+ "Check reference data structure after initialization",
+ expectedKeyData_shared_public_RCT_AfterReset,
+ sizeof(expectedKeyData_shared_public_RCT_AfterReset)/sizeof(expectedKeyData_shared_public_RCT_AfterReset[0]),
+ expectedKeyData_shared_public_localDB_AfterReset,
+ sizeof(expectedKeyData_shared_public_localDB_AfterReset)/sizeof(expectedKeyData_shared_public_localDB_AfterReset[0]),
+ expectedFileData_shared_public_AfterReset,
+ sizeof(expectedFileData_shared_public_AfterReset)/sizeof(expectedFileData_shared_public_AfterReset[0])
+};
+
+const testcase_s const* pTC_testDataAfterReset = &tc_testDataAfterReset ;
+#endif
+
+/**************************************************************************************************************
+***************************************** ADD TEST CASES HERE ********************************************
+**************************************************************************************************************/
+bool_t Test_DataAfterReset(int ceva, void* pAltceva)
+{
+ bool_t bEverythingOK = true ;
+
+ //bEverythingOK = ResetReferenceData() ;
+ //printf("\nTest_DataAfterReset: ResetReferenceData() - %s \n", bEverythingOK ? "OK" : "FAILED") ;
+ printf("\nTest_DataAfterReset: Data was reset... \n") ;
+
+ return bEverythingOK ;
+}
diff --git a/test/pers_svc_test/src/test_pas_resource_config_add.c b/test/pers_svc_test/src/test_pas_resource_config_add.c
index 29dd2d8..81fc518 100644
--- a/test/pers_svc_test/src/test_pas_resource_config_add.c
+++ b/test/pers_svc_test/src/test_pas_resource_config_add.c
@@ -1,729 +1,729 @@
-/********************************************************************************************************************* * * Copyright (C) 2012 Continental Automotive Systems, Inc. * * Author: Petrica.Manoila@continental-corporation.com * * Implementation of backup process * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Date Author Reason * 2012.11.27 uidu0250 CSP_WZ#1280: Initial version * **********************************************************************************************************************/ #include "persComTypes.h"
-#include "stdio.h"
-#include "string.h"
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <errno.h>
-#include <unistd.h>
-#include <dirent.h>
-
-#include "dlt/dlt.h"
-
-#include "persistence_admin_service.h"
-#include "test_PAS.h"
-#include "test_pas_resource_config_add.h"
-
-#include "persComDbAccess.h"
-
-#define File_t PersistenceResourceType_file
-#define Key_t PersistenceResourceType_key
-
-/* L&T context */
-#define LT_HDR "TEST_PAS_CONF >> "
-DLT_IMPORT_CONTEXT (persAdminSvcDLTCtx)
-static char g_msg[512] ;
-
-
-#define RESOURCE_PATH "/tmp/var/resourceConfig"
-#define RESOURCE_PATH_ RESOURCE_PATH"/"
-
-#define RESOURCE_ARCHIVE_PATHNAME_1 "/tmp/PAS/resource1.tar.gz"
-#define RESOURCE_ARCHIVE_PATHNAME_2 "/tmp/PAS/resource2.tar.gz"
-
-/**********************************************************************************************************************************************
- *********************************************** Expected - public *****************************************************************************
- *********************************************************************************************************************************************/
-expected_key_data_RCT_s expected_RCT_public[13] =
-{
- //pubSettingA changed policy (wt -> wc)
- {"pubSettingA", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"pubSettingB", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"pubSettingC", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"pubSettingD", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- //pubSettingE changed policy (wc -> wt)
- {"pubSettingE", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- //pubSettingF removed
- {"pubSettingF", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, false, {PersistencePolicy_wc, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- //new_pubSetting_1 added
- {"new_pubSetting_1", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"doc1.txt", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_shared,File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"Docs/doc2.txt", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_shared,File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"docA.txt", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_shared,File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
- {"Docs/docB.txt", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_shared,File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}}
-} ;
-
-/* data after phase 1 */
-expected_key_data_localDB_s expectedKeyData_public[29] =
-{
- //pubSettingA changed policy (wt -> wc)
- {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, false,
- "Data>>/pubSettingA", sizeof("Data>>/pubSettingA")},
- {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/pubSettingA", sizeof("Data>>/pubSettingA")},
- {"pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME, true,
- "FactoryDefault : pubSettingA : orig", sizeof("FactoryDefault : pubSettingA : orig")},
- {"pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME, true,
- "ConfigurableDefault : pubSettingA : orig", sizeof("ConfigurableDefault : pubSettingA : orig")},
-
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/pubSettingB::user2::seat1", sizeof("Data>>/pubSettingB::user2::seat1")},
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/pubSettingB::user2:seat2", sizeof("Data>>/pubSettingB::user2:seat2")},
- //added factory default value in config file
- {"pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME, true,
- "FactoryDefault : pubSettingB : new", sizeof("FactoryDefault : pubSettingB : new")},
-
- {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/pubSettingC", sizeof("Data>>/pubSettingC")},
-
- {PERS_ORG_USER_FOLDER_NAME_"1/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/pubSetting/ABC::user1", sizeof("Data>>/pubSetting/ABC::user1")},
- {PERS_ORG_USER_FOLDER_NAME_"2/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/pubSetting/ABC::user2", sizeof("Data>>/pubSetting/ABC::user2")},
- {PERS_ORG_USER_FOLDER_NAME_"3/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/pubSetting/ABC::user3", sizeof("Data>>/pubSetting/ABC::user3")},
- {PERS_ORG_USER_FOLDER_NAME_"4/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/pubSetting/ABC::user4", sizeof("Data>>/pubSetting/ABC::user4")},
- {"pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME, true,
- "FactoryDefault : pubSetting/ABC : orig", sizeof("FactoryDefault : pubSetting/ABC : orig")},
- #if 0 //configurable-default values changed by config file
- {"pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME, true,
- "ConfigurableDefault : pubSetting/ABC : orig", sizeof("ConfigurableDefault : pubSetting/ABC : orig")},
- #endif
- {"pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME, true,
- "ConfigurableDefault : pubSetting/ABC : new", sizeof("ConfigurableDefault : pubSetting/ABC : new")},
-
- {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/pubSettingD", sizeof("Data>>/pubSettingD")},
- #if 0 //factory-default value changed by config file
- {"pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME, true,
- "FactoryDefault : pubSettingD : orig", sizeof("FactoryDefault : pubSettingD : orig")},
- #endif
- {"pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME, true,
- "FactoryDefault : pubSettingD : new", sizeof("FactoryDefault : pubSettingD : new")},
- //configurable-default value added by config file
- {"pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME, true,
- "ConfigurableDefault : pubSettingD : new", sizeof("ConfigurableDefault : pubSettingD : new")},
-
- //pubSettingE changed policy (wc -> wt)
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/pubSettingE::user2:seat1", sizeof("Data>>/pubSettingE::user2:seat1")},
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, false,
- "Data>>/pubSettingE::user2:seat1", sizeof("Data>>/pubSettingE::user2:seat1")},
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/pubSettingE::user2:seat2", sizeof("Data>>/pubSettingE::user2:seat2")},
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, false,
- "Data>>/pubSettingE::user2:seat2", sizeof("Data>>/pubSettingE::user2:seat2")},
-
- //pubSettingF removed
- {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, false,
- "Data>>/pubSettingF", sizeof("Data>>/pubSettingF")},
- {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, false,
- "Data>>/pubSettingF", sizeof("Data>>/pubSettingF")},
-
- {PERS_ORG_USER_FOLDER_NAME_"1/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/pubSetting/DEF::user1", sizeof("Data>>/pubSetting/DEF::user1")},
- {PERS_ORG_USER_FOLDER_NAME_"2/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/pubSetting/DEF::user2", sizeof("Data>>/pubSetting/DEF::user2")},
- {PERS_ORG_USER_FOLDER_NAME_"3/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/pubSetting/DEF::user3", sizeof("Data>>/pubSetting/DEF::user3")},
- {PERS_ORG_USER_FOLDER_NAME_"4/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/pubSetting/DEF::user4", sizeof("Data>>/pubSetting/DEF::user4")},
-
- //new_pubSetting_1 - added factory-default value in config file
- {"new_pubSetting_1", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME, true,
- "FactoryDefault : new_pubSetting_1 : new", sizeof("FactoryDefault : new_pubSetting_1 : new")},
- //new_pubSetting_1 - added configurable-default value in config file
- {"new_pubSetting_1", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME, true,
- "ConfigurableDefault : new_pubSetting_1 : new", sizeof("ConfigurableDefault : new_pubSetting_1 : new")}
-} ;
-
-
-/* data after phase 2 - uninstall non-default data (pubSettingB excepted) */
-expected_key_data_localDB_s expectedKeyData_public_phase2[29] =
-{
- {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
- false, "Data>>/pubSettingA", sizeof("Data>>/pubSettingA")},
- {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
- false, "Data>>/pubSettingA", sizeof("Data>>/pubSettingA")},
- {"pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME,
- true, "FactoryDefault : pubSettingA : orig", sizeof("FactoryDefault : pubSettingA : orig")},
- {"pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME,
- true, "ConfigurableDefault : pubSettingA : orig", sizeof("ConfigurableDefault : pubSettingA : orig")},
-
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
- true, "Data>>/pubSettingB::user2::seat1", sizeof("Data>>/pubSettingB::user2::seat1")},
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
- true, "Data>>/pubSettingB::user2:seat2", sizeof("Data>>/pubSettingB::user2:seat2")},
- {"pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME,
- true, "FactoryDefault : pubSettingB : new", sizeof("FactoryDefault : pubSettingB : new")},
-
- {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
- false, "Data>>/pubSettingC", sizeof("Data>>/pubSettingC")},
-
- {PERS_ORG_USER_FOLDER_NAME_"1/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
- false, "Data>>/pubSetting/ABC::user1", sizeof("Data>>/pubSetting/ABC::user1")},
- {PERS_ORG_USER_FOLDER_NAME_"2/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
- false, "Data>>/pubSetting/ABC::user2", sizeof("Data>>/pubSetting/ABC::user2")},
- {PERS_ORG_USER_FOLDER_NAME_"3/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
- false, "Data>>/pubSetting/ABC::user3", sizeof("Data>>/pubSetting/ABC::user3")},
- {PERS_ORG_USER_FOLDER_NAME_"4/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
- false, "Data>>/pubSetting/ABC::user4", sizeof("Data>>/pubSetting/ABC::user4")},
- {"pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME,
- true, "FactoryDefault : pubSetting/ABC : orig", sizeof("FactoryDefault : pubSetting/ABC : orig")},
-
- {"pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME,
- true, "ConfigurableDefault : pubSetting/ABC : new", sizeof("ConfigurableDefault : pubSetting/ABC : new")},
-
- {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
- false, "Data>>/pubSettingD", sizeof("Data>>/pubSettingD")},
-
- {"pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME,
- true, "FactoryDefault : pubSettingD : new", sizeof("FactoryDefault : pubSettingD : new")},
- {"pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME,
- true, "ConfigurableDefault : pubSettingD : new", sizeof("ConfigurableDefault : pubSettingD : new")},
-
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
- false, "Data>>/pubSettingE::user2:seat1", sizeof("Data>>/pubSettingE::user2:seat1")},
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
- false, "Data>>/pubSettingE::user2:seat1", sizeof("Data>>/pubSettingE::user2:seat1")},
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
- false, "Data>>/pubSettingE::user2:seat2", sizeof("Data>>/pubSettingE::user2:seat2")},
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
- false, "Data>>/pubSettingE::user2:seat2", sizeof("Data>>/pubSettingE::user2:seat2")},
-
- {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
- false, "Data>>/pubSettingF", sizeof("Data>>/pubSettingF")},
- {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
- false, "Data>>/pubSettingF", sizeof("Data>>/pubSettingF")},
-
- {PERS_ORG_USER_FOLDER_NAME_"1/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
- false, "Data>>/pubSetting/DEF::user1", sizeof("Data>>/pubSetting/DEF::user1")},
- {PERS_ORG_USER_FOLDER_NAME_"2/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
- false, "Data>>/pubSetting/DEF::user2", sizeof("Data>>/pubSetting/DEF::user2")},
- {PERS_ORG_USER_FOLDER_NAME_"3/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
- false, "Data>>/pubSetting/DEF::user3", sizeof("Data>>/pubSetting/DEF::user3")},
- {PERS_ORG_USER_FOLDER_NAME_"4/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
- false, "Data>>/pubSetting/DEF::user4", sizeof("Data>>/pubSetting/DEF::user4")},
-
- {"new_pubSetting_1", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME,
- true, "FactoryDefault : new_pubSetting_1 : new", sizeof("FactoryDefault : new_pubSetting_1 : new")},
- {"new_pubSetting_1", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME,
- true, "ConfigurableDefault : new_pubSetting_1 : new", sizeof("ConfigurableDefault : new_pubSetting_1 : new")}
-};
-
-expected_file_data_s expectedFileData_public[18] =
-{
-/* factory-default - installed via config */
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_DEFAULT_DATA_FOLDER_NAME"/""doc1.txt", true, "File>>/doc1.txt factory-default", sizeof("File>>/doc1.txt factory-default")-1},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_DEFAULT_DATA_FOLDER_NAME"/""docA.txt", true, "File>>/docA.txt factory-default", sizeof("File>>/docA.txt factory-default")-1},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_DEFAULT_DATA_FOLDER_NAME"/""Docs/doc2.txt", true, "File>>/Docs/doc2.txt factory-default", sizeof("File>>/Docs/doc2.txt factory-default")-1},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_DEFAULT_DATA_FOLDER_NAME"/""Docs/docB.txt", true, "File>>/Docs/docB.txt factory-default", sizeof("File>>/Docs/docB.txt factory-default")-1},
-/* configurable-default - installed via config */
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME"/""doc1.txt", true, "File>>/doc1.txt configurable-default", sizeof("File>>/doc1.txt configurable-default")-1},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME"/""docA.txt", true, "File>>/docA.txt configurable-default", sizeof("File>>/docA.txt configurable-default")-1},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME"/""Docs/doc2.txt", true, "File>>/Docs/doc2.txt configurable-default", sizeof("File>>/Docs/doc2.txt configurable-default")-1},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME"/""Docs/docB.txt", true, "File>>/Docs/docB.txt configurable-default", sizeof("File>>/Docs/docB.txt configurable-default")-1},
-/* non-default - pre-installed */
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_NODE_FOLDER_NAME"/""doc1.txt", true, "File>>/doc1.txt", sizeof("File>>/doc1.txt")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_NODE_FOLDER_NAME"/""Docs/doc2.txt", true, "File>>/Docs/doc2.txt", sizeof("File>>/Docs/doc2.txt")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/1/docA.txt", true, "File>>/docA.txt::user1", sizeof("File>>/docA.txt::user1")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2/docA.txt", true, "File>>/docA.txt::user2", sizeof("File>>/docA.txt::user2")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/3/docA.txt", true, "File>>/docA.txt::user3", sizeof("File>>/docA.txt::user3")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/4/docA.txt", true, "File>>/docA.txt::user4", sizeof("File>>/docA.txt::user4")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"1/Docs/docB.txt", true, "File>>/docB.txt::user2:seat1", sizeof("File>>/docB.txt::user2:seat1")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"2/Docs/docB.txt", true, "File>>/docB.txt::user2:seat2", sizeof("File>>/docB.txt::user2:seat2")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"3/Docs/docB.txt", true, "File>>/docB.txt::user2:seat3", sizeof("File>>/docB.txt::user2:seat3")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/docB.txt", true, "File>>/docB.txt::user2:seat4", sizeof("File>>/docB.txt::user2:seat4")}
-};
-
-/* data after phase 2 - uninstall non-default data (docA.txt excepted) */
-expected_file_data_s expectedFileData_public_phase2[18] =
-{
-/* factory-default - installed via config */
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_DEFAULT_DATA_FOLDER_NAME"/""doc1.txt", true, "File>>/doc1.txt factory-default", sizeof("File>>/doc1.txt factory-default")-1},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_DEFAULT_DATA_FOLDER_NAME"/""docA.txt", true, "File>>/docA.txt factory-default", sizeof("File>>/docA.txt factory-default")-1},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_DEFAULT_DATA_FOLDER_NAME"/""Docs/doc2.txt", true, "File>>/Docs/doc2.txt factory-default", sizeof("File>>/Docs/doc2.txt factory-default")-1},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_DEFAULT_DATA_FOLDER_NAME"/""Docs/docB.txt", true, "File>>/Docs/docB.txt factory-default", sizeof("File>>/Docs/docB.txt factory-default")-1},
-/* configurable-default - installed via config */
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME"/""doc1.txt", true, "File>>/doc1.txt configurable-default", sizeof("File>>/doc1.txt configurable-default")-1},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME"/""docA.txt", true, "File>>/docA.txt configurable-default", sizeof("File>>/docA.txt configurable-default")-1},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME"/""Docs/doc2.txt", true, "File>>/Docs/doc2.txt configurable-default", sizeof("File>>/Docs/doc2.txt configurable-default")-1},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME"/""Docs/docB.txt", true, "File>>/Docs/docB.txt configurable-default", sizeof("File>>/Docs/docB.txt configurable-default")-1},
-/* non-default - pre-installed */
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_NODE_FOLDER_NAME"/""doc1.txt", false,"File>>/doc1.txt", sizeof("File>>/doc1.txt")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_NODE_FOLDER_NAME"/""Docs/doc2.txt", false,"File>>/Docs/doc2.txt", sizeof("File>>/Docs/doc2.txt")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/1/docA.txt", true, "File>>/docA.txt::user1", sizeof("File>>/docA.txt::user1")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2/docA.txt", true, "File>>/docA.txt::user2", sizeof("File>>/docA.txt::user2")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/3/docA.txt", true, "File>>/docA.txt::user3", sizeof("File>>/docA.txt::user3")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/4/docA.txt", true, "File>>/docA.txt::user4", sizeof("File>>/docA.txt::user4")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"1/Docs/docB.txt", false,"File>>/docB.txt::user2:seat1", sizeof("File>>/docB.txt::user2:seat1")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"2/Docs/docB.txt", false,"File>>/docB.txt::user2:seat2", sizeof("File>>/docB.txt::user2:seat2")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"3/Docs/docB.txt", false,"File>>/docB.txt::user2:seat3", sizeof("File>>/docB.txt::user2:seat3")},
- {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/docB.txt", false,"File>>/docB.txt::user2:seat4", sizeof("File>>/docB.txt::user2:seat4")}
-};
-
-/**********************************************************************************************************************************************
- *********************************************** Expected - group/10 *****************************************************************************
- *********************************************************************************************************************************************/
-expected_key_data_RCT_s expected_RCT_group_10[12] =
-{
- {"gr10_SettingA", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
- {"gr10_SettingB", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
- {"gr10_SettingC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
- {"gr10_Setting/ABC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
- {"gr10_SettingD", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
- {"gr10_SettingE", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
- {"gr10_SettingF", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
- {"gr10_Setting/DEF", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
- {"gr10_1.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
- {"Docs/gr10_A.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
- {"gr10_2.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
- {"Docs/gr10_B.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}}
-} ;
-
-expected_key_data_localDB_s expectedKeyData_group_10[24] =
-{
-/* non-default data : pre-installed */
- {PERS_ORG_NODE_FOLDER_NAME_"/gr10_SettingA", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/gr10_SettingA", sizeof("Data>>/gr10_SettingA")},
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/gr10_SettingB", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/gr10_SettingB::user2::seat1", sizeof("Data>>/gr10_SettingB::user2::seat1")},
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/gr10_SettingB", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/gr10_SettingB::user2:seat2", sizeof("Data>>/gr10_SettingB::user2:seat2")},
- //no longer in - deleted by installException
- {PERS_ORG_NODE_FOLDER_NAME_"/gr10_SettingC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_WT_DB_NAME_, false,
- "Data>>/gr10_SettingC", sizeof("Data>>/gr10_SettingC")},
- {PERS_ORG_USER_FOLDER_NAME_"1/gr10_Setting/ABC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/gr10_Setting/ABC::user1", sizeof("Data>>/gr10_Setting/ABC::user1")},
- {PERS_ORG_USER_FOLDER_NAME_"2/gr10_Setting/ABC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/gr10_Setting/ABC::user2", sizeof("Data>>/gr10_Setting/ABC::user2")},
- {PERS_ORG_USER_FOLDER_NAME_"3/gr10_Setting/ABC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/gr10_Setting/ABC::user3", sizeof("Data>>/gr10_Setting/ABC::user3")},
- {PERS_ORG_USER_FOLDER_NAME_"4/gr10_Setting/ABC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/gr10_Setting/ABC::user4", sizeof("Data>>/gr10_Setting/ABC::user4")},
- {PERS_ORG_NODE_FOLDER_NAME_"/gr10_SettingD", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/gr10_SettingD", sizeof("Data>>/gr10_SettingD")},
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/gr10_SettingE", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/gr10_SettingE::user2:seat1", sizeof("Data>>/gr10_SettingE::user2:seat1")},
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/gr10_SettingE", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/gr10_SettingE::user2:seat2", sizeof("Data>>/gr10_SettingE::user2:seat2")},
- {PERS_ORG_NODE_FOLDER_NAME_"/gr10_SettingF", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/gr10_SettingF", sizeof("Data>>/gr10_SettingF")},
- {PERS_ORG_USER_FOLDER_NAME_"1/gr10_Setting/DEF", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/gr10_Setting/DEF::user1", sizeof("Data>>/gr10_Setting/DEF::user1")},
- {PERS_ORG_USER_FOLDER_NAME_"2/gr10_Setting/DEF", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/gr10_Setting/DEF::user2", sizeof("Data>>/gr10_Setting/DEF::user2")},
- {PERS_ORG_USER_FOLDER_NAME_"3/gr10_Setting/DEF", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/gr10_Setting/DEF::user3", sizeof("Data>>/gr10_Setting/DEF::user3")},
- {PERS_ORG_USER_FOLDER_NAME_"4/gr10_Setting/DEF", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/gr10_Setting/DEF::user4", sizeof("Data>>/gr10_Setting/DEF::user4")},
-/* factory-default data : pre-installed */
- //not updated because factory-default data not available in config file
- {"gr10_SettingA", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
- "FactoryDefault : gr10_SettingA : orig", sizeof("FactoryDefault : gr10_SettingA : orig")},
- {"gr10_SettingB", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
- "FactoryDefault : gr10_SettingB : orig", sizeof("FactoryDefault : gr10_SettingB : orig")},
- //deleted by config file
- {"gr10_SettingC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, false,
- "FactoryDefault : gr10_SettingC : orig", sizeof("FactoryDefault : gr10_SettingC : orig")},
- {"gr10_Setting/ABC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
- "FactoryDefault : gr10_Setting/ABC : orig", sizeof("FactoryDefault : gr10_Setting/ABC : orig")},
-/* configurable-default data : pre-installed */
- #if 0 //updated by config file
- {"gr10_SettingA", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
- "ConfigurableDefault : gr10_SettingA : orig", sizeof("ConfigurableDefault : gr10_SettingA : orig")},
- #endif
- {"gr10_SettingA", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
- "ConfigurableDefault : gr10_SettingA : new", sizeof("ConfigurableDefault : gr10_SettingA : new")},
- {"gr10_SettingB", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
- "ConfigurableDefault : gr10_SettingB : orig", sizeof("ConfigurableDefault : gr10_SettingB : orig")},
- //deleted by config file
- {"gr10_SettingC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, false,
- "ConfigurableDefault : gr10_SettingC : orig", sizeof("ConfigurableDefault : gr10_SettingC : orig")},
- {"gr10_Setting/ABC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
- "ConfigurableDefault : gr10_Setting/ABC : orig", sizeof("ConfigurableDefault : gr10_Setting/ABC : orig")}
-} ;
-
-expected_file_data_s expectedFileData_group_10[18] =
-{
-/* pre-installed */
- {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_NODE_FOLDER_NAME_"/gr10_1.txt", true, "File>>gr10_>>/gr10_1.txt", sizeof("File>>gr10_>>/gr10_1.txt")},
- #if 0 //updated by config file
- {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_NODE_FOLDER_NAME_"/Docs/gr10_A.txt", true, "File>>gr10_>>/Docs/gr10_A.txt", sizeof("File>>gr10_>>/Docs/gr10_A.txt")},
- #endif
- {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_NODE_FOLDER_NAME_"/Docs/gr10_A.txt", false,"File>>gr10_>>/Docs/gr10_A.txt", sizeof("File>>gr10_>>/Docs/gr10_A.txt")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"1/gr10_2.txt", true, "File>>gr10_>>/gr10_2.txt::user1", sizeof("File>>gr10_>>/gr10_2.txt::user1")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"2/gr10_2.txt", true, "File>>gr10_>>/gr10_2.txt::user2", sizeof("File>>gr10_>>/gr10_2.txt::user2")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"3/gr10_2.txt", true, "File>>gr10_>>/gr10_2.txt::user3", sizeof("File>>gr10_>>/gr10_2.txt::user3")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"4/gr10_2.txt", true, "File>>gr10_>>/gr10_2.txt::user4", sizeof("File>>gr10_>>/gr10_2.txt::user4")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/Docs/gr10_B.txt", true, "File>>gr10_>>/Docs/gr10_B.txt::user2:seat1", sizeof("File>>gr10_>>/Docs/gr10_B.txt::user2:seat1")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/Docs/gr10_B.txt", true, "File>>gr10_>>/Docs/gr10_B.txt::user2:seat2", sizeof("File>>gr10_>>/Docs/gr10_B.txt::user2:seat2")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/Docs/gr10_B.txt", true, "File>>gr10_>>/Docs/gr10_B.txt::user2:seat3", sizeof("File>>gr10_>>/Docs/gr10_B.txt::user2:seat3")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/gr10_B.txt", true, "File>>gr10_>>/Docs/gr10_B.txt::user2:seat4", sizeof("File>>gr10_>>/Docs/gr10_B.txt::user2:seat4")},
-
- /* factory-default data */
- #if 0 //updated by config file
- {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/gr10_1.txt", true, "File>>gr10_>>/gr10_1.txt factory-default : orig", sizeof("File>>gr10_>>/gr10_1.txt factory-default : orig")},
- #endif
- {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/gr10_1.txt", true, "File>>gr10_>>/gr10_1.txt factory-default : new", sizeof("File>>gr10_>>/gr10_1.txt factory-default : new")},
- //deleted by config file
- {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/Docs/gr10_A.txt", false, "File>>gr10_>>/Docs/gr10_A.txt factory-default : orig", sizeof("File>>gr10_>>/Docs/gr10_A.txt factory-default : orig")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/gr10_2.txt", true, "File>>gr10_>>/gr10_2.txt factory-default : orig", sizeof("File>>gr10_>>/gr10_2.txt factory-default : orig")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/Docs/gr10_B.txt", true, "File>>gr10_>>/Docs/gr10_B.txt factory-default : orig", sizeof("File>>gr10_>>/Docs/gr10_B.txt factory-default : orig")},
- /* configurable-default data */
- #if 0 //updated by config file
- {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/gr10_1.txt", true, "File>>gr10_>>/gr10_1.txt configurable-default : orig", sizeof("File>>gr10_>>/gr10_1.txt configurable-default : orig")},
- #endif
- {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/gr10_1.txt", true, "File>>gr10_>>/gr10_1.txt configurable-default : new", sizeof("File>>gr10_>>/gr10_1.txt configurable-default : new")},
- //deleted by config file
- {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/Docs/gr10_A.txt", false,"File>>gr10_>>/Docs/gr10_A.txt configurable-default : orig", sizeof("File>>gr10_>>/Docs/gr10_A.txt configurable-default : orig")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/gr10_2.txt", true, "File>>gr10_>>/gr10_2.txt configurable-default : orig", sizeof("File>>gr10_>>/gr10_2.txt configurable-default : orig")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/Docs/gr10_B.txt", true, "File>>gr10_>>/Docs/gr10_B.txt configurable-default : orig", sizeof("File>>gr10_>>/Docs/gr10_B.txt configurable-default : orig")},
-
-};
-
-/**********************************************************************************************************************************************
- *********************************************** Expected - group/20 *****************************************************************************
- *********************************************************************************************************************************************/
-
-
-expected_key_data_RCT_s expected_RCT_group_20[12] =
-{
- {"gr20_SettingA", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
- {"gr20_SettingB", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
- {"gr20_SettingC", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
- {"gr20_Setting/ABC", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
- {"gr20_SettingD", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
- {"gr20_SettingE", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
- {"gr20_SettingF", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
- {"gr20_Setting/DEF", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
- {"doc1.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
- {"Docs/doc2.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
- {"docA.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
- {"Docs/docB.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}}
-} ;
-
-expected_key_data_localDB_s expectedKeyData_group_20[16] =
-{
-/* non-default data : pre-installed */
- {PERS_ORG_NODE_FOLDER_NAME_"/gr20_SettingA",
- PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/gr20_SettingA", sizeof("Data>>/gr20_SettingA")},
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/gr20_SettingB",
- PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/gr20_SettingB::user2::seat1", sizeof("Data>>/gr20_SettingB::user2::seat1")},
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/gr20_SettingB",
- PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/gr20_SettingB::user2:seat2", sizeof("Data>>/gr20_SettingB::user2:seat2")},
- {PERS_ORG_NODE_FOLDER_NAME_"/gr20_SettingC",
- PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/gr20_SettingC", sizeof("Data>>/gr20_SettingC")},
- {PERS_ORG_USER_FOLDER_NAME_"1/gr20_Setting/ABC",
- PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/gr20_Setting/ABC::user1", sizeof("Data>>/gr20_Setting/ABC::user1")},
- {PERS_ORG_USER_FOLDER_NAME_"2/gr20_Setting/ABC",
- PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/gr20_Setting/ABC::user2", sizeof("Data>>/gr20_Setting/ABC::user2")},
- {PERS_ORG_USER_FOLDER_NAME_"3/gr20_Setting/ABC",
- PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/gr20_Setting/ABC::user3", sizeof("Data>>/gr20_Setting/ABC::user3")},
- {PERS_ORG_USER_FOLDER_NAME_"4/gr20_Setting/ABC",
- PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_LOCAL_WT_DB_NAME_, true,
- "Data>>/gr20_Setting/ABC::user4", sizeof("Data>>/gr20_Setting/ABC::user4")},
- {PERS_ORG_NODE_FOLDER_NAME_"/gr20_SettingD",
- PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/gr20_SettingD", sizeof("Data>>/gr20_SettingD")},
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/gr20_SettingE",
- PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/gr20_SettingE::user2:seat1", sizeof("Data>>/gr20_SettingE::user2:seat1")},
- {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/gr20_SettingE",
- PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/gr20_SettingE::user2:seat2", sizeof("Data>>/gr20_SettingE::user2:seat2")},
- {PERS_ORG_NODE_FOLDER_NAME_"/gr20_SettingF",
- PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/gr20_SettingF", sizeof("Data>>/gr20_SettingF")},
- {PERS_ORG_USER_FOLDER_NAME_"1/gr20_Setting/DEF",
- PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/gr20_Setting/DEF::user1", sizeof("Data>>/gr20_Setting/DEF::user1")},
- {PERS_ORG_USER_FOLDER_NAME_"2/gr20_Setting/DEF",
- PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/gr20_Setting/DEF::user2", sizeof("Data>>/gr20_Setting/DEF::user2")},
- {PERS_ORG_USER_FOLDER_NAME_"3/gr20_Setting/DEF",
- PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/gr20_Setting/DEF::user3", sizeof("Data>>/gr20_Setting/DEF::user3")},
- {PERS_ORG_USER_FOLDER_NAME_"4/gr20_Setting/DEF",
- PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
- "Data>>/gr20_Setting/DEF::user4", sizeof("Data>>/gr20_Setting/DEF::user4")}
-};
-expected_file_data_s expectedFileData_group_20[10] =
-{
-/* pre-installed */
- {PERS_ORG_SHARED_GROUP_WT_PATH_"20" PERS_ORG_NODE_FOLDER_NAME_"/doc1.txt", true, "File>>gr20_>>/doc1.txt", sizeof("File>>gr20_>>/doc1.txt")},
- {PERS_ORG_SHARED_GROUP_WT_PATH_"20" PERS_ORG_NODE_FOLDER_NAME_"/Docs/doc2.txt", true, "File>>gr20_>>/Docs/doc2.txt", sizeof("File>>gr20_>>/Docs/doc2.txt")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"1/docA.txt", true, "File>>gr20_>>/docA.txt::user1", sizeof("File>>gr20_>>/docA.txt::user1")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"2/docA.txt", true, "File>>gr20_>>/docA.txt::user2", sizeof("File>>gr20_>>/docA.txt::user2")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"3/docA.txt", true, "File>>gr20_>>/docA.txt::user3", sizeof("File>>gr20_>>/docA.txt::user3")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"4/docA.txt", true, "File>>gr20_>>/docA.txt::user4", sizeof("File>>gr20_>>/docA.txt::user4")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/Docs/docB.txt", true, "File>>gr20_>>/docB.txt::user2:seat1", sizeof("File>>gr20_>>/docB.txt::user2:seat1")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/Docs/docB.txt", true, "File>>gr20_>>/docB.txt::user2:seat2", sizeof("File>>gr20_>>/docB.txt::user2:seat2")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/Docs/docB.txt", true, "File>>gr20_>>/docB.txt::user2:seat3", sizeof("File>>gr20_>>/docB.txt::user2:seat3")},
- {PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/docB.txt", true, "File>>gr20_>>/docB.txt::user2:seat4", sizeof("File>>gr20_>>/docB.txt::user2:seat4")}
-};
-
-/**********************************************************************************************************************************************
- *********************************************** Expected - group/30 *****************************************************************************
- *********************************************************************************************************************************************/
-/* Group 30 - new install based exclusively on configuration input (json fles) */
-expected_key_data_RCT_s expected_RCT_group_30[6] =
-{
- {"gr30_SettingA", PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group30"},{NIL},{NIL}}},
- {"gr30_SettingB", PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group30"},{NIL},{NIL}}},
- {"gr30_SettingC", PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group30"},{NIL},{NIL}}},
- {"gr30_SettingD", PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group30"},{NIL},{NIL}}},
- {"gr30_1.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group30"},{NIL},{NIL}}},
- {"gr30_2.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group30"},{NIL},{NIL}}},
-} ;
-
-expected_key_data_localDB_s expectedKeyData_group_30[8] =
-{
-/* factory-default data : installed via configuration input */
- {"gr30_SettingA",
- PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
- "gr30_SettingA : FactoryDefault : orig", sizeof("gr30_SettingA : FactoryDefault : orig")},
- {"gr30_SettingB",
- PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
- "gr30_SettingB : FactoryDefault : orig", sizeof("gr30_SettingB : FactoryDefault : orig")},
- {"gr30_SettingC",
- PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
- "gr30_SettingC : FactoryDefault : orig", sizeof("gr30_SettingC : FactoryDefault : orig")},
- {"gr30_SettingD",
- PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
- "gr30_SettingD : FactoryDefault : orig", sizeof("gr30_SettingD : FactoryDefault : orig")},
-/* configurable-default data : installed via configuration input */
- {"gr30_SettingA",
- PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
- "gr30_SettingA : ConfigurableDefault : orig", sizeof("gr30_SettingA : ConfigurableDefault : orig")},
- {"gr30_SettingB",
- PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
- "gr30_SettingB : ConfigurableDefault : orig", sizeof("gr30_SettingB : ConfigurableDefault : orig")},
- {"gr30_SettingC",
- PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
- "gr30_SettingC : ConfigurableDefault : orig", sizeof("gr30_SettingC : ConfigurableDefault : orig")},
- {"gr30_SettingD",
- PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
- "gr30_SettingD : ConfigurableDefault : orig", sizeof("gr30_SettingD : ConfigurableDefault : orig")},
-};
-
-expected_file_data_s expectedFileData_group_30[4] =
-{
-/* factory-default data : installed via configuration input */
- {PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/gr30_1.txt", true,
- "File>>gr30_>>/gr30_1.txt factory-default : orig", sizeof("File>>gr30_>>/gr30_1.txt factory-default : orig")},
- {PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/gr30_2.txt", true,
- "File>>gr30_>>/gr30_2.txt factory-default : orig", sizeof("File>>gr30_>>/gr30_2.txt factory-default : orig")},
-/* configurable-default data : installed via configuration input */
- {PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/gr30_1.txt", true,
- "File>>gr30_>>/gr30_1.txt configurable-default : orig", sizeof("File>>gr30_>>/gr30_1.txt configurable-default : orig")},
- {PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/gr30_2.txt", true,
- "File>>gr30_>>/gr30_2.txt configurable-default : orig", sizeof("File>>gr30_>>/gr30_2.txt configurable-default : orig")},
-};
-
-/**********************************************************************************************************************************************
- *********************************************** Expected - App30 First Phase *****************************************************************
- *********************************************************************************************************************************************/
-/* Group 30 - new install based exclusively on configuration input (json fles) */
-expected_key_data_RCT_s expected_RCT_App30_Phase_1[6] =
-{
- {"App30_SettingA", PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App30"},{NIL},{NIL}}},
- {"App30_SettingB", PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App30"},{NIL},{NIL}}},
- {"App30_SettingC", PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App30"},{NIL},{NIL}}},
- {"App30_SettingD", PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App30"},{NIL},{NIL}}},
- {"App30_1.txt", PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App30"},{NIL},{NIL}}},
- {"App30_2.txt", PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App30"},{NIL},{NIL}}},
-} ;
-
-expected_key_data_localDB_s expectedKeyData_App30_Phase_1[8] =
-{
-/* factory-default data : installed via configuration input */
- {"App30_SettingA",
- PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
- "App30_SettingA : FactoryDefault : orig", sizeof("App30_SettingA : FactoryDefault : orig")},
- {"App30_SettingB",
- PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
- "App30_SettingB : FactoryDefault : orig", sizeof("App30_SettingB : FactoryDefault : orig")},
- {"App30_SettingC",
- PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
- "App30_SettingC : FactoryDefault : orig", sizeof("App30_SettingC : FactoryDefault : orig")},
- {"App30_SettingD",
- PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
- "App30_SettingD : FactoryDefault : orig", sizeof("App30_SettingD : FactoryDefault : orig")},
-/* configurable-default data : installed via configuration input */
- {"App30_SettingA",
- PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
- "App30_SettingA : ConfigurableDefault : orig", sizeof("App30_SettingA : ConfigurableDefault : orig")},
- {"App30_SettingB",
- PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
- "App30_SettingB : ConfigurableDefault : orig", sizeof("App30_SettingB : ConfigurableDefault : orig")},
- {"App30_SettingC",
- PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
- "App30_SettingC : ConfigurableDefault : orig", sizeof("App30_SettingC : ConfigurableDefault : orig")},
- {"App30_SettingD",
- PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
- "App30_SettingD : ConfigurableDefault : orig", sizeof("App30_SettingD : ConfigurableDefault : orig")},
-};
-
-expected_file_data_s expectedFileData_App30_Phase_1[4] =
-{
-/* factory-default data : installed via configuration input */
- {PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/App30_1.txt", true,
- "File>>App30_>>/App30_1.txt factory-default : orig", sizeof("File>>App30_>>/App30_1.txt factory-default : orig")},
- {PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/App30_2.txt", true,
- "File>>App30_>>/App30_2.txt factory-default : orig", sizeof("File>>App30_>>/App30_2.txt factory-default : orig")},
-/* configurable-default data : installed via configuration input */
- {PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/App30_1.txt", true,
- "File>>App30_>>/App30_1.txt configurable-default : orig", sizeof("File>>App30_>>/App30_1.txt configurable-default : orig")},
- {PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/App30_2.txt", true,
- "File>>App30_>>/App30_2.txt configurable-default : orig", sizeof("File>>App30_>>/App30_2.txt configurable-default : orig")},
-};
-
-
-/***********************************************************************************************************************/
-expected_key_data_RCT_s expectedKeyData_RCT_resConfAdd_1[17] =
-{
- {"App1_SettingA", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
- {"App1_SettingB", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
- {"App1_SettingC", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
- {"App1_Setting/ABC", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
- {"App1_SettingD", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
- {"App1_SettingE", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
- /* no longer available in the new RCT */
- {"App1_SettingF", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, false, {PersistencePolicy_wc, PersistenceStorage_local, File_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
- {"App1_Setting/DEF", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
- {"doc1.txt", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
- {"Docs/doc2.txt", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
- {"docA.txt", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
- /* no longer available in the new RCT */
- {"Docs/docB.txt", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, false, {PersistencePolicy_wc, PersistenceStorage_local, File_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
- {"App1_NewSetting1", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
- {"App1_NewSetting2", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
- {"App1_NewSettingA", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
- {"App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
- {"App1_NewSettingC", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}}
-};
-
-expected_key_data_localDB_s expectedKeyData_localDB_resConfAdd_1[41] =
-{
- {"App1_SettingA", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DEFAULT_DB_NAME_, true, "Data>>/App1_SettingA::DEFAULT", sizeof("Data>>/App1_SettingA::DEFAULT")},
- {"App1_SettingB", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DEFAULT_DB_NAME_, true, "Data>>/App1_SettingB::DEFAULT", sizeof("Data>>/App1_SettingB::DEFAULT")},
- {"App1_SettingB", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DEFAULT_DB_NAME_, false, "Data>>/App1_SettingB::DEFAULT", sizeof("Data>>/App1_SettingB::DEFAULT")},
- {"App1_SettingF", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DEFAULT_DB_NAME_, false, NIL, 0},
-
-
- {"App1_NewSetting1", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DEFAULT_DB_NAME_, true, "Data>>/App1_NewSetting1::DEFAULT", sizeof("Data>>/App1_NewSetting1::DEFAULT")},
- { PERS_ORG_USER_FOLDER_NAME_"1/App1_NewSetting1", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_NewSetting1::user1", sizeof("Data>>/App1_NewSetting1::user1")},
- { PERS_ORG_USER_FOLDER_NAME_"2/App1_NewSetting1", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_NewSetting1::user2", sizeof("Data>>/App1_NewSetting1::user2")},
-
-
- {"App1_NewSetting2", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DEFAULT_DB_NAME_, true, "Data>>/App1_NewSetting2::DEFAULT", sizeof("Data>>/App1_NewSetting2::DEFAULT")},
- { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/App1_NewSetting2", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_NewSetting2::user2::seat1", sizeof("Data>>/App1_NewSetting2::user2::seat1")},
- { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_NewSetting2", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_NewSetting2::user2::seat2", sizeof("Data>>/App1_NewSetting2::user2::seat2")},
-
-
- {"App1_NewSettingA", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DEFAULT_DB_NAME_, true, "Data>>/App1_NewSettingA::DEFAULT", sizeof("Data>>/App1_NewSettingA::DEFAULT")},
- { PERS_ORG_NODE_FOLDER_NAME_"/App1_NewSettingA", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_NewSettingA::node", sizeof("Data>>/App1_NewSettingA::node")},
-
-
- {"App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DEFAULT_DB_NAME_, true, "Data>>/App1_NewSettingB/BAU::DEFAULT", sizeof("Data>>/App1_NewSettingB/BAU::DEFAULT")},
- { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DEFAULT_DB_NAME_, false, NIL, 0},
- { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_NewSettingB/BAU::user2::seat3", sizeof("Data>>/App1_NewSettingB/BAU::user2::seat3")},
- { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DEFAULT_DB_NAME_, false, NIL, 0},
- { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, false, NIL, 0},
- { PERS_ORG_USER_FOLDER_NAME_"1"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DEFAULT_DB_NAME_, false, NIL, 0},
- { PERS_ORG_USER_FOLDER_NAME_"1"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_NewSettingB/BAU::user1::seat2", sizeof("Data>>/App1_NewSettingB/BAU::user1::seat2")},
- { PERS_ORG_USER_FOLDER_NAME_"1"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DEFAULT_DB_NAME_, false, NIL, 0},
- { PERS_ORG_USER_FOLDER_NAME_"1"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, false, NIL, 0},
-
-
-
- { PERS_ORG_NODE_FOLDER_NAME_"/App1_SettingA", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_SettingA", sizeof("Data>>/App1_SettingA")},
- /* policy changed for App1_SettingB */
- { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/App1_SettingB", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, false, NIL, 0},
- { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/App1_SettingB", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_SettingB::user2::seat1", sizeof("Data>>/App1_SettingB::user2::seat1")},
- { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_SettingB", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, false, NIL, 0},
- { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_SettingB", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_SettingB::user2:seat2", sizeof("Data>>/App1_SettingB::user2:seat2")},
-
- { PERS_ORG_NODE_FOLDER_NAME_"/App1_SettingC", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_SettingC", sizeof("Data>>/App1_SettingC")},
- { PERS_ORG_USER_FOLDER_NAME_"1/App1_Setting/ABC", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_Setting/ABC::user1", sizeof("Data>>/App1_Setting/ABC::user1")},
- { PERS_ORG_USER_FOLDER_NAME_"2/App1_Setting/ABC", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_Setting/ABC::user2", sizeof("Data>>/App1_Setting/ABC::user2")},
- { PERS_ORG_USER_FOLDER_NAME_"3/App1_Setting/ABC", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_Setting/ABC::user3", sizeof("Data>>/App1_Setting/ABC::user3")},
- { PERS_ORG_USER_FOLDER_NAME_"4/App1_Setting/ABC", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_Setting/ABC::user4", sizeof("Data>>/App1_Setting/ABC::user4")},
- { PERS_ORG_NODE_FOLDER_NAME_"/App1_SettingD", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_SettingD", sizeof("Data>>/App1_SettingD")},
- { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/App1_SettingE", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_SettingE::user2:seat1", sizeof("Data>>/App1_SettingE::user2:seat1")},
- { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_SettingE", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_SettingE::user2:seat2", sizeof("Data>>/App1_SettingE::user2:seat2")},
- /* no longer available in the new RCT */
- { PERS_ORG_NODE_FOLDER_NAME_"/App1_SettingF", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, false, NIL, 0},
- { PERS_ORG_USER_FOLDER_NAME_"1/App1_Setting/DEF", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_Setting/DEF::user1", sizeof("Data>>/App1_Setting/DEF::user1")},
- { PERS_ORG_USER_FOLDER_NAME_"2/App1_Setting/DEF", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_Setting/DEF::user2", sizeof("Data>>/App1_Setting/DEF::user2")},
- { PERS_ORG_USER_FOLDER_NAME_"3/App1_Setting/DEF", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_Setting/DEF::user3", sizeof("Data>>/App1_Setting/DEF::user3")},
- { PERS_ORG_USER_FOLDER_NAME_"4/App1_Setting/DEF", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_Setting/DEF::user4", sizeof("Data>>/App1_Setting/DEF::user4")},
- { PERS_ORG_NODE_FOLDER_NAME_"/App1_NewSettingC", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, false, NIL, 0},
- { PERS_ORG_NODE_FOLDER_NAME_"/App1_NewSettingC", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DEFAULT_DB_NAME_, false, NIL, 0}
-};
-
-
-expected_file_data_s expectedKeyData_files_resConfAdd_1[16] =
-{
- { PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/doc1.txt", true, "File>>App1>>NewData>>/doc1.txt::CONFIGURABLE-DEFAULT", sizeof("File>>App1>>NewData>>/doc1.txt::CONFIGURABLE-DEFAULT")},
- { PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/doc1.txt", true, "File>>App1>>NewData>>/doc1.txt::DEFAULT", sizeof("File>>App1>>NewData>>/doc1.txt::DEFAULT")},
- { PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/Docs/doc2.txt", true, "File>>App1>>NewData>>/Docs/doc2.txt::DEFAULT", sizeof("File>>App1>>NewData>>/Docs/doc2.txt::DEFAULT")},
- { PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/docA.txt", true, "File>>App1>>NewData>>/docA.txt::DEFAULT", sizeof("File>>App1>>NewData>>/docA.txt::DEFAULT")},
- /* no longer available in the new RCT */
- { PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/Docs/docB.txt", false,NIL, 0},
-
-
- { PERS_ORG_LOCAL_APP_WT_PATH_"App1" PERS_ORG_NODE_FOLDER_NAME_"/doc1.txt", true, "File>>App1>>NewData>>/doc1.txt", sizeof("File>>App1>>NewData>>/doc1.txt")},
- { PERS_ORG_LOCAL_APP_WT_PATH_"App1" PERS_ORG_NODE_FOLDER_NAME_"/Docs/doc2.txt", true, "File>>App1>>NewData>>/Docs/doc2.txt", sizeof("File>>App1>>NewData>>/Docs/doc2.txt")},
- { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"1/docA.txt", true, "File>>App1>>NewData>>/docA.txt::user1", sizeof("File>>App1>>NewData>>/docA.txt::user1")},
- { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"2/docA.txt", true, "File>>App1>>/docA.txt::user2", sizeof("File>>App1>>/docA.txt::user2")},
- { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"3/docA.txt", true, "File>>App1>>NewData>>/docA.txt::user3", sizeof("File>>App1>>NewData>>/docA.txt::user3")},
- { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"4/docA.txt", true, "File>>App1>>/docA.txt::user4", sizeof("File>>App1>>/docA.txt::user4")},
-
- { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/Docs/docB.txt", false,NIL, 0},
- { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/Docs/docB.txt", false,NIL, 0},
- { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/Docs/docB.txt", false,NIL, 0},
- { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/Docs/docB.txt", false,NIL, 0},
- { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/docB.txt", false,NIL, 0}
-} ;
-
-bool_t Test_ResourceConfigAdd_1(int ceva, void* pAltceva)
-{
- bool_t bEverythingOK = true ;
-
- if(bEverythingOK)
- {
- long result = persAdminResourceConfigAdd(RESOURCE_ARCHIVE_PATHNAME_1) ;
- sprintf(g_msg, "Test_ResourceConfigAdd_1: persAdminResourceConfigAdd(%s) returned %ld", RESOURCE_ARCHIVE_PATHNAME_1, result) ;
- DLT_LOG(persAdminSvcDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- }
-
- return bEverythingOK ;
-}
-
-bool_t Test_ResourceConfigAdd_2(int ceva, void* pAltceva)
-{
- bool_t bEverythingOK = true ;
-
- if(bEverythingOK)
- {
- long result = persAdminResourceConfigAdd(RESOURCE_ARCHIVE_PATHNAME_2) ;
- sprintf(g_msg, "Test_ResourceConfigAdd_1: persAdminResourceConfigAdd(%s) returned %ld", RESOURCE_ARCHIVE_PATHNAME_2, result) ;
- DLT_LOG(persAdminSvcDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- }
-
- return bEverythingOK ;
-}
-
+/********************************************************************************************************************* * * Copyright (C) 2012 Continental Automotive Systems, Inc. * * Author: Petrica.Manoila@continental-corporation.com * * Implementation of backup process * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * Date Author Reason * 2012.11.27 uidu0250 CSP_WZ#1280: Initial version * **********************************************************************************************************************/ #include "persComTypes.h"
+#include "stdio.h"
+#include "string.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <unistd.h>
+#include <dirent.h>
+
+#include "dlt/dlt.h"
+
+#include "persistence_admin_service.h"
+#include "test_PAS.h"
+#include "test_pas_resource_config_add.h"
+
+#include "persComDbAccess.h"
+
+#define File_t PersistenceResourceType_file
+#define Key_t PersistenceResourceType_key
+
+/* L&T context */
+#define LT_HDR "TEST_PAS_CONF >> "
+DLT_IMPORT_CONTEXT (persAdminSvcDLTCtx)
+static char g_msg[512] ;
+
+
+#define RESOURCE_PATH "/tmp/var/resourceConfig"
+#define RESOURCE_PATH_ RESOURCE_PATH"/"
+
+#define RESOURCE_ARCHIVE_PATHNAME_1 "/tmp/PAS/resource1.tar.gz"
+#define RESOURCE_ARCHIVE_PATHNAME_2 "/tmp/PAS/resource2.tar.gz"
+
+/**********************************************************************************************************************************************
+ *********************************************** Expected - public *****************************************************************************
+ *********************************************************************************************************************************************/
+expected_key_data_RCT_s expected_RCT_public[13] =
+{
+ //pubSettingA changed policy (wt -> wc)
+ {"pubSettingA", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSettingB", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSettingC", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSettingD", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ //pubSettingE changed policy (wc -> wt)
+ {"pubSettingE", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ //pubSettingF removed
+ {"pubSettingF", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, false, {PersistencePolicy_wc, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ //new_pubSetting_1 added
+ {"new_pubSetting_1", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"doc1.txt", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_shared,File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"Docs/doc2.txt", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_shared,File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"docA.txt", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_shared,File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"Docs/docB.txt", PERS_ORG_SHARED_PUBLIC_CACHE_PATH"/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_shared,File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}}
+} ;
+
+/* data after phase 1 */
+expected_key_data_localDB_s expectedKeyData_public[29] =
+{
+ //pubSettingA changed policy (wt -> wc)
+ {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, false,
+ "Data>>/pubSettingA", sizeof("Data>>/pubSettingA")},
+ {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/pubSettingA", sizeof("Data>>/pubSettingA")},
+ {"pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME, true,
+ "FactoryDefault : pubSettingA : orig", sizeof("FactoryDefault : pubSettingA : orig")},
+ {"pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME, true,
+ "ConfigurableDefault : pubSettingA : orig", sizeof("ConfigurableDefault : pubSettingA : orig")},
+
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/pubSettingB::user2::seat1", sizeof("Data>>/pubSettingB::user2::seat1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/pubSettingB::user2:seat2", sizeof("Data>>/pubSettingB::user2:seat2")},
+ //added factory default value in config file
+ {"pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME, true,
+ "FactoryDefault : pubSettingB : new", sizeof("FactoryDefault : pubSettingB : new")},
+
+ {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/pubSettingC", sizeof("Data>>/pubSettingC")},
+
+ {PERS_ORG_USER_FOLDER_NAME_"1/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/pubSetting/ABC::user1", sizeof("Data>>/pubSetting/ABC::user1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/pubSetting/ABC::user2", sizeof("Data>>/pubSetting/ABC::user2")},
+ {PERS_ORG_USER_FOLDER_NAME_"3/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/pubSetting/ABC::user3", sizeof("Data>>/pubSetting/ABC::user3")},
+ {PERS_ORG_USER_FOLDER_NAME_"4/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/pubSetting/ABC::user4", sizeof("Data>>/pubSetting/ABC::user4")},
+ {"pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME, true,
+ "FactoryDefault : pubSetting/ABC : orig", sizeof("FactoryDefault : pubSetting/ABC : orig")},
+ #if 0 //configurable-default values changed by config file
+ {"pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME, true,
+ "ConfigurableDefault : pubSetting/ABC : orig", sizeof("ConfigurableDefault : pubSetting/ABC : orig")},
+ #endif
+ {"pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME, true,
+ "ConfigurableDefault : pubSetting/ABC : new", sizeof("ConfigurableDefault : pubSetting/ABC : new")},
+
+ {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/pubSettingD", sizeof("Data>>/pubSettingD")},
+ #if 0 //factory-default value changed by config file
+ {"pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME, true,
+ "FactoryDefault : pubSettingD : orig", sizeof("FactoryDefault : pubSettingD : orig")},
+ #endif
+ {"pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME, true,
+ "FactoryDefault : pubSettingD : new", sizeof("FactoryDefault : pubSettingD : new")},
+ //configurable-default value added by config file
+ {"pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME, true,
+ "ConfigurableDefault : pubSettingD : new", sizeof("ConfigurableDefault : pubSettingD : new")},
+
+ //pubSettingE changed policy (wc -> wt)
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/pubSettingE::user2:seat1", sizeof("Data>>/pubSettingE::user2:seat1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, false,
+ "Data>>/pubSettingE::user2:seat1", sizeof("Data>>/pubSettingE::user2:seat1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/pubSettingE::user2:seat2", sizeof("Data>>/pubSettingE::user2:seat2")},
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, false,
+ "Data>>/pubSettingE::user2:seat2", sizeof("Data>>/pubSettingE::user2:seat2")},
+
+ //pubSettingF removed
+ {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_, false,
+ "Data>>/pubSettingF", sizeof("Data>>/pubSettingF")},
+ {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, false,
+ "Data>>/pubSettingF", sizeof("Data>>/pubSettingF")},
+
+ {PERS_ORG_USER_FOLDER_NAME_"1/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/pubSetting/DEF::user1", sizeof("Data>>/pubSetting/DEF::user1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/pubSetting/DEF::user2", sizeof("Data>>/pubSetting/DEF::user2")},
+ {PERS_ORG_USER_FOLDER_NAME_"3/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/pubSetting/DEF::user3", sizeof("Data>>/pubSetting/DEF::user3")},
+ {PERS_ORG_USER_FOLDER_NAME_"4/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/pubSetting/DEF::user4", sizeof("Data>>/pubSetting/DEF::user4")},
+
+ //new_pubSetting_1 - added factory-default value in config file
+ {"new_pubSetting_1", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME, true,
+ "FactoryDefault : new_pubSetting_1 : new", sizeof("FactoryDefault : new_pubSetting_1 : new")},
+ //new_pubSetting_1 - added configurable-default value in config file
+ {"new_pubSetting_1", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME, true,
+ "ConfigurableDefault : new_pubSetting_1 : new", sizeof("ConfigurableDefault : new_pubSetting_1 : new")}
+} ;
+
+
+/* data after phase 2 - uninstall non-default data (pubSettingB excepted) */
+expected_key_data_localDB_s expectedKeyData_public_phase2[29] =
+{
+ {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
+ false, "Data>>/pubSettingA", sizeof("Data>>/pubSettingA")},
+ {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
+ false, "Data>>/pubSettingA", sizeof("Data>>/pubSettingA")},
+ {"pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME,
+ true, "FactoryDefault : pubSettingA : orig", sizeof("FactoryDefault : pubSettingA : orig")},
+ {"pubSettingA", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME,
+ true, "ConfigurableDefault : pubSettingA : orig", sizeof("ConfigurableDefault : pubSettingA : orig")},
+
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
+ true, "Data>>/pubSettingB::user2::seat1", sizeof("Data>>/pubSettingB::user2::seat1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
+ true, "Data>>/pubSettingB::user2:seat2", sizeof("Data>>/pubSettingB::user2:seat2")},
+ {"pubSettingB", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME,
+ true, "FactoryDefault : pubSettingB : new", sizeof("FactoryDefault : pubSettingB : new")},
+
+ {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
+ false, "Data>>/pubSettingC", sizeof("Data>>/pubSettingC")},
+
+ {PERS_ORG_USER_FOLDER_NAME_"1/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
+ false, "Data>>/pubSetting/ABC::user1", sizeof("Data>>/pubSetting/ABC::user1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
+ false, "Data>>/pubSetting/ABC::user2", sizeof("Data>>/pubSetting/ABC::user2")},
+ {PERS_ORG_USER_FOLDER_NAME_"3/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
+ false, "Data>>/pubSetting/ABC::user3", sizeof("Data>>/pubSetting/ABC::user3")},
+ {PERS_ORG_USER_FOLDER_NAME_"4/pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
+ false, "Data>>/pubSetting/ABC::user4", sizeof("Data>>/pubSetting/ABC::user4")},
+ {"pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME,
+ true, "FactoryDefault : pubSetting/ABC : orig", sizeof("FactoryDefault : pubSetting/ABC : orig")},
+
+ {"pubSetting/ABC", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME,
+ true, "ConfigurableDefault : pubSetting/ABC : new", sizeof("ConfigurableDefault : pubSetting/ABC : new")},
+
+ {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
+ false, "Data>>/pubSettingD", sizeof("Data>>/pubSettingD")},
+
+ {"pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME,
+ true, "FactoryDefault : pubSettingD : new", sizeof("FactoryDefault : pubSettingD : new")},
+ {"pubSettingD", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME,
+ true, "ConfigurableDefault : pubSettingD : new", sizeof("ConfigurableDefault : pubSettingD : new")},
+
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
+ false, "Data>>/pubSettingE::user2:seat1", sizeof("Data>>/pubSettingE::user2:seat1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
+ false, "Data>>/pubSettingE::user2:seat1", sizeof("Data>>/pubSettingE::user2:seat1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
+ false, "Data>>/pubSettingE::user2:seat2", sizeof("Data>>/pubSettingE::user2:seat2")},
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingE", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
+ false, "Data>>/pubSettingE::user2:seat2", sizeof("Data>>/pubSettingE::user2:seat2")},
+
+ {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_WT_DB_NAME_,
+ false, "Data>>/pubSettingF", sizeof("Data>>/pubSettingF")},
+ {PERS_ORG_NODE_FOLDER_NAME_"/pubSettingF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
+ false, "Data>>/pubSettingF", sizeof("Data>>/pubSettingF")},
+
+ {PERS_ORG_USER_FOLDER_NAME_"1/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
+ false, "Data>>/pubSetting/DEF::user1", sizeof("Data>>/pubSetting/DEF::user1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
+ false, "Data>>/pubSetting/DEF::user2", sizeof("Data>>/pubSetting/DEF::user2")},
+ {PERS_ORG_USER_FOLDER_NAME_"3/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
+ false, "Data>>/pubSetting/DEF::user3", sizeof("Data>>/pubSetting/DEF::user3")},
+ {PERS_ORG_USER_FOLDER_NAME_"4/pubSetting/DEF", PERS_ORG_SHARED_PUBLIC_WT_PATH""PERS_ORG_LOCAL_CACHE_DB_NAME_,
+ false, "Data>>/pubSetting/DEF::user4", sizeof("Data>>/pubSetting/DEF::user4")},
+
+ {"new_pubSetting_1", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME,
+ true, "FactoryDefault : new_pubSetting_1 : new", sizeof("FactoryDefault : new_pubSetting_1 : new")},
+ {"new_pubSetting_1", PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME,
+ true, "ConfigurableDefault : new_pubSetting_1 : new", sizeof("ConfigurableDefault : new_pubSetting_1 : new")}
+};
+
+expected_file_data_s expectedFileData_public[18] =
+{
+/* factory-default - installed via config */
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_DEFAULT_DATA_FOLDER_NAME"/""doc1.txt", true, "File>>/doc1.txt factory-default", sizeof("File>>/doc1.txt factory-default")-1},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_DEFAULT_DATA_FOLDER_NAME"/""docA.txt", true, "File>>/docA.txt factory-default", sizeof("File>>/docA.txt factory-default")-1},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_DEFAULT_DATA_FOLDER_NAME"/""Docs/doc2.txt", true, "File>>/Docs/doc2.txt factory-default", sizeof("File>>/Docs/doc2.txt factory-default")-1},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_DEFAULT_DATA_FOLDER_NAME"/""Docs/docB.txt", true, "File>>/Docs/docB.txt factory-default", sizeof("File>>/Docs/docB.txt factory-default")-1},
+/* configurable-default - installed via config */
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME"/""doc1.txt", true, "File>>/doc1.txt configurable-default", sizeof("File>>/doc1.txt configurable-default")-1},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME"/""docA.txt", true, "File>>/docA.txt configurable-default", sizeof("File>>/docA.txt configurable-default")-1},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME"/""Docs/doc2.txt", true, "File>>/Docs/doc2.txt configurable-default", sizeof("File>>/Docs/doc2.txt configurable-default")-1},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME"/""Docs/docB.txt", true, "File>>/Docs/docB.txt configurable-default", sizeof("File>>/Docs/docB.txt configurable-default")-1},
+/* non-default - pre-installed */
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_NODE_FOLDER_NAME"/""doc1.txt", true, "File>>/doc1.txt", sizeof("File>>/doc1.txt")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_NODE_FOLDER_NAME"/""Docs/doc2.txt", true, "File>>/Docs/doc2.txt", sizeof("File>>/Docs/doc2.txt")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/1/docA.txt", true, "File>>/docA.txt::user1", sizeof("File>>/docA.txt::user1")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2/docA.txt", true, "File>>/docA.txt::user2", sizeof("File>>/docA.txt::user2")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/3/docA.txt", true, "File>>/docA.txt::user3", sizeof("File>>/docA.txt::user3")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/4/docA.txt", true, "File>>/docA.txt::user4", sizeof("File>>/docA.txt::user4")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"1/Docs/docB.txt", true, "File>>/docB.txt::user2:seat1", sizeof("File>>/docB.txt::user2:seat1")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"2/Docs/docB.txt", true, "File>>/docB.txt::user2:seat2", sizeof("File>>/docB.txt::user2:seat2")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"3/Docs/docB.txt", true, "File>>/docB.txt::user2:seat3", sizeof("File>>/docB.txt::user2:seat3")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/docB.txt", true, "File>>/docB.txt::user2:seat4", sizeof("File>>/docB.txt::user2:seat4")}
+};
+
+/* data after phase 2 - uninstall non-default data (docA.txt excepted) */
+expected_file_data_s expectedFileData_public_phase2[18] =
+{
+/* factory-default - installed via config */
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_DEFAULT_DATA_FOLDER_NAME"/""doc1.txt", true, "File>>/doc1.txt factory-default", sizeof("File>>/doc1.txt factory-default")-1},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_DEFAULT_DATA_FOLDER_NAME"/""docA.txt", true, "File>>/docA.txt factory-default", sizeof("File>>/docA.txt factory-default")-1},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_DEFAULT_DATA_FOLDER_NAME"/""Docs/doc2.txt", true, "File>>/Docs/doc2.txt factory-default", sizeof("File>>/Docs/doc2.txt factory-default")-1},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_DEFAULT_DATA_FOLDER_NAME"/""Docs/docB.txt", true, "File>>/Docs/docB.txt factory-default", sizeof("File>>/Docs/docB.txt factory-default")-1},
+/* configurable-default - installed via config */
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME"/""doc1.txt", true, "File>>/doc1.txt configurable-default", sizeof("File>>/doc1.txt configurable-default")-1},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME"/""docA.txt", true, "File>>/docA.txt configurable-default", sizeof("File>>/docA.txt configurable-default")-1},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME"/""Docs/doc2.txt", true, "File>>/Docs/doc2.txt configurable-default", sizeof("File>>/Docs/doc2.txt configurable-default")-1},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME"/""Docs/docB.txt", true, "File>>/Docs/docB.txt configurable-default", sizeof("File>>/Docs/docB.txt configurable-default")-1},
+/* non-default - pre-installed */
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_NODE_FOLDER_NAME"/""doc1.txt", false,"File>>/doc1.txt", sizeof("File>>/doc1.txt")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_NODE_FOLDER_NAME"/""Docs/doc2.txt", false,"File>>/Docs/doc2.txt", sizeof("File>>/Docs/doc2.txt")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/1/docA.txt", true, "File>>/docA.txt::user1", sizeof("File>>/docA.txt::user1")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2/docA.txt", true, "File>>/docA.txt::user2", sizeof("File>>/docA.txt::user2")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/3/docA.txt", true, "File>>/docA.txt::user3", sizeof("File>>/docA.txt::user3")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/4/docA.txt", true, "File>>/docA.txt::user4", sizeof("File>>/docA.txt::user4")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"1/Docs/docB.txt", false,"File>>/docB.txt::user2:seat1", sizeof("File>>/docB.txt::user2:seat1")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"2/Docs/docB.txt", false,"File>>/docB.txt::user2:seat2", sizeof("File>>/docB.txt::user2:seat2")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"3/Docs/docB.txt", false,"File>>/docB.txt::user2:seat3", sizeof("File>>/docB.txt::user2:seat3")},
+ {PERS_ORG_SHARED_PUBLIC_WT_PATH"/"PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/docB.txt", false,"File>>/docB.txt::user2:seat4", sizeof("File>>/docB.txt::user2:seat4")}
+};
+
+/**********************************************************************************************************************************************
+ *********************************************** Expected - group/10 *****************************************************************************
+ *********************************************************************************************************************************************/
+expected_key_data_RCT_s expected_RCT_group_10[12] =
+{
+ {"gr10_SettingA", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
+ {"gr10_SettingB", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
+ {"gr10_SettingC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
+ {"gr10_Setting/ABC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
+ {"gr10_SettingD", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
+ {"gr10_SettingE", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
+ {"gr10_SettingF", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
+ {"gr10_Setting/DEF", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
+ {"gr10_1.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
+ {"Docs/gr10_A.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
+ {"gr10_2.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}},
+ {"Docs/gr10_B.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"}, {NIL},{NIL}}}
+} ;
+
+expected_key_data_localDB_s expectedKeyData_group_10[24] =
+{
+/* non-default data : pre-installed */
+ {PERS_ORG_NODE_FOLDER_NAME_"/gr10_SettingA", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/gr10_SettingA", sizeof("Data>>/gr10_SettingA")},
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/gr10_SettingB", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/gr10_SettingB::user2::seat1", sizeof("Data>>/gr10_SettingB::user2::seat1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/gr10_SettingB", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/gr10_SettingB::user2:seat2", sizeof("Data>>/gr10_SettingB::user2:seat2")},
+ //no longer in - deleted by installException
+ {PERS_ORG_NODE_FOLDER_NAME_"/gr10_SettingC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_WT_DB_NAME_, false,
+ "Data>>/gr10_SettingC", sizeof("Data>>/gr10_SettingC")},
+ {PERS_ORG_USER_FOLDER_NAME_"1/gr10_Setting/ABC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/gr10_Setting/ABC::user1", sizeof("Data>>/gr10_Setting/ABC::user1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2/gr10_Setting/ABC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/gr10_Setting/ABC::user2", sizeof("Data>>/gr10_Setting/ABC::user2")},
+ {PERS_ORG_USER_FOLDER_NAME_"3/gr10_Setting/ABC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/gr10_Setting/ABC::user3", sizeof("Data>>/gr10_Setting/ABC::user3")},
+ {PERS_ORG_USER_FOLDER_NAME_"4/gr10_Setting/ABC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/gr10_Setting/ABC::user4", sizeof("Data>>/gr10_Setting/ABC::user4")},
+ {PERS_ORG_NODE_FOLDER_NAME_"/gr10_SettingD", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/gr10_SettingD", sizeof("Data>>/gr10_SettingD")},
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/gr10_SettingE", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/gr10_SettingE::user2:seat1", sizeof("Data>>/gr10_SettingE::user2:seat1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/gr10_SettingE", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/gr10_SettingE::user2:seat2", sizeof("Data>>/gr10_SettingE::user2:seat2")},
+ {PERS_ORG_NODE_FOLDER_NAME_"/gr10_SettingF", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/gr10_SettingF", sizeof("Data>>/gr10_SettingF")},
+ {PERS_ORG_USER_FOLDER_NAME_"1/gr10_Setting/DEF", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/gr10_Setting/DEF::user1", sizeof("Data>>/gr10_Setting/DEF::user1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2/gr10_Setting/DEF", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/gr10_Setting/DEF::user2", sizeof("Data>>/gr10_Setting/DEF::user2")},
+ {PERS_ORG_USER_FOLDER_NAME_"3/gr10_Setting/DEF", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/gr10_Setting/DEF::user3", sizeof("Data>>/gr10_Setting/DEF::user3")},
+ {PERS_ORG_USER_FOLDER_NAME_"4/gr10_Setting/DEF", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/gr10_Setting/DEF::user4", sizeof("Data>>/gr10_Setting/DEF::user4")},
+/* factory-default data : pre-installed */
+ //not updated because factory-default data not available in config file
+ {"gr10_SettingA", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
+ "FactoryDefault : gr10_SettingA : orig", sizeof("FactoryDefault : gr10_SettingA : orig")},
+ {"gr10_SettingB", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
+ "FactoryDefault : gr10_SettingB : orig", sizeof("FactoryDefault : gr10_SettingB : orig")},
+ //deleted by config file
+ {"gr10_SettingC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, false,
+ "FactoryDefault : gr10_SettingC : orig", sizeof("FactoryDefault : gr10_SettingC : orig")},
+ {"gr10_Setting/ABC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
+ "FactoryDefault : gr10_Setting/ABC : orig", sizeof("FactoryDefault : gr10_Setting/ABC : orig")},
+/* configurable-default data : pre-installed */
+ #if 0 //updated by config file
+ {"gr10_SettingA", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
+ "ConfigurableDefault : gr10_SettingA : orig", sizeof("ConfigurableDefault : gr10_SettingA : orig")},
+ #endif
+ {"gr10_SettingA", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
+ "ConfigurableDefault : gr10_SettingA : new", sizeof("ConfigurableDefault : gr10_SettingA : new")},
+ {"gr10_SettingB", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
+ "ConfigurableDefault : gr10_SettingB : orig", sizeof("ConfigurableDefault : gr10_SettingB : orig")},
+ //deleted by config file
+ {"gr10_SettingC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, false,
+ "ConfigurableDefault : gr10_SettingC : orig", sizeof("ConfigurableDefault : gr10_SettingC : orig")},
+ {"gr10_Setting/ABC", PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
+ "ConfigurableDefault : gr10_Setting/ABC : orig", sizeof("ConfigurableDefault : gr10_Setting/ABC : orig")}
+} ;
+
+expected_file_data_s expectedFileData_group_10[18] =
+{
+/* pre-installed */
+ {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_NODE_FOLDER_NAME_"/gr10_1.txt", true, "File>>gr10_>>/gr10_1.txt", sizeof("File>>gr10_>>/gr10_1.txt")},
+ #if 0 //updated by config file
+ {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_NODE_FOLDER_NAME_"/Docs/gr10_A.txt", true, "File>>gr10_>>/Docs/gr10_A.txt", sizeof("File>>gr10_>>/Docs/gr10_A.txt")},
+ #endif
+ {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_NODE_FOLDER_NAME_"/Docs/gr10_A.txt", false,"File>>gr10_>>/Docs/gr10_A.txt", sizeof("File>>gr10_>>/Docs/gr10_A.txt")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"1/gr10_2.txt", true, "File>>gr10_>>/gr10_2.txt::user1", sizeof("File>>gr10_>>/gr10_2.txt::user1")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"2/gr10_2.txt", true, "File>>gr10_>>/gr10_2.txt::user2", sizeof("File>>gr10_>>/gr10_2.txt::user2")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"3/gr10_2.txt", true, "File>>gr10_>>/gr10_2.txt::user3", sizeof("File>>gr10_>>/gr10_2.txt::user3")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"4/gr10_2.txt", true, "File>>gr10_>>/gr10_2.txt::user4", sizeof("File>>gr10_>>/gr10_2.txt::user4")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/Docs/gr10_B.txt", true, "File>>gr10_>>/Docs/gr10_B.txt::user2:seat1", sizeof("File>>gr10_>>/Docs/gr10_B.txt::user2:seat1")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/Docs/gr10_B.txt", true, "File>>gr10_>>/Docs/gr10_B.txt::user2:seat2", sizeof("File>>gr10_>>/Docs/gr10_B.txt::user2:seat2")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/Docs/gr10_B.txt", true, "File>>gr10_>>/Docs/gr10_B.txt::user2:seat3", sizeof("File>>gr10_>>/Docs/gr10_B.txt::user2:seat3")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/gr10_B.txt", true, "File>>gr10_>>/Docs/gr10_B.txt::user2:seat4", sizeof("File>>gr10_>>/Docs/gr10_B.txt::user2:seat4")},
+
+ /* factory-default data */
+ #if 0 //updated by config file
+ {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/gr10_1.txt", true, "File>>gr10_>>/gr10_1.txt factory-default : orig", sizeof("File>>gr10_>>/gr10_1.txt factory-default : orig")},
+ #endif
+ {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/gr10_1.txt", true, "File>>gr10_>>/gr10_1.txt factory-default : new", sizeof("File>>gr10_>>/gr10_1.txt factory-default : new")},
+ //deleted by config file
+ {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/Docs/gr10_A.txt", false, "File>>gr10_>>/Docs/gr10_A.txt factory-default : orig", sizeof("File>>gr10_>>/Docs/gr10_A.txt factory-default : orig")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/gr10_2.txt", true, "File>>gr10_>>/gr10_2.txt factory-default : orig", sizeof("File>>gr10_>>/gr10_2.txt factory-default : orig")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/Docs/gr10_B.txt", true, "File>>gr10_>>/Docs/gr10_B.txt factory-default : orig", sizeof("File>>gr10_>>/Docs/gr10_B.txt factory-default : orig")},
+ /* configurable-default data */
+ #if 0 //updated by config file
+ {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/gr10_1.txt", true, "File>>gr10_>>/gr10_1.txt configurable-default : orig", sizeof("File>>gr10_>>/gr10_1.txt configurable-default : orig")},
+ #endif
+ {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/gr10_1.txt", true, "File>>gr10_>>/gr10_1.txt configurable-default : new", sizeof("File>>gr10_>>/gr10_1.txt configurable-default : new")},
+ //deleted by config file
+ {PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/Docs/gr10_A.txt", false,"File>>gr10_>>/Docs/gr10_A.txt configurable-default : orig", sizeof("File>>gr10_>>/Docs/gr10_A.txt configurable-default : orig")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/gr10_2.txt", true, "File>>gr10_>>/gr10_2.txt configurable-default : orig", sizeof("File>>gr10_>>/gr10_2.txt configurable-default : orig")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/Docs/gr10_B.txt", true, "File>>gr10_>>/Docs/gr10_B.txt configurable-default : orig", sizeof("File>>gr10_>>/Docs/gr10_B.txt configurable-default : orig")},
+
+};
+
+/**********************************************************************************************************************************************
+ *********************************************** Expected - group/20 *****************************************************************************
+ *********************************************************************************************************************************************/
+
+
+expected_key_data_RCT_s expected_RCT_group_20[12] =
+{
+ {"gr20_SettingA", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"gr20_SettingB", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"gr20_SettingC", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"gr20_Setting/ABC", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"gr20_SettingD", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"gr20_SettingE", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"gr20_SettingF", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"gr20_Setting/DEF", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"doc1.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"Docs/doc2.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"docA.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"Docs/docB.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}}
+} ;
+
+expected_key_data_localDB_s expectedKeyData_group_20[16] =
+{
+/* non-default data : pre-installed */
+ {PERS_ORG_NODE_FOLDER_NAME_"/gr20_SettingA",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/gr20_SettingA", sizeof("Data>>/gr20_SettingA")},
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/gr20_SettingB",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/gr20_SettingB::user2::seat1", sizeof("Data>>/gr20_SettingB::user2::seat1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/gr20_SettingB",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/gr20_SettingB::user2:seat2", sizeof("Data>>/gr20_SettingB::user2:seat2")},
+ {PERS_ORG_NODE_FOLDER_NAME_"/gr20_SettingC",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/gr20_SettingC", sizeof("Data>>/gr20_SettingC")},
+ {PERS_ORG_USER_FOLDER_NAME_"1/gr20_Setting/ABC",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/gr20_Setting/ABC::user1", sizeof("Data>>/gr20_Setting/ABC::user1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2/gr20_Setting/ABC",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/gr20_Setting/ABC::user2", sizeof("Data>>/gr20_Setting/ABC::user2")},
+ {PERS_ORG_USER_FOLDER_NAME_"3/gr20_Setting/ABC",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/gr20_Setting/ABC::user3", sizeof("Data>>/gr20_Setting/ABC::user3")},
+ {PERS_ORG_USER_FOLDER_NAME_"4/gr20_Setting/ABC",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"20"PERS_ORG_LOCAL_WT_DB_NAME_, true,
+ "Data>>/gr20_Setting/ABC::user4", sizeof("Data>>/gr20_Setting/ABC::user4")},
+ {PERS_ORG_NODE_FOLDER_NAME_"/gr20_SettingD",
+ PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/gr20_SettingD", sizeof("Data>>/gr20_SettingD")},
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/gr20_SettingE",
+ PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/gr20_SettingE::user2:seat1", sizeof("Data>>/gr20_SettingE::user2:seat1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/gr20_SettingE",
+ PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/gr20_SettingE::user2:seat2", sizeof("Data>>/gr20_SettingE::user2:seat2")},
+ {PERS_ORG_NODE_FOLDER_NAME_"/gr20_SettingF",
+ PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/gr20_SettingF", sizeof("Data>>/gr20_SettingF")},
+ {PERS_ORG_USER_FOLDER_NAME_"1/gr20_Setting/DEF",
+ PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/gr20_Setting/DEF::user1", sizeof("Data>>/gr20_Setting/DEF::user1")},
+ {PERS_ORG_USER_FOLDER_NAME_"2/gr20_Setting/DEF",
+ PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/gr20_Setting/DEF::user2", sizeof("Data>>/gr20_Setting/DEF::user2")},
+ {PERS_ORG_USER_FOLDER_NAME_"3/gr20_Setting/DEF",
+ PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/gr20_Setting/DEF::user3", sizeof("Data>>/gr20_Setting/DEF::user3")},
+ {PERS_ORG_USER_FOLDER_NAME_"4/gr20_Setting/DEF",
+ PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_LOCAL_CACHE_DB_NAME_, true,
+ "Data>>/gr20_Setting/DEF::user4", sizeof("Data>>/gr20_Setting/DEF::user4")}
+};
+expected_file_data_s expectedFileData_group_20[10] =
+{
+/* pre-installed */
+ {PERS_ORG_SHARED_GROUP_WT_PATH_"20" PERS_ORG_NODE_FOLDER_NAME_"/doc1.txt", true, "File>>gr20_>>/doc1.txt", sizeof("File>>gr20_>>/doc1.txt")},
+ {PERS_ORG_SHARED_GROUP_WT_PATH_"20" PERS_ORG_NODE_FOLDER_NAME_"/Docs/doc2.txt", true, "File>>gr20_>>/Docs/doc2.txt", sizeof("File>>gr20_>>/Docs/doc2.txt")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"1/docA.txt", true, "File>>gr20_>>/docA.txt::user1", sizeof("File>>gr20_>>/docA.txt::user1")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"2/docA.txt", true, "File>>gr20_>>/docA.txt::user2", sizeof("File>>gr20_>>/docA.txt::user2")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"3/docA.txt", true, "File>>gr20_>>/docA.txt::user3", sizeof("File>>gr20_>>/docA.txt::user3")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"4/docA.txt", true, "File>>gr20_>>/docA.txt::user4", sizeof("File>>gr20_>>/docA.txt::user4")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/Docs/docB.txt", true, "File>>gr20_>>/docB.txt::user2:seat1", sizeof("File>>gr20_>>/docB.txt::user2:seat1")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/Docs/docB.txt", true, "File>>gr20_>>/docB.txt::user2:seat2", sizeof("File>>gr20_>>/docB.txt::user2:seat2")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/Docs/docB.txt", true, "File>>gr20_>>/docB.txt::user2:seat3", sizeof("File>>gr20_>>/docB.txt::user2:seat3")},
+ {PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/docB.txt", true, "File>>gr20_>>/docB.txt::user2:seat4", sizeof("File>>gr20_>>/docB.txt::user2:seat4")}
+};
+
+/**********************************************************************************************************************************************
+ *********************************************** Expected - group/30 *****************************************************************************
+ *********************************************************************************************************************************************/
+/* Group 30 - new install based exclusively on configuration input (json fles) */
+expected_key_data_RCT_s expected_RCT_group_30[6] =
+{
+ {"gr30_SettingA", PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group30"},{NIL},{NIL}}},
+ {"gr30_SettingB", PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group30"},{NIL},{NIL}}},
+ {"gr30_SettingC", PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group30"},{NIL},{NIL}}},
+ {"gr30_SettingD", PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group30"},{NIL},{NIL}}},
+ {"gr30_1.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group30"},{NIL},{NIL}}},
+ {"gr30_2.txt", PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group30"},{NIL},{NIL}}},
+} ;
+
+expected_key_data_localDB_s expectedKeyData_group_30[8] =
+{
+/* factory-default data : installed via configuration input */
+ {"gr30_SettingA",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
+ "gr30_SettingA : FactoryDefault : orig", sizeof("gr30_SettingA : FactoryDefault : orig")},
+ {"gr30_SettingB",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
+ "gr30_SettingB : FactoryDefault : orig", sizeof("gr30_SettingB : FactoryDefault : orig")},
+ {"gr30_SettingC",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
+ "gr30_SettingC : FactoryDefault : orig", sizeof("gr30_SettingC : FactoryDefault : orig")},
+ {"gr30_SettingD",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
+ "gr30_SettingD : FactoryDefault : orig", sizeof("gr30_SettingD : FactoryDefault : orig")},
+/* configurable-default data : installed via configuration input */
+ {"gr30_SettingA",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
+ "gr30_SettingA : ConfigurableDefault : orig", sizeof("gr30_SettingA : ConfigurableDefault : orig")},
+ {"gr30_SettingB",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
+ "gr30_SettingB : ConfigurableDefault : orig", sizeof("gr30_SettingB : ConfigurableDefault : orig")},
+ {"gr30_SettingC",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
+ "gr30_SettingC : ConfigurableDefault : orig", sizeof("gr30_SettingC : ConfigurableDefault : orig")},
+ {"gr30_SettingD",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
+ "gr30_SettingD : ConfigurableDefault : orig", sizeof("gr30_SettingD : ConfigurableDefault : orig")},
+};
+
+expected_file_data_s expectedFileData_group_30[4] =
+{
+/* factory-default data : installed via configuration input */
+ {PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/gr30_1.txt", true,
+ "File>>gr30_>>/gr30_1.txt factory-default : orig", sizeof("File>>gr30_>>/gr30_1.txt factory-default : orig")},
+ {PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/gr30_2.txt", true,
+ "File>>gr30_>>/gr30_2.txt factory-default : orig", sizeof("File>>gr30_>>/gr30_2.txt factory-default : orig")},
+/* configurable-default data : installed via configuration input */
+ {PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/gr30_1.txt", true,
+ "File>>gr30_>>/gr30_1.txt configurable-default : orig", sizeof("File>>gr30_>>/gr30_1.txt configurable-default : orig")},
+ {PERS_ORG_SHARED_GROUP_WT_PATH_"30"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/gr30_2.txt", true,
+ "File>>gr30_>>/gr30_2.txt configurable-default : orig", sizeof("File>>gr30_>>/gr30_2.txt configurable-default : orig")},
+};
+
+/**********************************************************************************************************************************************
+ *********************************************** Expected - App30 First Phase *****************************************************************
+ *********************************************************************************************************************************************/
+/* Group 30 - new install based exclusively on configuration input (json fles) */
+expected_key_data_RCT_s expected_RCT_App30_Phase_1[6] =
+{
+ {"App30_SettingA", PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App30"},{NIL},{NIL}}},
+ {"App30_SettingB", PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App30"},{NIL},{NIL}}},
+ {"App30_SettingC", PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App30"},{NIL},{NIL}}},
+ {"App30_SettingD", PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App30"},{NIL},{NIL}}},
+ {"App30_1.txt", PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wt, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App30"},{NIL},{NIL}}},
+ {"App30_2.txt", PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_RCT_NAME_, true, {PersistencePolicy_wc, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App30"},{NIL},{NIL}}},
+} ;
+
+expected_key_data_localDB_s expectedKeyData_App30_Phase_1[8] =
+{
+/* factory-default data : installed via configuration input */
+ {"App30_SettingA",
+ PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
+ "App30_SettingA : FactoryDefault : orig", sizeof("App30_SettingA : FactoryDefault : orig")},
+ {"App30_SettingB",
+ PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
+ "App30_SettingB : FactoryDefault : orig", sizeof("App30_SettingB : FactoryDefault : orig")},
+ {"App30_SettingC",
+ PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
+ "App30_SettingC : FactoryDefault : orig", sizeof("App30_SettingC : FactoryDefault : orig")},
+ {"App30_SettingD",
+ PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_, true,
+ "App30_SettingD : FactoryDefault : orig", sizeof("App30_SettingD : FactoryDefault : orig")},
+/* configurable-default data : installed via configuration input */
+ {"App30_SettingA",
+ PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
+ "App30_SettingA : ConfigurableDefault : orig", sizeof("App30_SettingA : ConfigurableDefault : orig")},
+ {"App30_SettingB",
+ PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
+ "App30_SettingB : ConfigurableDefault : orig", sizeof("App30_SettingB : ConfigurableDefault : orig")},
+ {"App30_SettingC",
+ PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
+ "App30_SettingC : ConfigurableDefault : orig", sizeof("App30_SettingC : ConfigurableDefault : orig")},
+ {"App30_SettingD",
+ PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_, true,
+ "App30_SettingD : ConfigurableDefault : orig", sizeof("App30_SettingD : ConfigurableDefault : orig")},
+};
+
+expected_file_data_s expectedFileData_App30_Phase_1[4] =
+{
+/* factory-default data : installed via configuration input */
+ {PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/App30_1.txt", true,
+ "File>>App30_>>/App30_1.txt factory-default : orig", sizeof("File>>App30_>>/App30_1.txt factory-default : orig")},
+ {PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/App30_2.txt", true,
+ "File>>App30_>>/App30_2.txt factory-default : orig", sizeof("File>>App30_>>/App30_2.txt factory-default : orig")},
+/* configurable-default data : installed via configuration input */
+ {PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/App30_1.txt", true,
+ "File>>App30_>>/App30_1.txt configurable-default : orig", sizeof("File>>App30_>>/App30_1.txt configurable-default : orig")},
+ {PERS_ORG_LOCAL_APP_WT_PATH_"App30"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/App30_2.txt", true,
+ "File>>App30_>>/App30_2.txt configurable-default : orig", sizeof("File>>App30_>>/App30_2.txt configurable-default : orig")},
+};
+
+
+/***********************************************************************************************************************/
+expected_key_data_RCT_s expectedKeyData_RCT_resConfAdd_1[17] =
+{
+ {"App1_SettingA", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
+ {"App1_SettingB", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
+ {"App1_SettingC", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
+ {"App1_Setting/ABC", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
+ {"App1_SettingD", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
+ {"App1_SettingE", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
+ /* no longer available in the new RCT */
+ {"App1_SettingF", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, false, {PersistencePolicy_wc, PersistenceStorage_local, File_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
+ {"App1_Setting/DEF", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
+ {"doc1.txt", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
+ {"Docs/doc2.txt", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
+ {"docA.txt", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
+ /* no longer available in the new RCT */
+ {"Docs/docB.txt", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, false, {PersistencePolicy_wc, PersistenceStorage_local, File_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
+ {"App1_NewSetting1", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
+ {"App1_NewSetting2", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
+ {"App1_NewSettingA", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
+ {"App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}},
+ {"App1_NewSettingC", PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME, true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"}, {NIL},{NIL}}}
+};
+
+expected_key_data_localDB_s expectedKeyData_localDB_resConfAdd_1[41] =
+{
+ {"App1_SettingA", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DEFAULT_DB_NAME_, true, "Data>>/App1_SettingA::DEFAULT", sizeof("Data>>/App1_SettingA::DEFAULT")},
+ {"App1_SettingB", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DEFAULT_DB_NAME_, true, "Data>>/App1_SettingB::DEFAULT", sizeof("Data>>/App1_SettingB::DEFAULT")},
+ {"App1_SettingB", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DEFAULT_DB_NAME_, false, "Data>>/App1_SettingB::DEFAULT", sizeof("Data>>/App1_SettingB::DEFAULT")},
+ {"App1_SettingF", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DEFAULT_DB_NAME_, false, NIL, 0},
+
+
+ {"App1_NewSetting1", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DEFAULT_DB_NAME_, true, "Data>>/App1_NewSetting1::DEFAULT", sizeof("Data>>/App1_NewSetting1::DEFAULT")},
+ { PERS_ORG_USER_FOLDER_NAME_"1/App1_NewSetting1", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_NewSetting1::user1", sizeof("Data>>/App1_NewSetting1::user1")},
+ { PERS_ORG_USER_FOLDER_NAME_"2/App1_NewSetting1", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_NewSetting1::user2", sizeof("Data>>/App1_NewSetting1::user2")},
+
+
+ {"App1_NewSetting2", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DEFAULT_DB_NAME_, true, "Data>>/App1_NewSetting2::DEFAULT", sizeof("Data>>/App1_NewSetting2::DEFAULT")},
+ { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/App1_NewSetting2", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_NewSetting2::user2::seat1", sizeof("Data>>/App1_NewSetting2::user2::seat1")},
+ { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_NewSetting2", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_NewSetting2::user2::seat2", sizeof("Data>>/App1_NewSetting2::user2::seat2")},
+
+
+ {"App1_NewSettingA", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DEFAULT_DB_NAME_, true, "Data>>/App1_NewSettingA::DEFAULT", sizeof("Data>>/App1_NewSettingA::DEFAULT")},
+ { PERS_ORG_NODE_FOLDER_NAME_"/App1_NewSettingA", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_NewSettingA::node", sizeof("Data>>/App1_NewSettingA::node")},
+
+
+ {"App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DEFAULT_DB_NAME_, true, "Data>>/App1_NewSettingB/BAU::DEFAULT", sizeof("Data>>/App1_NewSettingB/BAU::DEFAULT")},
+ { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DEFAULT_DB_NAME_, false, NIL, 0},
+ { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_NewSettingB/BAU::user2::seat3", sizeof("Data>>/App1_NewSettingB/BAU::user2::seat3")},
+ { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DEFAULT_DB_NAME_, false, NIL, 0},
+ { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, false, NIL, 0},
+ { PERS_ORG_USER_FOLDER_NAME_"1"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DEFAULT_DB_NAME_, false, NIL, 0},
+ { PERS_ORG_USER_FOLDER_NAME_"1"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_NewSettingB/BAU::user1::seat2", sizeof("Data>>/App1_NewSettingB/BAU::user1::seat2")},
+ { PERS_ORG_USER_FOLDER_NAME_"1"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DEFAULT_DB_NAME_, false, NIL, 0},
+ { PERS_ORG_USER_FOLDER_NAME_"1"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_NewSettingB/BAU", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, false, NIL, 0},
+
+
+
+ { PERS_ORG_NODE_FOLDER_NAME_"/App1_SettingA", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_SettingA", sizeof("Data>>/App1_SettingA")},
+ /* policy changed for App1_SettingB */
+ { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/App1_SettingB", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, false, NIL, 0},
+ { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/App1_SettingB", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_SettingB::user2::seat1", sizeof("Data>>/App1_SettingB::user2::seat1")},
+ { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_SettingB", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, false, NIL, 0},
+ { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_SettingB", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_SettingB::user2:seat2", sizeof("Data>>/App1_SettingB::user2:seat2")},
+
+ { PERS_ORG_NODE_FOLDER_NAME_"/App1_SettingC", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_SettingC", sizeof("Data>>/App1_SettingC")},
+ { PERS_ORG_USER_FOLDER_NAME_"1/App1_Setting/ABC", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_Setting/ABC::user1", sizeof("Data>>/App1_Setting/ABC::user1")},
+ { PERS_ORG_USER_FOLDER_NAME_"2/App1_Setting/ABC", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_Setting/ABC::user2", sizeof("Data>>/App1_Setting/ABC::user2")},
+ { PERS_ORG_USER_FOLDER_NAME_"3/App1_Setting/ABC", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_Setting/ABC::user3", sizeof("Data>>/App1_Setting/ABC::user3")},
+ { PERS_ORG_USER_FOLDER_NAME_"4/App1_Setting/ABC", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_WT_DB_NAME_, true, "Data>>/App1_Setting/ABC::user4", sizeof("Data>>/App1_Setting/ABC::user4")},
+ { PERS_ORG_NODE_FOLDER_NAME_"/App1_SettingD", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_SettingD", sizeof("Data>>/App1_SettingD")},
+ { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/App1_SettingE", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_SettingE::user2:seat1", sizeof("Data>>/App1_SettingE::user2:seat1")},
+ { PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_SettingE", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_SettingE::user2:seat2", sizeof("Data>>/App1_SettingE::user2:seat2")},
+ /* no longer available in the new RCT */
+ { PERS_ORG_NODE_FOLDER_NAME_"/App1_SettingF", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, false, NIL, 0},
+ { PERS_ORG_USER_FOLDER_NAME_"1/App1_Setting/DEF", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_Setting/DEF::user1", sizeof("Data>>/App1_Setting/DEF::user1")},
+ { PERS_ORG_USER_FOLDER_NAME_"2/App1_Setting/DEF", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_Setting/DEF::user2", sizeof("Data>>/App1_Setting/DEF::user2")},
+ { PERS_ORG_USER_FOLDER_NAME_"3/App1_Setting/DEF", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_Setting/DEF::user3", sizeof("Data>>/App1_Setting/DEF::user3")},
+ { PERS_ORG_USER_FOLDER_NAME_"4/App1_Setting/DEF", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, true, "Data>>/App1_Setting/DEF::user4", sizeof("Data>>/App1_Setting/DEF::user4")},
+ { PERS_ORG_NODE_FOLDER_NAME_"/App1_NewSettingC", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DB_NAME_, false, NIL, 0},
+ { PERS_ORG_NODE_FOLDER_NAME_"/App1_NewSettingC", PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_LOCAL_CACHE_DEFAULT_DB_NAME_, false, NIL, 0}
+};
+
+
+expected_file_data_s expectedKeyData_files_resConfAdd_1[16] =
+{
+ { PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/doc1.txt", true, "File>>App1>>NewData>>/doc1.txt::CONFIGURABLE-DEFAULT", sizeof("File>>App1>>NewData>>/doc1.txt::CONFIGURABLE-DEFAULT")},
+ { PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/doc1.txt", true, "File>>App1>>NewData>>/doc1.txt::DEFAULT", sizeof("File>>App1>>NewData>>/doc1.txt::DEFAULT")},
+ { PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/Docs/doc2.txt", true, "File>>App1>>NewData>>/Docs/doc2.txt::DEFAULT", sizeof("File>>App1>>NewData>>/Docs/doc2.txt::DEFAULT")},
+ { PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/docA.txt", true, "File>>App1>>NewData>>/docA.txt::DEFAULT", sizeof("File>>App1>>NewData>>/docA.txt::DEFAULT")},
+ /* no longer available in the new RCT */
+ { PERS_ORG_LOCAL_APP_WT_PATH_"App1"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/Docs/docB.txt", false,NIL, 0},
+
+
+ { PERS_ORG_LOCAL_APP_WT_PATH_"App1" PERS_ORG_NODE_FOLDER_NAME_"/doc1.txt", true, "File>>App1>>NewData>>/doc1.txt", sizeof("File>>App1>>NewData>>/doc1.txt")},
+ { PERS_ORG_LOCAL_APP_WT_PATH_"App1" PERS_ORG_NODE_FOLDER_NAME_"/Docs/doc2.txt", true, "File>>App1>>NewData>>/Docs/doc2.txt", sizeof("File>>App1>>NewData>>/Docs/doc2.txt")},
+ { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"1/docA.txt", true, "File>>App1>>NewData>>/docA.txt::user1", sizeof("File>>App1>>NewData>>/docA.txt::user1")},
+ { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"2/docA.txt", true, "File>>App1>>/docA.txt::user2", sizeof("File>>App1>>/docA.txt::user2")},
+ { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"3/docA.txt", true, "File>>App1>>NewData>>/docA.txt::user3", sizeof("File>>App1>>NewData>>/docA.txt::user3")},
+ { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"4/docA.txt", true, "File>>App1>>/docA.txt::user4", sizeof("File>>App1>>/docA.txt::user4")},
+
+ { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/Docs/docB.txt", false,NIL, 0},
+ { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/Docs/docB.txt", false,NIL, 0},
+ { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/Docs/docB.txt", false,NIL, 0},
+ { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/Docs/docB.txt", false,NIL, 0},
+ { PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/docB.txt", false,NIL, 0}
+} ;
+
+bool_t Test_ResourceConfigAdd_1(int ceva, void* pAltceva)
+{
+ bool_t bEverythingOK = true ;
+
+ if(bEverythingOK)
+ {
+ long result = persAdminResourceConfigAdd(RESOURCE_ARCHIVE_PATHNAME_1) ;
+ sprintf(g_msg, "Test_ResourceConfigAdd_1: persAdminResourceConfigAdd(%s) returned %ld", RESOURCE_ARCHIVE_PATHNAME_1, result) ;
+ DLT_LOG(persAdminSvcDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+
+ return bEverythingOK ;
+}
+
+bool_t Test_ResourceConfigAdd_2(int ceva, void* pAltceva)
+{
+ bool_t bEverythingOK = true ;
+
+ if(bEverythingOK)
+ {
+ long result = persAdminResourceConfigAdd(RESOURCE_ARCHIVE_PATHNAME_2) ;
+ sprintf(g_msg, "Test_ResourceConfigAdd_1: persAdminResourceConfigAdd(%s) returned %ld", RESOURCE_ARCHIVE_PATHNAME_2, result) ;
+ DLT_LOG(persAdminSvcDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+
+ return bEverythingOK ;
+}
+
diff --git a/test/persadmin_tool/src/persadmin_tool.c b/test/persadmin_tool/src/persadmin_tool.c
index 2f241cb..97288a0 100644
--- a/test/persadmin_tool/src/persadmin_tool.c
+++ b/test/persadmin_tool/src/persadmin_tool.c
@@ -1,407 +1,407 @@
-/*********************************************************************************************************************
-*
-* Copyright (C) 2013 Continental Automotive Systems, Inc.
-*
-* Author: Ionut.Ieremie@continental-corporation.com
-*
-* Small tool (only for development purpose) to access (part of) functionality provided by Persistence Administrator.
-* To be used until SWL will be available.
-*
-* This Source Code Form is subject to the terms of the Mozilla Public
-* License, v. 2.0. If a copy of the MPL was not distributed with this
-* file, You can obtain one at http://mozilla.org/MPL/2.0/.
-*
-* Date Author Reason
-* 2013.09.19 uidl9757 CSP_WZ#5759: Add support for "restore"
-* 2013.05.28 uidl9757 CSP_WZ#12152: Created
-*
-**********************************************************************************************************************/
-
-#include "persComTypes.h"
-#include "stdio.h"
-#include "string.h"
-#include "persistence_admin_service.h"
-#include "dlt/dlt.h"
-
-#define LT_HDR "[Persadmin_Tool]:"
-DLT_DECLARE_CONTEXT (persadminToolDLTCtx)
-
-typedef enum _pastool_commands_e
-{
- PASTOOL_CMD_INSTALL = 0,
- PASTOOL_CMD_BACKUP,
- PASTOOL_CMD_EXPORT,
- PASTOOL_CMD_RECOVERY,
- PASTOOL_CMD_IMPORT,
- PASTOOL_CMD_RESTORE,
- PASTOOL_CMD_SHOW_HELP,
- /* add new entries here */
- PASTOOL_CMD_LAST_ENTRY
-}pastool_commands_e ;
-
-typedef struct
-{
- pastool_commands_e eCommand ;
- int iExpectedArgsNo ;
- char* pCommandName ;
-}pastool_command_name_s;
-
-typedef struct
-{
- pastool_commands_e eCommand ;
- char path[256] ;
- PersASSelectionType_e eSelectionType ;
- char appName[256] ;
- unsigned int user_no ;
- unsigned int seat_no ;
-}pastool_input_s ;
-
-static const pastool_command_name_s a_sCommandNames[] =
-{
- {PASTOOL_CMD_INSTALL, 3, "install"},
- {PASTOOL_CMD_BACKUP, 7, "backup"},
- {PASTOOL_CMD_EXPORT, 4, "export"},
- {PASTOOL_CMD_RECOVERY, 7, "recovery"},
- {PASTOOL_CMD_IMPORT, 4, "import"},
- {PASTOOL_CMD_RESTORE, 7, "restore"},
- {PASTOOL_CMD_SHOW_HELP, 2, "help"},
- {PASTOOL_CMD_SHOW_HELP, 2, "-help"},
- {PASTOOL_CMD_SHOW_HELP, 2, "-h"},
- {PASTOOL_CMD_SHOW_HELP, 2, "-?"},
-};
-
-static char g_msg[512] ;
-static pastool_input_s sInputCommand = {0};
-
-static bool_t pastool_parseArguments(int argc, char *argv[]);
-static void pastool_printHelp(void) ;
-static bool_t pastool_getCommand(char* arg, pastool_commands_e* peCommand_out) ;
-static void pastool_printArguments(pastool_input_s* psArguments, int iNumberOfArguments) ;
-static bool_t pastool_executeCommand(pastool_input_s* psArguments) ;
-
-static bool_t pastool_parseArguments(int argc, char *argv[])
-{
- bool_t bCanContinue = true ;
- int iNumberOfArguments = argc ;
- if(iNumberOfArguments < 2)
- {
- bCanContinue = false ;
- snprintf(g_msg, sizeof(g_msg), "%s:invalid number of arguments =%d", __FUNCTION__, iNumberOfArguments) ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- }
-
- if(bCanContinue)
- {
- if( ! pastool_getCommand(argv[1], &sInputCommand.eCommand))
- {
- bCanContinue = false ;
- }
- else
- {
- /* check if the right number of parameters provided */
- if(iNumberOfArguments != a_sCommandNames[sInputCommand.eCommand].iExpectedArgsNo)
- {
- bCanContinue = false ;
- snprintf(g_msg, sizeof(g_msg), "%s:invalid number of arguments for <<%s>> %d (expected %d)",
- __FUNCTION__, argv[1], iNumberOfArguments, a_sCommandNames[sInputCommand.eCommand].iExpectedArgsNo) ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- }
- }
- }
-
- if(bCanContinue && (iNumberOfArguments > 2) )
- {
- /* argv[2] is always <<path>>
- * Don't check the path (PAS will do it)
- */
- strncpy(sInputCommand.path, argv[2], sizeof(sInputCommand.path)) ;
- }
-
- if(bCanContinue && (iNumberOfArguments > 3))
- {
- /* argv[3] is always <<selection type>>
- */
- if(1 == sscanf(argv[3], "%d", (int*)&sInputCommand.eSelectionType))
- {
- if((sInputCommand.eSelectionType < PersASSelectionType_All) || (sInputCommand.eSelectionType >= PersASSelectionType_LastEntry))
- {
- bCanContinue = false ;
- snprintf(g_msg, sizeof(g_msg), "%s:selection type = <<%d>>",
- __FUNCTION__, sInputCommand.eSelectionType) ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- }
- }
- }
-
- if(bCanContinue && (iNumberOfArguments > 4))
- {
- /* argv[4] is always <<application>>
- * Don't check the path (PAS will do it)
- */
- strncpy(sInputCommand.appName, argv[4], sizeof(sInputCommand.appName)) ;
- }
-
- if(bCanContinue && (iNumberOfArguments > 5))
- {
- /* argv[5] is always <<user number>> */
- if(1 != sscanf(argv[5], "%d", &sInputCommand.user_no))
- {
- bCanContinue = false ;
- snprintf(g_msg, sizeof(g_msg), "%s:invalid user_no = <<%s>>",
- __FUNCTION__, argv[5]) ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- }
- else
- {
- if((-1) == sInputCommand.user_no)
- {
- sInputCommand.user_no = PERSIST_SELECT_ALL_USERS ;
- }
- }
- }
-
- if(bCanContinue && (iNumberOfArguments > 6))
- {
- /* argv[4] is always <<seat number>> */
- if(1 != sscanf(argv[6], "%d", &sInputCommand.seat_no))
- {
- bCanContinue = false ;
- snprintf(g_msg, sizeof(g_msg), "%s:invalid seat_no = <<%s>>",
- __FUNCTION__, argv[6]) ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- }
- else
- {
- if((-1) == sInputCommand.seat_no)
- {
- sInputCommand.seat_no = PERSIST_SELECT_ALL_SEATS ;
- }
- }
- }
-
- return bCanContinue ;
-}
-
-static void pastool_printHelp(void)
-{
-
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("==================== PAS Tool - help ===================================================="));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("Command format:"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" /usr/bin/persadmin_tool command path [selection_type][application] [user_no] [seat_no]"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("| command | path | selection type | application | user_no | seat_no |"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("| install | mandatory | na | na | na | na |"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("| backup | mandatory | mandatory | mandatory | mandatory | mandatory |"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("| recovery | mandatory | mandatory | mandatory | mandatory | mandatory |"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("| export | mandatory | mandatory | na | na | na |"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("| import | mandatory | mandatory | na | na | na |"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("| restore | mandatory | mandatory | mandatory | mandatory | mandatory |"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("| help | mandatory | mandatory | na | na | na |"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("path meaning:"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" for install : abs pathname to input installation file (.tar.gz)"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" for backup : abs pathname to output backup file (.tar.gz)"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" for recovery : abs pathname to input backup file (.tar.gz)"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" for export : abs path to destination folder"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" for import : abs path to source folder"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" for restore : choose one of: FactoryDefault or ConfigDefault"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("selection type meaning:"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" <<0>> : select all data/files: (node+user)->(application+shared)"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" <<1>> : select user data/files: (user)->(application+shared)"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" <<2>> : select application data/files: (application)->(node+user)"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("user_no and seat_no meaning:"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" <<1 to 4>> : select a single user/seat"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" <<-1>> : select all users/seats"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("Examples:"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" /usr/bin/persadmin_tool install /tmp/resource.tar.gz"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" /usr/bin/persadmin_tool backup /tmp/backup 2 MyApp -1 -1"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" /usr/bin/persadmin_tool backup /tmp/backup 2 MyApp 2 -1"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" /usr/bin/persadmin_tool export /tmp/export 0"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" /usr/bin/persadmin_tool restore FactoryDefault 2 MyApp -1 -1"));
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("=========================================================================================="));
-}
-
-static void pastool_printArguments(pastool_input_s* psArguments, int iNumberOfArguments)
-{
- snprintf(g_msg, sizeof(g_msg), "Called with:") ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- snprintf(g_msg, sizeof(g_msg), "command = <<%s>>", a_sCommandNames[psArguments->eCommand].pCommandName) ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- snprintf(g_msg, sizeof(g_msg), "path = <<%s>>", psArguments->path) ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- snprintf(g_msg, sizeof(g_msg), "selection type = <<%d>>",
- (iNumberOfArguments > 3) ? psArguments->eSelectionType : (-1)) ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- snprintf(g_msg, sizeof(g_msg), "application = <<%s>>",
- (iNumberOfArguments > 4) ? psArguments->appName : "Not Applicable") ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- snprintf(g_msg, sizeof(g_msg), "user_no = <<%d>>",
- (iNumberOfArguments > 5) ? psArguments->user_no : -1) ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- snprintf(g_msg, sizeof(g_msg), "seat_no = <<%d>>",
- (iNumberOfArguments > 6) ? psArguments->seat_no : -1) ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
-
-}
-
-static bool_t pastool_getCommand(char* arg, pastool_commands_e* peCommand_out)
-{
- bool_t bFoundCommand = false ;
-
- if(NULL != arg)
- {
- int i = 0 ;
- for(i = 0 ; i < sizeof(a_sCommandNames)/sizeof(a_sCommandNames[0]) ; i++)
- {
- if(0 == strcmp(a_sCommandNames[i].pCommandName, arg))
- {
- *peCommand_out = a_sCommandNames[i].eCommand ;
- bFoundCommand = true ;
- break ;
- }
- }
- }
- else
- {
- bFoundCommand = false ;
- }
-
- return bFoundCommand ;
-}
-
-static bool_t pastool_executeCommand(pastool_input_s* psArguments)
-{
- bool_t bEverythingOK = true ;
- long result = -1 ;
-
- switch(psArguments->eCommand)
- {
- case PASTOOL_CMD_SHOW_HELP:
- {
- pastool_printHelp() ;
- break ;
- }
- case PASTOOL_CMD_INSTALL:
- {
- result = persAdminResourceConfigAdd(psArguments->path) ;
- snprintf(g_msg, sizeof(g_msg), "persAdminResourceConfigAdd(%s) returned <<%ld>>", psArguments->path, result) ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- if(result < 0)
- {
- bEverythingOK = false ;
- }
- break ;
- }
- case PASTOOL_CMD_BACKUP:
- {
- result = persAdminDataBackupCreate(psArguments->eSelectionType, psArguments->path, psArguments->appName, psArguments->user_no, psArguments->seat_no);
- snprintf(g_msg, sizeof(g_msg), "persAdminDataBackupCreate(<<%d>>, <<%s>>, <<%s>>, <<%d>>, <<%d>>) returned <<%ld>>",
- psArguments->eSelectionType, psArguments->path, psArguments->appName, psArguments->user_no, psArguments->seat_no, result) ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- if(result < 0)
- {
- bEverythingOK = false ;
- }
- break ;
- }
- case PASTOOL_CMD_EXPORT:
- {
- result = persAdminDataFolderExport(psArguments->eSelectionType, psArguments->path);
- snprintf(g_msg, sizeof(g_msg), "persAdminDataFolderExport(<<%d>>, <<%s>>) returned <<%ld>>",
- psArguments->eSelectionType, psArguments->path, result) ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- if(result < 0)
- {
- bEverythingOK = false ;
- }
- break ;
- }
- case PASTOOL_CMD_RECOVERY:
- {
- long result = persAdminDataBackupRecovery(psArguments->eSelectionType, psArguments->path, psArguments->appName, psArguments->user_no, psArguments->seat_no);
- snprintf(g_msg, sizeof(g_msg), "persAdminDataBackupRecovery(<<%d>>, <<%s>>, <<%s>>, <<%d>>, <<%d>>) returned <<%ld>>",
- psArguments->eSelectionType, psArguments->path, psArguments->appName, psArguments->user_no, psArguments->seat_no, result) ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- if(result < 0)
- {
- bEverythingOK = false ;
- }
- break ;
- }
- case PASTOOL_CMD_IMPORT:
- {
- long result = persAdminDataFolderImport(psArguments->eSelectionType, psArguments->path);
- snprintf(g_msg, sizeof(g_msg), "persAdminDataFolderImport(<<%d>>, <<%s>>) returned <<%ld>>",
- psArguments->eSelectionType, psArguments->path, result) ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- if(result < 0)
- {
- bEverythingOK = false ;
- }
- break ;
- }
- case PASTOOL_CMD_RESTORE:
- {
- PersASDefaultSource_e defaultSource = PersASDefaultSource_Configurable;
- if(0 == strcmp(psArguments->path, "ConfigDefault"))
- {
- defaultSource = PersASDefaultSource_Configurable;
- }
- result = persAdminDataRestore(psArguments->eSelectionType, defaultSource, psArguments->appName, psArguments->user_no, psArguments->seat_no);
- snprintf(g_msg, sizeof(g_msg), "persAdminDataRestore(<<%d>>, <<%s>>, <<%s>>, <<%d>>, <<%d>>) returned <<%ld>>",
- psArguments->eSelectionType, (PersASDefaultSource_Configurable==defaultSource)?"ConfigDefault":"FactoryDefault",
- psArguments->appName, psArguments->user_no, psArguments->seat_no, result) ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- if(result < 0)
- {
- bEverythingOK = false ;
- }
- break ;
- }
- default:
- {
- /* not possible, but just to be sure */
- bEverythingOK = false ;
- snprintf(g_msg, sizeof(g_msg), "unexpected command <<%d>> !!!", psArguments->eCommand) ;
- DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
- break ;
- }
- }
-
- return bEverythingOK ;
-}
-
-int main(int argc, char *argv[])
-{
- bool_t bEverythingOK = true ;
-
- DLT_REGISTER_APP("0037","PAS_Tool"); /* 0x0037 <=> OIP_SSW_PERSADMIN_TOOL */
- DLT_REGISTER_CONTEXT(persadminToolDLTCtx,"PASt", "PAS_Tool");
- DLT_ENABLE_LOCAL_PRINT() ;
-
- if(pastool_parseArguments(argc, argv))
- {
- pastool_printArguments(&sInputCommand, argc);
- if(! pastool_executeCommand(&sInputCommand))
- {
- bEverythingOK = false ;
- }
- }
- else
- {
- bEverythingOK = false ;
- pastool_printHelp() ;
- }
-
- DLT_UNREGISTER_CONTEXT(persadminToolDLTCtx) ;
- DLT_UNREGISTER_APP() ;
-
- return bEverythingOK ? 0 : (-1) ;
-}
+/*********************************************************************************************************************
+*
+* Copyright (C) 2013 Continental Automotive Systems, Inc.
+*
+* Author: Ionut.Ieremie@continental-corporation.com
+*
+* Small tool (only for development purpose) to access (part of) functionality provided by Persistence Administrator.
+* To be used until SWL will be available.
+*
+* This Source Code Form is subject to the terms of the Mozilla Public
+* License, v. 2.0. If a copy of the MPL was not distributed with this
+* file, You can obtain one at http://mozilla.org/MPL/2.0/.
+*
+* Date Author Reason
+* 2013.09.19 uidl9757 CSP_WZ#5759: Add support for "restore"
+* 2013.05.28 uidl9757 CSP_WZ#12152: Created
+*
+**********************************************************************************************************************/
+
+#include "persComTypes.h"
+#include "stdio.h"
+#include "string.h"
+#include "persistence_admin_service.h"
+#include "dlt/dlt.h"
+
+#define LT_HDR "[Persadmin_Tool]:"
+DLT_DECLARE_CONTEXT (persadminToolDLTCtx)
+
+typedef enum _pastool_commands_e
+{
+ PASTOOL_CMD_INSTALL = 0,
+ PASTOOL_CMD_BACKUP,
+ PASTOOL_CMD_EXPORT,
+ PASTOOL_CMD_RECOVERY,
+ PASTOOL_CMD_IMPORT,
+ PASTOOL_CMD_RESTORE,
+ PASTOOL_CMD_SHOW_HELP,
+ /* add new entries here */
+ PASTOOL_CMD_LAST_ENTRY
+}pastool_commands_e ;
+
+typedef struct
+{
+ pastool_commands_e eCommand ;
+ int iExpectedArgsNo ;
+ char* pCommandName ;
+}pastool_command_name_s;
+
+typedef struct
+{
+ pastool_commands_e eCommand ;
+ char path[256] ;
+ PersASSelectionType_e eSelectionType ;
+ char appName[256] ;
+ unsigned int user_no ;
+ unsigned int seat_no ;
+}pastool_input_s ;
+
+static const pastool_command_name_s a_sCommandNames[] =
+{
+ {PASTOOL_CMD_INSTALL, 3, "install"},
+ {PASTOOL_CMD_BACKUP, 7, "backup"},
+ {PASTOOL_CMD_EXPORT, 4, "export"},
+ {PASTOOL_CMD_RECOVERY, 7, "recovery"},
+ {PASTOOL_CMD_IMPORT, 4, "import"},
+ {PASTOOL_CMD_RESTORE, 7, "restore"},
+ {PASTOOL_CMD_SHOW_HELP, 2, "help"},
+ {PASTOOL_CMD_SHOW_HELP, 2, "-help"},
+ {PASTOOL_CMD_SHOW_HELP, 2, "-h"},
+ {PASTOOL_CMD_SHOW_HELP, 2, "-?"},
+};
+
+static char g_msg[512] ;
+static pastool_input_s sInputCommand = {0};
+
+static bool_t pastool_parseArguments(int argc, char *argv[]);
+static void pastool_printHelp(void) ;
+static bool_t pastool_getCommand(char* arg, pastool_commands_e* peCommand_out) ;
+static void pastool_printArguments(pastool_input_s* psArguments, int iNumberOfArguments) ;
+static bool_t pastool_executeCommand(pastool_input_s* psArguments) ;
+
+static bool_t pastool_parseArguments(int argc, char *argv[])
+{
+ bool_t bCanContinue = true ;
+ int iNumberOfArguments = argc ;
+ if(iNumberOfArguments < 2)
+ {
+ bCanContinue = false ;
+ snprintf(g_msg, sizeof(g_msg), "%s:invalid number of arguments =%d", __FUNCTION__, iNumberOfArguments) ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+
+ if(bCanContinue)
+ {
+ if( ! pastool_getCommand(argv[1], &sInputCommand.eCommand))
+ {
+ bCanContinue = false ;
+ }
+ else
+ {
+ /* check if the right number of parameters provided */
+ if(iNumberOfArguments != a_sCommandNames[sInputCommand.eCommand].iExpectedArgsNo)
+ {
+ bCanContinue = false ;
+ snprintf(g_msg, sizeof(g_msg), "%s:invalid number of arguments for <<%s>> %d (expected %d)",
+ __FUNCTION__, argv[1], iNumberOfArguments, a_sCommandNames[sInputCommand.eCommand].iExpectedArgsNo) ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ }
+ }
+
+ if(bCanContinue && (iNumberOfArguments > 2) )
+ {
+ /* argv[2] is always <<path>>
+ * Don't check the path (PAS will do it)
+ */
+ strncpy(sInputCommand.path, argv[2], sizeof(sInputCommand.path)) ;
+ }
+
+ if(bCanContinue && (iNumberOfArguments > 3))
+ {
+ /* argv[3] is always <<selection type>>
+ */
+ if(1 == sscanf(argv[3], "%d", (int*)&sInputCommand.eSelectionType))
+ {
+ if((sInputCommand.eSelectionType < PersASSelectionType_All) || (sInputCommand.eSelectionType >= PersASSelectionType_LastEntry))
+ {
+ bCanContinue = false ;
+ snprintf(g_msg, sizeof(g_msg), "%s:selection type = <<%d>>",
+ __FUNCTION__, sInputCommand.eSelectionType) ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ }
+ }
+
+ if(bCanContinue && (iNumberOfArguments > 4))
+ {
+ /* argv[4] is always <<application>>
+ * Don't check the path (PAS will do it)
+ */
+ strncpy(sInputCommand.appName, argv[4], sizeof(sInputCommand.appName)) ;
+ }
+
+ if(bCanContinue && (iNumberOfArguments > 5))
+ {
+ /* argv[5] is always <<user number>> */
+ if(1 != sscanf(argv[5], "%d", &sInputCommand.user_no))
+ {
+ bCanContinue = false ;
+ snprintf(g_msg, sizeof(g_msg), "%s:invalid user_no = <<%s>>",
+ __FUNCTION__, argv[5]) ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ else
+ {
+ if((-1) == sInputCommand.user_no)
+ {
+ sInputCommand.user_no = PERSIST_SELECT_ALL_USERS ;
+ }
+ }
+ }
+
+ if(bCanContinue && (iNumberOfArguments > 6))
+ {
+ /* argv[4] is always <<seat number>> */
+ if(1 != sscanf(argv[6], "%d", &sInputCommand.seat_no))
+ {
+ bCanContinue = false ;
+ snprintf(g_msg, sizeof(g_msg), "%s:invalid seat_no = <<%s>>",
+ __FUNCTION__, argv[6]) ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ else
+ {
+ if((-1) == sInputCommand.seat_no)
+ {
+ sInputCommand.seat_no = PERSIST_SELECT_ALL_SEATS ;
+ }
+ }
+ }
+
+ return bCanContinue ;
+}
+
+static void pastool_printHelp(void)
+{
+
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("==================== PAS Tool - help ===================================================="));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("Command format:"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" /usr/bin/persadmin_tool command path [selection_type][application] [user_no] [seat_no]"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("| command | path | selection type | application | user_no | seat_no |"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("| install | mandatory | na | na | na | na |"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("| backup | mandatory | mandatory | mandatory | mandatory | mandatory |"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("| recovery | mandatory | mandatory | mandatory | mandatory | mandatory |"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("| export | mandatory | mandatory | na | na | na |"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("| import | mandatory | mandatory | na | na | na |"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("| restore | mandatory | mandatory | mandatory | mandatory | mandatory |"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("| help | mandatory | mandatory | na | na | na |"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("-----------------------------------------------------------------------------------------"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("path meaning:"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" for install : abs pathname to input installation file (.tar.gz)"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" for backup : abs pathname to output backup file (.tar.gz)"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" for recovery : abs pathname to input backup file (.tar.gz)"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" for export : abs path to destination folder"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" for import : abs path to source folder"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" for restore : choose one of: FactoryDefault or ConfigDefault"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("selection type meaning:"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" <<0>> : select all data/files: (node+user)->(application+shared)"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" <<1>> : select user data/files: (user)->(application+shared)"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" <<2>> : select application data/files: (application)->(node+user)"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("user_no and seat_no meaning:"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" <<1 to 4>> : select a single user/seat"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" <<-1>> : select all users/seats"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("Examples:"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" /usr/bin/persadmin_tool install /tmp/resource.tar.gz"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" /usr/bin/persadmin_tool backup /tmp/backup 2 MyApp -1 -1"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" /usr/bin/persadmin_tool backup /tmp/backup 2 MyApp 2 -1"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" /usr/bin/persadmin_tool export /tmp/export 0"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(" /usr/bin/persadmin_tool restore FactoryDefault 2 MyApp -1 -1"));
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("=========================================================================================="));
+}
+
+static void pastool_printArguments(pastool_input_s* psArguments, int iNumberOfArguments)
+{
+ snprintf(g_msg, sizeof(g_msg), "Called with:") ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ snprintf(g_msg, sizeof(g_msg), "command = <<%s>>", a_sCommandNames[psArguments->eCommand].pCommandName) ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ snprintf(g_msg, sizeof(g_msg), "path = <<%s>>", psArguments->path) ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ snprintf(g_msg, sizeof(g_msg), "selection type = <<%d>>",
+ (iNumberOfArguments > 3) ? psArguments->eSelectionType : (-1)) ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ snprintf(g_msg, sizeof(g_msg), "application = <<%s>>",
+ (iNumberOfArguments > 4) ? psArguments->appName : "Not Applicable") ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ snprintf(g_msg, sizeof(g_msg), "user_no = <<%d>>",
+ (iNumberOfArguments > 5) ? psArguments->user_no : -1) ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ snprintf(g_msg, sizeof(g_msg), "seat_no = <<%d>>",
+ (iNumberOfArguments > 6) ? psArguments->seat_no : -1) ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+
+}
+
+static bool_t pastool_getCommand(char* arg, pastool_commands_e* peCommand_out)
+{
+ bool_t bFoundCommand = false ;
+
+ if(NULL != arg)
+ {
+ int i = 0 ;
+ for(i = 0 ; i < sizeof(a_sCommandNames)/sizeof(a_sCommandNames[0]) ; i++)
+ {
+ if(0 == strcmp(a_sCommandNames[i].pCommandName, arg))
+ {
+ *peCommand_out = a_sCommandNames[i].eCommand ;
+ bFoundCommand = true ;
+ break ;
+ }
+ }
+ }
+ else
+ {
+ bFoundCommand = false ;
+ }
+
+ return bFoundCommand ;
+}
+
+static bool_t pastool_executeCommand(pastool_input_s* psArguments)
+{
+ bool_t bEverythingOK = true ;
+ long result = -1 ;
+
+ switch(psArguments->eCommand)
+ {
+ case PASTOOL_CMD_SHOW_HELP:
+ {
+ pastool_printHelp() ;
+ break ;
+ }
+ case PASTOOL_CMD_INSTALL:
+ {
+ result = persAdminResourceConfigAdd(psArguments->path) ;
+ snprintf(g_msg, sizeof(g_msg), "persAdminResourceConfigAdd(%s) returned <<%ld>>", psArguments->path, result) ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ if(result < 0)
+ {
+ bEverythingOK = false ;
+ }
+ break ;
+ }
+ case PASTOOL_CMD_BACKUP:
+ {
+ result = persAdminDataBackupCreate(psArguments->eSelectionType, psArguments->path, psArguments->appName, psArguments->user_no, psArguments->seat_no);
+ snprintf(g_msg, sizeof(g_msg), "persAdminDataBackupCreate(<<%d>>, <<%s>>, <<%s>>, <<%d>>, <<%d>>) returned <<%ld>>",
+ psArguments->eSelectionType, psArguments->path, psArguments->appName, psArguments->user_no, psArguments->seat_no, result) ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ if(result < 0)
+ {
+ bEverythingOK = false ;
+ }
+ break ;
+ }
+ case PASTOOL_CMD_EXPORT:
+ {
+ result = persAdminDataFolderExport(psArguments->eSelectionType, psArguments->path);
+ snprintf(g_msg, sizeof(g_msg), "persAdminDataFolderExport(<<%d>>, <<%s>>) returned <<%ld>>",
+ psArguments->eSelectionType, psArguments->path, result) ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ if(result < 0)
+ {
+ bEverythingOK = false ;
+ }
+ break ;
+ }
+ case PASTOOL_CMD_RECOVERY:
+ {
+ long result = persAdminDataBackupRecovery(psArguments->eSelectionType, psArguments->path, psArguments->appName, psArguments->user_no, psArguments->seat_no);
+ snprintf(g_msg, sizeof(g_msg), "persAdminDataBackupRecovery(<<%d>>, <<%s>>, <<%s>>, <<%d>>, <<%d>>) returned <<%ld>>",
+ psArguments->eSelectionType, psArguments->path, psArguments->appName, psArguments->user_no, psArguments->seat_no, result) ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ if(result < 0)
+ {
+ bEverythingOK = false ;
+ }
+ break ;
+ }
+ case PASTOOL_CMD_IMPORT:
+ {
+ long result = persAdminDataFolderImport(psArguments->eSelectionType, psArguments->path);
+ snprintf(g_msg, sizeof(g_msg), "persAdminDataFolderImport(<<%d>>, <<%s>>) returned <<%ld>>",
+ psArguments->eSelectionType, psArguments->path, result) ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ if(result < 0)
+ {
+ bEverythingOK = false ;
+ }
+ break ;
+ }
+ case PASTOOL_CMD_RESTORE:
+ {
+ PersASDefaultSource_e defaultSource = PersASDefaultSource_Configurable;
+ if(0 == strcmp(psArguments->path, "ConfigDefault"))
+ {
+ defaultSource = PersASDefaultSource_Configurable;
+ }
+ result = persAdminDataRestore(psArguments->eSelectionType, defaultSource, psArguments->appName, psArguments->user_no, psArguments->seat_no);
+ snprintf(g_msg, sizeof(g_msg), "persAdminDataRestore(<<%d>>, <<%s>>, <<%s>>, <<%d>>, <<%d>>) returned <<%ld>>",
+ psArguments->eSelectionType, (PersASDefaultSource_Configurable==defaultSource)?"ConfigDefault":"FactoryDefault",
+ psArguments->appName, psArguments->user_no, psArguments->seat_no, result) ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ if(result < 0)
+ {
+ bEverythingOK = false ;
+ }
+ break ;
+ }
+ default:
+ {
+ /* not possible, but just to be sure */
+ bEverythingOK = false ;
+ snprintf(g_msg, sizeof(g_msg), "unexpected command <<%d>> !!!", psArguments->eCommand) ;
+ DLT_LOG(persadminToolDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ break ;
+ }
+ }
+
+ return bEverythingOK ;
+}
+
+int main(int argc, char *argv[])
+{
+ bool_t bEverythingOK = true ;
+
+ DLT_REGISTER_APP("0037","PAS_Tool"); /* 0x0037 <=> OIP_SSW_PERSADMIN_TOOL */
+ DLT_REGISTER_CONTEXT(persadminToolDLTCtx,"PASt", "PAS_Tool");
+ DLT_ENABLE_LOCAL_PRINT() ;
+
+ if(pastool_parseArguments(argc, argv))
+ {
+ pastool_printArguments(&sInputCommand, argc);
+ if(! pastool_executeCommand(&sInputCommand))
+ {
+ bEverythingOK = false ;
+ }
+ }
+ else
+ {
+ bEverythingOK = false ;
+ pastool_printHelp() ;
+ }
+
+ DLT_UNREGISTER_CONTEXT(persadminToolDLTCtx) ;
+ DLT_UNREGISTER_APP() ;
+
+ return bEverythingOK ? 0 : (-1) ;
+}