diff options
author | Guy Sagnes <guy.sagnes@continental-corporation.com> | 2014-03-06 12:03:50 +0100 |
---|---|---|
committer | Guy Sagnes <guy.sagnes@continental-corporation.com> | 2014-03-06 15:42:15 +0100 |
commit | c5c11f1be06e74e92cda091de7a04bd3fb7e937e (patch) | |
tree | 4f1563fa1eb722d2e1e5ab6d90efdb70ff2755e8 | |
parent | 3a6cc3228b93c647f0ffed4b53641572e78f71d7 (diff) | |
download | persistence-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.h | 168 | ||||
-rw-r--r-- | Administrator/src/ssw_pers_admin_common.c | 102 | ||||
-rw-r--r-- | Administrator/src/ssw_pers_admin_database_helper.c | 1232 | ||||
-rw-r--r-- | test/pers_svc_test/inc/test_pas_resource_config_add.h | 98 | ||||
-rw-r--r-- | test/pers_svc_test/src/test_pas_check_data_after_reset.c | 236 | ||||
-rw-r--r-- | test/pers_svc_test/src/test_pas_resource_config_add.c | 1458 | ||||
-rw-r--r-- | test/persadmin_tool/src/persadmin_tool.c | 814 |
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) ; +} |