summaryrefslogtreecommitdiff
path: root/test/pers_svc_test/src/test_PAS.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/pers_svc_test/src/test_PAS.c')
-rw-r--r--test/pers_svc_test/src/test_PAS.c1959
1 files changed, 1959 insertions, 0 deletions
diff --git a/test/pers_svc_test/src/test_PAS.c b/test/pers_svc_test/src/test_PAS.c
new file mode 100644
index 0000000..852c72b
--- /dev/null
+++ b/test/pers_svc_test/src/test_PAS.c
@@ -0,0 +1,1959 @@
+/*********************************************************************************************************************
+*
+* Copyright (C) 2012 Continental Automotive Systems, Inc.
+*
+* Author: Ionut.Ieremie@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
+ 2013.04.15 uidu0250 CSP_WZ#3424: Add IF extension for "restore to default"
+ 2013.01.24 uidu0250 CSP_WZ#2246: Added additional test cases for persAdminDataBackupRecovery
+ 2012.12.11 uidu0250 CSP_WZ#1280: Added test cases for persAdminDataBackupRecovery
+ 2012.11.23 uidn3591, uidv2833 CSP_WZ#1280: Added test cases for persAdminDataBackupCreate & persAdminUserDataDelete
+ 2012.11.21 uidl9757 CSP_WZ#1280: Created (only framework and a dummy test case)
+*
+**********************************************************************************************************************/
+
+/* ---------------------- include files --------------------------------- */
+#include "persComTypes.h"
+#include "stdio.h"
+#include "string.h"
+#include "malloc.h"
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <errno.h>
+#include <unistd.h>
+#include <dirent.h>
+
+#include <dlt/dlt.h>
+#include <dlt/dlt_user.h>
+
+#include "persComErrors.h"
+#include "persComDataOrg.h"
+#include "persComDbAccess.h"
+#include "persComRct.h"
+
+#include "ssw_pers_admin_files_helper.h"
+#include "ssw_pers_admin_dbus.h"
+
+#include "persistence_admin_service.h"
+
+#include "test_PAS.h"
+
+
+#include "test_pas_check_data_after_reset.h"
+#include "test_pas_data_backup_recovery.h"
+#include "test_pas_data_restore_default.h"
+#include "test_pas_resource_config_add.h"
+#include "test_pas_data_import.h"
+#include "test_pas_check_data_after_backup_application.h"
+#include "test_pas_check_data_after_delete_user2_data.h"
+#include "test_pas_check_data_after_backup_create_all.h"
+#include "test_pas_check_data_after_backup_user_all.h"
+#include "test_pas_check_data_after_backup_user2_seat_all.h"
+
+/* L&T context */
+#define LT_HDR "TEST_PAS >> "
+
+//static DLT_DECLARE_CONTEXT(testPersAdminDLTCtx);
+DLT_DECLARE_CONTEXT(persAdminSvcDLTCtx) ;
+#define testPersAdminDLTCtx persAdminSvcDLTCtx
+str_t g_msg[512] ;
+
+#define File_t PersistenceResourceType_file
+#define Key_t PersistenceResourceType_key
+
+
+static entryRctInit_s RCT_public_init[] =
+{
+ {"pubSettingA", true, {PersistencePolicy_wt, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSettingB", true, {PersistencePolicy_wt, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSettingC", true, {PersistencePolicy_wt, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSetting/ABC", true, {PersistencePolicy_wt, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSettingD", true, {PersistencePolicy_wc, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSettingE", true, {PersistencePolicy_wc, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSettingF", true, {PersistencePolicy_wc, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"pubSetting/DEF", true, {PersistencePolicy_wc, PersistenceStorage_shared,Key_t, S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"doc1.txt", false, {PersistencePolicy_wt, PersistenceStorage_shared,File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"Docs/doc2.txt", false, {PersistencePolicy_wt, PersistenceStorage_shared,File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"docA.txt", false, {PersistencePolicy_wc, PersistenceStorage_shared,File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}},
+ {"Docs/docB.txt", false, {PersistencePolicy_wc, PersistenceStorage_shared,File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"public"}, {NIL},{NIL}}}
+} ;
+
+static entryDataInit_s dataKeysPublicInit[] =
+{
+ {0, PERS_ORG_NODE_FOLDER_NAME_"/pubSettingA", PersistencePolicy_wt, 0, 0, "Data>>/pubSettingA"},
+ {0, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingB", PersistencePolicy_wt, 2, 1, "Data>>/pubSettingB::user2::seat1"},
+ {0, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingB", PersistencePolicy_wt, 2, 2, "Data>>/pubSettingB::user2:seat2"},
+ {0, PERS_ORG_NODE_FOLDER_NAME_"/pubSettingC", PersistencePolicy_wt, 0, 0, "Data>>/pubSettingC"},
+ {0, PERS_ORG_USER_FOLDER_NAME_"1/pubSetting/ABC", PersistencePolicy_wt, 1, 0, "Data>>/pubSetting/ABC::user1"},
+ {0, PERS_ORG_USER_FOLDER_NAME_"2/pubSetting/ABC", PersistencePolicy_wt, 2, 0, "Data>>/pubSetting/ABC::user2"},
+ {0, PERS_ORG_USER_FOLDER_NAME_"3/pubSetting/ABC", PersistencePolicy_wt, 3, 0, "Data>>/pubSetting/ABC::user3"},
+ {0, PERS_ORG_USER_FOLDER_NAME_"4/pubSetting/ABC", PersistencePolicy_wt, 4, 0, "Data>>/pubSetting/ABC::user4"},
+ {0, PERS_ORG_NODE_FOLDER_NAME_"/pubSettingD", PersistencePolicy_wc, 0, 0, "Data>>/pubSettingD"},
+ {0, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/pubSettingE", PersistencePolicy_wc, 2, 1, "Data>>/pubSettingE::user2:seat1"},
+ {0, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/pubSettingE", PersistencePolicy_wc, 2, 2, "Data>>/pubSettingE::user2:seat2"},
+ {0, PERS_ORG_NODE_FOLDER_NAME_"/pubSettingF", PersistencePolicy_wc, 0, 0, "Data>>/pubSettingF"},
+ {0, PERS_ORG_USER_FOLDER_NAME_"1/pubSetting/DEF", PersistencePolicy_wc, 1, 0, "Data>>/pubSetting/DEF::user1"},
+ {0, PERS_ORG_USER_FOLDER_NAME_"2/pubSetting/DEF", PersistencePolicy_wc, 2, 0, "Data>>/pubSetting/DEF::user2"},
+ {0, PERS_ORG_USER_FOLDER_NAME_"3/pubSetting/DEF", PersistencePolicy_wc, 3, 0, "Data>>/pubSetting/DEF::user3"},
+ {0, PERS_ORG_USER_FOLDER_NAME_"4/pubSetting/DEF", PersistencePolicy_wc, 4, 0, "Data>>/pubSetting/DEF::user4"}
+} ;
+
+
+static entryDataInit_s dataFilesPublicInit[] =
+{
+ {0, PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_NODE_FOLDER_NAME"/doc1.txt", PersistencePolicy_wt, 0, 0, "File>>/doc1.txt"},
+ {0, PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_NODE_FOLDER_NAME"/Docs/doc2.txt", PersistencePolicy_wt, 0, 0, "File>>/Docs/doc2.txt"},
+ {0, PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/1/docA.txt", PersistencePolicy_wc, 1, 0, "File>>/docA.txt::user1"},
+ {0, PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/2/docA.txt", PersistencePolicy_wc, 2, 0, "File>>/docA.txt::user2"},
+ {0, PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/3/docA.txt", PersistencePolicy_wc, 3, 0, "File>>/docA.txt::user3"},
+ {0, PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/4/docA.txt", PersistencePolicy_wc, 4, 0, "File>>/docA.txt::user4"},
+ {0, PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"1/Docs/docB.txt", PersistencePolicy_wc, 2, 1, "File>>/docB.txt::user2:seat1"},
+ {0, PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"2/Docs/docB.txt", PersistencePolicy_wc, 2, 2, "File>>/docB.txt::user2:seat2"},
+ {0, PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"3/Docs/docB.txt", PersistencePolicy_wc, 2, 3, "File>>/docB.txt::user2:seat3"},
+ {0, PERS_ORG_SHARED_PUBLIC_CACHE_PATH_ PERS_ORG_USER_FOLDER_NAME"/2"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/docB.txt", PersistencePolicy_wc, 2, 4, "File>>/docB.txt::user2:seat4"}
+};
+
+static defaultDataInit_s factoryDefaultInitKey[] =
+{
+ {"pubSettingA", "FactoryDefault : pubSettingA : orig" },
+ {"pubSettingD", "FactoryDefault : pubSettingD : orig" },
+ {"pubSetting/ABC", "FactoryDefault : pubSetting/ABC : orig" }
+};
+
+static defaultDataInit_s configurableDefaultInitKey[] =
+{
+ {"pubSettingA", "ConfigurableDefault : pubSettingA : orig" },
+ {"pubSetting/ABC", "ConfigurableDefault : pubSetting/ABC : orig" }
+};
+
+static dataInit_s sSharedPubDataInit =
+{
+ PERS_ORG_SHARED_PUBLIC_WT_PATH_,
+ PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_RCT_NAME,
+ dbType_RCT,
+ PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_WT_DB_NAME,
+ dbType_local,
+ PERS_ORG_SHARED_PUBLIC_WT_PATH_ PERS_ORG_SHARED_CACHE_DB_NAME,
+ dbType_local,
+ RCT_public_init,
+ sizeof(RCT_public_init)/sizeof(RCT_public_init[0]),
+ dataKeysPublicInit,
+ sizeof(dataKeysPublicInit)/sizeof(dataKeysPublicInit[0]),
+ dataFilesPublicInit,
+ sizeof(dataFilesPublicInit)/sizeof(dataFilesPublicInit[0]),
+
+ "/Data/mnt-wt/shared/public"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_,
+ factoryDefaultInitKey,
+ sizeof(factoryDefaultInitKey)/sizeof(factoryDefaultInitKey[0]),
+ "/Data/mnt-wt/shared/public"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_,
+ configurableDefaultInitKey,
+ sizeof(configurableDefaultInitKey)/sizeof(configurableDefaultInitKey[0])
+} ;
+
+
+/**********************************************************************************************************************************************
+ ***************************************** Group 10 *******************************************************************************************
+ *********************************************************************************************************************************************/
+static entryRctInit_s RCT_group10_init[] =
+{
+ {"gr10_SettingA", true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"},{NIL},{NIL}}},
+ {"gr10_SettingB", true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"},{NIL},{NIL}}},
+ {"gr10_SettingC", true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"},{NIL},{NIL}}},
+ {"gr10_Setting/ABC", true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"},{NIL},{NIL}}},
+ {"gr10_SettingD", true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"},{NIL},{NIL}}},
+ {"gr10_SettingE", true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"},{NIL},{NIL}}},
+ {"gr10_SettingF", true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"},{NIL},{NIL}}},
+ {"gr10_Setting/DEF", true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"},{NIL},{NIL}}},
+ {"gr10_1.txt", false, {PersistencePolicy_wt, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"},{NIL},{NIL}}},
+ {"Docs/gr10_A.txt", false, {PersistencePolicy_wt, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"},{NIL},{NIL}}},
+ {"gr10_2.txt", false, {PersistencePolicy_wc, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"},{NIL},{NIL}}},
+ {"Docs/gr10_B.txt", false, {PersistencePolicy_wc, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group10"},{NIL},{NIL}}}
+} ;
+
+static entryDataInit_s dataKeys_Group10_Init[] =
+{
+ {0x10, PERS_ORG_NODE_FOLDER_NAME_"/gr10_SettingA", PersistencePolicy_wt, 0, 0, "Data>>/gr10_SettingA"},
+ {0x10, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/gr10_SettingB", PersistencePolicy_wt, 2, 1, "Data>>/gr10_SettingB::user2::seat1"},
+ {0x10, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/gr10_SettingB", PersistencePolicy_wt, 2, 2, "Data>>/gr10_SettingB::user2:seat2"},
+ {0x10, PERS_ORG_NODE_FOLDER_NAME_"/gr10_SettingC", PersistencePolicy_wt, 0, 0, "Data>>/gr10_SettingC"},
+ {0x10, PERS_ORG_USER_FOLDER_NAME_"1/gr10_Setting/ABC", PersistencePolicy_wt, 1, 0, "Data>>/gr10_Setting/ABC::user1"},
+ {0x10, PERS_ORG_USER_FOLDER_NAME_"2/gr10_Setting/ABC", PersistencePolicy_wt, 2, 0, "Data>>/gr10_Setting/ABC::user2"},
+ {0x10, PERS_ORG_USER_FOLDER_NAME_"3/gr10_Setting/ABC", PersistencePolicy_wt, 3, 0, "Data>>/gr10_Setting/ABC::user3"},
+ {0x10, PERS_ORG_USER_FOLDER_NAME_"4/gr10_Setting/ABC", PersistencePolicy_wt, 4, 0, "Data>>/gr10_Setting/ABC::user4"},
+ {0x10, PERS_ORG_NODE_FOLDER_NAME_"/gr10_SettingD", PersistencePolicy_wc, 0, 0, "Data>>/gr10_SettingD"},
+ {0x10, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/gr10_SettingE", PersistencePolicy_wc, 2, 1, "Data>>/gr10_SettingE::user2:seat1"},
+ {0x10, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/gr10_SettingE", PersistencePolicy_wc, 2, 2, "Data>>/gr10_SettingE::user2:seat2"},
+ {0x10, PERS_ORG_NODE_FOLDER_NAME_"/gr10_SettingF", PersistencePolicy_wc, 0, 0, "Data>>/gr10_SettingF"},
+ {0x10, PERS_ORG_USER_FOLDER_NAME_"1/gr10_Setting/DEF", PersistencePolicy_wc, 1, 0, "Data>>/gr10_Setting/DEF::user1"},
+ {0x10, PERS_ORG_USER_FOLDER_NAME_"2/gr10_Setting/DEF", PersistencePolicy_wc, 2, 0, "Data>>/gr10_Setting/DEF::user2"},
+ {0x10, PERS_ORG_USER_FOLDER_NAME_"3/gr10_Setting/DEF", PersistencePolicy_wc, 3, 0, "Data>>/gr10_Setting/DEF::user3"},
+ {0x10, PERS_ORG_USER_FOLDER_NAME_"4/gr10_Setting/DEF", PersistencePolicy_wc, 4, 0, "Data>>/gr10_Setting/DEF::user4"}
+} ;
+
+static defaultDataInit_s dataKeys_Group10_FactoryDefaultInit[] =
+{
+ {"gr10_SettingA", "FactoryDefault : gr10_SettingA : orig" },
+ {"gr10_SettingB", "FactoryDefault : gr10_SettingB : orig" },
+ {"gr10_SettingC", "FactoryDefault : gr10_SettingC : orig" },
+ {"gr10_Setting/ABC", "FactoryDefault : gr10_Setting/ABC : orig" }
+};
+
+static defaultDataInit_s dataKeys_Group10_ConfigurableDefaultInit[] =
+{
+ {"gr10_SettingA", "ConfigurableDefault : gr10_SettingA : orig" },
+ {"gr10_SettingB", "ConfigurableDefault : gr10_SettingB : orig" },
+ {"gr10_SettingC", "ConfigurableDefault : gr10_SettingC : orig" },
+ {"gr10_Setting/ABC", "ConfigurableDefault : gr10_Setting/ABC : orig" }
+};
+
+static entryDataInit_s dataFiles_Group10_Init[] =
+{
+ {0x10, PERS_ORG_SHARED_GROUP_WT_PATH_"10" PERS_ORG_NODE_FOLDER_NAME_"/gr10_1.txt", PersistencePolicy_wt, 0, 0, "File>>gr10_>>/gr10_1.txt"},
+ {0x10, PERS_ORG_SHARED_GROUP_WT_PATH_"10" PERS_ORG_NODE_FOLDER_NAME_"/Docs/gr10_A.txt", PersistencePolicy_wt, 0, 0, "File>>gr10_>>/Docs/gr10_A.txt"},
+ {0x10, PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"1/gr10_2.txt", PersistencePolicy_wc, 1, 0, "File>>gr10_>>/gr10_2.txt::user1"},
+ {0x10, PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"2/gr10_2.txt", PersistencePolicy_wc, 2, 0, "File>>gr10_>>/gr10_2.txt::user2"},
+ {0x10, PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"3/gr10_2.txt", PersistencePolicy_wc, 3, 0, "File>>gr10_>>/gr10_2.txt::user3"},
+ {0x10, PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"4/gr10_2.txt", PersistencePolicy_wc, 4, 0, "File>>gr10_>>/gr10_2.txt::user4"},
+ {0x10, PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/Docs/gr10_B.txt", PersistencePolicy_wc, 2, 1, "File>>gr10_>>/Docs/gr10_B.txt::user2:seat1"},
+ {0x10, PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/Docs/gr10_B.txt", PersistencePolicy_wc, 2, 2, "File>>gr10_>>/Docs/gr10_B.txt::user2:seat2"},
+ {0x10, PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/Docs/gr10_B.txt", PersistencePolicy_wc, 2, 3, "File>>gr10_>>/Docs/gr10_B.txt::user2:seat3"},
+ {0x10, PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/gr10_B.txt", PersistencePolicy_wc, 2, 4, "File>>gr10_>>/Docs/gr10_B.txt::user2:seat4"},
+ /* factory-default data */
+ {0x10, PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/gr10_1.txt", PersistencePolicy_wt, 0, 0, "File>>gr10_>>/gr10_1.txt factory-default : orig"},
+ {0x10, PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/Docs/gr10_A.txt", PersistencePolicy_wt, 0, 0, "File>>gr10_>>/Docs/gr10_A.txt factory-default : orig"},
+ {0x10, PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/gr10_2.txt", PersistencePolicy_wc, 0, 0, "File>>gr10_>>/gr10_2.txt factory-default : orig"},
+ {0x10, PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_DEFAULT_DATA_FOLDER_NAME_"/Docs/gr10_B.txt", PersistencePolicy_wc, 0, 0, "File>>gr10_>>/Docs/gr10_B.txt factory-default : orig"},
+ /* configurable-default data */
+ {0x10, PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/gr10_1.txt", PersistencePolicy_wt, 0, 0, "File>>gr10_>>/gr10_1.txt configurable-default : orig"},
+ {0x10, PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/Docs/gr10_A.txt", PersistencePolicy_wt, 0, 0, "File>>gr10_>>/Docs/gr10_A.txt configurable-default : orig"},
+ {0x10, PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/gr10_2.txt", PersistencePolicy_wc, 0, 0, "File>>gr10_>>/gr10_2.txt configurable-default : orig"},
+ {0x10, PERS_ORG_SHARED_GROUP_CACHE_PATH_"10"PERS_ORG_CONFIG_DEFAULT_DATA_FOLDER_NAME_"/Docs/gr10_B.txt", PersistencePolicy_wc, 0, 0, "File>>gr10_>>/Docs/gr10_B.txt configurable-default : orig"},
+};
+
+
+static dataInit_s sShared_Group10_DataInit =
+{
+ PERS_ORG_SHARED_GROUP_WT_PATH_"10/",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"10/"PERS_ORG_RCT_NAME,
+ dbType_RCT,
+ PERS_ORG_SHARED_GROUP_WT_PATH_"10/"PERS_ORG_SHARED_WT_DB_NAME,
+ dbType_local,
+ PERS_ORG_SHARED_GROUP_WT_PATH_"10/"PERS_ORG_SHARED_CACHE_DB_NAME,
+ dbType_local,
+ RCT_group10_init,
+ sizeof(RCT_group10_init)/sizeof(RCT_group10_init[0]),
+ dataKeys_Group10_Init,
+ sizeof(dataKeys_Group10_Init)/sizeof(dataKeys_Group10_Init[0]),
+ dataFiles_Group10_Init,
+ sizeof(dataFiles_Group10_Init)/sizeof(dataFiles_Group10_Init[0]),
+ PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_FACTORY_DEFAULT_DB_NAME_,
+ dataKeys_Group10_FactoryDefaultInit,
+ sizeof(dataKeys_Group10_FactoryDefaultInit)/sizeof(dataKeys_Group10_FactoryDefaultInit[0]),
+ PERS_ORG_SHARED_GROUP_WT_PATH_"10"PERS_ORG_LOCAL_CONFIGURABLE_DEFAULT_DB_NAME_,
+ dataKeys_Group10_ConfigurableDefaultInit,
+ sizeof(dataKeys_Group10_ConfigurableDefaultInit)/sizeof(dataKeys_Group10_ConfigurableDefaultInit[0])
+} ;
+
+
+/**********************************************************************************************************************************************
+ ***************************************** Group 20 *******************************************************************************************
+ *********************************************************************************************************************************************/
+static entryRctInit_s RCT_group20_init[] =
+{
+ {"gr20_SettingA", true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"gr20_SettingB", true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"gr20_SettingC", true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"gr20_Setting/ABC", true, {PersistencePolicy_wt, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"gr20_SettingD", true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"gr20_SettingE", true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"gr20_SettingF", true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"gr20_Setting/DEF", true, {PersistencePolicy_wc, PersistenceStorage_shared, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"doc1.txt", false, {PersistencePolicy_wt, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"Docs/doc2.txt", false, {PersistencePolicy_wt, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"docA.txt", false, {PersistencePolicy_wc, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}},
+ {"Docs/docB.txt", false, {PersistencePolicy_wc, PersistenceStorage_shared, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"group20"},{NIL},{NIL}}}
+} ;
+
+static entryDataInit_s dataKeys_Group20_Init[] =
+{
+ {0x20, PERS_ORG_NODE_FOLDER_NAME_"/gr20_SettingA", PersistencePolicy_wt, 0, 0, "Data>>/gr20_SettingA"},
+ {0x20, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/gr20_SettingB", PersistencePolicy_wt, 2, 1, "Data>>/gr20_SettingB::user2::seat1"},
+ {0x20, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/gr20_SettingB", PersistencePolicy_wt, 2, 2, "Data>>/gr20_SettingB::user2:seat2"},
+ {0x20, PERS_ORG_NODE_FOLDER_NAME_"/gr20_SettingC", PersistencePolicy_wt, 0, 0, "Data>>/gr20_SettingC"},
+ {0x20, PERS_ORG_USER_FOLDER_NAME_"1/gr20_Setting/ABC", PersistencePolicy_wt, 1, 0, "Data>>/gr20_Setting/ABC::user1"},
+ {0x20, PERS_ORG_USER_FOLDER_NAME_"2/gr20_Setting/ABC", PersistencePolicy_wt, 2, 0, "Data>>/gr20_Setting/ABC::user2"},
+ {0x20, PERS_ORG_USER_FOLDER_NAME_"3/gr20_Setting/ABC", PersistencePolicy_wt, 3, 0, "Data>>/gr20_Setting/ABC::user3"},
+ {0x20, PERS_ORG_USER_FOLDER_NAME_"4/gr20_Setting/ABC", PersistencePolicy_wt, 4, 0, "Data>>/gr20_Setting/ABC::user4"},
+ {0x20, PERS_ORG_NODE_FOLDER_NAME_"/gr20_SettingD", PersistencePolicy_wc, 0, 0, "Data>>/gr20_SettingD"},
+ {0x20, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/gr20_SettingE", PersistencePolicy_wc, 2, 1, "Data>>/gr20_SettingE::user2:seat1"},
+ {0x20, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/gr20_SettingE", PersistencePolicy_wc, 2, 2, "Data>>/gr20_SettingE::user2:seat2"},
+ {0x20, PERS_ORG_NODE_FOLDER_NAME_"/gr20_SettingF", PersistencePolicy_wc, 0, 0, "Data>>/gr20_SettingF"},
+ {0x20, PERS_ORG_USER_FOLDER_NAME_"1/gr20_Setting/DEF", PersistencePolicy_wc, 1, 0, "Data>>/gr20_Setting/DEF::user1"},
+ {0x20, PERS_ORG_USER_FOLDER_NAME_"2/gr20_Setting/DEF", PersistencePolicy_wc, 2, 0, "Data>>/gr20_Setting/DEF::user2"},
+ {0x20, PERS_ORG_USER_FOLDER_NAME_"3/gr20_Setting/DEF", PersistencePolicy_wc, 3, 0, "Data>>/gr20_Setting/DEF::user3"},
+ {0x20, PERS_ORG_USER_FOLDER_NAME_"4/gr20_Setting/DEF", PersistencePolicy_wc, 4, 0, "Data>>/gr20_Setting/DEF::user4"}
+};
+
+static entryDataInit_s dataFiles_Group20_Init[] =
+{
+ {0x20, PERS_ORG_SHARED_GROUP_WT_PATH_"20" PERS_ORG_NODE_FOLDER_NAME_"/doc1.txt", PersistencePolicy_wt, 0, 0, "File>>gr20_>>/doc1.txt"},
+ {0x20, PERS_ORG_SHARED_GROUP_WT_PATH_"20" PERS_ORG_NODE_FOLDER_NAME_"/Docs/doc2.txt", PersistencePolicy_wt, 0, 0, "File>>gr20_>>/Docs/doc2.txt"},
+ {0x20, PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"1/docA.txt", PersistencePolicy_wc, 1, 0, "File>>gr20_>>/docA.txt::user1"},
+ {0x20, PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"2/docA.txt", PersistencePolicy_wc, 2, 0, "File>>gr20_>>/docA.txt::user2"},
+ {0x20, PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"3/docA.txt", PersistencePolicy_wc, 3, 0, "File>>gr20_>>/docA.txt::user3"},
+ {0x20, PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"4/docA.txt", PersistencePolicy_wc, 4, 0, "File>>gr20_>>/docA.txt::user4"},
+ {0x20, PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/Docs/docB.txt", PersistencePolicy_wc, 2, 1, "File>>gr20_>>/docB.txt::user2:seat1"},
+ {0x20, PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/Docs/docB.txt", PersistencePolicy_wc, 2, 2, "File>>gr20_>>/docB.txt::user2:seat2"},
+ {0x20, PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/Docs/docB.txt", PersistencePolicy_wc, 2, 3, "File>>gr20_>>/docB.txt::user2:seat3"},
+ {0x20, PERS_ORG_SHARED_GROUP_CACHE_PATH_"20"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/docB.txt", PersistencePolicy_wc, 2, 4, "File>>gr20_>>/docB.txt::user2:seat4"}
+};
+
+
+static dataInit_s sShared_Group20_DataInit =
+{
+ PERS_ORG_SHARED_GROUP_WT_PATH_"20/",
+ PERS_ORG_SHARED_GROUP_WT_PATH_"20/"PERS_ORG_RCT_NAME,
+ dbType_RCT,
+ PERS_ORG_SHARED_GROUP_WT_PATH_"20/"PERS_ORG_SHARED_WT_DB_NAME,
+ dbType_local,
+ PERS_ORG_SHARED_GROUP_WT_PATH_"20/"PERS_ORG_SHARED_CACHE_DB_NAME,
+ dbType_local,
+ RCT_group20_init,
+ sizeof(RCT_group20_init)/sizeof(RCT_group20_init[0]),
+ dataKeys_Group20_Init,
+ sizeof(dataKeys_Group20_Init)/sizeof(dataKeys_Group20_Init[0]),
+ dataFiles_Group20_Init,
+ sizeof(dataFiles_Group20_Init)/sizeof(dataFiles_Group20_Init[0]),
+ NIL,
+ NIL,
+ 0,
+ NIL,
+ NIL,
+ 0
+} ;
+
+/**********************************************************************************************************************************************
+ ***************************************** App1 *******************************************************************************************
+ *********************************************************************************************************************************************/
+static entryRctInit_s RCT_App1_init[] =
+{
+ {"App1_SettingA", true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"},{NIL},{NIL}}},
+ {"App1_SettingB", true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"},{NIL},{NIL}}},
+ {"App1_SettingC", true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"},{NIL},{NIL}}},
+ {"App1_Setting/ABC", true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"},{NIL},{NIL}}},
+ {"App1_SettingD", true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"},{NIL},{NIL}}},
+ {"App1_SettingE", true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"},{NIL},{NIL}}},
+ {"App1_SettingF", true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"},{NIL},{NIL}}},
+ {"App1_Setting/DEF", true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"},{NIL},{NIL}}},
+ {"doc1.txt", false, {PersistencePolicy_wt, PersistenceStorage_local, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"},{NIL},{NIL}}},
+ {"Docs/doc2.txt", false, {PersistencePolicy_wt, PersistenceStorage_local, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"},{NIL},{NIL}}},
+ {"docA.txt", false, {PersistencePolicy_wc, PersistenceStorage_local, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"},{NIL},{NIL}}},
+ {"Docs/docB.txt", false, {PersistencePolicy_wc, PersistenceStorage_local, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App1"},{NIL},{NIL}}}
+} ;
+
+static entryDataInit_s dataKeys_App1_Init[] =
+{
+ {0xFF, PERS_ORG_NODE_FOLDER_NAME_"/App1_SettingA", PersistencePolicy_wt, 0, 0, "Data>>/App1_SettingA"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/App1_SettingB", PersistencePolicy_wt, 2, 1, "Data>>/App1_SettingB::user2::seat1"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_SettingB", PersistencePolicy_wt, 2, 2, "Data>>/App1_SettingB::user2:seat2"},
+ {0xFF, PERS_ORG_NODE_FOLDER_NAME_"/App1_SettingC", PersistencePolicy_wt, 0, 0, "Data>>/App1_SettingC"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"1/App1_Setting/ABC", PersistencePolicy_wt, 1, 0, "Data>>/App1_Setting/ABC::user1"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"2/App1_Setting/ABC", PersistencePolicy_wt, 2, 0, "Data>>/App1_Setting/ABC::user2"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"3/App1_Setting/ABC", PersistencePolicy_wt, 3, 0, "Data>>/App1_Setting/ABC::user3"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"4/App1_Setting/ABC", PersistencePolicy_wt, 4, 0, "Data>>/App1_Setting/ABC::user4"},
+ {0xFF, PERS_ORG_NODE_FOLDER_NAME_"/App1_SettingD", PersistencePolicy_wc, 0, 0, "Data>>/App1_SettingD"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/App1_SettingE", PersistencePolicy_wc, 2, 1, "Data>>/App1_SettingE::user2:seat1"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/App1_SettingE", PersistencePolicy_wc, 2, 2, "Data>>/App1_SettingE::user2:seat2"},
+ {0xFF, PERS_ORG_NODE_FOLDER_NAME_"/App1_SettingF", PersistencePolicy_wc, 0, 0, "Data>>/App1_SettingF"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"1/App1_Setting/DEF", PersistencePolicy_wc, 1, 0, "Data>>/App1_Setting/DEF::user1"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"2/App1_Setting/DEF", PersistencePolicy_wc, 2, 0, "Data>>/App1_Setting/DEF::user2"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"3/App1_Setting/DEF", PersistencePolicy_wc, 3, 0, "Data>>/App1_Setting/DEF::user3"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"4/App1_Setting/DEF", PersistencePolicy_wc, 4, 0, "Data>>/App1_Setting/DEF::user4"}
+} ;
+
+static entryDataInit_s dataFiles_App1_Init[] =
+{
+ {0xFF, PERS_ORG_LOCAL_APP_WT_PATH_"App1" PERS_ORG_NODE_FOLDER_NAME_"/doc1.txt", PersistencePolicy_wt, 0, 0, "File>>App1>>/doc1.txt"},
+ {0xFF, PERS_ORG_LOCAL_APP_WT_PATH_"App1" PERS_ORG_NODE_FOLDER_NAME_"/Docs/doc2.txt", PersistencePolicy_wt, 0, 0, "File>>App1>>/Docs/doc2.txt"},
+ {0xFF, PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"1/docA.txt", PersistencePolicy_wc, 1, 0, "File>>App1>>/docA.txt::user1"},
+ {0xFF, PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"2/docA.txt", PersistencePolicy_wc, 2, 0, "File>>App1>>/docA.txt::user2"},
+ {0xFF, PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"3/docA.txt", PersistencePolicy_wc, 3, 0, "File>>App1>>/docA.txt::user3"},
+ {0xFF, PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"4/docA.txt", PersistencePolicy_wc, 4, 0, "File>>App1>>/docA.txt::user4"},
+ {0xFF, PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/Docs/docB.txt", PersistencePolicy_wc, 2, 1, "File>>App1>>/docB.txt::user2:seat1"},
+ {0xFF, PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/Docs/docB.txt", PersistencePolicy_wc, 2, 2, "File>>App1>>/docB.txt::user2:seat2"},
+ {0xFF, PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/Docs/docB.txt", PersistencePolicy_wc, 2, 3, "File>>App1>>/docB.txt::user2:seat3"},
+ {0xFF, PERS_ORG_LOCAL_APP_CACHE_PATH_"App1"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/docB.txt", PersistencePolicy_wc, 2, 4, "File>>App1>>/docB.txt::user2:seat4"}
+};
+
+
+static dataInit_s s_App1_DataInit =
+{
+ PERS_ORG_LOCAL_APP_WT_PATH_"App1/",
+ PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_RCT_NAME,
+ dbType_RCT,
+ PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_LOCAL_WT_DB_NAME,
+ dbType_local,
+ PERS_ORG_LOCAL_APP_WT_PATH_"App1/"PERS_ORG_LOCAL_CACHE_DB_NAME,
+ dbType_local,
+ RCT_App1_init,
+ sizeof(RCT_App1_init)/sizeof(RCT_App1_init[0]),
+ dataKeys_App1_Init,
+ sizeof(dataKeys_App1_Init)/sizeof(dataKeys_App1_Init[0]),
+ dataFiles_App1_Init,
+ sizeof(dataFiles_App1_Init)/sizeof(dataFiles_App1_Init[0]),
+ NIL,
+ NIL,
+ 0,
+ NIL,
+ NIL,
+ 0
+} ;
+
+/**********************************************************************************************************************************************
+ ***************************************** App2*******************************************************************************************
+ *********************************************************************************************************************************************/
+static entryRctInit_s RCT_App2_init[] =
+{
+ {"App2_SettingA", true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App2"},{NIL},{NIL}}},
+ {"App2_SettingB", true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App2"},{NIL},{NIL}}},
+ {"App2_SettingC", true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App2"},{NIL},{NIL}}},
+ {"App2_Setting/ABC", true, {PersistencePolicy_wt, PersistenceStorage_local, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App2"},{NIL},{NIL}}},
+ {"App2_SettingD", true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App2"},{NIL},{NIL}}},
+ {"App2_SettingE", true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App2"},{NIL},{NIL}}},
+ {"App2_SettingF", true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App2"},{NIL},{NIL}}},
+ {"App2_Setting/DEF", true, {PersistencePolicy_wc, PersistenceStorage_local, Key_t ,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App2"},{NIL},{NIL}}},
+ {"doc1.txt", false, {PersistencePolicy_wt, PersistenceStorage_local, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App2"},{NIL},{NIL}}},
+ {"Docs/doc2.txt", false, {PersistencePolicy_wt, PersistenceStorage_local, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App2"},{NIL},{NIL}}},
+ {"docA.txt", false, {PersistencePolicy_wc, PersistenceStorage_local, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App2"},{NIL},{NIL}}},
+ {"Docs/docB.txt", false, {PersistencePolicy_wc, PersistenceStorage_local, File_t,S_IRWXU|S_IRWXG|S_IRWXO, 64, {"App2"},{NIL},{NIL}}}
+} ;
+
+static entryDataInit_s dataKeys_App2_Init[] =
+{
+ {0xFF, PERS_ORG_NODE_FOLDER_NAME_"/App2_SettingA", PersistencePolicy_wt, 0, 0, "Data>>/App2_SettingA"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/App2_SettingB", PersistencePolicy_wt, 2, 1, "Data>>/App2_SettingB::user2::seat1"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/App2_SettingB", PersistencePolicy_wt, 2, 2, "Data>>/App2_SettingB::user2:seat2"},
+ {0xFF, PERS_ORG_NODE_FOLDER_NAME_"/App2_SettingC", PersistencePolicy_wt, 0, 0, "Data>>/App2_SettingC"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"1/App2_Setting/ABC", PersistencePolicy_wt, 1, 0, "Data>>/App2_Setting/ABC::user1"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"2/App2_Setting/ABC", PersistencePolicy_wt, 2, 0, "Data>>/App2_Setting/ABC::user2"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"3/App2_Setting/ABC", PersistencePolicy_wt, 3, 0, "Data>>/App2_Setting/ABC::user3"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"4/App2_Setting/ABC", PersistencePolicy_wt, 4, 0, "Data>>/App2_Setting/ABC::user4"},
+ {0xFF, PERS_ORG_NODE_FOLDER_NAME_"/App2_SettingD", PersistencePolicy_wc, 0, 0, "Data>>/App2_SettingD"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/App2_SettingE", PersistencePolicy_wc, 2, 1, "Data>>/App2_SettingE::user2:seat1"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/App2_SettingE", PersistencePolicy_wc, 2, 2, "Data>>/App2_SettingE::user2:seat2"},
+ {0xFF, PERS_ORG_NODE_FOLDER_NAME_"/App2_SettingF", PersistencePolicy_wc, 0, 0, "Data>>/App2_SettingF"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"1/App2_Setting/DEF", PersistencePolicy_wc, 1, 0, "Data>>/App2_Setting/DEF::user1"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"2/App2_Setting/DEF", PersistencePolicy_wc, 2, 0, "Data>>/App2_Setting/DEF::user2"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"3/App2_Setting/DEF", PersistencePolicy_wc, 3, 0, "Data>>/App2_Setting/DEF::user3"},
+ {0xFF, PERS_ORG_USER_FOLDER_NAME_"4/App2_Setting/DEF", PersistencePolicy_wc, 4, 0, "Data>>/App2_Setting/DEF::user4"}
+} ;
+
+static entryDataInit_s dataFiles_App2_Init[] =
+{
+ {0xFF, PERS_ORG_LOCAL_APP_WT_PATH_"App2" PERS_ORG_NODE_FOLDER_NAME_"/doc1.txt", PersistencePolicy_wt, 0, 0, "File>>App2>>/doc1.txt"},
+ {0xFF, PERS_ORG_LOCAL_APP_WT_PATH_"App2" PERS_ORG_NODE_FOLDER_NAME_"/Docs/doc2.txt", PersistencePolicy_wt, 0, 0, "File>>App2>>/Docs/doc2.txt"},
+ {0xFF, PERS_ORG_LOCAL_APP_CACHE_PATH_"App2"PERS_ORG_USER_FOLDER_NAME_"1/docA.txt", PersistencePolicy_wc, 1, 0, "File>>App2>>/docA.txt::user1"},
+ {0xFF, PERS_ORG_LOCAL_APP_CACHE_PATH_"App2"PERS_ORG_USER_FOLDER_NAME_"2/docA.txt", PersistencePolicy_wc, 2, 0, "File>>App2>>/docA.txt::user2"},
+ {0xFF, PERS_ORG_LOCAL_APP_CACHE_PATH_"App2"PERS_ORG_USER_FOLDER_NAME_"3/docA.txt", PersistencePolicy_wc, 3, 0, "File>>App2>>/docA.txt::user3"},
+ {0xFF, PERS_ORG_LOCAL_APP_CACHE_PATH_"App2"PERS_ORG_USER_FOLDER_NAME_"4/docA.txt", PersistencePolicy_wc, 4, 0, "File>>App2>>/docA.txt::user4"},
+ {0xFF, PERS_ORG_LOCAL_APP_CACHE_PATH_"App2"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"1/Docs/docB.txt", PersistencePolicy_wc, 2, 1, "File>>App2>>/docB.txt::user2:seat1"},
+ {0xFF, PERS_ORG_LOCAL_APP_CACHE_PATH_"App2"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"2/Docs/docB.txt", PersistencePolicy_wc, 2, 2, "File>>App2>>/docB.txt::user2:seat2"},
+ {0xFF, PERS_ORG_LOCAL_APP_CACHE_PATH_"App2"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"3/Docs/docB.txt", PersistencePolicy_wc, 2, 3, "File>>App2>>/docB.txt::user2:seat3"},
+ {0xFF, PERS_ORG_LOCAL_APP_CACHE_PATH_"App2"PERS_ORG_USER_FOLDER_NAME_"2"PERS_ORG_SEAT_FOLDER_NAME_"4/Docs/docB.txt", PersistencePolicy_wc, 2, 4, "File>>App2>>/docB.txt::user2:seat4"}
+};
+
+
+static dataInit_s s_App2_DataInit =
+{
+ PERS_ORG_LOCAL_APP_WT_PATH_"App2/",
+ PERS_ORG_LOCAL_APP_WT_PATH_"App2/"PERS_ORG_RCT_NAME,
+ dbType_RCT,
+ PERS_ORG_LOCAL_APP_WT_PATH_"App2/"PERS_ORG_LOCAL_WT_DB_NAME,
+ dbType_local,
+ PERS_ORG_LOCAL_APP_WT_PATH_"App2/"PERS_ORG_LOCAL_CACHE_DB_NAME,
+ dbType_local,
+ RCT_App2_init,
+ sizeof(RCT_App2_init)/sizeof(RCT_App2_init[0]),
+ dataKeys_App2_Init,
+ sizeof(dataKeys_App2_Init)/sizeof(dataKeys_App2_Init[0]),
+ dataFiles_App2_Init,
+ sizeof(dataFiles_App2_Init)/sizeof(dataFiles_App2_Init[0]),
+ NIL,
+ NIL,
+ 0,
+ NIL,
+ NIL,
+ 0
+} ;
+
+
+
+#if 0
+expected_key_data_localDB_s expectedKeyDataAfterExportAll[] =
+{
+ /* add here ... */
+};
+expected_file_data_s expectedFileDataAfterExportAll[] =
+{
+ /* add here ... */
+}
+#endif
+
+/**************************************************************************************************************
+***************************************** ADD TEST CASES HERE ********************************************
+**************************************************************************************************************/
+
+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])
+};
+
+testcase_s tc_testResourceConfigAdd_public =
+{
+ Test_ResourceConfigAdd_1,
+ 0,
+ NIL,
+ "Resource Config Add : Configure public",
+ expected_RCT_public,
+ sizeof(expected_RCT_public)/sizeof(expected_RCT_public[0]),
+ expectedKeyData_public,
+ sizeof(expectedKeyData_public)/sizeof(expectedKeyData_public[0]),
+ expectedFileData_public,
+ sizeof(expectedFileData_public)/sizeof(expectedFileData_public[0]),
+ false
+};
+
+testcase_s tc_testResourceConfigAdd_group_10 =
+{
+ NIL, //skip it
+ 0,
+ NIL,
+ "Resource Config Add : Configure group 10",
+ expected_RCT_group_10,
+ sizeof(expected_RCT_group_10)/sizeof(expected_RCT_group_10[0]),
+ expectedKeyData_group_10,
+ sizeof(expectedKeyData_group_10)/sizeof(expectedKeyData_group_10[0]),
+ expectedFileData_group_10,
+ sizeof(expectedFileData_group_10)/sizeof(expectedFileData_group_10[0]),
+ true //skip data reset
+};
+
+testcase_s tc_testResourceConfigAdd_group_20 =
+{
+ NIL, //skip it
+ 0,
+ NIL,
+ "Resource Config Add : Configure group 20",
+ expected_RCT_group_20,
+ sizeof(expected_RCT_group_20)/sizeof(expected_RCT_group_20[0]),
+ expectedKeyData_group_20,
+ sizeof(expectedKeyData_group_20)/sizeof(expectedKeyData_group_20[0]),
+ expectedFileData_group_20,
+ sizeof(expectedFileData_group_20)/sizeof(expectedFileData_group_20[0]),
+ true //skip data reset
+};
+
+testcase_s tc_testResourceConfigAdd_group_30 =
+{
+ NIL, //skip it
+ 0,
+ NIL,
+ "Resource Config Add : Configure new group 30",
+ expected_RCT_group_30,
+ sizeof(expected_RCT_group_30)/sizeof(expected_RCT_group_30[0]),
+ expectedKeyData_group_30,
+ sizeof(expectedKeyData_group_30)/sizeof(expectedKeyData_group_30[0]),
+ expectedFileData_group_30,
+ sizeof(expectedFileData_group_30)/sizeof(expectedFileData_group_30[0]),
+ true //skip data reset
+};
+
+testcase_s tc_testResourceConfigAdd_App30 =
+{
+ NIL, //skip it
+ 0,
+ NIL,
+ "Resource Config Add : Configure new App30",
+ expected_RCT_App30_Phase_1,
+ sizeof(expected_RCT_App30_Phase_1)/sizeof(expected_RCT_App30_Phase_1[0]),
+ expectedKeyData_App30_Phase_1,
+ sizeof(expectedKeyData_App30_Phase_1)/sizeof(expectedKeyData_App30_Phase_1[0]),
+ expectedFileData_App30_Phase_1,
+ sizeof(expectedFileData_App30_Phase_1)/sizeof(expectedFileData_App30_Phase_1[0]),
+ true //skip data reset
+};
+
+testcase_s tc_testResourceConfigAdd_public_phase_2 =
+{
+ Test_ResourceConfigAdd_2,
+ 0,
+ NIL,
+ "Resource Config Add : Configure public - Phase 2",
+ expected_RCT_public,
+ sizeof(expected_RCT_public)/sizeof(expected_RCT_public[0]),
+ expectedKeyData_public_phase2,
+ sizeof(expectedKeyData_public_phase2)/sizeof(expectedKeyData_public_phase2[0]),
+ expectedFileData_public_phase2,
+ sizeof(expectedFileData_public_phase2)/sizeof(expectedFileData_public_phase2[0]),
+ true //skip data reset
+};
+
+testcase_s tc_testDataAfterDeleteUser2Data =
+{
+ Test_DataAfterDeleteUser2Data,
+ 0,
+ NIL,
+ "Check user data delete for user 2 data",
+ NIL,
+ 0,
+ expectedKeyData_shared_public_localDB_AfterDeleteUser2Data,
+ sizeof(expectedKeyData_shared_public_localDB_AfterDeleteUser2Data)/sizeof(expectedKeyData_shared_public_localDB_AfterDeleteUser2Data[0]),
+ expectedFileData_shared_public_AfterDeleteUser2Data,
+ sizeof(expectedFileData_shared_public_AfterDeleteUser2Data)/sizeof(expectedFileData_shared_public_AfterDeleteUser2Data[0]),
+ false
+};
+
+testcase_s tc_testDataAfterBackupCreateAll =
+{
+ Test_DataAfterBackupCreateAll,
+ 0,
+ NIL,
+ "Check data backup create all",
+ NIL,
+ 0,
+ expectedKeyData_shared_public_localDB_AfterBackupCreateAll,
+ sizeof(expectedKeyData_shared_public_localDB_AfterBackupCreateAll)/sizeof(expectedKeyData_shared_public_localDB_AfterBackupCreateAll[0]),
+ expectedFileData_shared_public_AfterBackupCreateAll,
+ sizeof(expectedFileData_shared_public_AfterBackupCreateAll)/sizeof(expectedFileData_shared_public_AfterBackupCreateAll[0]),
+ false
+};
+
+testcase_s tc_testDataAfterBackupCreateApplication =
+{
+ Test_DataAfterBackupCreateApplication,
+ 0,
+ NIL,
+ "Check data backup create application",
+ NIL,
+ 0,
+ expectedKeyData_shared_public_localDB_AfterBackupApplication,
+ sizeof(expectedKeyData_shared_public_localDB_AfterBackupApplication)/sizeof(expectedKeyData_shared_public_localDB_AfterBackupApplication[0]),
+ expectedFileData_shared_public_AfterBackupApplication,
+ sizeof(expectedFileData_shared_public_AfterBackupApplication)/sizeof(expectedFileData_shared_public_AfterBackupApplication[0]),
+ false
+};
+
+testcase_s tc_testDataAfterBackupCreateUserAll =
+{
+ Test_DataAfterBackupCreateUserAll,
+ 0,
+ NIL,
+ "Check data backup create user all",
+ NIL,
+ 0,
+ expectedKeyData_shared_public_localDB_AfterBackupUserAll,
+ sizeof(expectedKeyData_shared_public_localDB_AfterBackupUserAll)/sizeof(expectedKeyData_shared_public_localDB_AfterBackupUserAll[0]),
+ expectedFileData_shared_public_AfterBackupUserAll,
+ sizeof(expectedFileData_shared_public_AfterBackupUserAll)/sizeof(expectedFileData_shared_public_AfterBackupUserAll[0]),
+ false
+};
+
+testcase_s tc_testDataAfterBackupCreateUser2SeatAll =
+{
+ Test_DataAfterBackupCreateUser2SeatAll,
+ 0,
+ NIL,
+ "Check data backup create user 2 seat all",
+ NIL,
+ 0,
+ expectedKeyData_shared_public_localDB_AfterBackupUser2SeatAll,
+ sizeof(expectedKeyData_shared_public_localDB_AfterBackupUser2SeatAll)/sizeof(expectedKeyData_shared_public_localDB_AfterBackupUser2SeatAll[0]),
+ expectedFileData_shared_public_AfterBackupUser2SeatAll,
+ sizeof(expectedFileData_shared_public_AfterBackupUser2SeatAll)/sizeof(expectedFileData_shared_public_AfterBackupUser2SeatAll[0]),
+ false
+};
+
+testcase_s tc_test_Recover_App1 =
+{
+ Test_Recover_App1,
+ 0,
+ NIL,
+ "Check reference data structure after App1 recovery",
+ NIL,
+ 0,
+ expected_key_data_after_restore_App1,
+ sizeof(expected_key_data_after_restore_App1)/sizeof(expected_key_data_after_restore_App1[0]),
+ expected_file_data_after_restore_App1,
+ sizeof(expected_file_data_after_restore_App1)/sizeof(expected_file_data_after_restore_App1[0]),
+ false
+};
+
+testcase_s tc_test_Recover_User1 =
+{
+ Test_Recover_User1,
+ 0,
+ NIL,
+ "Check reference data structure after User1 recovery",
+ NIL,
+ 0,
+ expected_App1_key_data_after_restore_User1,
+ sizeof(expected_App1_key_data_after_restore_User1)/sizeof(expected_App1_key_data_after_restore_User1[0]),
+ expected_App1_file_data_after_restore_User1,
+ sizeof(expected_App1_file_data_after_restore_User1)/sizeof(expected_App1_file_data_after_restore_User1[0]),
+ false
+};
+
+testcase_s tc_test_Recover_All =
+{
+ Test_Recover_All,
+ 0,
+ NIL,
+ "Check reference data structure after All recovery",
+ NIL,
+ 0,
+ expected_key_data_after_restore_All,
+ sizeof(expected_key_data_after_restore_All)/sizeof(expected_key_data_after_restore_All[0]),
+ expected_file_data_after_restore_All,
+ sizeof(expected_file_data_after_restore_All)/sizeof(expected_file_data_after_restore_All[0]),
+ false
+};
+
+testcase_s tc_test_Recover_Users =
+{
+ Test_Recover_Users,
+ 0,
+ NIL,
+ "Check reference data structure after All recovery",
+ NIL,
+ 0,
+ expected_key_data_after_restore_Users,
+ sizeof(expected_key_data_after_restore_Users)/sizeof(expected_key_data_after_restore_Users[0]),
+ expected_file_data_after_restore_Users,
+ sizeof(expected_file_data_after_restore_Users)/sizeof(expected_file_data_after_restore_Users[0]),
+ false
+};
+
+testcase_s tc_test_Recover_All_InitialContent =
+{
+ Test_Recover_All_InitialContent,
+ 0,
+ NIL,
+ "Check reference data structure after All InitialContent recovery",
+ NIL,
+ 0,
+ expected_key_data_after_restore_All_InitialContent,
+ sizeof(expected_key_data_after_restore_All_InitialContent)/sizeof(expected_key_data_after_restore_All_InitialContent[0]),
+ expected_file_data_after_restore_All_InitialContent,
+ sizeof(expected_file_data_after_restore_All_InitialContent)/sizeof(expected_file_data_after_restore_All_InitialContent[0]),
+ false
+};
+
+testcase_s tc_test_Recover_App1_InitialContent_From_All =
+{
+ Test_Recover_App1_InitialContent_From_All,
+ 0,
+ NIL,
+ "Check reference data structure after App1 InitialContent recovery from All",
+ NIL,
+ 0,
+ expected_key_data_after_restore_App1_InitialContent,
+ sizeof(expected_key_data_after_restore_App1_InitialContent)/sizeof(expected_key_data_after_restore_App1_InitialContent[0]),
+ expected_file_data_after_restore_App1_InitialContent,
+ sizeof(expected_file_data_after_restore_App1_InitialContent)/sizeof(expected_file_data_after_restore_App1_InitialContent[0]),
+ false
+};
+
+testcase_s tc_test_Recover_App1_InitialContent_From_App1 =
+{
+ Test_Recover_App1_InitialContent_From_App1,
+ 0,
+ NIL,
+ "Check reference data structure after App1 InitialContent recovery from App1",
+ NIL,
+ 0,
+ expected_key_data_after_restore_App1_InitialContent,
+ sizeof(expected_key_data_after_restore_App1_InitialContent)/sizeof(expected_key_data_after_restore_App1_InitialContent[0]),
+ expected_file_data_after_restore_App1_InitialContent,
+ sizeof(expected_file_data_after_restore_App1_InitialContent)/sizeof(expected_file_data_after_restore_App1_InitialContent[0]),
+ false
+};
+
+testcase_s tc_test_Recover_User1_InitialContent_From_All =
+{
+ Test_Recover_User1_InitialContent_From_All,
+ 0,
+ NIL,
+ "Check reference data structure after User1 InitialContent recovery from All",
+ NIL,
+ 0,
+ expected_key_data_after_restore_User1_InitialContent,
+ sizeof(expected_key_data_after_restore_User1_InitialContent)/sizeof(expected_key_data_after_restore_User1_InitialContent[0]),
+ expected_file_data_after_restore_User1_InitialContent,
+ sizeof(expected_file_data_after_restore_User1_InitialContent)/sizeof(expected_file_data_after_restore_User1_InitialContent[0]),
+ false
+};
+
+testcase_s tc_test_Recover_User1_InitialContent_From_User1 =
+{
+ Test_Recover_User1_InitialContent_From_User1,
+ 0,
+ NIL,
+ "Check reference data structure after User1 InitialContent recovery from User1",
+ NIL,
+ 0,
+ expected_key_data_after_restore_User1_InitialContent,
+ sizeof(expected_key_data_after_restore_User1_InitialContent)/sizeof(expected_key_data_after_restore_User1_InitialContent[0]),
+ expected_file_data_after_restore_User1_InitialContent,
+ sizeof(expected_file_data_after_restore_User1_InitialContent)/sizeof(expected_file_data_after_restore_User1_InitialContent[0]),
+ false
+};
+
+testcase_s tc_test_Recover_User2_Seat1_InitialContent_From_All =
+{
+ Test_Recover_User2_Seat1_InitialContent_From_All,
+ 0,
+ NIL,
+ "Check reference data structure after User2 Seat1 InitialContent recovery from All",
+ NIL,
+ 0,
+ expected_key_data_after_restore_User2_Seat1_InitialContent,
+ sizeof(expected_key_data_after_restore_User2_Seat1_InitialContent)/sizeof(expected_key_data_after_restore_User2_Seat1_InitialContent[0]),
+ expected_file_data_after_restore_User2_Seat1_InitialContent,
+ sizeof(expected_file_data_after_restore_User2_Seat1_InitialContent)/sizeof(expected_file_data_after_restore_User2_Seat1_InitialContent[0]),
+ false
+};
+
+testcase_s tc_test_Recover_User2_Seat1_InitialContent_From_User2_Seat1 =
+{
+ Test_Recover_User2_Seat1_InitialContent_From_User2_Seat1,
+ 0,
+ NIL,
+ "Check reference data structure after User2 Seat1 InitialContent recovery from User2 Seat1",
+ NIL,
+ 0,
+ expected_key_data_after_restore_User2_Seat1_InitialContent,
+ sizeof(expected_key_data_after_restore_User2_Seat1_InitialContent)/sizeof(expected_key_data_after_restore_User2_Seat1_InitialContent[0]),
+ expected_file_data_after_restore_User2_Seat1_InitialContent,
+ sizeof(expected_file_data_after_restore_User2_Seat1_InitialContent)/sizeof(expected_file_data_after_restore_User2_Seat1_InitialContent[0]),
+ false
+};
+
+testcase_s tc_test_Restore_Factory_Default_App1 =
+{
+ Test_Restore_Factory_Default_App1,
+ 0,
+ NIL,
+ "Check reference data structure after restore to factory default of App1",
+ NIL,
+ 0,
+ expected_key_data_after_restore_default_App1,
+ sizeof(expected_key_data_after_restore_default_App1)/sizeof(expected_key_data_after_restore_default_App1[0]),
+ expected_file_data_after_restore_default_App1,
+ sizeof(expected_file_data_after_restore_default_App1)/sizeof(expected_file_data_after_restore_default_App1[0]),
+ false
+};
+
+testcase_s tc_test_Restore_Configurable_Default_App1 =
+{
+ Test_Restore_Configurable_Default_App1,
+ 0,
+ NIL,
+ "Check reference data structure after restore to configurable default of App1",
+ NIL,
+ 0,
+ expected_key_data_after_restore_default_App1,
+ sizeof(expected_key_data_after_restore_default_App1)/sizeof(expected_key_data_after_restore_default_App1[0]),
+ expected_file_data_after_restore_default_App1,
+ sizeof(expected_file_data_after_restore_default_App1)/sizeof(expected_file_data_after_restore_default_App1[0]),
+ false
+};
+
+testcase_s tc_test_Restore_Configurable_Default_User1 =
+{
+ Test_Restore_Configurable_Default_User1,
+ 0,
+ NIL,
+ "Check reference data structure after restore to configurable default of User1",
+ NIL,
+ 0,
+ expected_key_data_after_restore_default_User1,
+ sizeof(expected_key_data_after_restore_default_User1)/sizeof(expected_key_data_after_restore_default_User1[0]),
+ expected_file_data_after_restore_default_User1,
+ sizeof(expected_file_data_after_restore_default_User1)/sizeof(expected_file_data_after_restore_default_User1[0]),
+ false
+};
+
+testcase_s tc_test_Restore_Configurable_Default_User2Seat1 =
+{
+ Test_Restore_Configurable_Default_User2Seat1,
+ 0,
+ NIL,
+ "Check reference data structure after restore to configurable default of User2 Seat1",
+ NIL,
+ 0,
+ expected_key_data_after_restore_default_User2Seat1,
+ sizeof(expected_key_data_after_restore_default_User2Seat1)/sizeof(expected_key_data_after_restore_default_User2Seat1[0]),
+ expected_file_data_after_restore_default_User2Seat1,
+ sizeof(expected_file_data_after_restore_default_User2Seat1)/sizeof(expected_file_data_after_restore_default_User2Seat1[0]),
+ false
+};
+
+testcase_s tc_test_Restore_Configurable_Default_User2App1 =
+{
+ Test_Restore_Configurable_Default_User2App1,
+ 0,
+ NIL,
+ "Check reference data structure after restore to configurable default of User2 App1",
+ NIL,
+ 0,
+ expected_key_data_after_restore_default_User2App1,
+ sizeof(expected_key_data_after_restore_default_User2App1)/sizeof(expected_key_data_after_restore_default_User2App1[0]),
+ expected_file_data_after_restore_default_User2App1,
+ sizeof(expected_file_data_after_restore_default_User2App1)/sizeof(expected_file_data_after_restore_default_User2App1[0]),
+ false
+};
+
+testcase_s tc_test_Restore_Factory_Default_All =
+{
+ Test_Restore_Factory_Default_All,
+ 0,
+ NIL,
+ "Check reference data structure after restore to factory default All content",
+ NIL,
+ 0,
+ expected_key_data_after_restore_default_All,
+ sizeof(expected_key_data_after_restore_default_All)/sizeof(expected_key_data_after_restore_default_All[0]),
+ expected_file_data_after_restore_default_All,
+ sizeof(expected_file_data_after_restore_default_All)/sizeof(expected_file_data_after_restore_default_All[0]),
+ false
+};
+
+testcase_s tc_test_Restore_Configurable_Default_All =
+{
+ Test_Restore_Configurable_Default_All,
+ 0,
+ NIL,
+ "Check reference data structure after restore to configurable default All content",
+ NIL,
+ 0,
+ expected_key_data_after_restore_default_All,
+ sizeof(expected_key_data_after_restore_default_All)/sizeof(expected_key_data_after_restore_default_All[0]),
+ expected_file_data_after_restore_default_All,
+ sizeof(expected_file_data_after_restore_default_All)/sizeof(expected_file_data_after_restore_default_All[0]),
+ false
+};
+
+
+testcase_s tc_testImportApp =
+{
+ Test_import_all_app,
+ 0,
+ NIL,
+ "Import all _ app",
+ NIL,
+ 0,
+ expected_key_data_after_import_app_all,
+ sizeof(expected_key_data_after_import_app_all)/sizeof(expected_key_data_after_import_app_all[0]),
+ expected_file_data_after_import_app_all,
+ sizeof(expected_file_data_after_import_app_all)/sizeof(expected_file_data_after_import_app_all[0]),
+ false
+};
+
+testcase_s tc_testImportAll =
+{
+ Test_import_all_all,
+ 0,
+ NIL,
+ "Import all _ all",
+ NIL,
+ 0,
+ expected_key_data_after_import_all_all,
+ sizeof(expected_key_data_after_import_all_all)/sizeof(expected_key_data_after_import_all_all[0]),
+ expected_file_data_after_import_all_all,
+ sizeof(expected_file_data_after_import_all_all)/sizeof(expected_file_data_after_import_all_all[0]),
+ false
+};
+
+testcase_s tc_testImportUser =
+{
+ Test_import_all_user,
+ 0,
+ NIL,
+ "Import all _ user",
+ NIL,
+ 0,
+ expected_key_data_after_import_all_user,
+ sizeof(expected_key_data_after_import_all_user)/sizeof(expected_key_data_after_import_all_user[0]),
+ expected_file_data_after_import_all_user,
+ sizeof(expected_file_data_after_import_all_user)/sizeof(expected_file_data_after_import_all_user[0]),
+ false
+};
+
+
+
+
+/**************************************************************************************************************
+***************************************** ADD TEST CASES HERE ********************************************
+**************************************************************************************************************/
+
+testcase_s* testCases[] =
+{
+ /* add here test cases */
+
+ /* ResourceConfigAdd */
+ /* don't change the order - start */
+ &tc_testResourceConfigAdd_public
+ ,&tc_testResourceConfigAdd_group_10
+ ,&tc_testResourceConfigAdd_group_20
+ ,&tc_testResourceConfigAdd_group_30
+ ,&tc_testResourceConfigAdd_App30
+ ,&tc_testResourceConfigAdd_public_phase_2
+ /* don't change the order - end */
+
+
+ /* Delete */
+ ,&tc_testDataAfterDeleteUser2Data
+
+ /* Backup */
+ ,&tc_testDataAfterBackupCreateAll
+ ,&tc_testDataAfterBackupCreateApplication
+ ,&tc_testDataAfterBackupCreateUserAll
+ ,&tc_testDataAfterBackupCreateUser2SeatAll
+
+ /* Recovery */
+ ,&tc_test_Recover_App1
+ ,&tc_test_Recover_User1
+ ,&tc_test_Recover_All
+ ,&tc_test_Recover_Users
+ ,&tc_test_Recover_All_InitialContent
+ ,&tc_test_Recover_App1_InitialContent_From_All
+ ,&tc_test_Recover_App1_InitialContent_From_App1
+ ,&tc_test_Recover_User1_InitialContent_From_All
+ ,&tc_test_Recover_User1_InitialContent_From_User1
+ ,&tc_test_Recover_User2_Seat1_InitialContent_From_All
+ ,&tc_test_Recover_User2_Seat1_InitialContent_From_User2_Seat1
+
+ /* Restore default */
+ ,&tc_test_Restore_Factory_Default_App1
+ ,&tc_test_Restore_Configurable_Default_App1
+ ,&tc_test_Restore_Configurable_Default_User1
+ ,&tc_test_Restore_Factory_Default_All
+ ,&tc_test_Restore_Configurable_Default_All
+ ,&tc_test_Restore_Configurable_Default_User2Seat1
+ ,&tc_test_Restore_Configurable_Default_User2App1
+
+ /* Import */
+ ,&tc_testImportApp
+ ,&tc_testImportAll
+ ,&tc_testImportUser
+} ;
+
+
+
+/**********************************************************************************************************************************************
+ *********************************************************************************************************************************************/
+
+
+
+typedef struct
+{
+ void* dbHandle ;
+ pstr_t dbPath ;
+ dbType_e dbType ;
+}db_handle_s;
+
+
+
+static bool_t ResetReferenceData(void) ;
+static bool_t CreateFileWithData(pstr_t filePath, pstr_t data, sint_t dataSize) ;
+static bool_t ExecuteTestCase(testcase_s* psTestCase) ;
+
+static sint_t persadmin_serialize_data(PersistenceConfigurationKey_s pc, char* buffer) ;
+
+static bool_t CreateFileWithData(pstr_t filePath, pstr_t data, sint_t dataSize)
+{
+ bool_t bEverythingOK = true ;
+ str_t folderPath[256] ;
+
+ if((NIL == filePath) || (NIL == data) || (dataSize < 0))
+ {
+ bEverythingOK = false ;
+ }
+
+ if(bEverythingOK)
+ {
+ sint_t result = persadmin_get_folder_path(filePath, folderPath, sizeof(folderPath)) ;
+ if(result >= 0)
+ {
+ result = persadmin_create_folder(folderPath) ;
+ if(result < 0)
+ {
+ bEverythingOK = false ;
+ }
+ }
+ }
+
+ if(bEverythingOK)
+ {
+ FILE *pFile = fopen(filePath, "wb") ;
+ if(NIL != pFile)
+ {
+ if(dataSize != fwrite (data , 1 , dataSize , pFile ))
+ {
+ bEverythingOK = false ;
+ }
+ fclose (pFile);
+ }
+ else
+ {
+ bEverythingOK = false ;
+ }
+ }
+
+ return bEverythingOK ;
+}
+
+bool_t InitDataFolder(dataInit_s* psDataInit)
+{
+ bool_t bEverythingOK = true ;
+ sint_t i = 0 ;
+
+ if(0 > persadmin_create_folder(psDataInit->installFolderPath))
+ {
+ bEverythingOK = false ;
+ }
+ #if 0
+ else
+ {
+ str_t buffer[1] ;
+ if(! CreateFileWithData(psDataInit->RCT_pathname, buffer, 0))
+ {
+ bEverythingOK = false ;
+ }
+ }
+ #endif
+
+ if(bEverythingOK)
+ {
+ if( (NIL != psDataInit->RctInitTab)
+ && (NIL != psDataInit->RCT_pathname)
+ && (psDataInit->RctDBtype)
+ )
+ {
+ sint_t rctHandler = persComRctOpen(psDataInit->RCT_pathname, true) ;
+ if(rctHandler >= 0)
+ {
+ for(i = 0 ; i < psDataInit->noEntriesRctInitTab ; i++)
+ {
+ str_t buffer[64] ;
+ persadmin_serialize_data(psDataInit->RctInitTab[i].sRctEntry, buffer) ;
+ psDataInit->RctInitTab[i].sRctEntry.type =
+ psDataInit->RctInitTab[i].bIsKey ? PersistenceResourceType_key : PersistenceResourceType_file ;
+
+ if(0 > persComRctWrite(rctHandler, psDataInit->RctInitTab[i].resourceID, &psDataInit->RctInitTab[i].sRctEntry))
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "persComRctWrite(<%s> <%s> <%s>) FAILED", psDataInit->RCT_pathname, psDataInit->RctInitTab[i].resourceID, buffer) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ break ;
+ }
+ else
+ {
+ sprintf(g_msg, "persComRctWrite(<%s> <%s> <%s> type=%d) done",
+ psDataInit->RCT_pathname, psDataInit->RctInitTab[i].resourceID, buffer, psDataInit->RctInitTab[i].sRctEntry.type) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ }
+ persComRctClose(rctHandler) ;
+ }
+ else
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "persComRctOpen(<<%s>>, true) FAILED", psDataInit->RCT_pathname) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ }
+ }
+
+ if(bEverythingOK)
+ {
+ if(NIL != psDataInit->dataKeysInitTab)
+ {
+ sint_t wcDbHandler = persComDbOpen(psDataInit->wcDBpathname, true) ;
+ sint_t wtDbHandler = persComDbOpen(psDataInit->wtDBpathname, true) ;
+ sprintf(g_msg, "InitDataFolder: wcDbHandler=<%d> wtDbHandler=<%d>", wcDbHandler, wtDbHandler) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ for(i = 0 ; i < psDataInit->noEntriesDataKeysInitTab; i++)
+ {
+ pstr_t dbPath = ( PersistencePolicy_wc == psDataInit->dataKeysInitTab[i].policy) ? psDataInit->wcDBpathname : psDataInit->wtDBpathname ;
+ sint_t dbHandler = ( PersistencePolicy_wc == psDataInit->dataKeysInitTab[i].policy) ? wcDbHandler : wtDbHandler ;
+ if((dbHandler >= 0) && (psDataInit->dataKeysInitTab[i].data))
+ {
+
+ if(0 > persComDbWriteKey(dbHandler, psDataInit->dataKeysInitTab[i].resourceID, psDataInit->dataKeysInitTab[i].data, (strlen(psDataInit->dataKeysInitTab[i].data)+1)))
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "persComDbWriteKey(<%s> <%s> %d) FAILED", dbPath, psDataInit->dataKeysInitTab[i].resourceID, (strlen(psDataInit->dataKeysInitTab[i].data)+1)) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ break ;
+ }
+ else
+ {
+ sprintf(g_msg, "persComDbWriteKey(<%s> <%s> %d) done", dbPath, psDataInit->dataKeysInitTab[i].resourceID, (strlen(psDataInit->dataKeysInitTab[i].data)+1)) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ }
+ }
+ persComDbClose(wcDbHandler) ;
+ persComDbClose(wtDbHandler) ;
+ }
+ }
+
+ if(bEverythingOK)
+ {
+ if(NIL != psDataInit->dataFilesInitTab)
+ {
+ for(i = 0 ; i < psDataInit->noEntriesDataFilesInitTab; i++)
+ {
+ sprintf(g_msg, "CreateFileWithData(%s)...", psDataInit->dataFilesInitTab[i].resourceID) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ if(!CreateFileWithData(psDataInit->dataFilesInitTab[i].resourceID, psDataInit->dataFilesInitTab[i].data, (strlen(psDataInit->dataFilesInitTab[i].data)+1)))
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "CreateFileWithData(%s) FAILED", psDataInit->dataFilesInitTab[i].resourceID) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ break ;
+ }
+ }
+ }
+ }
+
+ if(bEverythingOK)
+ {
+ typedef struct
+ {
+ pstr_t dbPathname ;
+ defaultDataInit_s* psDefaultData ;
+ sint_t iNoOfEntries ;
+ }defaultDataInfo_s ;
+
+ defaultDataInfo_s sDefaultDataTab[] =
+ {
+ {psDataInit->factoryDefaultDBpathname, psDataInit->factoryDefaultInitTab, psDataInit->noEntriesFactoryDefaultInitTab},
+ {psDataInit->configurableDefaultDBpathname, psDataInit->configurableDefaultInitTab, psDataInit->noEntriesConfigurableDefaultInitTab}
+ };
+
+ for(i = 0 ; i < sizeof(sDefaultDataTab)/sizeof(sDefaultDataTab[0]) ; i++)
+ {
+ if( (NIL != sDefaultDataTab[i].dbPathname) && (NIL != sDefaultDataTab[i].psDefaultData))
+ {
+ sint_t hDefaultDB = persComDbOpen(sDefaultDataTab[i].dbPathname, true) ;
+ if(hDefaultDB >= 0)
+ {
+ sint_t j = 0 ;
+ for(j = 0 ; j < sDefaultDataTab[i].iNoOfEntries ; j++)
+ {
+ if(0 > persComDbWriteKey(hDefaultDB, sDefaultDataTab[i].psDefaultData[j].pResourceID,
+ sDefaultDataTab[i].psDefaultData[j].data, (strlen(sDefaultDataTab[i].psDefaultData[j].data)+1)))
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "persComDbWriteKey(<%s> <%s> %d) FAILED",
+ sDefaultDataTab[i].dbPathname, sDefaultDataTab[i].psDefaultData[j].pResourceID, (strlen(sDefaultDataTab[i].psDefaultData[j].data)+1)) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ break ;
+ }
+ else
+ {
+ sprintf(g_msg, "persComDbWriteKey(<%s> <%s> %d) done",
+ sDefaultDataTab[i].dbPathname, sDefaultDataTab[i].psDefaultData[j].pResourceID, (strlen(sDefaultDataTab[i].psDefaultData[j].data)+1)) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ }
+
+ persComDbClose(hDefaultDB) ;
+ }
+ else
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "InitDataFolder: persComDbOpen(%s) failed", sDefaultDataTab[i].dbPathname) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ }
+ }
+
+ }
+
+
+ return bEverythingOK ;
+}
+
+sint_t DeleteFolderContent(pstr_t folderPath)
+{
+ bool_t bEverythingOK = true ;
+ sint_t bytesDeleted = 0 ;
+ pstr_t listingBuffer = NIL ;
+
+ sint_t neededBufferSize = persadmin_list_folder_get_size(folderPath, PersadminFilterAll, false) ;
+ if(neededBufferSize > 0)
+ {
+ listingBuffer = (pstr_t)malloc(neededBufferSize) ;
+ if(NIL != listingBuffer)
+ {
+ if(neededBufferSize != persadmin_list_folder(folderPath, listingBuffer, neededBufferSize, PersadminFilterAll, false))
+ {
+ bEverythingOK = false ;
+ }
+ }
+ else
+ {
+ bEverythingOK = false ;
+ }
+ }
+
+ if(bEverythingOK)
+ {
+ str_t completePath[256] ;
+ sint_t posInBuffer = 0 ;
+ sint_t posRelativePath ;
+ strcpy(completePath, folderPath) ;
+ posRelativePath = strlen(completePath) ;
+ if('/' != completePath[posRelativePath-1])
+ {
+ strcat(completePath, "/") ;
+ posRelativePath = strlen(completePath) ;
+ }
+ while(posInBuffer < neededBufferSize)
+ {
+ sint_t len = strlen(listingBuffer + posInBuffer) ;
+ sint_t bytesDeletedLocal = -1 ;
+ strcpy(completePath + posRelativePath, listingBuffer + posInBuffer) ;
+ if(0 == persadmin_check_if_file_exists(completePath, true))
+ {
+ bytesDeletedLocal = persadmin_delete_folder(completePath) ;
+ }
+ else
+ {
+ if(0 == persadmin_check_if_file_exists(completePath, false))
+ {
+ bytesDeletedLocal = persadmin_delete_file(completePath) ;
+ }
+ else
+ {
+ bEverythingOK = false ;
+ }
+ }
+ if(bytesDeletedLocal >= 0)
+ {
+ bytesDeleted += bytesDeletedLocal ;
+ }
+ else
+ {
+ bEverythingOK = false ;
+ }
+ posInBuffer += (len + 1) ;
+ }
+ }
+
+ if(NIL != listingBuffer)
+ {
+ free(listingBuffer) ;
+ }
+
+ return bEverythingOK ? bytesDeleted : (-1) ;
+}
+
+
+sint_t DeleteFolder(pstr_t folderPath)
+{
+ sint_t bytesDeleted;
+
+ bytesDeleted = DeleteFolderContent(folderPath);
+ if(bytesDeleted < 0)
+ {
+ sprintf(g_msg, "DeleteFolderContent(%s) returned %d", folderPath, bytesDeleted);
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ return bytesDeleted;
+ }
+
+ if(0 == remove(folderPath))
+ {
+ (void)snprintf(g_msg, sizeof(g_msg), "deleted >>%s<<", folderPath) ;
+ }
+ else
+ {
+ (void)snprintf(g_msg, sizeof(g_msg), "DeleteFolder: remove(%s) errno=<%s>", folderPath, strerror(errno));
+ DLT_LOG(persAdminSvcDLTCtx, DLT_LOG_ERROR, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+
+ return bytesDeleted;
+}
+
+sint_t CheckIfFileExists(pstr_t pathname, bool_t bIsFolder)
+{
+ bool_t bEverythingOK = true ;
+ if(NIL == pathname)
+ {
+ bEverythingOK = false ;
+ (void)snprintf(g_msg, sizeof(g_msg), "persadmin_check_if_file_exist: NIL pathname") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_DEBUG, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ else
+ {
+ if('/' != pathname[0])
+ {
+ bEverythingOK = false ;
+ (void)snprintf(g_msg, sizeof(g_msg), "persadmin_check_if_file_exist: not an absolute path(%s)", pathname) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_DEBUG, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ }
+
+ if(bEverythingOK)
+ {
+ struct stat sb;
+
+ if (0 == lstat(pathname, &sb))
+ {
+ /* pathname exist*/
+ if(bIsFolder)
+ {
+ /* check if it is a foler */
+ if( ! S_ISDIR(sb.st_mode))
+ {
+ /* not a folder */
+ bEverythingOK = false ;
+ }
+ }
+ else
+ {
+ /* check if it is a file */
+ if(S_ISDIR(sb.st_mode))
+ {
+ /* it is a folder */
+ bEverythingOK = false ;
+ }
+ }
+ }
+ else
+ {
+ bEverythingOK = false ;
+ }
+ }
+
+ return bEverythingOK ? 0 : PAS_FAILURE ;
+}
+
+static bool_t ResetReferenceData(void)
+{
+ bool_t bEverythingOK = true ;
+ pstr_t referenceDataPath = PERS_ORG_LOCAL_APP_WT_PATH_ ;
+
+ sint_t result = DeleteFolderContent(referenceDataPath) ;
+ sprintf(g_msg, "DeleteFolderContent(%s) returned %d", referenceDataPath, result) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ if(result < 0)
+ {
+ bEverythingOK = false ;
+ }
+
+ if(bEverythingOK)
+ {
+ dataInit_s* sDataInit[] =
+ {
+ &sSharedPubDataInit,
+ &sShared_Group10_DataInit,
+ &sShared_Group20_DataInit,
+ &s_App1_DataInit,
+ &s_App2_DataInit
+ };
+
+ sint_t i = 0 ;
+ for(i = 0 ; i < sizeof(sDataInit)/sizeof(sDataInit[0]) ; i++)
+ {
+ if(! InitDataFolder(sDataInit[i]))
+ {
+ bEverythingOK = false ;
+ }
+ }
+ }
+
+ return bEverythingOK ;
+}
+
+
+static bool_t CheckExpectedDataKeyLocalDB(expected_key_data_localDB_s* pExpectedData)
+{
+ bool_t bEverythingOK = true ;
+
+ str_t dataBuffer[256] ;
+ sint_t readSize = sizeof(dataBuffer) ;
+
+ sint_t dbHandler = persComDbOpen(pExpectedData->dbPath, false) ;
+ if(dbHandler >= 0)
+ {
+ readSize = persComDbReadKey(dbHandler, pExpectedData->key, dataBuffer, sizeof(dataBuffer)) ;
+ persComDbClose(dbHandler) ;
+
+ if(readSize >= 0)
+ {
+ sprintf(g_msg, "Found <%s> in %s :: size = %d data=<%s>",
+ pExpectedData->key, pExpectedData->dbPath, readSize, dataBuffer) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ if(pExpectedData->bExpectedToExist)
+ {
+ if(readSize == pExpectedData->expectedDataSize)
+ {
+ if(0 == memcmp(dataBuffer, pExpectedData->expectedData, pExpectedData->expectedDataSize))
+ {
+ sprintf(g_msg, "\t\t...as expected") ;
+ }
+ else
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "\t\t...FAILURE - expected size = %d data=<%s>", pExpectedData->expectedDataSize, pExpectedData->expectedData) ;
+ }
+ }
+ else
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "\t\t...FAILURE - expected size = %d data=<%s>", pExpectedData->expectedDataSize, pExpectedData->expectedData) ;
+ }
+ }
+ else
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "\t\t...FAILURE - expected to not find key") ;
+ }
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ else
+ {
+ sprintf(g_msg, "Failed to find <%s> in %s",
+ pExpectedData->key, pExpectedData->dbPath) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ if( ! pExpectedData->bExpectedToExist)
+ {
+ sprintf(g_msg, "\t\t...as expected") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ else
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "\t\t...FAILURE - expected size = %d data=<%s>", pExpectedData->expectedDataSize, pExpectedData->expectedData) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+
+ }
+ }
+ else
+ {
+ sprintf(g_msg, "persComDbOpen(%s) returned <%d>", pExpectedData->dbPath, dbHandler) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ bEverythingOK = false ;
+ }
+
+
+ return bEverythingOK ;
+}
+
+/* copied here from PCL */
+static sint_t persadmin_serialize_data(PersistenceConfigurationKey_s pc, char* buffer)
+{
+ sint_t rval = 0;
+ rval = snprintf(buffer, 128, "%d %d %d %s",
+ pc.policy, pc.storage, pc.max_size,
+ pc.reponsible);
+
+ //printf("persadmin_serialize_data: %s \n", buffer);
+ return rval;
+}
+
+
+static bool_t CheckExpectedDataKeyRCT(expected_key_data_RCT_s* pExpectedData)
+{
+ bool_t bEverythingOK = true ;
+ PersistenceConfigurationKey_s sFoundConfig ;
+ str_t serializedFound[256] ;
+ str_t serializedExpected[256] ;
+
+ sint_t rctHandler = persComRctOpen(pExpectedData->dbPath, false);
+ if(rctHandler >= 0)
+ {
+ if(sizeof(PersistenceConfigurationKey_s) == persComRctRead(rctHandler, pExpectedData->key, &sFoundConfig))
+ {
+ persadmin_serialize_data(sFoundConfig, serializedFound) ;
+ persadmin_serialize_data(pExpectedData->sExpectedConfig, serializedExpected) ;
+ sprintf(g_msg, "Found <%s> in %s :: config=<%s>",
+ pExpectedData->key, pExpectedData->dbPath, serializedFound) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ if(pExpectedData->bExpectedToExist)
+ {
+ if(0 == strcmp(serializedFound, serializedExpected))
+ {
+ sprintf(g_msg, "\t\t...as expected") ;
+ }
+ else
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "\t\t...FAILURE - expected config=<%s>", serializedExpected) ;
+ }
+ }
+ else
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "\t\t...FAILURE - expected to not find key") ;
+ }
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ else
+ {
+ sprintf(g_msg, "Failed to find <%s> in %s",
+ pExpectedData->key, pExpectedData->dbPath) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ if( ! pExpectedData->bExpectedToExist)
+ {
+ sprintf(g_msg, "\t\t...as expected") ;
+ }
+ else
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "\t\t...FAILURE - expected config=<%s>", serializedExpected) ;
+ }
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+
+ persComRctClose(rctHandler) ;
+ }
+
+ return bEverythingOK ;
+}
+
+static bool_t GetFileContent(pstr_t absPath, pstr_t dataBuffer_out, sint_t* pSize_inout)
+{
+ bool_t bEverythingOK = true ;
+
+ FILE* pFile = fopen(absPath, "rb") ;
+
+ if(NIL != pFile)
+ {
+ sint_t readSize = fread(dataBuffer_out, 1, *pSize_inout, pFile);
+ if( (readSize >= 0) && (readSize < *pSize_inout))
+ {
+ *pSize_inout = readSize ;
+ }
+ else
+ {
+ if(readSize >= *pSize_inout)
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "GetFileContent(%s) buffer too small (%d)", absPath, *pSize_inout) ;
+ }
+ else
+ {
+ bEverythingOK = false ;
+ }
+ }
+
+ fclose(pFile) ;
+ }
+
+ return bEverythingOK ;
+}
+
+static bool_t CheckExpectedDataFile(expected_file_data_s* pExpectedData)
+{
+ bool_t bEverythingOK = true ;
+
+ str_t dataBuffer[256] ;
+ sint_t size = sizeof(dataBuffer) ;
+
+ if(0 <= persadmin_check_if_file_exists(pExpectedData->filename, false))
+ {
+ /* file found */
+ memset(dataBuffer, 0x0, sizeof(dataBuffer)) ;
+ if(GetFileContent(pExpectedData->filename, dataBuffer, &size))
+ {
+ sprintf(g_msg, "Found <%s> :: size = %d data=<%s>",
+ pExpectedData->filename, size, dataBuffer) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ if(pExpectedData->bExpectedToExist)
+ {
+ if(size == pExpectedData->expectedDataSize)
+ {
+ if(0 == memcmp(dataBuffer, pExpectedData->expectedData, pExpectedData->expectedDataSize))
+ {
+ sprintf(g_msg, "\t\t...as expected") ;
+ }
+ else
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "\t\t...FAILURE - expected size = %d data=<%s>", pExpectedData->expectedDataSize, pExpectedData->expectedData) ;
+ }
+ }
+ else
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "\t\t...FAILURE - expected size = %d data=<%s>", pExpectedData->expectedDataSize, pExpectedData->expectedData) ;
+ }
+ }
+ else
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "\t\t...FAILURE - expected to not find file") ;
+ }
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ else
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "GetFileContent(%s) failed", pExpectedData->filename) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ }
+ else
+ {
+ sprintf(g_msg, "Failed to find <%s>", pExpectedData->filename) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ if( ! pExpectedData->bExpectedToExist)
+ {
+ sprintf(g_msg, "\t\t...as expected") ;
+ }
+ else
+ {
+ bEverythingOK = false ;
+ sprintf(g_msg, "\t\t...FAILURE - expected size = %d data=<%s>", pExpectedData->expectedDataSize, pExpectedData->expectedData) ;
+ }
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+
+ return bEverythingOK ;
+}
+
+
+static bool_t ExecuteTestCase(testcase_s* psTestCase)
+{
+ bool_t bTestResult = true ;
+ sprintf(g_msg, "ExecuteTestCase: %s", psTestCase->testCaseDescription) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+
+ if( ! psTestCase->bSkipDataReset)
+ {
+ sprintf(g_msg, "First init reference data...") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ if(ResetReferenceData())
+ {
+ sprintf(g_msg, "ResetReferenceData - Done") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ else
+ {
+ bTestResult = false ;
+ sprintf(g_msg, "ResetReferenceData - Failed") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ }
+ else
+ {
+ sprintf(g_msg, "Skip ResetReferenceData") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+
+
+ if(bTestResult)
+ {
+ if(NIL != psTestCase->TestCaseFunction)
+ {
+ sprintf(g_msg, "Call test case function...") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ bTestResult = psTestCase->TestCaseFunction(psTestCase->iParam, psTestCase->pvoidParam) ;
+ sprintf(g_msg, "Test case function returned with %s", bTestResult ? "SUCCESS" : "FAILURE") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ else
+ {
+ sprintf(g_msg, "Skip calling test case function...") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+ }
+
+ if(bTestResult)
+ {
+ sint_t i = 0 ;
+ sint_t noOfFailedTests = 0 ;
+ sint_t noOfSuccessfulTests = 0 ;
+
+ sprintf(g_msg, "+++++++++++++++++++++ Check data key RCT START ... +++++++++++++++++++++++++++") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ for(i = 0 ; i < psTestCase->noItemsInExpectedKeyDataRCT; i++)
+ {
+ if( ! CheckExpectedDataKeyRCT(&psTestCase->pExpectedKeyDataRCT[i]))
+ {
+ noOfFailedTests++ ;
+ bTestResult = false ;
+ }
+ else
+ {
+ noOfSuccessfulTests++ ;
+ }
+ }
+ sprintf(g_msg, "++++++++ Check data key RCT SUMMARY: tests ; %d executed %d success %d failed +++++++++++++",
+ noOfFailedTests + noOfSuccessfulTests, noOfSuccessfulTests, noOfFailedTests) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+
+ noOfFailedTests = 0 ;
+ noOfSuccessfulTests = 0 ;
+ sprintf(g_msg, "+++++++++++++++++++++ Check data key localDB START ... +++++++++++++++++++++++++++") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ for(i = 0 ; i < psTestCase->noItemsInExpectedKeyDataLocalDB ; i++)
+ {
+ if( ! CheckExpectedDataKeyLocalDB(&psTestCase->pExpectedKeyDataLocalDB[i]))
+ {
+ noOfFailedTests++ ;
+ bTestResult = false ;
+ }
+ else
+ {
+ noOfSuccessfulTests++ ;
+ }
+ }
+ sprintf(g_msg, "++++++++ Check data key localDB SUMMARY: tests ; %d executed %d success %d failed +++++++++++++",
+ noOfFailedTests + noOfSuccessfulTests, noOfSuccessfulTests, noOfFailedTests) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+
+ noOfFailedTests = 0 ;
+ noOfSuccessfulTests = 0 ;
+ sprintf(g_msg, "+++++++++++++++++++++ Check data file START ... +++++++++++++++++++++++++++") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ for(i = 0 ; i < psTestCase->noItemsInExpectedFileData; i++)
+ {
+ if( ! CheckExpectedDataFile(&psTestCase->pExpectedFileData[i]))
+ {
+ noOfFailedTests++ ;
+ bTestResult = false ;
+ }
+ else
+ {
+ noOfSuccessfulTests++ ;
+ }
+ }
+ sprintf(g_msg, "++++++++ Check data file SUMMARY: tests ; %d executed %d success %d failed +++++++++++++",
+ noOfFailedTests + noOfSuccessfulTests, noOfSuccessfulTests, noOfFailedTests) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+
+ return bTestResult ;
+}
+
+
+bool_t ExecuteTestCases(sint_t *pNoOfTestCases,
+ sint_t *pNoOfTestCasesSuccessful,
+ sint_t *pNoOfTestCasesFailed )
+{
+ bool_t bTestsResult = true ;
+ sint_t noOfTestCasesSuccessful = 0 ;
+ sint_t noOfTestCasesFailed = 0 ;
+ sint_t i = 0 ;
+ for(i = 0 ; i < sizeof(testCases)/sizeof(testCases[0]) ; i++)
+ {
+ bool_t bCurrentTestcaseResult = true ;
+ sprintf(g_msg, "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ sprintf(g_msg, "++++++++++++++++++++++++ Test Case No %d Started... +++++++++++++++++++++++++++++++++++++++", i) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ sprintf(g_msg, "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ if(ExecuteTestCase(testCases[i]))
+ {
+ noOfTestCasesSuccessful++ ;
+ }
+ else
+ {
+ bCurrentTestcaseResult = false ;
+ noOfTestCasesFailed++ ;
+ bTestsResult = false ;
+ }
+ sprintf(g_msg, "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ sprintf(g_msg, "++++++++++++++++++++++++ Test Case No %d Completed %s +++++++++++++++++++++++++++++++++++++++", i, bCurrentTestcaseResult ? "OK" : "with EROORS") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ sprintf(g_msg, "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ }
+
+ sprintf(g_msg, "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ sprintf(g_msg, "++++++++ SUMMARY: Test cases <%d executed> <%d ok> <%d failed> ++++++++++++++++++++++++++++", noOfTestCasesSuccessful+noOfTestCasesFailed, noOfTestCasesSuccessful, noOfTestCasesFailed) ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ sprintf(g_msg, "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING(g_msg));
+ if(NULL != pNoOfTestCases)
+ {
+ *pNoOfTestCases = sizeof(testCases)/sizeof(testCases[0]);
+ }
+
+ if(NULL != pNoOfTestCasesSuccessful)
+ {
+ *pNoOfTestCasesSuccessful = noOfTestCasesSuccessful;
+ }
+
+ if(NULL != pNoOfTestCasesFailed)
+ {
+ *pNoOfTestCasesFailed = noOfTestCasesFailed;
+ }
+
+ return bTestsResult ;
+}
+
+
+
+
+
+// ===============================
+
+
+
+// ===============================
+
+
+int main(void)
+{
+ char context[16] ;
+ char contextID[16] ;
+ char appID[16] ;
+ pid_t pid = getpid() ;
+
+ sprintf(context, "ID_%d", pid) ;
+ sprintf(contextID, "CONTEXT_%d", pid) ;
+ sprintf(appID, "APP_%d", pid) ;
+ DLT_REGISTER_APP(appID,"PAS");
+ //DLT_REGISTER_CONTEXT(testPersAdminDLTCtx,"TestPAS", contextID);
+ DLT_REGISTER_CONTEXT(persAdminSvcDLTCtx,"TestPAS", contextID);
+
+
+ //sprintf(g_msg, "\n\n++++++++++ Test PAS - START +++++++++++++++++\n\n") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("++++++++++ Test PAS - START +++++++++++++++++"));
+
+ ExecuteTestCases(NULL, NULL, NULL) ;
+
+ //sprintf(g_msg, "\n\n++++++++++ Test PAS - FINISH ++++++++++++++++\n\n") ;
+ DLT_LOG(testPersAdminDLTCtx, DLT_LOG_INFO, DLT_STRING(LT_HDR), DLT_STRING("++++++++++ Test PAS - FINISH ++++++++++++++++"));
+ /* Init and run the main DBus loop */
+ persadmin_RunDBusMainLoop();
+
+ return 1 ;
+}