From 7e6f28e195aea1941d1034989be5811dbbd1c2a3 Mon Sep 17 00:00:00 2001 From: htt1997 Date: Mon, 6 Feb 2023 15:25:48 +0800 Subject: [PATCH 1/2] update Signed-off-by: htt1997 --- .../interfaces/inner_api/common/BUILD.gn | 1 + .../inner_api/common/libdatashare_common.map | 27 + data_share/test/native/BUILD.gn | 43 +- .../datashare_ext_bundle/AppScope/app.json | 13 + .../resources/base/element/string.json | 8 + .../resources/base/media/app_icon.png | Bin 0 -> 6790 bytes .../resource/datashare_ext_bundle/BUILD.gn | 45 + .../main/ets/Application/MyAbilityStage.ts | 22 + .../DataShareExtAbility.ts | 192 ++ .../src/main/ets/MainAbility/MainAbility.ts | 252 +++ .../entry/src/main/ets/pages/index.ets | 341 +++ .../entry/src/main/module.json | 50 + .../main/resources/base/element/color.json | 8 + .../main/resources/base/element/string.json | 28 + .../src/main/resources/base/media/icon.png | Bin 0 -> 6790 bytes .../resources/base/profile/main_pages.json | 5 + .../signature/openharmony_sx.p7b | Bin 0 -> 3614 bytes .../test/native/resource/ohos_test/BUILD.gn | 22 + .../native/resource/ohos_test/ohos_test.xml | 26 + .../src/slientaccess_test.cpp | 182 ++ datamgr_service/BUILD.gn | 1 - .../src/account_delegate_normal_impl.cpp | 2 +- .../app/src/checker/bundle_checker.cpp | 2 +- .../service/kvdb/kvdb_service_impl.cpp | 33 +- .../service/kvdb/kvdb_service_impl.h | 2 + .../service/kvdb/kvdb_service_stub.cpp | 33 + .../service/kvdb/kvdb_service_stub.h | 2 + .../distributeddataservice/test/BUILD.gn | 695 ------ .../src/distributed_kv_data_manager.cpp | 16 +- .../distributed_kv_data_manager_test.cpp | 26 +- .../kvdb/include/backup_manager.h | 3 +- .../innerkitsimpl/kvdb/include/dev_manager.h | 7 +- .../kvdb/include/kv_types_util.h | 8 +- .../innerkitsimpl/kvdb/include/kvdb_service.h | 12 +- .../kvdb/include/kvdb_service_client.h | 2 + .../kvdb/include/security_manager.h | 39 +- .../kvdb/include/single_store_impl.h | 1 + .../kvdb/include/store_factory.h | 20 +- .../innerkitsimpl/kvdb/src/backup_manager.cpp | 28 +- .../innerkitsimpl/kvdb/src/dev_manager.cpp | 117 +- .../innerkitsimpl/kvdb/src/kv_types_util.cpp | 12 + .../kvdb/src/kvdb_service_client.cpp | 24 + .../kvdb/src/security_manager.cpp | 39 +- .../kvdb/src/single_store_impl.cpp | 39 +- .../innerkitsimpl/kvdb/src/store_factory.cpp | 144 +- .../innerkitsimpl/kvdb/src/store_manager.cpp | 7 +- .../innerkitsimpl/kvdb/src/store_util.cpp | 4 +- .../innerkitsimpl/kvdb/test/BUILD.gn | 24 + .../kvdb/test/backup_manager_test.cpp | 4 +- .../kvdb/test/dev_manager_test.cpp | 52 +- .../test/single_store_impl_get_top_test.cpp | 6 +- .../kvdb/test/single_store_impl_test.cpp | 206 +- .../kvdb/test/store_factory_test.cpp | 350 +++ .../kvdb/test/store_util_test.cpp | 4 +- .../distributeddata/include/napi_queue.h | 9 + .../src/js_device_kv_store.cpp | 2 +- .../distributeddata/src/js_field_node.cpp | 2 +- .../distributeddata/src/js_kv_manager.cpp | 10 +- .../src/js_kv_store_resultset.cpp | 2 +- .../distributeddata/src/js_query.cpp | 2 +- .../distributeddata/src/js_schema.cpp | 2 +- .../src/js_single_kv_store.cpp | 2 +- .../distributeddata/src/napi_queue.cpp | 23 +- .../distributeddata/src/uv_queue.cpp | 8 + .../distributedkvstore/include/napi_queue.h | 9 + .../src/js_device_kv_store.cpp | 2 +- .../distributedkvstore/src/js_error_utils.cpp | 21 +- .../distributedkvstore/src/js_field_node.cpp | 2 +- .../distributedkvstore/src/js_kv_manager.cpp | 7 +- .../src/js_kv_store_resultset.cpp | 2 +- .../distributedkvstore/src/js_query.cpp | 2 +- .../distributedkvstore/src/js_schema.cpp | 2 +- .../src/js_single_kv_store.cpp | 2 +- .../distributedkvstore/src/js_util.cpp | 8 +- .../distributedkvstore/src/napi_queue.cpp | 15 +- .../distributedkvstore/src/uv_queue.cpp | 8 + .../frameworks/libs/distributeddb/BUILD.gn | 1 + .../common/include/notification_chain.h | 6 +- .../common/include/runtime_context.h | 2 + .../common/src/notification_chain.cpp | 19 +- .../common/src/runtime_context_impl.cpp | 13 + .../common/src/runtime_context_impl.h | 3 + .../common/src/time_tick_monitor.cpp | 35 +- .../common/src/time_tick_monitor.h | 2 + .../interfaces/include/kv_store_nb_delegate.h | 1 + .../src/kv_store_delegate_manager.cpp | 1 + .../storage/include/kvdb_properties.h | 1 + .../storage/src/kvdb_manager.cpp | 8 +- .../storage/src/kvdb_properties.cpp | 1 + ...lite_single_ver_natural_store_connection.h | 2 +- .../storage/src/sync_able_kvdb.cpp | 2 +- .../syncer/src/generic_syncer.cpp | 14 + .../distributeddb/syncer/src/generic_syncer.h | 2 + .../test/fuzztest/delegate_fuzzer/BUILD.gn | 203 +- .../test/fuzztest/fileoper_fuzzer/BUILD.gn | 204 +- .../test/fuzztest/importfile_fuzzer/BUILD.gn | 203 +- .../iprocesscommunicator_fuzzer/BUILD.gn | 203 +- .../kvdelegatemanager_fuzzer/BUILD.gn | 203 +- .../fuzztest/kvstoreresultset_fuzzer/BUILD.gn | 203 +- .../test/fuzztest/nbdelegate_fuzzer/BUILD.gn | 203 +- .../test/fuzztest/parseckeck_fuzzer/BUILD.gn | 201 +- .../test/fuzztest/query_fuzzer/BUILD.gn | 200 +- .../test/fuzztest/rekey_fuzzer/BUILD.gn | 203 +- .../relationalstoredelegate_fuzzer/BUILD.gn | 202 +- .../relationalstoremanager_fuzzer/BUILD.gn | 203 +- .../fuzztest/schemadelegate_fuzzer/BUILD.gn | 203 +- .../test/fuzztest/sync_fuzzer/BUILD.gn | 203 +- .../distributeddb/test/moduletest/BUILD.gn | 1 + .../include/distributeddb_nb_test_tools.h | 5 +- .../src/distributed_rdb_tools.cpp | 31 +- .../src/distributeddb_schema_test_tools.cpp | 2 +- .../distributed_crud_transaction_tools.h | 4 +- .../distributed_crud_transaction_tools.cpp | 8 +- .../src/distributeddb_kv_backup_test.cpp | 4 +- .../src/distributeddb_kv_batch_crud_test.cpp | 2 + ...distributeddb_kv_concurrency_crud_test.cpp | 2 + .../src/distributeddb_kv_create_test.cpp | 2 + .../src/distributeddb_kv_crud_test.cpp | 4 +- .../distributeddb_kv_observer_snap_test.cpp | 4 +- .../src/distributeddb_kv_observer_test.cpp | 2 + .../src/distributeddb_kv_realdel_test.cpp | 4 +- ...distributeddb_kv_transaction_perf_test.cpp | 4 +- .../src/distributeddb_kv_transaction_test.cpp | 4 +- .../src/distributeddb_nb_backup_test.cpp | 3 +- .../src/distributeddb_nb_batch_crud_test.cpp | 56 + .../src/distributeddb_nb_cursor_testcase.cpp | 64 +- ...interfaces_nb_delegate_schema_put_test.cpp | 56 + ...tributeddb_interfaces_nb_delegate_test.cpp | 174 ++ .../distributeddb_mock_sync_module_test.cpp | 18 +- ...ributeddb_relational_ver_p2p_sync_test.cpp | 13 +- .../distributeddata/include/store_errno.h | 5 +- .../innerkits/distributeddata/include/types.h | 2 +- .../innerkitsimpl/kvdb/src/store_util.cpp | 8 +- .../DeviceKvStoreKVCallbackJsTest.js | 168 +- .../DeviceKvStoreKVPromiseJsTest.js | 395 ++-- .../SingleKvStoreKVCallbackJsTest.js | 240 +-- .../SingleKvStoreKVPromiseJsTest.js | 364 ++-- .../frameworks/native/src/task_pool.cpp | 10 +- preferences/interfaces/inner_api/BUILD.gn | 2 + .../inner_api/include/preferences.h | 210 ++ .../inner_api/include/preferences_errno.h | 85 + .../inner_api/include/preferences_helper.h | 38 + .../inner_api/include/preferences_observer.h | 12 + .../inner_api/include/preferences_value.h | 213 ++ .../src/napi_rdb_predicates.cpp | 12 +- .../src/data_ability_predicates.cpp | 6 +- .../native/rdb/include/rdb_security_manager.h | 1 + .../native/rdb/mock/include/rdb_store_impl.h | 1 + .../native/rdb/src/abs_shared_result_set.cpp | 1 - .../native/rdb/src/rdb_security_manager.cpp | 33 +- .../native/rdb/src/rdb_store_impl.cpp | 4 +- .../src/rdb_result_set_bridge.cpp | 43 +- .../include/rdb_result_set_bridge.h | 6 +- .../src/RdbStoreDataShareJsunit.test.js | 9 +- .../src/RdbStoreDistributedJsunit.test.js | 43 +- .../src/RdbStoreResultSetJsunit.test.js | 1870 ++++++++-------- ...reBackupRestoreWithFAContextJsunit.test.js | 3 +- ...oreCreateDeleteWithFAContextJsunit.test.js | 6 +- .../unittest/src/RdbstoreDeleteJsunit.test.js | 6 +- .../src/RdbstoreEncryptionJsunit.test.js | 4 +- .../unittest/src/RdbstoreInsertJsunit.test.js | 8 +- ...bstorePredicatesComplexFiledJsunit.test.js | 5 +- .../src/RdbstorePredicatesJoinBJsunit.test.js | 31 +- .../src/RdbstorePredicatesJoinJsunit.test.js | 8 +- .../src/RdbstorePredicatesJsunit.test.js | 1283 +++++------ .../src/RdbstoreRdbstoreJsunit.test.js | 15 +- .../src/RdbstoreStoreExcuteSqlJsunit.test.js | 203 +- .../src/RdbstoreTransactionJsunit.test.js | 120 +- .../unittest/src/RdbstoreUpdateJsunit.test.js | 21 +- .../src/RdbStoreDataShareJsunit.test.js | 134 +- .../src/RdbStoreDistributedJsunit.test.js | 43 +- .../src/RdbStoreResultSetJsunit.test.js | 1894 +++++++++-------- ...reBackupRestoreWithFAContextJsunit.test.js | 3 +- .../src/RdbstoreCallBackJsunit.test.js | 79 +- ...oreCreateDeleteWithFAContextJsunit.test.js | 6 +- .../unittest/src/RdbstoreDeleteJsunit.test.js | 6 +- .../src/RdbstoreEncryptionJsunit.test.js | 9 +- .../unittest/src/RdbstoreInsertJsunit.test.js | 11 +- ...bstorePredicatesComplexFiledJsunit.test.js | 5 +- .../src/RdbstorePredicatesJoinBJsunit.test.js | 31 +- .../src/RdbstorePredicatesJoinJsunit.test.js | 6 +- .../src/RdbstorePredicatesJsunit.test.js | 1283 +++++------ .../src/RdbstorePromiseJsunit.test.js | 6 +- .../src/RdbstoreRdbstoreJsunit.test.js | 11 +- .../src/RdbstoreStoreExcuteSqlJsunit.test.js | 203 +- .../src/RdbstoreTransactionJsunit.test.js | 120 +- .../unittest/src/RdbstoreUpdateJsunit.test.js | 29 +- 187 files changed, 10592 insertions(+), 5569 deletions(-) create mode 100644 data_share/interfaces/inner_api/common/libdatashare_common.map create mode 100644 data_share/test/native/resource/datashare_ext_bundle/AppScope/app.json create mode 100644 data_share/test/native/resource/datashare_ext_bundle/AppScope/resources/base/element/string.json create mode 100644 data_share/test/native/resource/datashare_ext_bundle/AppScope/resources/base/media/app_icon.png create mode 100644 data_share/test/native/resource/datashare_ext_bundle/BUILD.gn create mode 100644 data_share/test/native/resource/datashare_ext_bundle/entry/src/main/ets/Application/MyAbilityStage.ts create mode 100644 data_share/test/native/resource/datashare_ext_bundle/entry/src/main/ets/DataShareExtAbility/DataShareExtAbility.ts create mode 100644 data_share/test/native/resource/datashare_ext_bundle/entry/src/main/ets/MainAbility/MainAbility.ts create mode 100644 data_share/test/native/resource/datashare_ext_bundle/entry/src/main/ets/pages/index.ets create mode 100644 data_share/test/native/resource/datashare_ext_bundle/entry/src/main/module.json create mode 100644 data_share/test/native/resource/datashare_ext_bundle/entry/src/main/resources/base/element/color.json create mode 100644 data_share/test/native/resource/datashare_ext_bundle/entry/src/main/resources/base/element/string.json create mode 100644 data_share/test/native/resource/datashare_ext_bundle/entry/src/main/resources/base/media/icon.png create mode 100644 data_share/test/native/resource/datashare_ext_bundle/entry/src/main/resources/base/profile/main_pages.json create mode 100644 data_share/test/native/resource/datashare_ext_bundle/signature/openharmony_sx.p7b create mode 100644 data_share/test/native/resource/ohos_test/BUILD.gn create mode 100644 data_share/test/native/resource/ohos_test/ohos_test.xml create mode 100644 data_share/test/native/unittest/mediadatashare_test/src/slientaccess_test.cpp create mode 100644 kv_store/frameworks/innerkitsimpl/kvdb/test/store_factory_test.cpp diff --git a/data_share/interfaces/inner_api/common/BUILD.gn b/data_share/interfaces/inner_api/common/BUILD.gn index 95bd8587..ace184d0 100644 --- a/data_share/interfaces/inner_api/common/BUILD.gn +++ b/data_share/interfaces/inner_api/common/BUILD.gn @@ -52,6 +52,7 @@ ohos_shared_library("datashare_common") { public_deps = [] configs = [ ":ability_config" ] + version_script = "libdatashare_common.map" external_deps = [ "ability_base:zuri", diff --git a/data_share/interfaces/inner_api/common/libdatashare_common.map b/data_share/interfaces/inner_api/common/libdatashare_common.map new file mode 100644 index 00000000..fc3862c6 --- /dev/null +++ b/data_share/interfaces/inner_api/common/libdatashare_common.map @@ -0,0 +1,27 @@ +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +1.0 { + global: + *DataShareAbsPredicates*; + *DataShareJSUtils*; + *DataSharePredicates*; + *DataShareResultSet*; + *DataShareValueObject*; + *DataShareValuesBucket*; + *Error*; + *ISharedResultSet*; + *ITypesUtils*; + local: + *; +}; \ No newline at end of file diff --git a/data_share/test/native/BUILD.gn b/data_share/test/native/BUILD.gn index 360be1d7..722b949d 100644 --- a/data_share/test/native/BUILD.gn +++ b/data_share/test/native/BUILD.gn @@ -16,8 +16,14 @@ import("//foundation/multimedia/media_library/media_library.gni") group("unittest") { testonly = true + deps = [] - deps = [ ":NativeDataShareTest" ] + deps += [ + ":NativeDataShareTest", + ":SlientAccessTest", + "resource/datashare_ext_bundle:datashare_ext", + "resource/ohos_test:copy_ohos_test", + ] } ohos_unittest("NativeDataShareTest") { @@ -74,3 +80,38 @@ ohos_unittest("NativeDataShareTest") { "samgr:samgr_proxy", ] } + +ohos_unittest("SlientAccessTest") { + module_out_path = "data_share/native_datashare" + + include_dirs = [ + "//base/security/access_token/frameworks/common/include", + "//base/hiviewdfx/hilog/interfaces/native/innerkits/include", + "//foundation/aafwk/standard/interfaces/innerkits/uri/include", + "//commonlibrary/c_utils/base/include", + "//utils/system/safwk/native/include", + "//foundation/communication/ipc/interfaces/innerkits/ipc_core/include", + ] + + sources = [ "./unittest/mediadatashare_test/src/slientaccess_test.cpp" ] + + deps = [ + "${ABILITY_RUNTIME_INNER_API_PATH}/ability_manager:ability_manager", + "${ABILITY_RUNTIME_PATH}/frameworks/native/ability/native:abilitykit_native", + "//base/security/access_token/interfaces/innerkits/token_setproc:libtoken_setproc", + ] + + external_deps = [ + "ability_base:want", + "ability_base:zuri", + "access_token:libaccesstoken_sdk", + "access_token:libnativetoken", + "c_utils:utils", + "data_share:datashare_common", + "data_share:datashare_consumer", + "hilog_native:libhilog", + "ipc:ipc_core", + "safwk:system_ability_fwk", + "samgr:samgr_proxy", + ] +} diff --git a/data_share/test/native/resource/datashare_ext_bundle/AppScope/app.json b/data_share/test/native/resource/datashare_ext_bundle/AppScope/app.json new file mode 100644 index 00000000..8ec8c76a --- /dev/null +++ b/data_share/test/native/resource/datashare_ext_bundle/AppScope/app.json @@ -0,0 +1,13 @@ +{ + "app": { + "bundleName": "com.acts.datasharetest", + "vendor": "example", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name", + "distributedNotificationEnabled": true, + "minAPIVersion": 9, + "targetAPIVersion": 9 + } +} diff --git a/data_share/test/native/resource/datashare_ext_bundle/AppScope/resources/base/element/string.json b/data_share/test/native/resource/datashare_ext_bundle/AppScope/resources/base/element/string.json new file mode 100644 index 00000000..740e505a --- /dev/null +++ b/data_share/test/native/resource/datashare_ext_bundle/AppScope/resources/base/element/string.json @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "datasharetest" + } + ] +} diff --git a/data_share/test/native/resource/datashare_ext_bundle/AppScope/resources/base/media/app_icon.png b/data_share/test/native/resource/datashare_ext_bundle/AppScope/resources/base/media/app_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c GIT binary patch literal 6790 zcmX|G1ymHk)?T_}Vd;>R?p|tHQo6fg38|$UVM!6BLrPFWk?s;$LOP{GmJpBl$qoSA!PUg~PA65-S00{{S`XKG6NkG0RgjEntPrmV+?0|00mu7;+5 zrdpa{2QLqPJ4Y{j7=Mrl{BaxrkdY69+c~(w{Fv-v&aR%aEI&JYSeRTLWm!zbv;?)_ ziZB;fwGbbeL5Q}YLx`J$lp~A09KK8t_z}PZ=4ZzgdeKtgoc+o5EvN9A1K1_<>M?MBqb#!ASf&# zEX?<)!RH(7>1P+j=jqG(58}TVN-$psA6K}atCuI!KTJD&FMmH-78ZejBm)0qc{ESp z|LuG1{QnBUJRg_E=h1#XMWt2%fcoN@l7eAS!Es?Q+;XsRNPhiiE=@AqlLkJzF`O18 zbsbSmKN=aaq8k3NFYZfDWpKmM!coBU0(XnL8R{4=i|wi{!uWYM2je{U{B*K2PVdu&=E zTq*-XsEsJ$u5H4g6DIm2Y!DN`>^v|AqlwuCD;w45K0@eqauiqWf7l&o)+YLHm~|L~ z7$0v5mkobriU!H<@mVJHLlmQqzQ3d6Rh_-|%Yy2li*tHO>_vcnuZ7OR_xkAIuIU&x z-|8Y0wj|6|a6_I(v91y%k_kNw6pnkNdxjqG8!%Vz_d%c_!X+6-;1`GC9_FpjoHev5fEV7RhJ>r=mh-jp$fqbqRJ=obwdgLDVP5+s zy1=_DWG0Y-Jb3t^WXmkr(d9~08k-|#Ly zaNOmT(^9tIb&eb4%CzIT zAm3CUtWSr1t4?h1kk#NBi{U|pJslvME{q|_eS^3En>SOqSxyuN1x;Is@8~m?*>}** znrRFArP!K_52RpX*&JHMR<^lVdm8ypJ}0R(SD(51j;6@ni$6bQ+2XL+R^|NnSp5}(kzvMZ^(@4fD_{QVu$(&K6H|C37TG1Am9Re{<<3gd zh@`>;BqkXMW&p0T6rt|iB$)~CvFe(XC)F9WgAZn*0@t$oZo;!*}r@_`h?KKH&6A@3= zISXoQB+~`op>NP-buiA*^0n{@i{_?MRG)&k)c)k_F+-2Lud!S9pc+i`s74NpBCaGF zXN+pHkubw*msGBTY27BKHv)RRh3;nMg4&$fD_6X9Vt~;_4D+5XPH~#Kn-yjcy!$}1 zigv#FNY>TqMhtIBb@UoF!cE~Q8~;!Pek>SQQwHnHuWKoVBosAiOr}q>!>aE*Krc)V zBUMEcJ5NU0g8}-h6i1zpMY9>m4ne?=U2~`w7K7Q0gB_=p@$5K7p6}thw z-~3dMj?YNX2X$lZ+7ngQ$=s}3mizNN@kE%OtB)?c&i~2L55z8^=yz;xMHLmlY>&Q# zJj?!)M#q_SyfkQh)k?j8IfLtB)ZCp|*vf4_B zos?73yd^h-Ac+;?E4*bpf=o*^3x3-`TVjbY4n6!EN10K6o@fxdyps05Vo3PU)otB} z`3kR+2w7_C#8Z!q`J)p{Vh!+m9-UP!$STp+Hb}}#@#_u^SsUQg<}59< zTvH3%XS4G+6FF^(m6bVF&nSUIXcl;nw{=H$%fgeJ>CgDYiLdpDXr{;-AnG z8dvcrHYVMI&`R6;GWekI@Ir3!uo)oz4^{6q0m^}@f2tM9&=YHNi6-?rh0-{+k@cQm zdp`g#YdQn%MDVg2GR>wZ`n2<0l4)9nx1Wfr&!Dvz=bPwU!h2S?ez6MVc5APE4-xLB zi&W9Q8k2@0w!C53g?iAIQ}~p*3O(@zja6KQ=M3zfW*_6o5SwR-)6VBh~m7{^-=MC-owYH5-u40a}a0liho3QZZ5L{bS_xM1)4}19)zTU$$MY zq3eZML1WC{K%YFd`Be0M-rkO^l?h{kM{$2oK1*A@HVJ57*yhDkUF!2WZ&oA4Y-sK( zCY69%#`mBCi6>6uw(x4gbFaP0+FD*JKJ-q!F1E?vLJ+d35!I5d7@^eU?(CS|C^tmI5?lv@s{{*|1F zFg|OzNpZ0hxljdjaW%45O0MOttRrd(Z?h{HYbB-KFUx&9GfFL3b8NwZ$zNu)WbBD` zYkj$^UB5%3Pj1MDr>S2Ejr9pUcgA!;ZG!@{uAy12)vG=*^9-|dNQBc8&`oxBlU~#y zs!anJX&T?57Jdr^sb>e+V`MVfY>Y0ESg7MG<7W0g&bR-ZYzzZ%2H&Etcp zcd6QeXO1D!5A#zM0lx*GH}`M)2~ZFLE;sP^RSB5wVMNfiZXPd(cmO>j=OSA3`o5r& zna(|^jGXbdN7PK)U8b7^zYtYkkeb%<%F~=OqB~kXMQkq}ii|skh@WSRt>5za;cjP0 zZ~nD%6)wzedqE}BMLt~qKwlvTr33))#uP~xyw#*Eaa|DbMQ_%mG0U8numf8)0DX`r zRoG2bM;#g|p-8gWnwRV5SCW0tLjLO&9Z?K>FImeIxlGUgo0Zk`9Qzhj1eco~7XZy+hXc@YF&ZQ=? zn*^1O56yK^x{y}q`j7}blGCx%dydV!c7)g~tJzmHhV=W~jbWRRR{1<^oDK+1clprm zz$eCy7y9+?{E|YgkW~}}iB#I4XoJ*xr8R?i_Hv$=Cof5bo-Nj~f`-DLebH}&0% zfQj9@WGd4;N~Y?mzQsHJTJq6!Qzl^-vwol(+fMt#Pl=Wh#lI5Vmu@QM0=_r+1wHt` z+8WZ~c2}KQQ+q)~2Ki77QvV&`xb|xVcTms99&cD$Zz4+-^R4kvUBxG8gDk7Y`K*)JZ^2rL(+ZWV~%W(@6 z)0bPArG#BROa_PHs~&WplQ_UIrpd)1N1QGPfv!J(Z9jNT#i%H?CE6|pPZb9hJ1JW4 z^q;ft#!HRNV0YgPojzIYT`8LuET2rUe-J|c!9l4`^*;4WtY@Ew@pL>wkjmMgGfN7 ze}}GtmU0@<_#08~I-Suk=^*9GLW=H4xhsml;vAV{%hy5Eegl@!6qKqbG024%n2HHw zCc@ivW_$@5ZoHP70(7D+(`PvgjW1Pd`wsiuv-aCukMrafwDm)B!xXVy*j2opohhoU zcJz%ADmj>i3`-3-$7nQKBQQuGY;2Qt&+(L~C>vSGFj5{Mlv?T_^dql;{zkpe4R1}R z%XfZyQ}wr*sr>jrKgm*PWLjuVc%6&&`Kbf1SuFpHPN&>W)$GmqC;pIoBC`=4-hPY8 zT*>%I2fP}vGW;R=^!1be?ta2UQd2>alOFFbVl;(SQJ4Jk#)4Z0^wpWEVvY4=vyDk@ zqlModi@iVPMC+{?rm=4(n+<;|lmUO@UKYA>EPTS~AndtK^Wy^%#3<;(dQdk3WaUkRtzSMC9}7x2||CNpF#(3T4C)@ z$~RWs`BNABKX|{cmBt>Q=&gkXl&x!!NK_%5hW0LS)Z4PB>%sV?F-{Wyj#s7W%$F{D zXdK^Fp3wvy+48+GP6F_|^PCRx=ddcTO3sG;B23A49~Qaw31SZ0Rc~`r4qqt%#OGW{ zCA_(LG5^N>yzUn&kAgVmxb=EA8s&tBXC}S1CZ(KoW)(%^JjLTPo^fs`Va;`=YlVPgmB$!yB}<(4ym6OeZ3xAJJ#;)2+B%p3P1Wt+d$eo`vz`T zXfUP2))kBDPoscH;Jc7I3NU<({|@wM$&GaDt`n7WLgIY3IA7A6-_R?z8N3mz|}*i z(zl5ot--Oq@f2-nv{X(ujT2T(k1vY_qh93pK@>H-qc%2Xta)IP0Q%zt%bqYgI`o!wv!0QerB`nCN^1n|@$sVOQ!V0teVG!I z_fD%JvfDeT1cK#-{o6Gv7}& zY0#NWin~kVaf$aufV&;63Hbs|`QVZWpDX6IMk1Hj2G}fiH9e-^6u2zf^FIr^BwD<6zjw63+{yUe8PUFvk8v{sJ=R{d#`O!sz`Q13~< zPT$JS(w=yQfU2`zPCNfSw=&zup@DXc(98afjhv@1w_f!m2Z>rMJ19AB&dB%P#Ls3b z=lK7OILM+SQ&VEd=1GN6o&>YVVtIzoZ%=Z_SdqJN2}E43{bE`>w+A;=y->@^k{oCC z$F*WTY&?34;kfyFV?b*Xb1Pq`Z=%OgwEg)Rz)tx=`f%5#w_INP=x&z5!jI;#;N$ma zhO)+MDm;SxOEVL15; zGq(v2pL3&P1Sl)8P*;G-fd{l1QJsv@e@d8)1PK4w2m*M%V3j-V~L^$i|&C@b?D?9tfwE{B^}Z$k8e5FmQ>v7Xz)sG32g9t}YBt zyR$+*_00RmPx+0mW+vVG4mxd(n$(eQf3-w>JPl2UJpafrPaL5@2j}%{VE-) zBI%6Qpj*dsdH<;g!S!avA~bv^0E+ zfyJbSjPb+j;J52U)<|cIcntQBI2T#>2;tOxu{%D?kML476AErF(qN9hPva5Nkc@BF zC-tLF@3ZFb%Kpj)M<{)x*l|*Ia@ECeXo2E4h2f!aV=cHAhi_E_mfUth(sM4^hJq7B zQsGWqdZUm9S%F`$nQ*_#NcuD`&)Ek%_s{&^78{9Hm ztri&rYLOxgFdG>O@+XHy z9#;|&vBCPXH5Mon^I`jSuR$&~ZWtyB67ujzFSj!51>#C}C17~TffQ{c-!QFQkTQ%! zIR^b1`zHx|*1GU?tbBx23weFLz5H?y_Q%N&t$}k?w+``2A=aotj0;2v$~AL z{scF-cL{wsdrmPvf#a9OHyYLcwQD4Kcm)`LLwMh4WT~p29f7M!iafJSU`IV}QY5Wa z(n44-9oA}?J{a+ah*@31WTs#&J#o1`H98#6IQf;Wv0N_!);f&9g7o-k(lW5rWnDUR zQBFIRG+X=6NnsI@mxnwm;tf5;_Uxg?jZ8m-m0}&6+DA!qam(p$mN5R})yA_7m$q@| zFEd|dpS595rxQr-n#GjI5i-AhnUE>Cr;jpCqSrD~EwK_DqI^7%3#p5)%T_od!t3SOmH9MyXeeGO2(UQL;ax|x?Ncixmeo1=$ z{-);Au{*tfzOG?KQ~K|ak8-HQ?`Pekhe2WM(8s{xv-p>Zmu_6{G!-oE$7$mY`MOJorI=+mMx?H;`pr!;fVYz?5~yXBACruWB`Ph zZM}90_<^OBxIhyZ9BW$`>6JvO;%VFpqVr8|7t3~AmxYak6?`Pp#c;**_SYmi`&z23 z`p6_~ePvH)C6x-G9$hgL=eVALq`-AiamN>!3~Lxw&{H(b{B(7xSRm6<3<{%{yXiH# zos5Rv1L+8fUKJLo%P>4I&$}y> DataShareExtAbility onCreate, want:' + want.abilityName); + console.log("[ttt] [DataShareTest] DataShareExtAbility onCreate this.context.databaseDir:" + this.context.databaseDir); + // @ts-ignore + rdbStore = await rdb.getRdbStore(this.context, { name: DB_NAME, securityLevel: rdb.SecurityLevel.S1 }); + console.log('[ttt] [DataShareTest] <> DataShareExtAbility getRdbStore done'); + await rdbStore.executeSql(DDL_TBL_CREATE, []); + console.log('[ttt] [DataShareTest] <> DataShareExtAbility executeSql done'); + let err = {"code":0}; + callback(err); + console.log('[ttt] [DataShareTest] <> DataShareExtAbility onCreate end'); + } + + async getFileTypes(uri: string, mimeTypeFilter: string, callback) { + console.info('[ttt] [DataShareTest] <> [getFileTypes] enter'); + let ret = new Array("type01", "type00", "type03"); + console.info('[ttt] [DataShareTest] <> [getFileTypes] leave, ret:' + ret); + let err = {"code":0}; + await callback(err,ret); + return ret; + } + + async openFile(uri: string, mode: string, callback) { + console.info('[ttt] [DataShareTest] <> [openFile] enter'); + let ret = 12345; + let err = {"code":0}; + await callback(err,ret); + console.info('[ttt] [DataShareTest] <> [openFile] leave, ret:' + ret); + } + + async insert(uri, value, callback) { + console.info('[ttt] [DataShareTest] <> [insert] enter'); + if (value == null) { + console.info('[ttt] [DataShareTest] <> [insert] invalid valueBuckets'); + return; + } + + console.info('[ttt] [DataShareTest] <> [insert] getCallingTokenId:' + rpc.IPCSkeleton.getCallingTokenId()); + console.info('[ttt] [DataShareTest] <> [insert] value = ' + value); + console.info('[ttt] [DataShareTest] <> [insert] value = ' + JSON.stringify(value)); + await rdbStore.insert(TBL_NAME, value, function (err, ret) { + console.info('[ttt] [DataShareTest] <> [insert] callback ret:' + ret); + + if (callback != undefined) { + callback(err, ret); + } + }); + console.info('[ttt] [DataShareTest] <> [insert] leave'); + } + + async update(uri, predicates, value, callback) { + console.info('[ttt] [DataShareTest] <> [update] enter'); + if (predicates == null || predicates == undefined) { + console.info('[ttt] [DataShareTest] <> [update] invalid predicates'); + return; + } + console.info('[ttt] [DataShareTest] <> [update] values = ' + value); + console.info('[ttt] [DataShareTest] <> [update] values = ' + JSON.stringify(value)); + console.info('[ttt] [DataShareTest] <> [update] predicates = ' + predicates); + console.info('[ttt] [DataShareTest] <> [update] predicates = ' + JSON.stringify(predicates)); + try { + await rdbStore.update(TBL_NAME,value, predicates, function (err, ret) { + console.info('[ttt] [DataShareTest] <> [update] callback ret:' + ret); + console.info('[ttt] [DataShareTest] <> [update] callback err:' + err); + if (callback != undefined) { + callback(err, ret); + } + }); + } catch (err) { + console.error('[ttt] [DataShareTest] <> [update] error' + err); + } + console.info('[ttt] [DataShareTest] <> [update] leave'); + } + + async delete(uri, predicates, callback) { + console.info('[ttt] [DataShareTest] <> [delete] enter'); + if (predicates == null || predicates == undefined) { + console.info('[ttt] [DataShareTest] <> [delete] invalid predicates'); + return; + } + console.info('[ttt] [DataShareTest] <> [delete] predicates = ' + predicates); + console.info('[ttt] [DataShareTest] <> [delete] predicates = ' + JSON.stringify(predicates)); + try { + await rdbStore.delete(TBL_NAME,predicates, function (err, ret) { + console.info('[ttt] [DataShareTest] <> [delete] ret:' + ret); + if (callback != undefined) { + callback(err, ret); + } + }); + } catch (err) { + console.error('[ttt] [DataShareTest] <> [delete] error' + err); + } + console.info('[ttt] [DataShareTest] <> [delete] leave'); + } + + async query(uri, predicates, columns, callback) { + console.info('[ttt] [DataShareTest] <> [query] enter'); + if (predicates == null || predicates == undefined) { + console.info('[ttt] [DataShareTest] <> [query] invalid predicates'); + } + console.info('[ttt] [DataShareTest] <> [query] values = ' + columns); + console.info('[ttt] [DataShareTest] <> [query] values = ' + JSON.stringify(columns)); + console.info('[ttt] [DataShareTest] <> [query] predicates = ' + predicates); + console.info('[ttt] [DataShareTest] <> [query] predicates = ' + JSON.stringify(predicates)); + try { + await rdbStore.query(TBL_NAME, predicates, columns, function (err, resultSet) { + console.info('[ttt] [DataShareTest] <> [query] ret: ' + resultSet); + if (resultSet != undefined) { + console.info('[ttt] [DataShareTest] <> [query] resultSet.rowCount: ' + resultSet.rowCount); + } + if (callback != undefined) { + callback(err, resultSet); + } + }); + } catch (err) { + console.error('[ttt] [DataShareTest] <> [query] error' + err); + } + console.info('[ttt] [DataShareTest] <> [query] leave'); + } + + async getType(uri: string,callback) { + console.info('[ttt] [DataShareTest] <> [getType] enter'); + let ret = "image"; + console.info('[ttt] [DataShareTest] <> [getType] leave, ret:' + ret); + let err = {"code":0}; + await callback(err,ret); + return ret; + } + + async batchInsert(uri: string, valueBuckets, callback) { + console.info('[ttt] [DataShareTest] <> [batchInsert] enter'); + if (valueBuckets == null || valueBuckets.length == undefined) { + console.info('[ttt] [DataShareTest] <> [batchInsert] invalid valueBuckets'); + return; + } + console.info('[ttt] [DataShareTest] <> [batchInsert] valueBuckets.length:' + valueBuckets.length); + let resultNum = valueBuckets.length + await rdbStore.batchinsert(TBL_NAME, valueBuckets, function (err, ret) { + console.info('[ttt] [DataShareTest] <> [batchInsert] callback ret:' + ret); + if (callback != undefined) { + callback(err, ret); + } + }); + + console.info('[ttt] [DataShareTest] <> [batchInsert] leave'); + } + + async normalizeUri(uri: string, callback) { + console.info('[ttt] [DataShareTest] <> [normalizeUri] enter'); + let ret = "normalize+" + uri; + let err = {"code":0}; + await callback(err, ret); + console.info('[ttt] [DataShareTest] <> [normalizeUri] leave, ret:' + ret); + } + + async denormalizeUri(uri: string, callback) { + console.info('[ttt] [DataShareTest] <> [denormalizeUri] enter'); + let ret = "denormalize+" + uri; + let err = {"code":0}; + await callback(err, ret); + console.info('[ttt] [DataShareTest] <> [denormalizeUri] leave, ret:' + ret); + } +}; \ No newline at end of file diff --git a/data_share/test/native/resource/datashare_ext_bundle/entry/src/main/ets/MainAbility/MainAbility.ts b/data_share/test/native/resource/datashare_ext_bundle/entry/src/main/ets/MainAbility/MainAbility.ts new file mode 100644 index 00000000..57457c2b --- /dev/null +++ b/data_share/test/native/resource/datashare_ext_bundle/entry/src/main/ets/MainAbility/MainAbility.ts @@ -0,0 +1,252 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Ability from '@ohos.app.ability.UIAbility' +import dataShare from '@ohos.data.dataShare' +import dataSharePredicates from '@ohos.data.dataSharePredicates' + +let dseUri = ("datashare:///com.acts.datasharetest"); +let uri = ("datashare://com.acts.datasharetest/entry/DB00/TBL00?Proxy=true"); + +export function onCallback() { + console.info("[ttt] [DataShareTest] <> **** Observer on callback ****"); +} + +export function offCallback() { + console.info("[ttt] [DataShareTest] <> **** Observer off callback ****"); +} + +export default class MainAbility extends Ability { + onCreate(want, launchParam) { + // Ability is creating, initialize resources for this ability + console.log("[ttt] [DataShareTest] <> MainAbility onCreate") + globalThis.abilityWant = want; + } + + onDestroy() { + // Ability is destroying, release resources for this ability + console.log("[ttt] [DataShareTest] <> MainAbility onDestroy") + } + + onWindowStageCreate(windowStage) { + // Main window is created, set main page for this ability + console.log("[ttt] [DataShareTest] <> MainAbility onWindowStageCreate") + globalThis.abilityContext = this.context; + console.log("[ttt] [DataShareTest] <> MainAbility this.context.databaseDir:" + this.context.databaseDir); + globalThis.connectDataShareExtAbility = (async () => { + console.log("[ttt] [DataShareTest] <> connectDataShareExtAbility begin"); + globalThis.dsHelper = await dataShare.createDataShareHelper(this.context, dseUri); + console.log("[ttt] [DataShareTest] <> connectDataShareExtAbility end"); + }) + + globalThis.disconnectDataShareExtAbility = (async () => { + console.log("[ttt] [DataShareTest] <> disconnectDataShareExtAbility begin"); + globalThis.dsHelper = null; + console.log("[ttt] [DataShareTest] <> disconnectDataShareExtAbility end"); + }) + + globalThis.on = (async () => { + console.log("[ttt] [DataShareTest] <> on begin"); + if (globalThis.dsHelper == null) { + console.log("[ttt] [DataShareTest] <> on end, DSHelper is null"); + return; + } + await globalThis.dsHelper.on("dataChange", uri, onCallback); + console.log("[ttt] [DataShareTest] <> on end"); + }) + + globalThis.off = (async () => { + console.log("[ttt] [DataShareTest] <> off begin"); + if (globalThis.dsHelper == null) { + console.log("[ttt] [DataShareTest] <> off end, DSHelper is null"); + return; + } + await globalThis.dsHelper.off("dataChange", uri); + await globalThis.dsHelper.off("dataChange", uri, offCallback); + console.log("[ttt] [DataShareTest] <> off end"); + }) + + globalThis.openFile = (async () => { + console.log("[ttt] [DataShareTest] <> openFile begin"); + if (globalThis.dsHelper == null) { + console.log("[ttt] [DataShareTest] <> openFile end, DSHelper is null"); + return; + } + let result = await globalThis.dsHelper.openFile(dseUri, "rw"); + console.log("[ttt] [DataShareTest] <> openFile end, result:" + result); + return result; + }) + + globalThis.query = (async () => { + console.log("[ttt] [DataShareTest] <> query begin"); + let da = new dataSharePredicates.DataSharePredicates(); + if (da == null || da == undefined) { + console.log("[ttt] [DataShareTest] <> da is null or undefined"); + return; + } + let count = 0; + if (globalThis.dsHelper == null) { + console.log("[ttt] [DataShareTest] <> query end, DSHelper is null"); + return; + } + da.equalTo("name", "ZhangSan"); + let result = await globalThis.dsHelper.query(dseUri, da, ["*"]); + if (result != undefined) { + count = result.rowCount; + } + console.log("[ttt] [DataShareTest] <> query end, count:" + count); + return count; + }) + + globalThis.insert = (async () => { + console.log("[ttt] [DataShareTest] <> insert begin"); + if (globalThis.dsHelper == null) { + console.log("[ttt] [DataShareTest] <> insert end, DSHelper is null"); + return; + } + let vb = {"name":"ZhangSan", "age": 21} + + console.log("[ttt] [DataShareTest] <> insert vb:" + JSON.stringify(vb)); + let ret = await globalThis.dsHelper.insert(dseUri, vb); + await console.log("[ttt] [DataShareTest] <> insert end, ret:" + ret); + return ret; + }) + + globalThis.update = (async () => { + console.log("[ttt] [DataShareTest] <> update begin"); + if (globalThis.dsHelper == null) { + console.log("[ttt] [DataShareTest] <> update end, DSHelper is null"); + return; + } + console.log("[ttt] [DataShareTest] <> update begin RPF666"); + let da = new dataSharePredicates.DataSharePredicates(); + console.log("[ttt] [DataShareTest] <> update begin RPF777"); + if (da == null || da == undefined) { + console.log("[ttt] [DataShareTest] <> da is null or undefined"); + return; + } + da.equalTo("name", "ZhangSan"); + + let ret = await globalThis.dsHelper.update(dseUri, da, {"name":"ZhangSan", "age":31}); + console.log("[ttt] [DataShareTest] <> update end, result:" + ret); + return ret; + }) + + globalThis.delete = (async () => { + console.log("[ttt] [DataShareTest] <> delete begin"); + if (globalThis.dsHelper == null) { + console.log("[ttt] [DataShareTest] <> delete end, DSHelper is null"); + return; + } + let da = new dataSharePredicates.DataSharePredicates(); + if (da == null || da == undefined) { + console.log("[ttt] [DataShareTest] <> da is null or undefined"); + return; + } + da.equalTo("name", "ZhangSan"); + let ret = await globalThis.dsHelper.delete(dseUri, da); + console.log("[ttt] [DataShareTest] <> delete end, result:" + ret); + return ret; + }) + + globalThis.batchInsert = (async () => { + console.log("[ttt] [DataShareTest] <> batchInsert begin"); + if (globalThis.dsHelper == null) { + console.log("[ttt] [DataShareTest] <> batchInsert end, DSHelper is null"); + return; + } + let ar = new Uint8Array([1,2,3,4,5,6]); + let arr = new Uint8Array([4,5,6,7]); + let people = new Array( + {"name": "LiSi", "age": 41, "Binary": ar}, + {"name": "WangWu", "age": 21, "Binary": arr}, + {"name": "ZhaoLiu", "age": 61, "Binary": arr}); + let ret = await globalThis.dsHelper.batchInsert(dseUri, people); + console.log("[ttt] [DataShareTest] <> batchInsert end, result:" + ret); + return ret; + }) + + globalThis.notifyChange = (async () => { + console.log("[ttt] [DataShareTest] <> notifyChange begin"); + if (globalThis.dsHelper == null) { + console.log("[ttt] [DataShareTest] <> notifyChange end, DSHelper is null"); + return; + } + await globalThis.dsHelper.notifyChange(dseUri); + console.log("[ttt] [DataShareTest] <> notifyChange end"); + }) + + globalThis.getType = (async () => { + console.log("[ttt] [DataShareTest] <> getType begin"); + if (globalThis.dsHelper == null) { + console.log("[ttt] [DataShareTest] <> getType end, DSHelper is null"); + return; + } + let result = await globalThis.dsHelper.getType(dseUri); + console.log("[ttt] [DataShareTest] <> getType end, result:" + result); + return result; + }) + + globalThis.getFileTypes = (async () => { + console.log("[ttt] [DataShareTest] <> getFileTypes begin"); + if (globalThis.dsHelper == null) { + console.log("[ttt] [DataShareTest] <> getFileTypes end, DSHelper is null"); + return; + } + let result = await globalThis.dsHelper.getFileTypes(dseUri, "image/*"); + console.log("[ttt] [DataShareTest] <> getFileTypes end, result:" + result); + return result; + }) + + globalThis.normalizeUri = (async () => { + console.log("[ttt] [DataShareTest] <> normalizeUri begin"); + if (globalThis.dsHelper == null) { + console.log("[ttt] [DataShareTest] <> normalizeUri end, DSHelper is null"); + return; + } + let result = await globalThis.dsHelper.normalizeUri(dseUri); + console.log("[ttt] [DataShareTest] <> normalizeUri end, result:" + result); + return result; + }) + + globalThis.denormalizeUri = (async () => { + console.log("[ttt] [DataShareTest] <> denormalizeUri begin"); + if (globalThis.dsHelper == null) { + console.log("[ttt] [DataShareTest] <> denormalizeUri end, DSHelper is null"); + return; + } + let result = await globalThis.dsHelper.denormalizeUri(dseUri); + console.log("[ttt] [DataShareTest] <> denormalizeUri end, result:" + result); + return result; + }) + + windowStage.setUIContent(this.context, "pages/index", null) + } + + onWindowStageDestroy() { + // Main window is destroyed, release UI related resources + console.log("[ttt] [DataShareTest] <> MainAbility onWindowStageDestroy") + } + + onForeground() { + // Ability has brought to foreground + console.log("[ttt] [DataShareTest] <> MainAbility onForeground") + } + + onBackground() { + // Ability has back to background + console.log("[ttt] [DataShareTest] <> MainAbility onBackground") + } +}; \ No newline at end of file diff --git a/data_share/test/native/resource/datashare_ext_bundle/entry/src/main/ets/pages/index.ets b/data_share/test/native/resource/datashare_ext_bundle/entry/src/main/ets/pages/index.ets new file mode 100644 index 00000000..6323faaf --- /dev/null +++ b/data_share/test/native/resource/datashare_ext_bundle/entry/src/main/ets/pages/index.ets @@ -0,0 +1,341 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import dataShare from '@ohos.data.dataShare' +import dataSharePredicates from '@ohos.data.dataSharePredicates' + +@Entry +@Component +struct Index { + @State message: string = "Main thread message filed" + + build() { + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Center, justifyContent: FlexAlign.Center }) { + Text('DataShare Extension Ability Test') + .fontSize(25) + .fontWeight(FontWeight.Bold) + + Text(`${this.message}`) + .fontSize(30) + .height('15%') + .width('100%') + .textAlign(TextAlign.Center) + + Row() { + Button() { + Text('Connect') + .fontSize(25) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .width('45%') + .height('8%') + .backgroundColor('#0ddffb') + .onClick(async () => { + console.info('[ttt] [DataShareTest] <> Connect onclick enter') + this.message = 'Connect onclick' + await globalThis.connectDataShareExtAbility() + console.info('[ttt] [DataShareTest] <> Connect onclick leave') + }) + + Button() { + Text('Disconnect') + .fontSize(25) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .width('45%') + .height('8%') + .backgroundColor('#0ddffb') + .onClick(async () => { + console.info('[ttt] [DataShareTest] <> Disconnect onclick enter') + this.message = 'Disconnect onclick' + await globalThis.disconnectDataShareExtAbility() + console.info('[ttt] [DataShareTest] <> Disconnect onclick leave') + }) + } + + Row() { + Button() { + Text('On') + .fontSize(25) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .width('25%') + .height('8%') + .backgroundColor('#0ddffb') + .onClick(async () => { + console.info('[ttt] [DataShareTest] <> On onclick enter') + this.message = '~ On onclick' + try { + await globalThis.on(); + } catch (err) { + console.error('[ttt] [DataAbilityTest] Observer on catch(err)====>:' + err); + } + console.info('[ttt] [DataShareTest] <> On onclick leave') + }) + + Button() { + Text('Off') + .fontSize(25) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .width('25%') + .height('8%') + .backgroundColor('#0ddffb') + .onClick(async () => { + console.info('[ttt] [DataShareTest] <> Off onclick enter') + this.message = '~ Off onclick' + try { + await globalThis.off(); + } catch (err) { + console.error('[ttt] [DataAbilityTest] Observer Off catch(err)====>:' + err); + } + console.info('[ttt] [DataShareTest] <> Off onclick leave') + }) + + Button() { + Text('OpenFile') + .fontSize(25) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .width('40%') + .height('8%') + .backgroundColor('#0ddffb') + .onClick(async () => { + console.info('[ttt] [DataShareTest] <> OpenFile onclick enter') + this.message = 'OpenFile onclick' + let ret = await globalThis.openFile() + this.message += "\n\n Test Result: " + ret; + console.info('[ttt] [DataShareTest] <> OpenFile onclick leave') + }) + } + + Row() { + Button() { + Text('Query') + .fontSize(25) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .width('45%') + .height('8%') + .backgroundColor('#0ddffb') + .onClick(async () => { + console.info('[ttt] [DataShareTest] <> Query onclick enter') + this.message = 'Query onclick' + let ret = await globalThis.query() + this.message += "\n\n Test Result: " + ret; + console.info('[ttt] [DataShareTest] <> Query onclick leave') + }) + + Button() { + Text('Insert') + .fontSize(25) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .width('45%') + .height('8%') + .backgroundColor('#0ddffb') + .onClick(async () => { + console.info('[ttt] [DataShareTest] <> Insert onclick enter') + this.message = 'Insert onclick' + let ret = await globalThis.insert() + this.message += "\n\n Test Result: " + ret; + console.info('[ttt] [DataShareTest] <> Insert onclick leave') + }) + } + + Row() { + Button() { + Text('Update') + .fontSize(25) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .width('45%') + .height('8%') + .backgroundColor('#0ddffb') + .onClick(async () => { + console.info('[ttt] [DataShareTest] <> Update onclick enter') + this.message = 'Update onclick' + let ret = await globalThis.update() + this.message += "\n\n Test Result: " + ret; + console.info('[ttt] [DataShareTest] <> Update onclick leave') + }) + + Button() { + Text('Delete') + .fontSize(25) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .width('45%') + .height('8%') + .backgroundColor('#0ddffb') + .onClick(async () => { + console.info('[ttt] [DataShareTest] <> Delete onclick enter') + this.message = 'Delete onclick' + let ret = await globalThis.delete() + this.message += "\n\n Test Result: " + ret; + console.info('[ttt] [DataShareTest] <> Delete onclick leave') + }) + } + + Row() { + Button() { + Text('BatchInsert') + .fontSize(25) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .width('45%') + .height('8%') + .backgroundColor('#0ddffb') + .onClick(async () => { + console.info('[ttt] [DataShareTest] <> BatchInsert onclick enter') + this.message = 'BatchInsert onclick' + let ret = await globalThis.batchInsert() + this.message += "\n\n Test Result: " + ret; + console.info('[ttt] [DataShareTest] <> BatchInsert onclick leave') + }) + + Button() { + Text('NotifyChange') + .fontSize(25) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .width('45%') + .height('8%') + .backgroundColor('#0ddffb') + .onClick(async () => { + console.info('[ttt] [DataShareTest] <> NotifyChange onclick enter') + this.message = 'NotifyChange onclick' + await globalThis.notifyChange() + console.info('[ttt] [DataShareTest] <> NotifyChange onclick leave') + }) + } + + Row() { + Button() { + Text('GetType') + .fontSize(25) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .width('45%') + .height('8%') + .backgroundColor('#0ddffb') + .onClick(async () => { + console.info('[ttt] [DataShareTest] <> GetType onclick enter') + this.message = 'GetType onclick' + let ret = await globalThis.getType() + this.message += "\n\n Test Result: " + ret; + console.info('[ttt] [DataShareTest] <> GetType onclick leave') + }) + + Button() { + Text('GetFileTypes') + .fontSize(25) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .width('45%') + .height('8%') + .backgroundColor('#0ddffb') + .onClick(async () => { + console.info('[ttt] [DataShareTest] <> GetFileTypes onclick enter') + this.message = 'GetFileTypes onclick' + let ret = await globalThis.getFileTypes() + this.message += "\n\n Test Result: " + ret; + console.info('[ttt] [DataShareTest] <> GetFileTypes onclick leave') + }) + } + + Row() { + Button() { + Text('NormalizeUri') + .fontSize(25) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .width('45%') + .height('8%') + .backgroundColor('#0ddffb') + .onClick(async () => { + console.info('[ttt] [DataShareTest] <> NormalizeUri onclick enter') + this.message = 'NormalizeUri onclick' + let ret = await globalThis.normalizeUri() + this.message += "\n\n Test Result: " + ret; + console.info('[ttt] [DataShareTest] <> NormalizeUri onclick leave') + }) + + Button() { + Text('DenormalizeUri') + .fontSize(25) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .width('45%') + .height('8%') + .backgroundColor('#0ddffb') + .onClick(async () => { + console.info('[ttt] [DataShareTest] <> DenormalizeUri onclick enter') + this.message = 'DenormalizeUri onclick' + let ret = await globalThis.denormalizeUri() + this.message += "\n\n Test Result: " + ret; + console.info('[ttt] [DataShareTest] <> DenormalizeUri onclick leave') + }) + } + } + .width('100%') + .height('100%') + } +} \ No newline at end of file diff --git a/data_share/test/native/resource/datashare_ext_bundle/entry/src/main/module.json b/data_share/test/native/resource/datashare_ext_bundle/entry/src/main/module.json new file mode 100644 index 00000000..d510285d --- /dev/null +++ b/data_share/test/native/resource/datashare_ext_bundle/entry/src/main/module.json @@ -0,0 +1,50 @@ +{ + "module": { + "name": "entry", + "type": "entry", + "srcEntrance": "./ets/Application/MyAbilityStage.ts", + "description": "$string:entry_desc", + "mainElement": "MainAbility", + "deviceTypes": [ + "default", + "tablet" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "uiSyntax": "ets", + "abilities": [ + { + "name": "MainAbility", + "srcEntrance": "./ets/MainAbility/MainAbility.ts", + "description": "$string:MainAbility_desc", + "icon": "$media:icon", + "label": "$string:MainAbility_label", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:white", + "visible": true, + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + } + ], + "extensionAbilities": [ + { + "srcEntrance": "./ets/DataShareExtAbility/DataShareExtAbility.ts", + "name": "DataShareExtAbility", + "icon": "$media:icon", + "description": "$string:description_datashareextability", + "type": "dataShare", + "uri": "datashare://com.acts.datasharetest", + "visible": true + } + ] + } +} \ No newline at end of file diff --git a/data_share/test/native/resource/datashare_ext_bundle/entry/src/main/resources/base/element/color.json b/data_share/test/native/resource/datashare_ext_bundle/entry/src/main/resources/base/element/color.json new file mode 100644 index 00000000..1bbc9aa9 --- /dev/null +++ b/data_share/test/native/resource/datashare_ext_bundle/entry/src/main/resources/base/element/color.json @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "white", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git a/data_share/test/native/resource/datashare_ext_bundle/entry/src/main/resources/base/element/string.json b/data_share/test/native/resource/datashare_ext_bundle/entry/src/main/resources/base/element/string.json new file mode 100644 index 00000000..222eb589 --- /dev/null +++ b/data_share/test/native/resource/datashare_ext_bundle/entry/src/main/resources/base/element/string.json @@ -0,0 +1,28 @@ +{ + "string": [ + { + "name": "entry_desc", + "value": "description" + }, + { + "name": "MainAbility_desc", + "value": "description" + }, + { + "name": "MainAbility_label", + "value": "DataShareTest" + }, + { + "name": "description_application", + "value": "DataShareTest" + }, + { + "name": "app_name", + "value": "DataShareTest" + }, + { + "name": "description_datashareextability", + "value": "description_datashareextability" + } + ] +} \ No newline at end of file diff --git a/data_share/test/native/resource/datashare_ext_bundle/entry/src/main/resources/base/media/icon.png b/data_share/test/native/resource/datashare_ext_bundle/entry/src/main/resources/base/media/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c GIT binary patch literal 6790 zcmX|G1ymHk)?T_}Vd;>R?p|tHQo6fg38|$UVM!6BLrPFWk?s;$LOP{GmJpBl$qoSA!PUg~PA65-S00{{S`XKG6NkG0RgjEntPrmV+?0|00mu7;+5 zrdpa{2QLqPJ4Y{j7=Mrl{BaxrkdY69+c~(w{Fv-v&aR%aEI&JYSeRTLWm!zbv;?)_ ziZB;fwGbbeL5Q}YLx`J$lp~A09KK8t_z}PZ=4ZzgdeKtgoc+o5EvN9A1K1_<>M?MBqb#!ASf&# zEX?<)!RH(7>1P+j=jqG(58}TVN-$psA6K}atCuI!KTJD&FMmH-78ZejBm)0qc{ESp z|LuG1{QnBUJRg_E=h1#XMWt2%fcoN@l7eAS!Es?Q+;XsRNPhiiE=@AqlLkJzF`O18 zbsbSmKN=aaq8k3NFYZfDWpKmM!coBU0(XnL8R{4=i|wi{!uWYM2je{U{B*K2PVdu&=E zTq*-XsEsJ$u5H4g6DIm2Y!DN`>^v|AqlwuCD;w45K0@eqauiqWf7l&o)+YLHm~|L~ z7$0v5mkobriU!H<@mVJHLlmQqzQ3d6Rh_-|%Yy2li*tHO>_vcnuZ7OR_xkAIuIU&x z-|8Y0wj|6|a6_I(v91y%k_kNw6pnkNdxjqG8!%Vz_d%c_!X+6-;1`GC9_FpjoHev5fEV7RhJ>r=mh-jp$fqbqRJ=obwdgLDVP5+s zy1=_DWG0Y-Jb3t^WXmkr(d9~08k-|#Ly zaNOmT(^9tIb&eb4%CzIT zAm3CUtWSr1t4?h1kk#NBi{U|pJslvME{q|_eS^3En>SOqSxyuN1x;Is@8~m?*>}** znrRFArP!K_52RpX*&JHMR<^lVdm8ypJ}0R(SD(51j;6@ni$6bQ+2XL+R^|NnSp5}(kzvMZ^(@4fD_{QVu$(&K6H|C37TG1Am9Re{<<3gd zh@`>;BqkXMW&p0T6rt|iB$)~CvFe(XC)F9WgAZn*0@t$oZo;!*}r@_`h?KKH&6A@3= zISXoQB+~`op>NP-buiA*^0n{@i{_?MRG)&k)c)k_F+-2Lud!S9pc+i`s74NpBCaGF zXN+pHkubw*msGBTY27BKHv)RRh3;nMg4&$fD_6X9Vt~;_4D+5XPH~#Kn-yjcy!$}1 zigv#FNY>TqMhtIBb@UoF!cE~Q8~;!Pek>SQQwHnHuWKoVBosAiOr}q>!>aE*Krc)V zBUMEcJ5NU0g8}-h6i1zpMY9>m4ne?=U2~`w7K7Q0gB_=p@$5K7p6}thw z-~3dMj?YNX2X$lZ+7ngQ$=s}3mizNN@kE%OtB)?c&i~2L55z8^=yz;xMHLmlY>&Q# zJj?!)M#q_SyfkQh)k?j8IfLtB)ZCp|*vf4_B zos?73yd^h-Ac+;?E4*bpf=o*^3x3-`TVjbY4n6!EN10K6o@fxdyps05Vo3PU)otB} z`3kR+2w7_C#8Z!q`J)p{Vh!+m9-UP!$STp+Hb}}#@#_u^SsUQg<}59< zTvH3%XS4G+6FF^(m6bVF&nSUIXcl;nw{=H$%fgeJ>CgDYiLdpDXr{;-AnG z8dvcrHYVMI&`R6;GWekI@Ir3!uo)oz4^{6q0m^}@f2tM9&=YHNi6-?rh0-{+k@cQm zdp`g#YdQn%MDVg2GR>wZ`n2<0l4)9nx1Wfr&!Dvz=bPwU!h2S?ez6MVc5APE4-xLB zi&W9Q8k2@0w!C53g?iAIQ}~p*3O(@zja6KQ=M3zfW*_6o5SwR-)6VBh~m7{^-=MC-owYH5-u40a}a0liho3QZZ5L{bS_xM1)4}19)zTU$$MY zq3eZML1WC{K%YFd`Be0M-rkO^l?h{kM{$2oK1*A@HVJ57*yhDkUF!2WZ&oA4Y-sK( zCY69%#`mBCi6>6uw(x4gbFaP0+FD*JKJ-q!F1E?vLJ+d35!I5d7@^eU?(CS|C^tmI5?lv@s{{*|1F zFg|OzNpZ0hxljdjaW%45O0MOttRrd(Z?h{HYbB-KFUx&9GfFL3b8NwZ$zNu)WbBD` zYkj$^UB5%3Pj1MDr>S2Ejr9pUcgA!;ZG!@{uAy12)vG=*^9-|dNQBc8&`oxBlU~#y zs!anJX&T?57Jdr^sb>e+V`MVfY>Y0ESg7MG<7W0g&bR-ZYzzZ%2H&Etcp zcd6QeXO1D!5A#zM0lx*GH}`M)2~ZFLE;sP^RSB5wVMNfiZXPd(cmO>j=OSA3`o5r& zna(|^jGXbdN7PK)U8b7^zYtYkkeb%<%F~=OqB~kXMQkq}ii|skh@WSRt>5za;cjP0 zZ~nD%6)wzedqE}BMLt~qKwlvTr33))#uP~xyw#*Eaa|DbMQ_%mG0U8numf8)0DX`r zRoG2bM;#g|p-8gWnwRV5SCW0tLjLO&9Z?K>FImeIxlGUgo0Zk`9Qzhj1eco~7XZy+hXc@YF&ZQ=? zn*^1O56yK^x{y}q`j7}blGCx%dydV!c7)g~tJzmHhV=W~jbWRRR{1<^oDK+1clprm zz$eCy7y9+?{E|YgkW~}}iB#I4XoJ*xr8R?i_Hv$=Cof5bo-Nj~f`-DLebH}&0% zfQj9@WGd4;N~Y?mzQsHJTJq6!Qzl^-vwol(+fMt#Pl=Wh#lI5Vmu@QM0=_r+1wHt` z+8WZ~c2}KQQ+q)~2Ki77QvV&`xb|xVcTms99&cD$Zz4+-^R4kvUBxG8gDk7Y`K*)JZ^2rL(+ZWV~%W(@6 z)0bPArG#BROa_PHs~&WplQ_UIrpd)1N1QGPfv!J(Z9jNT#i%H?CE6|pPZb9hJ1JW4 z^q;ft#!HRNV0YgPojzIYT`8LuET2rUe-J|c!9l4`^*;4WtY@Ew@pL>wkjmMgGfN7 ze}}GtmU0@<_#08~I-Suk=^*9GLW=H4xhsml;vAV{%hy5Eegl@!6qKqbG024%n2HHw zCc@ivW_$@5ZoHP70(7D+(`PvgjW1Pd`wsiuv-aCukMrafwDm)B!xXVy*j2opohhoU zcJz%ADmj>i3`-3-$7nQKBQQuGY;2Qt&+(L~C>vSGFj5{Mlv?T_^dql;{zkpe4R1}R z%XfZyQ}wr*sr>jrKgm*PWLjuVc%6&&`Kbf1SuFpHPN&>W)$GmqC;pIoBC`=4-hPY8 zT*>%I2fP}vGW;R=^!1be?ta2UQd2>alOFFbVl;(SQJ4Jk#)4Z0^wpWEVvY4=vyDk@ zqlModi@iVPMC+{?rm=4(n+<;|lmUO@UKYA>EPTS~AndtK^Wy^%#3<;(dQdk3WaUkRtzSMC9}7x2||CNpF#(3T4C)@ z$~RWs`BNABKX|{cmBt>Q=&gkXl&x!!NK_%5hW0LS)Z4PB>%sV?F-{Wyj#s7W%$F{D zXdK^Fp3wvy+48+GP6F_|^PCRx=ddcTO3sG;B23A49~Qaw31SZ0Rc~`r4qqt%#OGW{ zCA_(LG5^N>yzUn&kAgVmxb=EA8s&tBXC}S1CZ(KoW)(%^JjLTPo^fs`Va;`=YlVPgmB$!yB}<(4ym6OeZ3xAJJ#;)2+B%p3P1Wt+d$eo`vz`T zXfUP2))kBDPoscH;Jc7I3NU<({|@wM$&GaDt`n7WLgIY3IA7A6-_R?z8N3mz|}*i z(zl5ot--Oq@f2-nv{X(ujT2T(k1vY_qh93pK@>H-qc%2Xta)IP0Q%zt%bqYgI`o!wv!0QerB`nCN^1n|@$sVOQ!V0teVG!I z_fD%JvfDeT1cK#-{o6Gv7}& zY0#NWin~kVaf$aufV&;63Hbs|`QVZWpDX6IMk1Hj2G}fiH9e-^6u2zf^FIr^BwD<6zjw63+{yUe8PUFvk8v{sJ=R{d#`O!sz`Q13~< zPT$JS(w=yQfU2`zPCNfSw=&zup@DXc(98afjhv@1w_f!m2Z>rMJ19AB&dB%P#Ls3b z=lK7OILM+SQ&VEd=1GN6o&>YVVtIzoZ%=Z_SdqJN2}E43{bE`>w+A;=y->@^k{oCC z$F*WTY&?34;kfyFV?b*Xb1Pq`Z=%OgwEg)Rz)tx=`f%5#w_INP=x&z5!jI;#;N$ma zhO)+MDm;SxOEVL15; zGq(v2pL3&P1Sl)8P*;G-fd{l1QJsv@e@d8)1PK4w2m*M%V3j-V~L^$i|&C@b?D?9tfwE{B^}Z$k8e5FmQ>v7Xz)sG32g9t}YBt zyR$+*_00RmPx+0mW+vVG4mxd(n$(eQf3-w>JPl2UJpafrPaL5@2j}%{VE-) zBI%6Qpj*dsdH<;g!S!avA~bv^0E+ zfyJbSjPb+j;J52U)<|cIcntQBI2T#>2;tOxu{%D?kML476AErF(qN9hPva5Nkc@BF zC-tLF@3ZFb%Kpj)M<{)x*l|*Ia@ECeXo2E4h2f!aV=cHAhi_E_mfUth(sM4^hJq7B zQsGWqdZUm9S%F`$nQ*_#NcuD`&)Ek%_s{&^78{9Hm ztri&rYLOxgFdG>O@+XHy z9#;|&vBCPXH5Mon^I`jSuR$&~ZWtyB67ujzFSj!51>#C}C17~TffQ{c-!QFQkTQ%! zIR^b1`zHx|*1GU?tbBx23weFLz5H?y_Q%N&t$}k?w+``2A=aotj0;2v$~AL z{scF-cL{wsdrmPvf#a9OHyYLcwQD4Kcm)`LLwMh4WT~p29f7M!iafJSU`IV}QY5Wa z(n44-9oA}?J{a+ah*@31WTs#&J#o1`H98#6IQf;Wv0N_!);f&9g7o-k(lW5rWnDUR zQBFIRG+X=6NnsI@mxnwm;tf5;_Uxg?jZ8m-m0}&6+DA!qam(p$mN5R})yA_7m$q@| zFEd|dpS595rxQr-n#GjI5i-AhnUE>Cr;jpCqSrD~EwK_DqI^7%3#p5)%T_od!t3SOmH9MyXeeGO2(UQL;ax|x?Ncixmeo1=$ z{-);Au{*tfzOG?KQ~K|ak8-HQ?`Pekhe2WM(8s{xv-p>Zmu_6{G!-oE$7$mY`MOJorI=+mMx?H;`pr!;fVYz?5~yXBACruWB`Ph zZM}90_<^OBxIhyZ9BW$`>6JvO;%VFpqVr8|7t3~AmxYak6?`Pp#c;**_SYmi`&z23 z`p6_~ePvH)C6x-G9$hgL=eVALq`-AiamN>!3~Lxw&{H(b{B(7xSRm6<3<{%{yXiH# zos5Rv1L+8fUKJLo%P>4I&$}yv!nq!SDk)#au2GcAs3m9e&xk)anxJ@$+1kW3zv?vL5 zBqgZ>q#j-!z=`cND^YQQP`%2?REmx&ehVZTZurvzgTk)NknHz6cBwnxbwu@{mOBsxZugrsiC zsQwVtCQ1ddrz1jg)$8J68@MFYT(AYs(mD5Zr|f@x#P0D_C&s7$tYHKc5u zFVqw#Fj#ik?Om?9nAxU`b|5(HAYfQ-#XV`*D-oa(H}PhNCpDWF+t>yy+F*CYaZAVz zF#s_)x)KP3#iO(-6SK0NHjyVXDDIgJT6{7eldL%Gk==7su&J41n&{bF8=HX{C$Ku$ zh*$9YB|nRIS!B1rk#U3(vtJ5j{9&&$4arFY%6ik@j7v<+Zew#t0`)n5;Fw%Gjf28M za>-c)DT%Y9ghYr5LZBo{l$11rXOuI?azc_|awcz#QG}FIRltx?>ft6BhLfqNaloEuFw9qi%2`j+qN-=P96?z@ph-zd8xfhO<|=t9RZED)2AHu@ocGjRHqf zqB!KvP1K`|;{-+WaAkR#ie45)(y?;9nrC{W-{LUhdOrHCnB{ zZfkNc7*%kMBK~jRrq}86^8g7IgQ5amNMBH{wfmqk;Cj`#w!CW{=yAL7bsN|Mr$|?&I2(ml(%EmuA*$DXP0~Gb;#L= zs6B~--Pf-xlbyGJe|AG}|3}D!(PObMPi{STa%Dm7T^D|{P8rg-v?KGug;DkJ*{Smz z@+U9+BX%0ib%Ra*(LJi&$vgQXV69R^jPijp4FWt zOV)l?;@y8?I`=6FC+95KV=P|V{nD9m_|Uv3Hr$#0_Jw!Dde;if)yqGMY~Im#ZcqF9 z;FeLP$I1I2e9v{=#`{W6ytsM8`S!8rr&X>Hj#vHcCR_}A7S$EH{=E?acY@I>QOZ@~ zyEZO_u#JTE!VDmXVi=JdnVnt_!dj1ZS(qx#wU;LaV!@JEjx{ z#%x-7uI~Zhy`#tR-xPY9-_*Ts?K$vRmw$E7(XACnW^8%eHGXNn!XrZA(dj`RO`=}8 zZ6uPb*u7z51X*fK!+E5dS4R=AK%vP`etKZtGZmJd%iq}4{`XJdo2&JwCOq}UyV4T- zu5ATh?fk5I!kb4QF8SSyb({!Zw(zGcV0M;|SFmAUo!xa`F5??2&NDV$zKoZ`dM%J>`Rr*3_J7L?V% z3dwF$UNWHbsZ8HgTCsuiASg9t(f>o@ViwX*U!-Pe|clWp~`)q&PjmyUmD4Wdcn0rH@Q~t0;sl% z-MZKK*N^-TPw<}air2h%cjx-@6)#M(-Mgk@UEi7onQ7X|dD~A+e>FI!wZC%4=-Snr Yn_j=O>hSpQHd)S)v9TW>cDE${54DJsf&c&j literal 0 HcmV?d00001 diff --git a/data_share/test/native/resource/ohos_test/BUILD.gn b/data_share/test/native/resource/ohos_test/BUILD.gn new file mode 100644 index 00000000..e30cf901 --- /dev/null +++ b/data_share/test/native/resource/ohos_test/BUILD.gn @@ -0,0 +1,22 @@ +# Copyright (c) 2022 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import("//build/ohos.gni") + +ohos_copy("copy_ohos_test") { + sources = [ "./ohos_test.xml" ] + outputs = [ "$root_out_dir/tests/unittest/data_share/resource/ohos_test.xml" ] + + subsystem_name = "distributeddatamgr" + part_name = "data_share" +} diff --git a/data_share/test/native/resource/ohos_test/ohos_test.xml b/data_share/test/native/resource/ohos_test/ohos_test.xml new file mode 100644 index 00000000..3308e64b --- /dev/null +++ b/data_share/test/native/resource/ohos_test/ohos_test.xml @@ -0,0 +1,26 @@ + + + + + + + + + + \ No newline at end of file diff --git a/data_share/test/native/unittest/mediadatashare_test/src/slientaccess_test.cpp b/data_share/test/native/unittest/mediadatashare_test/src/slientaccess_test.cpp new file mode 100644 index 00000000..45dd14d5 --- /dev/null +++ b/data_share/test/native/unittest/mediadatashare_test/src/slientaccess_test.cpp @@ -0,0 +1,182 @@ +/* + * Copyright (C) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include +#include + +#include "accesstoken_kit.h" +#include "datashare_helper.h" +#include "datashare_log.h" +#include "hap_token_info.h" +#include "iservice_registry.h" +#include "system_ability_definition.h" +#include "token_setproc.h" + +namespace OHOS { +namespace DataShare { +using namespace testing::ext; +using namespace OHOS::Security::AccessToken; +constexpr int STORAGE_MANAGER_MANAGER_ID = 5003; +std::string DATA_SHARE_URI = "datashare:///com.acts.datasharetest"; +std::string SLIENT_ACCESS_URI = "datashare:///com.acts.datasharetest/entry/DB00/TBL00?Proxy=true"; +std::string TBL_STU_NAME = "name"; +std::string TBL_STU_AGE = "age"; +std::shared_ptr g_slientAccessHelper; + +class SlientAccessTest : public testing::Test { +public: + static void SetUpTestCase(void); + static void TearDownTestCase(void); + void SetUp(); + void TearDown(); +}; + +std::shared_ptr CreateDataShareHelper(int32_t systemAbilityId, std::string uri) +{ + LOG_INFO("CreateDataShareHelper start"); + auto saManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager(); + if (saManager == nullptr) { + LOG_ERROR("GetSystemAbilityManager get samgr failed."); + return nullptr; + } + auto remoteObj = saManager->GetSystemAbility(systemAbilityId); + while (remoteObj == nullptr) { + LOG_ERROR("GetSystemAbility service failed."); + return nullptr; + } + return DataShare::DataShareHelper::Creator(remoteObj, uri); +} + +void SlientAccessTest::SetUpTestCase(void) +{ + LOG_INFO("SetUpTestCase invoked"); + auto dataShareHelper = CreateDataShareHelper(STORAGE_MANAGER_MANAGER_ID, DATA_SHARE_URI); + ASSERT_TRUE(dataShareHelper != nullptr); + int sleepTime = 3; + sleep(sleepTime); + + HapInfoParams info = { + .userID = 100, + .bundleName = "ohos.datashareclienttest.demo", + .instIndex = 0, + .appIDDesc = "ohos.datashareclienttest.demo" + }; + HapPolicyParams policy = { + .apl = APL_NORMAL, + .domain = "test.domain", + .permList = { + { + .permissionName = "ohos.permission.test", + .bundleName = "ohos.datashareclienttest.demo", + .grantMode = 1, + .availableLevel = APL_NORMAL, + .label = "label", + .labelId = 1, + .description = "ohos.datashareclienttest.demo", + .descriptionId = 1 + } + }, + .permStateList = { + { + .permissionName = "ohos.permission.test", + .isGeneral = true, + .resDeviceID = { "local" }, + .grantStatus = { PermissionState::PERMISSION_GRANTED }, + .grantFlags = { 1 } + } + } + }; + AccessTokenKit::AllocHapToken(info, policy); + auto testTokenId = Security::AccessToken::AccessTokenKit::GetHapTokenID( + info.userID, info.bundleName, info.instIndex); + SetSelfTokenID(testTokenId); + + g_slientAccessHelper = CreateDataShareHelper(STORAGE_MANAGER_MANAGER_ID, SLIENT_ACCESS_URI); + ASSERT_TRUE(g_slientAccessHelper != nullptr); + LOG_INFO("SetUpTestCase end"); +} + +void SlientAccessTest::TearDownTestCase(void) +{ + auto tokenId = AccessTokenKit::GetHapTokenID(100, "ohos.datashareclienttest.demo", 0); + AccessTokenKit::DeleteToken(tokenId); +} + +void SlientAccessTest::SetUp(void) {} +void SlientAccessTest::TearDown(void) {} + +HWTEST_F(SlientAccessTest, SlientAccess_Insert_Test_001, TestSize.Level0) +{ + LOG_INFO("SlientAccess_Insert_Test_001::Start"); + auto helper = g_slientAccessHelper; + Uri uri(SLIENT_ACCESS_URI); + DataShare::DataShareValuesBucket valuesBucket; + std::string value = "lisi"; + valuesBucket.Put(TBL_STU_NAME, value); + int age = 25; + valuesBucket.Put(TBL_STU_AGE, age); + + int retVal = helper->Insert(uri, valuesBucket); + EXPECT_EQ((retVal > 0), true); + LOG_INFO("SlientAccess_Insert_Test_001::End"); +} + +HWTEST_F(SlientAccessTest, SlientAccess_Update_Test_001, TestSize.Level0) +{ + LOG_INFO("SlientAccess_Update_Test_001::Start"); + auto helper = g_slientAccessHelper; + Uri uri(SLIENT_ACCESS_URI); + DataShare::DataShareValuesBucket valuesBucket; + int value = 50; + valuesBucket.Put(TBL_STU_AGE, value); + DataShare::DataSharePredicates predicates; + std::string selections = TBL_STU_NAME + " = 'lisi'"; + predicates.SetWhereClause(selections); + int retVal = helper->Update(uri, predicates, valuesBucket); + EXPECT_EQ((retVal > 0), true); + LOG_INFO("SlientAccess_Update_Test_001::End"); +} + +HWTEST_F(SlientAccessTest, SlientAccess_Query_Test_001, TestSize.Level0) +{ + LOG_INFO("SlientAccess_Query_Test_001::Start"); + auto helper = g_slientAccessHelper; + Uri uri(SLIENT_ACCESS_URI); + DataShare::DataSharePredicates predicates; + predicates.EqualTo(TBL_STU_NAME, "lisi"); + vector columns; + auto resultSet = helper->Query(uri, predicates, columns); + int result = 0; + if (resultSet != nullptr) { + resultSet->GetRowCount(result); + } + EXPECT_EQ(result, 1); + LOG_INFO("SlientAccess_Query_Test_001::End"); +} + +HWTEST_F(SlientAccessTest, SlientAccess_Delete_Test_001, TestSize.Level0) +{ + LOG_INFO("SlientAccess_Delete_Test_001::Start"); + auto helper = g_slientAccessHelper; + Uri uri(SLIENT_ACCESS_URI); + + DataShare::DataSharePredicates deletePredicates; + std::string selections = TBL_STU_NAME + " = 'lisi'"; + deletePredicates.SetWhereClause(selections); + int retVal = helper->Delete(uri, deletePredicates); + EXPECT_EQ((retVal > 0), true); + LOG_INFO("SlientAccess_Delete_Test_001::End"); +} +} // namespace DataShare +} // namespace OHOS \ No newline at end of file diff --git a/datamgr_service/BUILD.gn b/datamgr_service/BUILD.gn index 2a6d0268..8c8a8314 100644 --- a/datamgr_service/BUILD.gn +++ b/datamgr_service/BUILD.gn @@ -19,7 +19,6 @@ group("build_native_test") { "services/distributeddataservice/app/test:unittest", "services/distributeddataservice/framework/test:unittest", "services/distributeddataservice/service/test:unittest", - "services/distributeddataservice/test:moduletest", ] } diff --git a/datamgr_service/services/distributeddataservice/adapter/account/src/account_delegate_normal_impl.cpp b/datamgr_service/services/distributeddataservice/adapter/account/src/account_delegate_normal_impl.cpp index ddca36ad..042beb6c 100644 --- a/datamgr_service/services/distributeddataservice/adapter/account/src/account_delegate_normal_impl.cpp +++ b/datamgr_service/services/distributeddataservice/adapter/account/src/account_delegate_normal_impl.cpp @@ -31,7 +31,7 @@ namespace DistributedKv { using namespace OHOS::EventFwk; using namespace OHOS::AAFwk; using namespace OHOS::DistributedData; -using namespace Security::AccessToken; +using namespace Security::AccessToken;6 //AccountDelegate::BaseInstance AccountDelegate::getInstance_ = AccountDelegateNormalImpl::GetBaseInstance; AccountDelegate *AccountDelegateNormalImpl::GetBaseInstance() { diff --git a/datamgr_service/services/distributeddataservice/app/src/checker/bundle_checker.cpp b/datamgr_service/services/distributeddataservice/app/src/checker/bundle_checker.cpp index 6b1f36c0..557c9990 100644 --- a/datamgr_service/services/distributeddataservice/app/src/checker/bundle_checker.cpp +++ b/datamgr_service/services/distributeddataservice/app/src/checker/bundle_checker.cpp @@ -55,7 +55,7 @@ std::string BundleChecker::GetAppId(const CheckerManager::StoreInfo &info) ZLOGE("token:0x%{public}x, result:%{public}d", info.tokenId, result); return ""; } - if (tokenInfo.bundleName != info.bundleName) { + if (!info.bundleName.empty() && tokenInfo.bundleName != info.bundleName) { ZLOGE("bundlename:%{public}s <-> %{public}s", info.bundleName.c_str(), tokenInfo.bundleName.c_str()); return ""; } diff --git a/datamgr_service/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp b/datamgr_service/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp index f6ee81d4..6e19c96a 100644 --- a/datamgr_service/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp +++ b/datamgr_service/services/distributeddataservice/service/kvdb/kvdb_service_impl.cpp @@ -39,6 +39,7 @@ #include "utils/anonymous.h" #include "utils/constant.h" #include "utils/converter.h" +#include "utils/crypto.h" namespace OHOS::DistributedKv { using namespace OHOS::DistributedData; using namespace OHOS::AppDistributedKv; @@ -350,6 +351,36 @@ Status KVDBServiceImpl::GetBackupPassword(const AppId &appId, const StoreId &sto return (BackupManager::GetInstance().GetPassWord(metaData, password)) ? SUCCESS : ERROR; } +KVDBService::DevBrief KVDBServiceImpl::GetLocalDevice() +{ + DevBrief brief; + CheckerManager::StoreInfo storeInfo; + storeInfo.tokenId = IPCSkeleton::GetCallingTokenID(); + storeInfo.uid = IPCSkeleton::GetCallingPid(); + auto appId = CheckerManager::GetInstance().GetAppId(storeInfo); + auto device = DMAdapter::GetInstance().GetLocalDevice(); + brief.networkId = std::move(device.networkId); + brief.uuid = Crypto::Sha256(appId + "_" + device.uuid); + return brief; +} + +std::vector KVDBServiceImpl::GetRemoteDevices() +{ + std::vector briefs; + CheckerManager::StoreInfo storeInfo; + storeInfo.tokenId = IPCSkeleton::GetCallingTokenID(); + storeInfo.uid = IPCSkeleton::GetCallingPid(); + auto appId = CheckerManager::GetInstance().GetAppId(storeInfo); + auto devices = DMAdapter::GetInstance().GetRemoteDevices(); + for (const auto &device : devices) { + DevBrief brief; + brief.networkId = std::move(device.networkId); + brief.uuid = Crypto::Sha256(appId + "_" + device.uuid); + briefs.push_back(std::move(brief)); + } + return briefs; +} + Status KVDBServiceImpl::BeforeCreate(const AppId &appId, const StoreId &storeId, const Options &options) { ZLOGD("appId:%{public}s storeId:%{public}s to export data", appId.appId.c_str(), storeId.storeId.c_str()); @@ -709,7 +740,7 @@ Status KVDBServiceImpl::ConvertDbStatus(DBStatus status) const case DBStatus::TIME_OUT: return Status::TIME_OUT; case DBStatus::OVER_MAX_LIMITS: - return Status::OVER_MAX_SUBSCRIBE_LIMITS; + return Status::OVER_MAX_LIMITS; case DBStatus::EKEYREVOKED_ERROR: // fallthrough case DBStatus::SECURITY_OPTION_CHECK_ERROR: return Status::SECURITY_LEVEL_ERROR; diff --git a/datamgr_service/services/distributeddataservice/service/kvdb/kvdb_service_impl.h b/datamgr_service/services/distributeddataservice/service/kvdb/kvdb_service_impl.h index c2aecdd7..72dddfc4 100644 --- a/datamgr_service/services/distributeddataservice/service/kvdb/kvdb_service_impl.h +++ b/datamgr_service/services/distributeddataservice/service/kvdb/kvdb_service_impl.h @@ -53,6 +53,8 @@ public: Status Subscribe(const AppId &appId, const StoreId &storeId, sptr observer) override; Status Unsubscribe(const AppId &appId, const StoreId &storeId, sptr observer) override; Status GetBackupPassword(const AppId &appId, const StoreId &storeId, std::vector &password) override; + DevBrief GetLocalDevice() override; + std::vector GetRemoteDevices() override; int32_t OnAppExit(pid_t uid, pid_t pid, uint32_t tokenId, const std::string &appId) override; int32_t ResolveAutoLaunch(const std::string &identifier, DBLaunchParam ¶m) override; diff --git a/datamgr_service/services/distributeddataservice/service/kvdb/kvdb_service_stub.cpp b/datamgr_service/services/distributeddataservice/service/kvdb/kvdb_service_stub.cpp index 61fdde59..95e333dc 100644 --- a/datamgr_service/services/distributeddataservice/service/kvdb/kvdb_service_stub.cpp +++ b/datamgr_service/services/distributeddataservice/service/kvdb/kvdb_service_stub.cpp @@ -40,6 +40,8 @@ const KVDBServiceStub::Handler KVDBServiceStub::HANDLERS[TRANS_BUTT] = { &KVDBServiceStub::OnSubscribe, &KVDBServiceStub::OnUnsubscribe, &KVDBServiceStub::OnGetBackupPassword, + &KVDBServiceStub::OnGetLocalDevice, + &KVDBServiceStub::OnGetRemoteDevices, }; int KVDBServiceStub::OnRemoteRequest(uint32_t code, MessageParcel &data, MessageParcel &reply) @@ -59,6 +61,9 @@ int KVDBServiceStub::OnRemoteRequest(uint32_t code, MessageParcel &data, Message AppId appId; StoreId storeId; + if (TRANS_NO_APPID_BEGIN <= code && code <= TRANS_NO_APPID_END) { + return (this->*HANDLERS[code])(appId, storeId, data, reply); + } if (!ITypesUtil::Unmarshal(data, appId, storeId)) { ZLOGE("Unmarshal appId:%{public}s storeId:%{public}s", appId.appId.c_str(), storeId.storeId.c_str()); return IPC_STUB_INVALID_DATA_ERR; @@ -220,6 +225,34 @@ int32_t KVDBServiceStub::OnGetSyncParam( return ERR_NONE; } +int32_t KVDBServiceStub::OnGetLocalDevice( + const AppId &appId, const StoreId &storeId, MessageParcel &data, MessageParcel &reply) +{ + (void)appId; + (void)storeId; + int32_t status = SUCCESS; + auto brief = GetLocalDevice(); + if (!ITypesUtil::Marshal(reply, status, brief)) { + ZLOGE("Marshal device brief:{%{public}u, %{public}u}", brief.networkId.empty(), brief.uuid.empty()); + return IPC_STUB_WRITE_PARCEL_ERR; + } + return ERR_NONE; +} + +int32_t KVDBServiceStub::OnGetRemoteDevices( + const AppId &appId, const StoreId &storeId, MessageParcel &data, MessageParcel &reply) +{ + (void)appId; + (void)storeId; + int32_t status = SUCCESS; + auto briefs = GetRemoteDevices(); + if (!ITypesUtil::Marshal(reply, status, briefs)) { + ZLOGE("Marshal device brief:%{public}zu", briefs.size()); + return IPC_STUB_WRITE_PARCEL_ERR; + } + return ERR_NONE; +} + int32_t KVDBServiceStub::OnEnableCap( const AppId &appId, const StoreId &storeId, MessageParcel &data, MessageParcel &reply) { diff --git a/datamgr_service/services/distributeddataservice/service/kvdb/kvdb_service_stub.h b/datamgr_service/services/distributeddataservice/service/kvdb/kvdb_service_stub.h index ab0bacc4..8b5f8b90 100644 --- a/datamgr_service/services/distributeddataservice/service/kvdb/kvdb_service_stub.h +++ b/datamgr_service/services/distributeddataservice/service/kvdb/kvdb_service_stub.h @@ -43,6 +43,8 @@ private: int32_t OnSubscribe(const AppId &appId, const StoreId &storeId, MessageParcel &data, MessageParcel &reply); int32_t OnUnsubscribe(const AppId &appId, const StoreId &storeId, MessageParcel &data, MessageParcel &reply); int32_t OnGetBackupPassword(const AppId &appId, const StoreId &storeId, MessageParcel &data, MessageParcel &reply); + int32_t OnGetLocalDevice(const AppId &appId, const StoreId &storeId, MessageParcel &data, MessageParcel &reply); + int32_t OnGetRemoteDevices(const AppId &appId, const StoreId &storeId, MessageParcel &data, MessageParcel &reply); static const Handler HANDLERS[TRANS_BUTT]; }; } // namespace OHOS::DistributedKv diff --git a/datamgr_service/services/distributeddataservice/test/BUILD.gn b/datamgr_service/services/distributeddataservice/test/BUILD.gn index ae66f36b..b3694296 100644 --- a/datamgr_service/services/distributeddataservice/test/BUILD.gn +++ b/datamgr_service/services/distributeddataservice/test/BUILD.gn @@ -12,701 +12,6 @@ # limitations under the License. import("//build/test.gni") -module_output_path = "datamgr_service/distributeddb" - -mul_sources = [ - "common/distributeddb/src/auto_launch_callback.cpp", - "common/distributeddb/src/delegate_callback.cpp", - "common/distributeddb/src/delegate_kv_mgr_callback.cpp", - "common/distributeddb/src/distributed_test_tools.cpp", - "common/distributeddb/src/kv_store_observer_impl.cpp", - "common/distributeddb/src/kv_store_snapshot_callback.cpp", -] - -############################################################################### -config("module_private_config") { - visibility = [ ":*" ] - - include_dirs = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/include", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/include", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src", - "../adapter/include/communicator", - "//developtools/liblog", - "common/distributeddb/include", - "moduletest/common/distributeddb/include", - "//commonlibrary/c_utils/base/include", - "//third_party/sqlite/include", - "//foundation/distributeddatamgr/kv_store/interfaces/innerkits/distributeddata/include", - "//third_party/openssl/include/", - ] - - defines = [ - "_LARGEFILE64_SOURCE", - "_FILE_OFFSET_BITS=64", - "SQLITE_HAS_CODEC", - "USE_SQLITE_SYMBOLS", - "USING_HILOG_LOGGER", - "TESTCASES_USING_GTEST_EXT", - "OMIT_JSON", - "LOW_LEVEL_MEM_DEV", - "RELEASE_MODE_V2", - "RELEASE_MODE_V3", - "OMIT_MULTI_VER", - ] - ldflags = [ "-Wl,--exclude-libs,ALL" ] -} - -##############################moduletest########################################## -ohos_moduletest("DistributeddbKvTransactionTest") { - module_out_path = module_output_path - - sources = [ - "common/distributeddb/src/distributed_test_sysinfo.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "moduletest/common/distributeddb/src/distributed_crud_transaction_tools.cpp", - "moduletest/common/distributeddb/src/distributeddb_kv_transaction_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} - -ohos_moduletest("DistributeddbKvTransactionPerfTest") { - module_out_path = module_output_path - - sources = [ - "common/distributeddb/src/distributed_test_sysinfo.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "moduletest/common/distributeddb/src/distributed_crud_transaction_tools.cpp", - "moduletest/common/distributeddb/src/distributeddb_kv_transaction_perf_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} -ohos_moduletest("DistributeddbKvConcurrencyCrudTest") { - module_out_path = module_output_path - - sources = [ - "common/distributeddb/src/distributed_test_sysinfo.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "moduletest/common/distributeddb/src/distributeddb_kv_concurrency_crud_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} -ohos_moduletest("DistributeddbKvBatchCrudTest") { - module_out_path = module_output_path - - sources = [ - "common/distributeddb/src/distributed_test_sysinfo.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "moduletest/common/distributeddb/src/distributeddb_kv_batch_crud_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} -ohos_moduletest("DistributeddbKvCreateTest") { - module_out_path = module_output_path - - sources = [ - "common/distributeddb/src/distributed_test_sysinfo.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "moduletest/common/distributeddb/src/distributeddb_kv_create_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} -ohos_moduletest("DistributeddbKvCrudTest") { - module_out_path = module_output_path - - sources = [ - "common/distributeddb/src/distributed_test_sysinfo.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "moduletest/common/distributeddb/src/distributeddb_kv_crud_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} -ohos_moduletest("DistributeddbKvObserverTest") { - module_out_path = module_output_path - - sources = [ - "common/distributeddb/src/distributed_test_sysinfo.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "moduletest/common/distributeddb/src/distributeddb_kv_observer_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} -ohos_moduletest("DistributeddbKvObserverSnapTest") { - module_out_path = module_output_path - - sources = [ - "common/distributeddb/src/distributed_test_sysinfo.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "moduletest/common/distributeddb/src/distributeddb_kv_observer_snap_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} - -ohos_moduletest("DistributeddbKvBackupTest") { - module_out_path = module_output_path - sources = [ - "common/distributeddb/src/distributeddb_constant.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "moduletest/common/distributeddb/src/distributeddb_kv_backup_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} - -ohos_moduletest("DistributeddbKvRealdelTest") { - module_out_path = module_output_path - sources = [ - "common/distributeddb/src/distributeddb_constant.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "moduletest/common/distributeddb/src/distributeddb_kv_realdel_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} - -ohos_moduletest("DistributeddbNbCreateTest") { - module_out_path = module_output_path - - sources = [ - "common/distributeddb/src/distributeddb_constant.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "common/distributeddb/src/distributeddb_nb_test_tools.cpp", - "moduletest/common/distributeddb/src/distributeddb_nb_create_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} -ohos_moduletest("DistributeddbNbCrudTest") { - module_out_path = module_output_path - - sources = [ - "common/distributeddb/src/distributeddb_constant.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "common/distributeddb/src/distributeddb_nb_test_tools.cpp", - "moduletest/common/distributeddb/src/distributeddb_nb_crud_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} -ohos_moduletest("DistributeddbNbObserverTest") { - module_out_path = module_output_path - - sources = [ - "common/distributeddb/src/distributeddb_constant.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "common/distributeddb/src/distributeddb_nb_test_tools.cpp", - "moduletest/common/distributeddb/src/distributeddb_nb_observer_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} - -ohos_moduletest("DistributeddbNbCursorTest") { - module_out_path = module_output_path - - sources = [ - "common/distributeddb/src/distributeddb_constant.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "common/distributeddb/src/distributeddb_nb_test_tools.cpp", - "moduletest/common/distributeddb/src/distributeddb_nb_cursor_test.cpp", - "moduletest/common/distributeddb/src/distributeddb_nb_cursor_testcase.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} - -ohos_moduletest("DistributeddbNbBackupTest") { - module_out_path = module_output_path - - sources = [ - "common/distributeddb/src/distributeddb_constant.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "common/distributeddb/src/distributeddb_nb_test_tools.cpp", - "moduletest/common/distributeddb/src/distributeddb_nb_backup_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} - -ohos_moduletest("DistributeddbNbBatchCrudTest") { - module_out_path = module_output_path - - sources = [ - "common/distributeddb/src/distributeddb_constant.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "common/distributeddb/src/distributeddb_nb_test_tools.cpp", - "moduletest/common/distributeddb/src/distributeddb_nb_batch_crud_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} - -ohos_moduletest("DistributeddbNbLocalBatchCrudTest") { - module_out_path = module_output_path - - sources = [ - "common/distributeddb/src/distributeddb_constant.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "common/distributeddb/src/distributeddb_nb_test_tools.cpp", - "moduletest/common/distributeddb/src/distributeddb_nb_local_batch_crud_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} - -ohos_moduletest("DistributeddbNbSchemaDbTest") { - module_out_path = module_output_path - - sources = [ - "common/distributeddb/src/distributeddb_constant.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "common/distributeddb/src/distributeddb_nb_test_tools.cpp", - "moduletest/common/distributeddb/src/distributeddb_nb_schema_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} - -ohos_moduletest("DistributeddbNbPredicateQueryTest") { - module_out_path = module_output_path - - sources = [ - "common/distributeddb/src/distributeddb_constant.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "common/distributeddb/src/distributeddb_nb_test_tools.cpp", - "moduletest/common/distributeddb/src/distributeddb_nb_predicate_query_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} - -ohos_moduletest("DistributeddbNbPredicateQueryExpandTest") { - module_out_path = module_output_path - sources = [ - "common/distributeddb/src/distributeddb_constant.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "common/distributeddb/src/distributeddb_nb_test_tools.cpp", - "common/distributeddb/src/distributeddb_schema_test_tools.cpp", - "moduletest/common/distributeddb/src/distributeddb_nb_predicate_query_expand_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} - -ohos_moduletest("DistributeddbNbAutolaunchTest") { - module_out_path = module_output_path - sources = [ - "common/distributeddb/src/distributeddb_constant.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "common/distributeddb/src/distributeddb_nb_test_tools.cpp", - "common/distributeddb/src/distributeddb_schema_test_tools.cpp", - "moduletest/common/distributeddb/src/distributeddb_nb_autolaunch_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} - -ohos_moduletest("DistributedbNbDbDamageTest") { - module_out_path = module_output_path - sources = [ - "common/distributeddb/src/distributeddb_constant.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "common/distributeddb/src/distributeddb_nb_test_tools.cpp", - "common/distributeddb/src/distributeddb_schema_test_tools.cpp", - "moduletest/common/distributeddb/src/distributeddb_nb_db_damage_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} - -ohos_moduletest("DistributeddbNbCrudPowerTest") { - module_out_path = module_output_path - sources = [ - "common/distributeddb/src/distributeddb_constant.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "common/distributeddb/src/distributeddb_nb_test_tools.cpp", - "common/distributeddb/src/distributeddb_schema_test_tools.cpp", - "moduletest/common/distributeddb/src/distributeddb_nb_crud_power_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} - -ohos_moduletest("DistributeddbNbSchemaTest") { - module_out_path = module_output_path - sources = [ - "common/distributeddb/src/distributeddb_constant.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "common/distributeddb/src/distributeddb_nb_test_tools.cpp", - "common/distributeddb/src/distributeddb_schema_test_tools.cpp", - "moduletest/common/distributeddb/src/distributeddb_nb_schema_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} - -ohos_moduletest("DistributeddbNbSchemaUpgradeTest") { - module_out_path = module_output_path - sources = [ - "common/distributeddb/src/distributeddb_constant.cpp", - "common/distributeddb/src/distributeddb_data_generator.cpp", - "common/distributeddb/src/distributeddb_nb_test_tools.cpp", - "common/distributeddb/src/distributeddb_schema_test_tools.cpp", - "moduletest/common/distributeddb/src/distributeddb_nb_schema_upgrade_test.cpp", - ] - sources += mul_sources - configs = [ ":module_private_config" ] - - deps = [ - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", - "//third_party/googletest:gtest_main", - "//third_party/openssl:libcrypto_shared", - "//third_party/sqlite:sqlite", - ] - external_deps = [ - "c_utils:utils", - "hiviewdfx_hilog_native:libhilog", - ] - part_name = "datamgr_service" -} - -############################################################################### -group("moduletest") { - testonly = true - deps = [ - "//third_party/googletest:gmock", - "//third_party/googletest:gtest_main", - "//third_party/sqlite:sqlite", - ] - - deps += [ - ":DistributedbNbDbDamageTest", - ":DistributeddbKvBackupTest", - ":DistributeddbKvBatchCrudTest", - ":DistributeddbKvConcurrencyCrudTest", - ":DistributeddbKvCreateTest", - ":DistributeddbKvCrudTest", - ":DistributeddbKvObserverSnapTest", - ":DistributeddbKvObserverTest", - ":DistributeddbKvRealdelTest", - ":DistributeddbKvTransactionPerfTest", - ":DistributeddbKvTransactionTest", - ":DistributeddbNbAutolaunchTest", - ":DistributeddbNbBackupTest", - ":DistributeddbNbBatchCrudTest", - ":DistributeddbNbCreateTest", - ":DistributeddbNbCrudPowerTest", - ":DistributeddbNbCrudTest", - ":DistributeddbNbCursorTest", - ":DistributeddbNbLocalBatchCrudTest", - ":DistributeddbNbObserverTest", - ":DistributeddbNbPredicateQueryExpandTest", - ":DistributeddbNbPredicateQueryTest", - ":DistributeddbNbSchemaTest", - ":DistributeddbNbSchemaUpgradeTest", - ] -} - ############################################################################### group("fuzztest") { diff --git a/kv_store/frameworks/innerkitsimpl/distributeddatafwk/src/distributed_kv_data_manager.cpp b/kv_store/frameworks/innerkitsimpl/distributeddatafwk/src/distributed_kv_data_manager.cpp index 8a4db228..c3a3485a 100644 --- a/kv_store/frameworks/innerkitsimpl/distributeddatafwk/src/distributed_kv_data_manager.cpp +++ b/kv_store/frameworks/innerkitsimpl/distributeddatafwk/src/distributed_kv_data_manager.cpp @@ -168,26 +168,26 @@ void DistributedKvDataManager::UnRegisterKvStoreServiceDeathRecipient( Status DistributedKvDataManager::GetLocalDevice(DeviceInfo &localDevice) { - auto dvInfo = DevManager::GetInstance().GetLocalDevice(); - if (dvInfo.networkId.empty()) { + auto devInfo = DevManager::GetInstance().GetLocalDevice(); + if (devInfo.networkId.empty()) { ZLOGE("deviceId empty!"); return Status::ERROR; } - localDevice.deviceId = dvInfo.networkId; - localDevice.deviceName = dvInfo.deviceName; - localDevice.deviceType = dvInfo.deviceType; + localDevice.deviceId = devInfo.networkId; return Status::SUCCESS; } Status DistributedKvDataManager::GetDeviceList(std::vector &deviceInfoList, DeviceFilterStrategy strategy) { - auto dvInfos = DevManager::GetInstance().GetRemoteDevices(); - for (const auto &info : dvInfos) { + auto devInfos = DevManager::GetInstance().GetRemoteDevices(); + for (const auto &info : devInfos) { if (info.networkId.empty()) { ZLOGW("deviceId empty!"); continue; } - DeviceInfo devInfo = { info.networkId, info.deviceName, info.deviceType }; + DeviceInfo devInfo = { + .deviceId = info.networkId, + }; deviceInfoList.emplace_back(devInfo); } ZLOGI("strategy is:%{public}d", strategy); diff --git a/kv_store/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/distributed_kv_data_manager_test.cpp b/kv_store/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/distributed_kv_data_manager_test.cpp index 5bc33a0a..15ac2f5b 100644 --- a/kv_store/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/distributed_kv_data_manager_test.cpp +++ b/kv_store/frameworks/innerkitsimpl/distributeddatafwk/test/unittest/distributed_kv_data_manager_test.cpp @@ -743,15 +743,15 @@ HWTEST_F(DistributedKvDataManagerTest, UnRegisterKvStoreServiceDeathRecipient001 * @tc.require: * @tc.author: zuojiangjiang */ -HWTEST_F(DistributedKvDataManagerTest, GetLocalDevice001, TestSize.Level1) +HWTEST_F(DistributedKvDataManagerTest, GetLocalDevice, TestSize.Level1) { - ZLOGI("GetLocalDevice001 begin."); - DeviceInfo dvInfo; - Status status = manager.GetLocalDevice(dvInfo); + ZLOGI("GetLocalDevice begin."); + DeviceInfo devInfo; + Status status = manager.GetLocalDevice(devInfo); EXPECT_EQ(status, Status::SUCCESS); - EXPECT_EQ(dvInfo.deviceId.empty(), false); - EXPECT_EQ(dvInfo.deviceName.empty(), false); - EXPECT_EQ(dvInfo.deviceType.empty(), false); + EXPECT_EQ(devInfo.deviceId.empty(), false); + EXPECT_EQ(devInfo.deviceName.empty(), true); + EXPECT_EQ(devInfo.deviceType.empty(), true); } /** @@ -761,11 +761,11 @@ HWTEST_F(DistributedKvDataManagerTest, GetLocalDevice001, TestSize.Level1) * @tc.require: * @tc.author: zuojiangjiang */ -HWTEST_F(DistributedKvDataManagerTest, GetDeviceList001, TestSize.Level1) +HWTEST_F(DistributedKvDataManagerTest, GetDeviceList, TestSize.Level1) { - ZLOGI("GetDeviceList001 begin."); - std::vector dvInfos; - Status status = manager.GetDeviceList(dvInfos, DeviceFilterStrategy::NO_FILTER); + ZLOGI("GetDeviceList begin."); + std::vector devInfos; + Status status = manager.GetDeviceList(devInfos, DeviceFilterStrategy::NO_FILTER); EXPECT_EQ(status, Status::SUCCESS); } @@ -776,9 +776,9 @@ HWTEST_F(DistributedKvDataManagerTest, GetDeviceList001, TestSize.Level1) * @tc.require: * @tc.author: zuojiangjiang */ -HWTEST_F(DistributedKvDataManagerTest, WatchDeviceChange001, TestSize.Level1) +HWTEST_F(DistributedKvDataManagerTest, WatchDeviceChange, TestSize.Level1) { - ZLOGI("GetDeviceList001 begin."); + ZLOGI("GetDeviceList begin."); std::shared_ptr observer = nullptr; Status status = manager.StartWatchDeviceChange(observer); EXPECT_EQ(status, Status::SUCCESS); diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/include/backup_manager.h b/kv_store/frameworks/innerkitsimpl/kvdb/include/backup_manager.h index 9eea87e3..49444387 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/include/backup_manager.h +++ b/kv_store/frameworks/innerkitsimpl/kvdb/include/backup_manager.h @@ -26,6 +26,7 @@ namespace OHOS::DistributedKv { class BackupManager { public: using DBStore = DistributedDB::KvStoreNbDelegate; + using DBPassword = DistributedKv::SecurityManager::DBPassword; struct ResidueInfo { size_t tmpBackupSize; size_t tmpKeySize; @@ -59,7 +60,7 @@ private: void CleanTmpData(const std::string &name); StoreUtil::FileInfo GetBackupFileInfo(const std::string &name, const std::string &baseDir, const std::string &storeId); - SecurityManager::DBPassword GetRestorePassword(const std::string &name, const std::string &baseDir, + DBPassword GetRestorePassword(const std::string &name, const std::string &baseDir, const std::string &appId, const std::string &storeId); bool HaveResidueFile(const std::vector &files); bool HaveResidueKey(const std::vector &files, std::string storeId); diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/include/dev_manager.h b/kv_store/frameworks/innerkitsimpl/kvdb/include/dev_manager.h index c6e18d9c..d04cf321 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/include/dev_manager.h +++ b/kv_store/frameworks/innerkitsimpl/kvdb/include/dev_manager.h @@ -24,14 +24,13 @@ public: static constexpr size_t MAX_ID_LEN = 64; struct DetailInfo { std::string uuid; - std::string udid; std::string networkId; std::string deviceName; std::string deviceType; }; static DevManager &GetInstance(); - std::string ToUUID(const std::string &networkId) const; - std::string ToNetworkId(const std::string &uuid) const; + std::string ToUUID(const std::string &networkId); + std::string ToNetworkId(const std::string &uuid); const DetailInfo &GetLocalDevice(); std::vector GetRemoteDevices() const; class Observer { @@ -55,6 +54,8 @@ private: void OnChanged(const std::string &networkId); void OnReady(const std::string &networkId); void RegisterDevCallback(); + void UpdateBucket(); + DetailInfo GetDevInfoFromBucket(const std::string &id); int32_t Init(); std::function Retry(); diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/include/kv_types_util.h b/kv_store/frameworks/innerkitsimpl/kvdb/include/kv_types_util.h index b81432e4..1a0211b5 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/include/kv_types_util.h +++ b/kv_store/frameworks/innerkitsimpl/kvdb/include/kv_types_util.h @@ -16,6 +16,7 @@ #ifndef OHOS_DISTRIBUTED_DATA_FRAMEWORKS_KVDB_KV_TYPES_UTIL_H #define OHOS_DISTRIBUTED_DATA_FRAMEWORKS_KVDB_KV_TYPES_UTIL_H #include "change_notification.h" +#include "kvdb_service.h" #include "itypes_util.h" #include "types.h" namespace OHOS::ITypesUtil { @@ -28,8 +29,8 @@ using StoreId = DistributedKv::StoreId; using DeviceInfo = DistributedKv::DeviceInfo; using ChangeNotification = DistributedKv::ChangeNotification; using Options = DistributedKv::Options; -using Options = DistributedKv::Options; using SyncPolicy = DistributedKv::SyncPolicy; +using DevBrief = DistributedKv::KVDBService::DevBrief; template<> API_EXPORT bool Marshalling(const Blob &input, MessageParcel &data); template<> @@ -70,6 +71,11 @@ API_EXPORT bool Marshalling(const SyncPolicy &input, MessageParcel &data); template<> API_EXPORT bool Unmarshalling(SyncPolicy &output, MessageParcel &data); +template<> +API_EXPORT bool Marshalling(const DevBrief &input, MessageParcel &data); +template<> +API_EXPORT bool Unmarshalling(DevBrief &output, MessageParcel &data); + int64_t GetTotalSize(const std::vector &entries); int64_t GetTotalSize(const std::vector &entries); } // namespace OHOS::ITypesUtil diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/include/kvdb_service.h b/kv_store/frameworks/innerkitsimpl/kvdb/include/kvdb_service.h index 3332366e..74af08fb 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/include/kvdb_service.h +++ b/kv_store/frameworks/innerkitsimpl/kvdb/include/kvdb_service.h @@ -33,6 +33,10 @@ public: std::vector devices; std::string query; }; + struct DevBrief { + std::string uuid; + std::string networkId; + }; DECLARE_INTERFACE_DESCRIPTOR(u"OHOS.DistributedKv.KVFeature"); API_EXPORT KVDBService() = default; @@ -59,6 +63,8 @@ public: virtual Status Unsubscribe(const AppId &appId, const StoreId &storeId, sptr observer) = 0; virtual Status GetBackupPassword( const AppId &appId, const StoreId &storeId, std::vector &password) = 0; + virtual DevBrief GetLocalDevice() = 0; + virtual std::vector GetRemoteDevices() = 0; protected: enum TransId : int32_t { @@ -80,7 +86,11 @@ protected: TRANS_SUB, TRANS_UNSUB, TRANS_GET_PASSWORD, - TRANS_BUTT, + TRANS_NO_APPID_BEGIN, + TRANS_GET_LOCAL_DEVICE = TRANS_NO_APPID_BEGIN, + TRANS_GET_REMOTE_DEVICES, + TRANS_NO_APPID_END, + TRANS_BUTT = TRANS_NO_APPID_END, }; }; } // namespace OHOS::DistributedKv diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/include/kvdb_service_client.h b/kv_store/frameworks/innerkitsimpl/kvdb/include/kvdb_service_client.h index 94adb555..b38c055a 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/include/kvdb_service_client.h +++ b/kv_store/frameworks/innerkitsimpl/kvdb/include/kvdb_service_client.h @@ -48,6 +48,8 @@ public: Status Subscribe(const AppId &appId, const StoreId &storeId, sptr observer) override; Status Unsubscribe(const AppId &appId, const StoreId &storeId, sptr observer) override; Status GetBackupPassword(const AppId &appId, const StoreId &storeId, std::vector &password) override; + DevBrief GetLocalDevice() override; + std::vector GetRemoteDevices() override; sptr GetSyncAgent(const AppId &appId); protected: diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/include/security_manager.h b/kv_store/frameworks/innerkitsimpl/kvdb/include/security_manager.h index 5d3e9349..81458ae2 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/include/security_manager.h +++ b/kv_store/frameworks/innerkitsimpl/kvdb/include/security_manager.h @@ -15,15 +15,42 @@ #ifndef OHOS_DISTRIBUTED_DATA_FRAMEWORKS_KVDB_SECURITY_MANAGER_H #define OHOS_DISTRIBUTED_DATA_FRAMEWORKS_KVDB_SECURITY_MANAGER_H #include + +#include "kv_store_delegate_manager.h" +#include "kv_store_nb_delegate.h" #include "types.h" #include "types_export.h" namespace OHOS::DistributedKv { class SecurityManager { public: - using DBPassword = DistributedDB::CipherPassword; + struct DBPassword { + bool isKeyOutdated = false; + DistributedDB::CipherPassword password; + size_t GetSize() const + { + return password.GetSize(); + } + const uint8_t *GetData() const + { + return password.GetData(); + } + int SetValue(const uint8_t *inputData, size_t inputSize) + { + return password.SetValue(inputData, inputSize); + } + bool IsValid() + { + return password.GetSize() != 0; + } + int Clear() + { + return password.Clear(); + } + }; + static SecurityManager &GetInstance(); DBPassword GetDBPassword(const std::string &name, const std::string &path, bool needCreate = false); - bool SaveDBPassword(const std::string &name, const std::string &path, const DBPassword &key); + bool SaveDBPassword(const std::string &name, const std::string &path, const DistributedDB::CipherPassword &key); void DelDBPassword(const std::string &name, const std::string &path); private: @@ -31,18 +58,20 @@ private: static constexpr const char *HKS_BLOB_TYPE_NONCE = "Z5s0Bo571KoqwIi6"; static constexpr const char *HKS_BLOB_TYPE_AAD = "distributeddata_client"; static constexpr int KEY_SIZE = 32; + static constexpr int HOURS_PER_YEAR = (24 * 365); SecurityManager(); ~SecurityManager(); - std::vector Random(int32_t len); - std::vector LoadKeyFromFile(const std::string &name, const std::string &path); + std::vector LoadKeyFromFile(const std::string &name, const std::string &path, bool &isOutdated); bool SaveKeyToFile(const std::string &name, const std::string &path, std::vector &key); + std::vector Random(int32_t len); + bool IsKeyOutdated(const std::vector &date); int32_t GenerateRootKey(); int32_t CheckRootKey(); bool Retry(); std::vector Encrypt(const std::vector &key); bool Decrypt(std::vector &source, std::vector &key); - + std::vector vecRootKeyAlias_{}; std::vector vecNonce_{}; std::vector vecAad_{}; diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/include/single_store_impl.h b/kv_store/frameworks/innerkitsimpl/kvdb/include/single_store_impl.h index f9e1b76c..00bfeb3a 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/include/single_store_impl.h +++ b/kv_store/frameworks/innerkitsimpl/kvdb/include/single_store_impl.h @@ -95,6 +95,7 @@ private: static constexpr size_t MAX_OBSERVER_SIZE = 8; Status GetResultSet(const DBQuery &query, std::shared_ptr &resultSet) const; Status GetEntries(const DBQuery &query, std::vector &entries) const; + Status RetryWithCheckPoint(std::function lambda); std::function BridgeReleaser(); Status DoSync(const SyncInfo &syncInfo, std::shared_ptr observer); void DoAutoSync(); diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/include/store_factory.h b/kv_store/frameworks/innerkitsimpl/kvdb/include/store_factory.h index 730fa780..b305ec0b 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/include/store_factory.h +++ b/kv_store/frameworks/innerkitsimpl/kvdb/include/store_factory.h @@ -16,9 +16,11 @@ #ifndef OHOS_DISTRIBUTED_DATA_FRAMEWORKS_KVDB_STORE_FACTORY_H #define OHOS_DISTRIBUTED_DATA_FRAMEWORKS_KVDB_STORE_FACTORY_H #include + #include "concurrent_map.h" #include "convertor.h" #include "kv_store_delegate_manager.h" +#include "security_manager.h" #include "single_store_impl.h" namespace OHOS::DistributedKv { class StoreFactory { @@ -33,11 +35,25 @@ private: using DBManager = DistributedDB::KvStoreDelegateManager; using DBOption = DistributedDB::KvStoreNbDelegate::Option; using DBStore = DistributedDB::KvStoreNbDelegate; - using DBPassword = DistributedDB::CipherPassword; + using DBStatus = DistributedDB::DBStatus; + using DBPassword = DistributedKv::SecurityManager::DBPassword; + + static constexpr int REKEY_TIMES = 3; + static constexpr const char *REKEY_NEW = ".new"; + static constexpr uint64_t MAX_WAL_SIZE = 200 * 1024 * 1024; // the max size of WAL is 200MB StoreFactory(); std::shared_ptr GetDBManager(const std::string &path, const AppId &appId); - DBOption GetDBOption(const Options &options, const DBPassword &password) const; + DBOption GetDBOption(const Options &options, const DBPassword &dbPassword) const; + void ReKey(const std::string &storeId, const std::string &path, DBPassword &dbPassword, + std::shared_ptr dbManager, const Options &options); + Status RekeyRecover(const std::string &storeId, const std::string &path, DBPassword &dbPassword, + std::shared_ptr dbManager, const Options &options); + bool ExecuteRekey(const std::string &storeId, const std::string &path, DBPassword &dbPassword, DBStore *dbStore); + Status IsPwdValid(const std::string &storeId, std::shared_ptr dbManager, const Options &options, + DBPassword &dbPassword); + void UpdateKeyFile(const std::string &storeId, const std::string &path); + Status SetDbConfig(std::shared_ptr dbStore); ConcurrentMap> dbManagers_; ConcurrentMap>> stores_; Convertor *convertors_[INVALID_TYPE]; diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/src/backup_manager.cpp b/kv_store/frameworks/innerkitsimpl/kvdb/src/backup_manager.cpp index 253c3272..087b34f6 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/src/backup_manager.cpp +++ b/kv_store/frameworks/innerkitsimpl/kvdb/src/backup_manager.cpp @@ -127,22 +127,22 @@ Status BackupManager::Backup(const std::string &name, const std::string &baseDir (void)StoreUtil::InitPath(topPath); (void)StoreUtil::InitPath(storePath); KeepData(backupFullName, isCreate); - auto password = SecurityManager::GetInstance().GetDBPassword(storeId, baseDir); - if (password.GetSize() != 0) { + auto dbPassword = SecurityManager::GetInstance().GetDBPassword(storeId, baseDir); + if (dbPassword.IsValid()) { KeepData(keyFullName, isCreate); } - auto dbStatus = dbStore->Export(backupFullName, password); + auto dbStatus = dbStore->Export(backupFullName, dbPassword.password); auto status = StoreUtil::ConvertStatus(dbStatus); if (status == SUCCESS) { - if (password.GetSize() != 0) { - SecurityManager::GetInstance().SaveDBPassword(keyName, baseDir, password); + if (dbPassword.IsValid()) { + SecurityManager::GetInstance().SaveDBPassword(keyName, baseDir, dbPassword.password); CleanTmpData(keyFullName); } CleanTmpData(backupFullName); } else { RollBackData(backupFullName, isCreate); - if (password.GetSize() != 0) { + if (dbPassword.IsValid()) { RollBackData(keyFullName, isCreate); } } @@ -186,31 +186,31 @@ Status BackupManager::Restore(const std::string &name, const std::string &baseDi return INVALID_ARGUMENT; } auto fullName = baseDir + BACKUP_TOP_PATH + "/" + storeId + "/" + backupFile.name; - auto password = GetRestorePassword(backupFile.name, baseDir, appId, storeId); + auto password = GetRestorePassword(backupFile.name, baseDir, appId, storeId).password; auto dbStatus = dbStore->Import(fullName, password); auto status = StoreUtil::ConvertStatus(dbStatus); return status; } -SecurityManager::DBPassword BackupManager::GetRestorePassword(const std::string &name, const std::string &baseDir, +BackupManager::DBPassword BackupManager::GetRestorePassword(const std::string &name, const std::string &baseDir, const std::string &appId, const std::string &storeId) { auto backupName = name.substr(0, name.length() - BACKUP_POSTFIX_SIZE); auto keyName = BACKUP_KEY_PREFIX + storeId + "_" + backupName; - SecurityManager::DBPassword password; + DBPassword dbPassword; if (backupName == AUTO_BACKUP_NAME) { auto service = KVDBServiceClient::GetInstance(); if (service == nullptr) { - return SecurityManager::DBPassword(); + return dbPassword; } std::vector pwd; service->GetBackupPassword({ appId }, { storeId }, pwd); - password.SetValue(pwd.data(), pwd.size()); + dbPassword.SetValue(pwd.data(), pwd.size()); pwd.assign(pwd.size(), 0); } else { - password = SecurityManager::GetInstance().GetDBPassword(keyName, baseDir); + dbPassword = SecurityManager::GetInstance().GetDBPassword(keyName, baseDir); } - return password; + return dbPassword; } Status BackupManager::DeleteBackup(std::map &deleteList, const std::string &baseDir, @@ -428,4 +428,4 @@ bool BackupManager::IsBeginWith(const std::string &fullString, const std::string return false; } } -} // namespace OHOS::DistributedKv \ No newline at end of file +} // namespace OHOS::DistributedKv diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/src/dev_manager.cpp b/kv_store/frameworks/innerkitsimpl/kvdb/src/dev_manager.cpp index 0beb71ff..544d883b 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/src/dev_manager.cpp +++ b/kv_store/frameworks/innerkitsimpl/kvdb/src/dev_manager.cpp @@ -19,6 +19,7 @@ #include "device_manager.h" #include "device_manager_callback.h" #include "dm_device_info.h" +#include "kvdb_service_client.h" #include "log_print.h" #include "store_util.h" #include "task_executor.h" @@ -118,44 +119,43 @@ DevManager &DevManager::GetInstance() return instance; } -std::string DevManager::ToUUID(const std::string &networkId) const +std::string DevManager::ToUUID(const std::string &networkId) { - DetailInfo deviceInfo; - if (deviceInfos_.Get(networkId, deviceInfo)) { - return deviceInfo.uuid; - } + return GetDevInfoFromBucket(networkId).uuid; +} - std::string uuid; - std::string udid; - auto &deviceManager = DeviceManager::GetInstance(); - deviceManager.GetUuidByNetworkId(PKG_NAME, networkId, uuid); - deviceManager.GetUdidByNetworkId(PKG_NAME, networkId, udid); - if (uuid.empty() || udid.empty() || networkId.empty()) { - return ""; +std::string DevManager::ToNetworkId(const std::string &uuid) +{ + return GetDevInfoFromBucket(uuid).networkId; +} + +DevManager::DetailInfo DevManager::GetDevInfoFromBucket(const std::string &id) +{ + DetailInfo detailInfo; + if (!deviceInfos_.Get(id, detailInfo)) { + UpdateBucket(); + deviceInfos_.Get(id, detailInfo); } - deviceInfo = { uuid, std::move(udid), networkId, "", "" }; - deviceInfos_.Set(networkId, deviceInfo); - deviceInfos_.Set(uuid, deviceInfo); - return uuid; + if (detailInfo.uuid.empty()) { + ZLOGE("id:%{public}s", StoreUtil::Anonymous(id).c_str()); + } + return detailInfo; } -std::string DevManager::ToNetworkId(const std::string &uuid) const +void DevManager::UpdateBucket() { - DetailInfo deviceInfo; - if (deviceInfos_.Get(uuid, deviceInfo)) { - return deviceInfo.networkId; + auto detailInfos = GetRemoteDevices(); + if (detailInfos.empty()) { + ZLOGD("no remote device"); } - auto infos = GetRemoteDevices(); - for (auto &info : infos) { - if (info.uuid == uuid) { - deviceInfos_.Set(info.uuid, info); - deviceInfos_.Set(info.networkId, info); - return info.networkId; + detailInfos.emplace_back(GetLocalDevice()); + for (const auto &detailInfo : detailInfos) { + if (detailInfo.uuid.empty() || detailInfo.networkId.empty()) { + continue; } + deviceInfos_.Set(detailInfo.uuid, detailInfo); + deviceInfos_.Set(detailInfo.networkId, detailInfo); } - - std::lock_guard lockGuard(mutex_); - return (localInfo_.uuid == uuid) ? localInfo_.networkId : ""; } const DevManager::DetailInfo &DevManager::GetLocalDevice() @@ -164,51 +164,42 @@ const DevManager::DetailInfo &DevManager::GetLocalDevice() if (!localInfo_.uuid.empty()) { return localInfo_; } - - DmDeviceInfo info; - auto &deviceManager = DeviceManager::GetInstance(); - int32_t ret = deviceManager.GetLocalDeviceInfo(PKG_NAME, info); - if (ret != DM_OK) { - ZLOGE("GetLocalNodeDeviceInfo error"); + auto service = KVDBServiceClient::GetInstance(); + if (service == nullptr) { + ZLOGE("service unavailable"); return invalidDetail_; } - std::string networkId = std::string(info.networkId); - std::string uuid; - deviceManager.GetUuidByNetworkId(PKG_NAME, networkId, uuid); - std::string udid; - deviceManager.GetUdidByNetworkId(PKG_NAME, networkId, udid); - if (uuid.empty() || udid.empty() || networkId.empty()) { + auto device = service->GetLocalDevice(); + if (device.uuid.empty() || device.networkId.empty()) { return invalidDetail_; } - ZLOGI("[LocalDevice] id:%{public}s, name:%{public}s, type:%{public}d", StoreUtil::Anonymous(uuid).c_str(), - info.deviceName, info.deviceTypeId); - localInfo_ = { std::move(uuid), std::move(udid), std::move(networkId), std::string(info.deviceName), - std::string(info.deviceName) }; + localInfo_.networkId = std::move(device.networkId); + localInfo_.uuid = std::move(device.uuid); + ZLOGI("[LocalDevice] uuid:%{public}s, networkId:%{public}s", + StoreUtil::Anonymous(localInfo_.uuid).c_str(), StoreUtil::Anonymous(localInfo_.networkId).c_str()); return localInfo_; } std::vector DevManager::GetRemoteDevices() const { - std::vector devices; - std::vector dmDeviceInfos{}; - auto &deviceManager = DeviceManager::GetInstance(); - int32_t ret = deviceManager.GetTrustedDeviceList(PKG_NAME, "", dmDeviceInfos); - if (ret != DM_OK) { - ZLOGE("GetTrustedDeviceList error"); - return devices; + auto service = KVDBServiceClient::GetInstance(); + if (service == nullptr) { + ZLOGE("service unavailable"); + return {}; } - - for (const auto &dmDeviceInfo : dmDeviceInfos) { - std::string networkId = dmDeviceInfo.networkId; - std::string uuid; - std::string udid; - deviceManager.GetUuidByNetworkId(PKG_NAME, networkId, uuid); - deviceManager.GetUdidByNetworkId(PKG_NAME, networkId, udid); - DetailInfo deviceInfo = { std::move(uuid), std::move(udid), std::move(networkId), - std::string(dmDeviceInfo.deviceName), std::to_string(dmDeviceInfo.deviceTypeId) }; - devices.push_back(std::move(deviceInfo)); + auto devices = service->GetRemoteDevices(); + if (devices.empty()) { + ZLOGD("no remote device"); + return {}; + } + std::vector dtInfos; + for (auto &device : devices) { + DetailInfo dtInfo; + dtInfo.networkId = std::move(device.networkId); + dtInfo.uuid = std::move(device.uuid); + dtInfos.push_back(dtInfo); } - return devices; + return dtInfos; } void DevManager::Online(const std::string &networkId) diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/src/kv_types_util.cpp b/kv_store/frameworks/innerkitsimpl/kvdb/src/kv_types_util.cpp index efd5b76a..70045bdb 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/src/kv_types_util.cpp +++ b/kv_store/frameworks/innerkitsimpl/kvdb/src/kv_types_util.cpp @@ -160,6 +160,18 @@ bool Unmarshalling(SyncPolicy &output, MessageParcel &data) return ITypesUtil::Unmarshal(data, output.type, output.value); } +template<> +bool Marshalling(const DevBrief &input, MessageParcel &data) +{ + return ITypesUtil::Marshal(data, input.uuid, input.networkId); +} + +template<> +bool Unmarshalling(DevBrief &output, MessageParcel &data) +{ + return ITypesUtil::Unmarshal(data, output.uuid, output.networkId); +} + int64_t GetTotalSize(const std::vector &entries) { int64_t bufferSize = 1; diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/src/kvdb_service_client.cpp b/kv_store/frameworks/innerkitsimpl/kvdb/src/kvdb_service_client.cpp index 3464c910..211d9b66 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/src/kvdb_service_client.cpp +++ b/kv_store/frameworks/innerkitsimpl/kvdb/src/kvdb_service_client.cpp @@ -290,6 +290,30 @@ Status KVDBServiceClient::GetBackupPassword( return static_cast(status); } +KVDBService::DevBrief KVDBServiceClient::GetLocalDevice() +{ + DevBrief brief; + MessageParcel reply; + int32_t status = IPC_SEND(TRANS_GET_LOCAL_DEVICE, reply); + if (status != SUCCESS) { + ZLOGE("status:0x%{public}x", status); + } + ITypesUtil::Unmarshal(reply, brief); + return brief; +} + +std::vector KVDBServiceClient::GetRemoteDevices() +{ + std::vector briefs; + MessageParcel reply; + int32_t status = IPC_SEND(TRANS_GET_REMOTE_DEVICES, reply); + if (status != SUCCESS) { + ZLOGE("status:0x%{public}x", status); + } + ITypesUtil::Unmarshal(reply, briefs); + return briefs; +} + sptr KVDBServiceClient::GetSyncAgent(const AppId &appId) { std::lock_guard lockGuard(agentMtx_); diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/src/security_manager.cpp b/kv_store/frameworks/innerkitsimpl/kvdb/src/security_manager.cpp index 166b8531..330a372c 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/src/security_manager.cpp +++ b/kv_store/frameworks/innerkitsimpl/kvdb/src/security_manager.cpp @@ -14,14 +14,18 @@ */ #define LOG_TAG "SECURITYMANAGER" #include "security_manager.h" + +#include #include #include #include -#include "log_print.h" + +#include "file_ex.h" #include "hks_api.h" #include "hks_param.h" -#include "file_ex.h" +#include "log_print.h" #include "securec.h" +#include "store_types.h" #include "store_util.h" #include "task_executor.h" namespace OHOS::DistributedKv { @@ -61,26 +65,26 @@ bool SecurityManager::Retry() return false; } -SecurityManager::DBPassword SecurityManager::GetDBPassword(const std::string &name, const std::string &path, - bool needCreate) +SecurityManager::DBPassword SecurityManager::GetDBPassword(const std::string &name, + const std::string &path, bool needCreate) { - DBPassword password; - auto secKey = LoadKeyFromFile(name, path); + DBPassword dbPassword; + auto secKey = LoadKeyFromFile(name, path, dbPassword.isKeyOutdated); if (secKey.empty() && needCreate) { secKey = Random(KEY_SIZE); if (!SaveKeyToFile(name, path, secKey)) { secKey.assign(secKey.size(), 0); - return password; + return dbPassword; } } - password.SetValue(secKey.data(), secKey.size()); + dbPassword.SetValue(secKey.data(), secKey.size()); secKey.assign(secKey.size(), 0); - return password; + return dbPassword; } bool SecurityManager::SaveDBPassword(const std::string &name, const std::string &path, - const SecurityManager::DBPassword &key) + const DistributedDB::CipherPassword &key) { std::vector pwd(key.GetData(), key.GetData() + key.GetSize()); auto result = SaveKeyToFile(name, path, pwd); @@ -105,7 +109,8 @@ std::vector SecurityManager::Random(int32_t len) return key; } -std::vector SecurityManager::LoadKeyFromFile(const std::string &name, const std::string &path) +std::vector SecurityManager::LoadKeyFromFile(const std::string &name, const std::string &path, + bool &isOutdated) { auto keyPath = path + "/key/" + name + ".key"; if (!FileExists(keyPath)) { @@ -130,6 +135,7 @@ std::vector SecurityManager::LoadKeyFromFile(const std::string &name, c offset++; std::vector date; date.assign(content.begin() + offset, content.begin() + (sizeof(time_t) / sizeof(uint8_t)) + offset); + isOutdated = IsKeyOutdated(date); offset += (sizeof(time_t) / sizeof(uint8_t)); std::vector key{content.begin() + offset, content.end()}; content.assign(content.size(), 0); @@ -147,7 +153,6 @@ bool SecurityManager::SaveKeyToFile(const std::string &name, const std::string & ZLOGE("failed! no root key and generation failed"); return false; } - auto secretKey = Encrypt(key); auto keyPath = path + "/key"; StoreUtil::InitPath(keyPath); @@ -342,4 +347,12 @@ int32_t SecurityManager::CheckRootKey() ZLOGI("HksKeyExist status: %{public}d", ret); return ret; } -} // namespace OHOS::DistributedKv \ No newline at end of file + +bool SecurityManager::IsKeyOutdated(const std::vector &date) +{ + time_t time = *reinterpret_cast(const_cast(&date[0])); + auto createTime = std::chrono::system_clock::from_time_t(time); + return ((createTime + std::chrono::hours(HOURS_PER_YEAR)) < std::chrono::system_clock::now()); +} + +} // namespace OHOS::DistributedKv diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/src/single_store_impl.cpp b/kv_store/frameworks/innerkitsimpl/kvdb/src/single_store_impl.cpp index 606dfb4b..e79f8a38 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/src/single_store_impl.cpp +++ b/kv_store/frameworks/innerkitsimpl/kvdb/src/single_store_impl.cpp @@ -14,6 +14,7 @@ */ #define LOG_TAG "SingleStoreImpl" #include "single_store_impl.h" + #include "auto_sync_timer.h" #include "backup_manager.h" #include "dds_trace.h" @@ -42,7 +43,7 @@ SingleStoreImpl::SingleStoreImpl(std::shared_ptr dbStore, const AppId & continue; } auto exist = std::get_if(&policy.value); - if (exist == nullptr && *exist <= 0) { + if (exist == nullptr || *exist <= 0) { break; } interval_ = *exist; @@ -62,6 +63,18 @@ StoreId SingleStoreImpl::GetStoreId() const return { storeId_ }; } +Status SingleStoreImpl::RetryWithCheckPoint(std::function lambda) +{ + auto dbStatus = lambda(); + if (dbStatus != DistributedDB::LOG_OVER_LIMITS) { + return StoreUtil::ConvertStatus(dbStatus); + } + DistributedDB::PragmaData data; + dbStore_->Pragma(DistributedDB::EXEC_CHECKPOINT, data); + dbStatus = lambda(); + return StoreUtil::ConvertStatus(dbStatus); +} + Status SingleStoreImpl::Put(const Key &key, const Value &value) { DdsTrace trace(std::string(LOG_TAG "::") + std::string(__FUNCTION__)); @@ -78,8 +91,7 @@ Status SingleStoreImpl::Put(const Key &key, const Value &value) return INVALID_ARGUMENT; } - auto dbStatus = dbStore_->Put(dbKey, value); - auto status = StoreUtil::ConvertStatus(dbStatus); + auto status = RetryWithCheckPoint([this, &dbKey, &value]() { return dbStore_->Put(dbKey, value); }); if (status != SUCCESS) { ZLOGE("status:0x%{public}x key:%{public}s, value size:%{public}zu", status, StoreUtil::Anonymous(key.ToString()).c_str(), value.Size()); @@ -109,8 +121,8 @@ Status SingleStoreImpl::PutBatch(const std::vector &entries) dbEntry.value = entry.value; dbEntries.push_back(std::move(dbEntry)); } - auto dbStatus = dbStore_->PutBatch(dbEntries); - auto status = StoreUtil::ConvertStatus(dbStatus); + + auto status = RetryWithCheckPoint([this, &dbEntries]() { return dbStore_->PutBatch(dbEntries); }); if (status != SUCCESS) { ZLOGE("status:0x%{public}x entries size:%{public}zu", status, entries.size()); } @@ -133,8 +145,7 @@ Status SingleStoreImpl::Delete(const Key &key) return INVALID_ARGUMENT; } - auto dbStatus = dbStore_->Delete(dbKey); - auto status = StoreUtil::ConvertStatus(dbStatus); + auto status = RetryWithCheckPoint([this, &dbKey]() { return dbStore_->Delete(dbKey); }); if (status != SUCCESS) { ZLOGE("status:0x%{public}x key:%{public}s", status, StoreUtil::Anonymous(key.ToString()).c_str()); } @@ -161,8 +172,7 @@ Status SingleStoreImpl::DeleteBatch(const std::vector &keys) dbKeys.push_back(std::move(dbKey)); } - auto dbStatus = dbStore_->DeleteBatch(dbKeys); - auto status = StoreUtil::ConvertStatus(dbStatus); + auto status = RetryWithCheckPoint([this, &dbKeys]() { return dbStore_->DeleteBatch(dbKeys); }); if (status != SUCCESS) { ZLOGE("status:0x%{public}x keys size:%{public}zu", status, keys.size()); } @@ -179,8 +189,7 @@ Status SingleStoreImpl::StartTransaction() return ALREADY_CLOSED; } - auto dbStatus = dbStore_->StartTransaction(); - auto status = StoreUtil::ConvertStatus(dbStatus); + auto status = RetryWithCheckPoint([this]() { return dbStore_->StartTransaction(); }); if (status != SUCCESS) { ZLOGE("status:0x%{public}x storeId:%{public}s", status, storeId_.c_str()); } @@ -238,7 +247,7 @@ Status SingleStoreImpl::SubscribeKvStore(SubscribeType type, std::shared_ptr bridge = PutIn(realType, observer); if (bridge == nullptr) { - return (realType == type) ? OVER_MAX_SUBSCRIBE_LIMITS : STORE_ALREADY_SUBSCRIBE; + return (realType == type) ? OVER_MAX_LIMITS : STORE_ALREADY_SUBSCRIBE; } Status status = SUCCESS; @@ -772,7 +781,11 @@ Status SingleStoreImpl::DoSync(const SyncInfo &syncInfo, std::shared_ptrAddSyncCallback(observer, syncInfo.seqId); - return service->Sync({ appId_ }, { storeId_ }, syncInfo); + auto status = service->Sync({ appId_ }, { storeId_ }, syncInfo); + if (status != Status::SUCCESS) { + syncAgent->DeleteSyncCallback(syncInfo.seqId); + } + return status; } void SingleStoreImpl::DoAutoSync() diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/src/store_factory.cpp b/kv_store/frameworks/innerkitsimpl/kvdb/src/store_factory.cpp index d0fea920..aa1c82dc 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/src/store_factory.cpp +++ b/kv_store/frameworks/innerkitsimpl/kvdb/src/store_factory.cpp @@ -40,6 +40,16 @@ StoreFactory::StoreFactory() } (void)DBManager::SetProcessSystemAPIAdapter(std::make_shared()); } +Status StoreFactory::SetDbConfig(std::shared_ptr dbStore) +{ + PragmaData data = + static_cast(const_cast(static_cast(&MAX_WAL_SIZE))); + auto status = dbStore->Pragma(DistributedDB::SET_MAX_LOG_LIMIT, data); + if (status != DistributedDB::DBStatus::OK) { + ZLOGE("failed to set max log limit! status:%{public}d", status); + } + return StoreUtil::ConvertStatus(status); +} std::shared_ptr StoreFactory::GetOrOpenStore(const AppId &appId, const StoreId &storeId, const Options &options, Status &status, bool &isCreate) @@ -55,13 +65,27 @@ std::shared_ptr StoreFactory::GetOrOpenStore(const AppId &appId, } auto dbManager = GetDBManager(options.baseDir, appId); - auto password = SecurityManager::GetInstance().GetDBPassword(storeId.storeId, options.baseDir, options.encrypt); - if (password.GetSize() == 0 && options.encrypt) { + auto dbPassword = + SecurityManager::GetInstance().GetDBPassword(storeId.storeId, options.baseDir, options.encrypt); + if (options.encrypt && !dbPassword.IsValid()) { status = CRYPT_ERROR; + ZLOGE("Crypt kvStore failed to get password, storeId is %{public}s, error is %{public}d", + storeId.storeId.c_str(), static_cast(status)); return !stores.empty(); } + if (options.encrypt) { + status = RekeyRecover(storeId, options.baseDir, dbPassword, dbManager, options); + if (status != SUCCESS) { + ZLOGE("KvStore password error, storeId is %{public}s, error is %{public}d", storeId.storeId.c_str(), + static_cast(status)); + return !stores.empty(); + } + if (dbPassword.isKeyOutdated) { + ReKey(storeId, options.baseDir, dbPassword, dbManager, options); + } + } DBStatus dbStatus = DBStatus::DB_ERROR; - dbManager->GetKvStore(storeId, GetDBOption(options, password), + dbManager->GetKvStore(storeId, GetDBOption(options, dbPassword), [this, &dbManager, &kvStore, &appId, &dbStatus, &options](auto status, auto *store) { dbStatus = status; if (store == nullptr) { @@ -69,6 +93,7 @@ std::shared_ptr StoreFactory::GetOrOpenStore(const AppId &appId, } auto release = [dbManager](auto *store) { dbManager->CloseKvStore(store); }; auto dbStore = std::shared_ptr(store, release); + SetDbConfig(dbStore); const Convertor &convertor = *(convertors_[options.kvStoreType]); kvStore = std::make_shared(dbStore, appId, options, convertor); }); @@ -136,7 +161,7 @@ std::shared_ptr StoreFactory::GetDBManager(const std::s return dbManager; } -StoreFactory::DBOption StoreFactory::GetDBOption(const Options &options, const DBPassword &password) const +StoreFactory::DBOption StoreFactory::GetDBOption(const Options &options, const DBPassword &dbPassword) const { DBOption dbOption; dbOption.syncDualTupleMode = true; // tuple of (appid+storeid) @@ -146,7 +171,7 @@ StoreFactory::DBOption StoreFactory::GetDBOption(const Options &options, const D dbOption.isEncryptedDb = options.encrypt; if (options.encrypt) { dbOption.cipher = DistributedDB::CipherType::AES_256_GCM; - dbOption.passwd = password; + dbOption.passwd = dbPassword.password; } if (options.kvStoreType == KvStoreType::SINGLE_VERSION) { @@ -158,6 +183,113 @@ StoreFactory::DBOption StoreFactory::GetDBOption(const Options &options, const D dbOption.schema = options.schema; dbOption.createDirByStoreIdOnly = true; dbOption.secOption = StoreUtil::GetDBSecurity(options.securityLevel); + dbOption.localOnly = !options.syncable; return dbOption; } -} // namespace OHOS::DistributedKv \ No newline at end of file + +void StoreFactory::ReKey(const std::string &storeId, const std::string &path, DBPassword &dbPassword, + std::shared_ptr dbManager, const Options &options) +{ + int32_t retry = 0; + DBStatus status; + DBStore *kvStore; + auto dbOption = GetDBOption(options, dbPassword); + dbManager->GetKvStore(storeId, dbOption, [&status, &kvStore](auto dbStatus, auto *dbStore) { + status = dbStatus; + kvStore = dbStore; + }); + while (retry < REKEY_TIMES) { + auto status = RekeyRecover(storeId, path, dbPassword, dbManager, options); + if (status != SUCCESS) { + break; + } + auto succeed = ExecuteRekey(storeId, path, dbPassword, kvStore); + if (succeed) { + break; + } + ++retry; + } + dbManager->CloseKvStore(kvStore); + kvStore = nullptr; +} + +Status StoreFactory::RekeyRecover(const std::string &storeId, const std::string &path, DBPassword &dbPassword, + std::shared_ptr dbManager, const Options &options) +{ + auto rekeyPath = path + "/rekey"; + auto keyName = path + "/key/" + storeId + ".key"; + Status pwdValid = DB_ERROR; + if (StoreUtil::IsFileExist(keyName)) { + dbPassword = SecurityManager::GetInstance().GetDBPassword(storeId, path); + pwdValid = IsPwdValid(storeId, dbManager, options, dbPassword); + } + + if (pwdValid == SUCCESS) { + StoreUtil::Remove(rekeyPath); + return pwdValid; + } + auto reKeyFile = storeId + REKEY_NEW; + auto rekeyName = path + "/rekey/key/" + reKeyFile + ".key"; + if (StoreUtil::IsFileExist(rekeyName)) { + dbPassword = SecurityManager::GetInstance().GetDBPassword(reKeyFile, rekeyPath); + pwdValid = IsPwdValid(storeId, dbManager, options, dbPassword); + } else { + return pwdValid; + } + if (pwdValid == SUCCESS) { + UpdateKeyFile(storeId, path); + } + return pwdValid; +} + +Status StoreFactory::IsPwdValid(const std::string &storeId, std::shared_ptr dbManager, + const Options &options, DBPassword &dbPassword) +{ + DBStatus status = DistributedDB::DB_ERROR; + DBStore *kvstore = nullptr; + auto dbOption = GetDBOption(options, dbPassword); + dbManager->GetKvStore(storeId, dbOption, [&status, &kvstore](auto dbStatus, auto *dbStore) { + status = dbStatus; + kvstore = dbStore; + }); + dbManager->CloseKvStore(kvstore); + return StoreUtil::ConvertStatus(status); +} + +bool StoreFactory::ExecuteRekey(const std::string &storeId, const std::string &path, DBPassword &dbPassword, + DBStore *dbStore) +{ + std::string rekeyPath = path + "/rekey"; + (void)StoreUtil::InitPath(rekeyPath); + + auto newDbPassword = SecurityManager::GetInstance().GetDBPassword(storeId + REKEY_NEW, rekeyPath, true); + if (!newDbPassword.IsValid()) { + ZLOGE("failed to generate new key."); + newDbPassword.Clear(); + StoreUtil::Remove(rekeyPath); + return false; + } + + auto dbStatus = dbStore->Rekey(newDbPassword.password); + auto status = StoreUtil::ConvertStatus(dbStatus); + if (status != SUCCESS) { + ZLOGE("failed to rekey the substitute database."); + StoreUtil::Remove(rekeyPath); + newDbPassword.Clear(); + return false; + } + UpdateKeyFile(storeId, path); + dbPassword.password = newDbPassword.password; + newDbPassword.Clear(); + dbPassword.isKeyOutdated = false; + return true; +} + +void StoreFactory::UpdateKeyFile(const std::string &storeId, const std::string &path) +{ + std::string rekeyFile = path + "/rekey/key/" + storeId + REKEY_NEW + ".key"; + std::string keyFile = path + "/key/" + storeId + ".key"; + StoreUtil::Rename(rekeyFile, keyFile); + StoreUtil::Remove(rekeyFile); +} +} // namespace OHOS::DistributedKv diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/src/store_manager.cpp b/kv_store/frameworks/innerkitsimpl/kvdb/src/store_manager.cpp index 55f2e20c..baed9cde 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/src/store_manager.cpp +++ b/kv_store/frameworks/innerkitsimpl/kvdb/src/store_manager.cpp @@ -51,8 +51,9 @@ std::shared_ptr StoreManager::GetKVStore(const AppId &appId, cons bool isCreate = false; auto kvStore = StoreFactory::GetInstance().GetOrOpenStore(appId, storeId, options, status, isCreate); if (isCreate && options.persistent) { - auto password = SecurityManager::GetInstance().GetDBPassword(storeId.storeId, options.baseDir, options.encrypt); - std::vector pwd(password.GetData(), password.GetData() + password.GetSize()); + auto dbPassword = SecurityManager::GetInstance().GetDBPassword(storeId.storeId, + options.baseDir, options.encrypt); + std::vector pwd(dbPassword.GetData(), dbPassword.GetData() + dbPassword.GetSize()); if (service != nullptr) { // delay notify service->AfterCreate(appId, storeId, options, pwd); @@ -110,4 +111,4 @@ Status StoreManager::Delete(const AppId &appId, const StoreId &storeId, const st } return StoreFactory::GetInstance().Delete(appId, storeId, path); } -} // namespace OHOS::DistributedKv \ No newline at end of file +} // namespace OHOS::DistributedKv diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/src/store_util.cpp b/kv_store/frameworks/innerkitsimpl/kvdb/src/store_util.cpp index 14632eef..b5c404a5 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/src/store_util.cpp +++ b/kv_store/frameworks/innerkitsimpl/kvdb/src/store_util.cpp @@ -135,7 +135,7 @@ Status StoreUtil::ConvertStatus(DBStatus status) case DBStatus::TIME_OUT: return Status::TIME_OUT; case DBStatus::OVER_MAX_LIMITS: - return Status::OVER_MAX_SUBSCRIBE_LIMITS; + return Status::OVER_MAX_LIMITS; case DBStatus::INVALID_PASSWD_OR_CORRUPTED_DB: return Status::CRYPT_ERROR; case DBStatus::SCHEMA_MISMATCH: @@ -145,6 +145,8 @@ Status StoreUtil::ConvertStatus(DBStatus status) case DBStatus::EKEYREVOKED_ERROR: // fallthrough case DBStatus::SECURITY_OPTION_CHECK_ERROR: return Status::SECURITY_LEVEL_ERROR; + case DBStatus::LOG_OVER_LIMITS: + return Status::WAL_OVER_LIMITS; default: ZLOGE("unknown db error:0x%{public}x", status); break; diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/test/BUILD.gn b/kv_store/frameworks/innerkitsimpl/kvdb/test/BUILD.gn index e94bd9a1..f9928742 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/test/BUILD.gn +++ b/kv_store/frameworks/innerkitsimpl/kvdb/test/BUILD.gn @@ -239,6 +239,29 @@ ohos_unittest("SingleStoreImplGetTopTest") { ] } +ohos_unittest("StoreFactoryTest") { + module_out_path = module_output_path + + sources = [ "store_factory_test.cpp" ] + + configs = [ ":module_private_config" ] + + external_deps = [ + "c_utils:utils", + "hilog_native:libhilog", + "ipc:ipc_core", + "safwk:system_ability_fwk", + "samgr:samgr_proxy", + ] + + deps = [ + ":kvdb_src_file", + "//foundation/distributeddatamgr/datamgr_service/services/distributeddataservice/adapter:distributeddata_adapter", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/:distributeddb", + "//third_party/googletest:gtest", + ] +} + ############################################################################### group("unittest") { testonly = true @@ -250,6 +273,7 @@ group("unittest") { ":DevManagerTest", ":SingleStoreImplGetTopTest", ":SingleStoreImplTest", + ":StoreFactoryTest", ":StoreUtilTest", ] } diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/test/backup_manager_test.cpp b/kv_store/frameworks/innerkitsimpl/kvdb/test/backup_manager_test.cpp index 0a253003..001aaf82 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/test/backup_manager_test.cpp +++ b/kv_store/frameworks/innerkitsimpl/kvdb/test/backup_manager_test.cpp @@ -23,6 +23,7 @@ #include "store_util.h" #include "sys/stat.h" #include "types.h" +namespace OHOS::Test { using namespace testing::ext; using namespace OHOS::DistributedKv; class BackupManagerTest : public testing::Test { @@ -469,4 +470,5 @@ HWTEST_F(BackupManagerTest, BackUpEntry, TestSize.Level0) ASSERT_EQ(status, SUCCESS); status = StoreManager::GetInstance().Delete(appId, storeId, baseDir); ASSERT_EQ(status, SUCCESS); -} \ No newline at end of file +} +} // namespace OHOS::Test \ No newline at end of file diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/test/dev_manager_test.cpp b/kv_store/frameworks/innerkitsimpl/kvdb/test/dev_manager_test.cpp index b1438602..01bf9443 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/test/dev_manager_test.cpp +++ b/kv_store/frameworks/innerkitsimpl/kvdb/test/dev_manager_test.cpp @@ -19,6 +19,7 @@ #include "dev_manager.h" #include "types.h" #include "log_print.h" +namespace OHOS::Test { using namespace testing::ext; using namespace OHOS::DistributedKv; @@ -44,52 +45,67 @@ void DevManagerTest::TearDown(void) {} /** -* @tc.name: GetLocalDevice001 +* @tc.name: GetLocalDevice * @tc.desc: Get local device's infomation * @tc.type: FUNC * @tc.require: * @tc.author: taoyuxin */ -HWTEST_F(DevManagerTest, GetLocalDevice001, TestSize.Level1) +HWTEST_F(DevManagerTest, GetLocalDevice, TestSize.Level1) { - ZLOGI("GetLocalDevice001 begin."); - DevManager &devManager = OHOS::DistributedKv::DevManager::GetInstance(); - DevManager::DetailInfo devInfo = devManager.GetLocalDevice(); - + ZLOGI("GetLocalDevice begin."); + auto devInfo = DevManager::GetInstance().GetLocalDevice(); EXPECT_NE(devInfo.networkId, ""); EXPECT_NE(devInfo.uuid, ""); - EXPECT_NE(devInfo.udid, ""); } /** -* @tc.name: ToUUID001 +* @tc.name: ToUUID * @tc.desc: Get uuid from networkId * @tc.type: FUNC * @tc.require: * @tc.author: taoyuxin */ -HWTEST_F(DevManagerTest, ToUUID001, TestSize.Level1) +HWTEST_F(DevManagerTest, ToUUID, TestSize.Level1) { - ZLOGI("ToUUID001 begin."); - DevManager &devManager = OHOS::DistributedKv::DevManager::GetInstance(); - DevManager::DetailInfo devInfo = devManager.GetLocalDevice(); + ZLOGI("ToUUID begin."); + auto &devMgr = DevManager::GetInstance(); + auto devInfo = devMgr.GetLocalDevice(); EXPECT_NE(devInfo.networkId, ""); - std::string uuid = devManager.ToUUID(devInfo.networkId); + auto uuid = devMgr.ToUUID(devInfo.networkId); EXPECT_NE(uuid, ""); EXPECT_EQ(uuid, devInfo.uuid); } /** -* @tc.name: GetRemoteDevices001 +* @tc.name: ToNetworkId +* @tc.desc: Get networkId from uuid +* @tc.type: FUNC +* @tc.require: +* @tc.author: zuojiangjiang +*/ +HWTEST_F(DevManagerTest, ToNetworkId, TestSize.Level1) +{ + auto &devMgr = DevManager::GetInstance(); + auto devInfo = devMgr.GetLocalDevice(); + EXPECT_NE(devInfo.uuid, ""); + auto networkId = devMgr.ToNetworkId(devInfo.uuid); + EXPECT_NE(networkId, ""); + EXPECT_EQ(networkId, devInfo.networkId); +} + +/** +* @tc.name: GetRemoteDevices * @tc.desc: Get remote devices * @tc.type: FUNC * @tc.require: * @tc.author: taoyuxin */ -HWTEST_F(DevManagerTest, GetRemoteDevices001, TestSize.Level1) +HWTEST_F(DevManagerTest, GetRemoteDevices, TestSize.Level1) { - ZLOGI("GetRemoteDevices001 begin."); + ZLOGI("GetRemoteDevices begin."); DevManager &devManager = OHOS::DistributedKv::DevManager::GetInstance(); - vector devInfo = devManager.GetRemoteDevices(); - EXPECT_EQ(devInfo.size(), 0); + auto devInfos = devManager.GetRemoteDevices(); + EXPECT_EQ(devInfos.size(), 0); } +} // namespace OHOS::Test \ No newline at end of file diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/test/single_store_impl_get_top_test.cpp b/kv_store/frameworks/innerkitsimpl/kvdb/test/single_store_impl_get_top_test.cpp index 38ad5f63..21f09dae 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/test/single_store_impl_get_top_test.cpp +++ b/kv_store/frameworks/innerkitsimpl/kvdb/test/single_store_impl_get_top_test.cpp @@ -22,6 +22,7 @@ #include "distributed_kv_data_manager.h" #include "types.h" +namespace OHOS::Test { using namespace testing::ext; using namespace OHOS::DistributedKv; class SingleStoreImplGetTopTest : public testing::Test { @@ -36,7 +37,6 @@ public: static std::shared_ptr singleKvStore; // declare kvstore instance. static Status initStatus; - static int MAX_VALUE_SIZE; }; const std::string VALID_SCHEMA_STRICT_DEFINE = "{\"SCHEMA_VERSION\":\"1.0\"," @@ -49,7 +49,6 @@ const std::string VALID_SCHEMA_STRICT_DEFINE = "{\"SCHEMA_VERSION\":\"1.0\"," std::shared_ptr SingleStoreImplGetTopTest::singleKvStore = nullptr; Status SingleStoreImplGetTopTest::initStatus = Status::ERROR; -int SingleStoreImplGetTopTest::MAX_VALUE_SIZE = 4 * 1024 * 1024; // max value size is 4M. void SingleStoreImplGetTopTest::SetUpTestCase(void) { @@ -283,4 +282,5 @@ HWTEST_F(SingleStoreImplGetTopTest, GetResultSetOrderByWriteTimeNoPrefix, TestSi auto status = singleKvStore->GetResultSet(query, output); ASSERT_EQ(status, NOT_SUPPORT); ASSERT_EQ(output, nullptr); -} \ No newline at end of file +} +} // namespace OHOS::Test \ No newline at end of file diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/test/single_store_impl_test.cpp b/kv_store/frameworks/innerkitsimpl/kvdb/test/single_store_impl_test.cpp index b669a2a2..0a3458f7 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/test/single_store_impl_test.cpp +++ b/kv_store/frameworks/innerkitsimpl/kvdb/test/single_store_impl_test.cpp @@ -14,17 +14,31 @@ */ #include #include +#include #include #include "block_data.h" #include "dev_manager.h" #include "distributed_kv_data_manager.h" +#include "kv_store_nb_delegate.h" #include "store_manager.h" #include "sys/stat.h" #include "types.h" using namespace testing::ext; using namespace OHOS::DistributedKv; namespace OHOS::Test { + +std::vector Random(int32_t len) +{ + std::random_device randomDevice; + std::uniform_int_distribution distribution(0, std::numeric_limits::max()); + std::vector key(len); + for (int32_t i = 0; i < len; i++) { + key[i] = static_cast(distribution(randomDevice)); + } + return key; +} + class SingleStoreImplTest : public testing::Test { public: class TestObserver : public KvStoreObserver { @@ -57,6 +71,7 @@ public: std::shared_ptr CreateKVStore(std::string storeIdTest, KvStoreType type, bool encrypt, bool backup); std::shared_ptr kvStore_; + static constexpr int MAX_RESULTSET_SIZE = 8; }; void SingleStoreImplTest::SetUpTestCase(void) @@ -360,8 +375,8 @@ HWTEST_F(SingleStoreImplTest, SubscribeKvStore002, TestSize.Level0) ASSERT_EQ(status2, SUCCESS); subscribedObserver = observer; } else { - ASSERT_EQ(status1, OVER_MAX_SUBSCRIBE_LIMITS); - ASSERT_EQ(status2, OVER_MAX_SUBSCRIBE_LIMITS); + ASSERT_EQ(status1, OVER_MAX_LIMITS); + ASSERT_EQ(status2, OVER_MAX_LIMITS); unSubscribedObserver = observer; } } @@ -397,7 +412,7 @@ HWTEST_F(SingleStoreImplTest, SubscribeKvStore002, TestSize.Level0) ASSERT_EQ(status, SUCCESS); observer = std::make_shared(); status = kvStore_->SubscribeKvStore(SUBSCRIBE_TYPE_ALL, observer); - ASSERT_EQ(status, OVER_MAX_SUBSCRIBE_LIMITS); + ASSERT_EQ(status, OVER_MAX_LIMITS); } /** @@ -484,7 +499,7 @@ HWTEST_F(SingleStoreImplTest, GetEntries_Less_Prefix, TestSize.Level0) auto status = kvStore->PutBatch(input); ASSERT_EQ(status, SUCCESS); std::vector output; - status = kvStore->GetEntries({"1"}, output); + status = kvStore->GetEntries({ "1" }, output); ASSERT_NE(output.empty(), true); ASSERT_EQ(status, SUCCESS); @@ -498,7 +513,7 @@ HWTEST_F(SingleStoreImplTest, GetEntries_Less_Prefix, TestSize.Level0) status = kvStore_->PutBatch(input); ASSERT_EQ(status, SUCCESS); std::vector output1; - status = kvStore_->GetEntries({"1"}, output1); + status = kvStore_->GetEntries({ "1" }, output1); ASSERT_NE(output1.empty(), true); ASSERT_EQ(status, SUCCESS); } @@ -708,6 +723,179 @@ HWTEST_F(SingleStoreImplTest, CloseResultSet, TestSize.Level0) ASSERT_EQ(outputTmp->GetEntry(entry), ALREADY_CLOSED); } +/** + * @tc.name: ResultSetMaxSizeTest + * @tc.desc: test if kv supports 8 resultSets at the same time + * @tc.type: FUNC + * @tc.require: I4XVQQ + * @tc.author: Yang Qing + */ +HWTEST_F(SingleStoreImplTest, ResultSetMaxSizeTest_Query, TestSize.Level0) +{ + ASSERT_NE(kvStore_, nullptr); + /** + * @tc.steps:step1. Put the entry into the database. + * @tc.expected: step1. Returns SUCCESS. + */ + std::vector input; + for (int i = 0; i < 10; ++i) { + Entry entry; + entry.key = "k_" + std::to_string(i); + entry.value = "v_" + std::to_string(i); + input.push_back(entry); + } + auto status = kvStore_->PutBatch(input); + ASSERT_EQ(status, SUCCESS); + /** + * @tc.steps:step2. Get the resultset. + * @tc.expected: step2. Returns SUCCESS. + */ + DataQuery query; + query.KeyPrefix("k_"); + std::vector> outputs(MAX_RESULTSET_SIZE + 1); + for (int i = 0; i < MAX_RESULTSET_SIZE; i++) { + std::shared_ptr output; + status = kvStore_->GetResultSet(query, outputs[i]); + ASSERT_EQ(status, SUCCESS); + } + /** + * @tc.steps:step3. Get the resultset while resultset size is over the limit. + * @tc.expected: step3. Returns OVER_MAX_LIMITS. + */ + status = kvStore_->GetResultSet(query, outputs[MAX_RESULTSET_SIZE]); + ASSERT_EQ(status, OVER_MAX_LIMITS); + /** + * @tc.steps:step4. Close the resultset and getting the resultset is retried + * @tc.expected: step4. Returns SUCCESS. + */ + status = kvStore_->CloseResultSet(outputs[0]); + ASSERT_EQ(status, SUCCESS); + status = kvStore_->GetResultSet(query, outputs[MAX_RESULTSET_SIZE]); + ASSERT_EQ(status, SUCCESS); + + for (int i = 1; i <= MAX_RESULTSET_SIZE; i++) { + status = kvStore_->CloseResultSet(outputs[i]); + ASSERT_EQ(status, SUCCESS); + } +} + +/** + * @tc.name: ResultSetMaxSizeTest + * @tc.desc: test if kv supports 8 resultSets at the same time + * @tc.type: FUNC + * @tc.require: I4XVQQ + * @tc.author: Yang Qing + */ +HWTEST_F(SingleStoreImplTest, ResultSetMaxSizeTest_Prefix, TestSize.Level0) +{ + ASSERT_NE(kvStore_, nullptr); + /** + * @tc.steps:step1. Put the entry into the database. + * @tc.expected: step1. Returns SUCCESS. + */ + std::vector input; + for (int i = 0; i < 10; ++i) { + Entry entry; + entry.key = "k_" + std::to_string(i); + entry.value = "v_" + std::to_string(i); + input.push_back(entry); + } + auto status = kvStore_->PutBatch(input); + ASSERT_EQ(status, SUCCESS); + /** + * @tc.steps:step2. Get the resultset. + * @tc.expected: step2. Returns SUCCESS. + */ + std::vector> outputs(MAX_RESULTSET_SIZE + 1); + for (int i = 0; i < MAX_RESULTSET_SIZE; i++) { + std::shared_ptr output; + status = kvStore_->GetResultSet({ "k_i" }, outputs[i]); + ASSERT_EQ(status, SUCCESS); + } + /** + * @tc.steps:step3. Get the resultset while resultset size is over the limit. + * @tc.expected: step3. Returns OVER_MAX_LIMITS. + */ + status = kvStore_->GetResultSet({ "" }, outputs[MAX_RESULTSET_SIZE]); + ASSERT_EQ(status, OVER_MAX_LIMITS); + /** + * @tc.steps:step4. Close the resultset and getting the resultset is retried + * @tc.expected: step4. Returns SUCCESS. + */ + status = kvStore_->CloseResultSet(outputs[0]); + ASSERT_EQ(status, SUCCESS); + status = kvStore_->GetResultSet({ "" }, outputs[MAX_RESULTSET_SIZE]); + ASSERT_EQ(status, SUCCESS); + + for (int i = 1; i <= MAX_RESULTSET_SIZE; i++) { + status = kvStore_->CloseResultSet(outputs[i]); + ASSERT_EQ(status, SUCCESS); + } +} + +/** + * @tc.name: MaxLogSizeTest + * @tc.desc: test if the default max limit of wal is 200MB + * @tc.type: FUNC + * @tc.require: I4XVQQ + * @tc.author: Yang Qing + */ +HWTEST_F(SingleStoreImplTest, MaxLogSizeTest, TestSize.Level0) +{ + ASSERT_NE(kvStore_, nullptr); + /** + * @tc.steps:step1. Put the random entry into the database. + * @tc.expected: step1. Returns SUCCESS. + */ + std::vector key; + std::vector value; + key = Random(24); // for 24B random key + value = Random(3 * 1024 * 1024); // 3M value + EXPECT_EQ(kvStore_->Put(key, value), SUCCESS); + key = Random(40); // for 40B random key + EXPECT_EQ(kvStore_->Put(key, value), SUCCESS); + key = Random(24); // for 24B random key + value = Random(4 * 1024 * 1024); // 4M value + EXPECT_EQ(kvStore_->Put(key, value), SUCCESS); + /** + * @tc.steps:step2. Get the resultset. + * @tc.expected: step2. Returns SUCCESS. + */ + std::shared_ptr output; + auto status = kvStore_->GetResultSet({ "" }, output); + ASSERT_EQ(status, SUCCESS); + ASSERT_NE(output, nullptr); + ASSERT_EQ(output->GetCount(), 3); + EXPECT_EQ(output->MoveToFirst(), true); + /** + * @tc.steps:step3. Put more data into the database. + * @tc.expected: step3. Returns SUCCESS. + */ + for (int i = 0; i < 50; i++) { + key = Random(16); // for 16B random key + value = Random(4 * 1024 * 1024); // 4M value + EXPECT_EQ(kvStore_->Put(key, value), SUCCESS); + } + /** + * @tc.steps:step4. Put more data into the database while the log size is over the limit. + * @tc.expected: step4. Returns LOG_LIMITS_ERROR. + */ + key = Random(10); // for 16B random key + value = Random(4 * 1024 * 1024); // 1M value + EXPECT_EQ(kvStore_->Put(key, value), WAL_OVER_LIMITS); + EXPECT_EQ(kvStore_->Delete(key), WAL_OVER_LIMITS); + EXPECT_EQ(kvStore_->StartTransaction(), WAL_OVER_LIMITS); + /** + * @tc.steps:step5. Close the resultset and put again. + * @tc.expected: step4. Return SUCCESS. + */ + + status = kvStore_->CloseResultSet(output); + ASSERT_EQ(status, SUCCESS); + value = Random(1 * 1024 * 1024); // 1M value + EXPECT_EQ(kvStore_->Put(key, value), SUCCESS); +} + /** * @tc.name: Move_Offset * @tc.desc: Move the ResultSet Relative Distance @@ -826,7 +1014,7 @@ HWTEST_F(SingleStoreImplTest, RemoveDeviceData, TestSize.Level0) status = store->GetCount({}, count); ASSERT_EQ(status, SUCCESS); ASSERT_EQ(count, 10); - status = store->RemoveDeviceData(DevManager::GetInstance().GetLocalDevice().networkId); + status = store->RemoveDeviceData(DevManager::GetInstance().GetLocalDevice().uuid); ASSERT_EQ(status, SUCCESS); status = store->GetCount({}, count); ASSERT_EQ(status, SUCCESS); @@ -1015,9 +1203,7 @@ HWTEST_F(SingleStoreImplTest, RemoveNullDeviceData, TestSize.Level0) auto store = CreateKVStore("DeviceKVStore", DEVICE_COLLABORATION, false, true); ASSERT_NE(store, nullptr); std::vector input; - auto cmp = [](const Key &entry, const Key &sentry) { - return entry.Data() < sentry.Data(); - }; + auto cmp = [](const Key &entry, const Key &sentry) { return entry.Data() < sentry.Data(); }; std::map dictionary(cmp); for (int i = 0; i < 10; ++i) { Entry entry; @@ -1293,4 +1479,4 @@ HWTEST_F(SingleStoreImplTest, GetKVStoreWithRebuildTrue, TestSize.Level0) status = StoreManager::GetInstance().CloseKVStore(appId, storeId); ASSERT_EQ(status, SUCCESS); } -} \ No newline at end of file +} // namespace OHOS::Test \ No newline at end of file diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/test/store_factory_test.cpp b/kv_store/frameworks/innerkitsimpl/kvdb/test/store_factory_test.cpp new file mode 100644 index 00000000..5f213bf1 --- /dev/null +++ b/kv_store/frameworks/innerkitsimpl/kvdb/test/store_factory_test.cpp @@ -0,0 +1,350 @@ +/* +* Copyright (c) 2022 Huawei Device Co., Ltd. +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ +#include "store_factory.h" + +#include +#include +#include +#include +#include + +#include "backup_manager.h" +#include "file_ex.h" +#include "store_manager.h" +#include "store_util.h" +#include "sys/stat.h" +#include "types.h" +using namespace testing::ext; +using namespace OHOS::DistributedKv; + +static StoreId storeId = { "single_test" }; +static AppId appId = { "rekey" }; +static Options options = { + .encrypt = true, + .securityLevel = S1, + .area = EL1, + .kvStoreType = SINGLE_VERSION, + .baseDir = "/data/service/el1/public/database/rekey", +}; + +class StoreFactoryTest : public testing::Test { +public: + using DBStore = DistributedDB::KvStoreNbDelegate; + using DBManager = DistributedDB::KvStoreDelegateManager; + using DBOption = DistributedDB::KvStoreNbDelegate::Option; + using DBPassword = SecurityManager::DBPassword; + using DBStatus = DistributedDB::DBStatus; + + static constexpr int OUTDATED_TIME = (24 * 500); + static constexpr int NOT_OUTDATED_TIME = (24 * 50); + + static void SetUpTestCase(void); + static void TearDownTestCase(void); + void SetUp(); + void TearDown(); + + std::chrono::system_clock::time_point GetDate(const std::string &name, const std::string &path); + bool ChangeKeyDate(const std::string &name, const std::string &path, int duration); + bool MoveToRekeyPath(Options options, StoreId storeId); + std::shared_ptr GetDBManager(const std::string &path, const AppId &appId); + DBOption GetOption(const Options &options, const DBPassword &dbPassword); + DBStatus ChangeKVStoreDate(const std::string &storeId, std::shared_ptr dbManager, + const Options &options, DBPassword &dbPassword, int time); + bool ModifyDate(int time); + static void DeleteKVStore(); +}; + +void StoreFactoryTest::SetUpTestCase(void) +{ + std::string baseDir = "/data/service/el1/public/database/rekey"; + mkdir(baseDir.c_str(), (S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH)); +} + +void StoreFactoryTest::TearDownTestCase(void) +{ + DeleteKVStore(); + (void)remove("/data/service/el1/public/database/rekey"); +} + +void StoreFactoryTest::SetUp(void) {} + +void StoreFactoryTest::TearDown(void) {} + +void StoreFactoryTest::DeleteKVStore() +{ + StoreManager::GetInstance().Delete(appId, storeId, options.baseDir); +} + +std::chrono::system_clock::time_point StoreFactoryTest::GetDate(const std::string &name, const std::string &path) +{ + std::chrono::system_clock::time_point timePoint; + auto keyPath = path + "/key/" + name + ".key"; + if (!OHOS::FileExists(keyPath)) { + return timePoint; + } + + std::vector content; + auto loaded = OHOS::LoadBufferFromFile(keyPath, content); + if (!loaded) { + return timePoint; + } + constexpr uint32_t DATE_FILE_OFFSET = 1; + constexpr uint32_t DATE_FILE_LENGTH = sizeof(time_t) / sizeof(uint8_t); + std::vector date; + date.assign(content.begin() + DATE_FILE_OFFSET, content.begin() + DATE_FILE_LENGTH + DATE_FILE_OFFSET); + timePoint = std::chrono::system_clock::from_time_t(*reinterpret_cast(const_cast(&date[0]))); + return timePoint; +} + +bool StoreFactoryTest::ChangeKeyDate(const std::string &name, const std::string &path, int duration) +{ + auto keyPath = path + "/key/" + name + ".key"; + if (!OHOS::FileExists(keyPath)) { + return false; + } + + std::vector content; + auto loaded = OHOS::LoadBufferFromFile(keyPath, content); + if (!loaded) { + return false; + } + auto time = std::chrono::system_clock::to_time_t( + std::chrono::system_clock::system_clock::now() - std::chrono::hours(duration)); + std::vector date(reinterpret_cast(&time), reinterpret_cast(&time) + sizeof(time)); + std::copy(date.begin(), date.end(), ++content.begin()); + + auto saved = OHOS::SaveBufferToFile(keyPath, content); + return saved; +} + +bool StoreFactoryTest::MoveToRekeyPath(Options options, StoreId storeId) +{ + std::string keyFileName = options.baseDir + "/key/" + storeId.storeId + ".key"; + std::string rekeyFileName = options.baseDir + "/rekey/key/" + storeId.storeId + ".new.key"; + bool res = StoreUtil::Rename(keyFileName, rekeyFileName); + res = StoreUtil::Remove(keyFileName); + return res; +} + +std::shared_ptr StoreFactoryTest::GetDBManager(const std::string &path, const AppId &appId) +{ + std::string fullPath = path + "/kvdb"; + StoreUtil::InitPath(fullPath); + std::shared_ptr dbManager = std::make_shared(appId.appId, "default"); + dbManager->SetKvStoreConfig({ fullPath }); + BackupManager::GetInstance().Init(path); + return dbManager; +} + +StoreFactoryTest::DBOption StoreFactoryTest::GetOption(const Options &options, const DBPassword &dbPassword) +{ + DBOption dbOption; + dbOption.syncDualTupleMode = true; // tuple of (appid+storeid) + dbOption.createIfNecessary = options.createIfMissing; + dbOption.isNeedRmCorruptedDb = options.rebuild; + dbOption.isMemoryDb = (!options.persistent); + dbOption.isEncryptedDb = options.encrypt; + if (options.encrypt) { + dbOption.cipher = DistributedDB::CipherType::AES_256_GCM; + dbOption.passwd = dbPassword.password; + } + + dbOption.conflictResolvePolicy = options.kvStoreType == KvStoreType::SINGLE_VERSION + ? DistributedDB::LAST_WIN + : KvStoreType::DEVICE_COLLABORATION; + + dbOption.schema = options.schema; + dbOption.createDirByStoreIdOnly = true; + dbOption.secOption = StoreUtil::GetDBSecurity(options.securityLevel); + return dbOption; +} + +StoreFactoryTest::DBStatus StoreFactoryTest::ChangeKVStoreDate(const std::string &storeId, + std::shared_ptr dbManager, const Options &options, DBPassword &dbPassword, int time) +{ + DBStatus status; + const auto dbOption = GetOption(options, dbPassword); + DBStore *store = nullptr; + dbManager->GetKvStore(storeId, dbOption, [&status, &store](auto dbStatus, auto *dbStore) { + status = dbStatus; + store = dbStore; + }); + if (!ChangeKeyDate(storeId, options.baseDir, time)) { + std::cout << "failed" << std::endl; + } + dbPassword = SecurityManager::GetInstance().GetDBPassword(storeId, options.baseDir, false); + auto dbStatus = store->Rekey(dbPassword.password); + dbManager->CloseKvStore(store); + return dbStatus; +} + +bool StoreFactoryTest::ModifyDate(int time) +{ + auto dbPassword = SecurityManager::GetInstance().GetDBPassword(storeId, options.baseDir, false); + auto dbManager = GetDBManager(options.baseDir, appId); + auto dbstatus = ChangeKVStoreDate(storeId, dbManager, options, dbPassword, time); + return StoreUtil::ConvertStatus(dbstatus) == SUCCESS; +} + +/** +* @tc.name: Rekey +* @tc.desc: test rekey function +* @tc.type: FUNC +* @tc.require: +* @tc.author: Cui Renjie +*/ +HWTEST_F(StoreFactoryTest, Rekey, TestSize.Level1) +{ + Status status = DB_ERROR; + StoreManager::GetInstance().GetKVStore(appId, storeId, options, status); + status = StoreManager::GetInstance().CloseKVStore(appId, storeId); + ASSERT_EQ(status, SUCCESS); + + ASSERT_TRUE(ModifyDate(OUTDATED_TIME)); + + auto oldKeyTime = GetDate(storeId, options.baseDir); + ASSERT_FALSE(std::chrono::system_clock::now() - oldKeyTime < std::chrono::seconds(2)); + + StoreManager::GetInstance().GetKVStore(appId, storeId, options, status); + status = StoreManager::GetInstance().CloseKVStore(appId, storeId); + ASSERT_EQ(status, SUCCESS); + + std::vector newDate; + auto newKeyTime = GetDate(storeId, options.baseDir); + ASSERT_TRUE(std::chrono::system_clock::now() - newKeyTime < std::chrono::seconds(2)); +} + +/** +* @tc.name: RekeyNotOutdated +* @tc.desc: try to rekey kvstore with not outdated password +* @tc.type: FUNC +* @tc.require: +* @tc.author: Cui Renjie +*/ +HWTEST_F(StoreFactoryTest, RekeyNotOutdated, TestSize.Level1) +{ + Status status = DB_ERROR; + StoreManager::GetInstance().GetKVStore(appId, storeId, options, status); + status = StoreManager::GetInstance().CloseKVStore(appId, storeId); + ASSERT_EQ(status, SUCCESS); + + ASSERT_TRUE(ModifyDate(NOT_OUTDATED_TIME)); + auto oldKeyTime = GetDate(storeId, options.baseDir); + + StoreManager::GetInstance().GetKVStore(appId, storeId, options, status); + status = StoreManager::GetInstance().CloseKVStore(appId, storeId); + ASSERT_EQ(status, SUCCESS); + + auto newKeyTime = GetDate(storeId, options.baseDir); + ASSERT_EQ(oldKeyTime, newKeyTime); +} + +/** +* @tc.name: RekeyInterrupted0 +* @tc.desc: mock the situation that open store after rekey was interrupted last time, +* which caused key file lost but rekey key file exist. +* @tc.type: FUNC +* @tc.require: +* @tc.author: Cui Renjie +*/ +HWTEST_F(StoreFactoryTest, RekeyInterruptedWhileChangeKeyFile, TestSize.Level1) +{ + Status status = DB_ERROR; + StoreManager::GetInstance().GetKVStore(appId, storeId, options, status); + ASSERT_EQ(status, SUCCESS); + auto oldKeyTime = GetDate(storeId, options.baseDir); + + status = StoreManager::GetInstance().CloseKVStore(appId, storeId); + ASSERT_EQ(status, SUCCESS); + ASSERT_TRUE(MoveToRekeyPath(options, storeId)); + + StoreManager::GetInstance().GetKVStore(appId, storeId, options, status); + status = StoreManager::GetInstance().CloseKVStore(appId, storeId); + ASSERT_EQ(status, SUCCESS); + std::string keyFileName = options.baseDir + "/key/" + storeId.storeId + ".key"; + auto isKeyExist = StoreUtil::IsFileExist(keyFileName); + ASSERT_TRUE(isKeyExist); + + auto newKeyTime = GetDate(storeId, options.baseDir); + ASSERT_EQ(oldKeyTime, newKeyTime); +} + +/** +* @tc.name: RekeyInterrupted1 +* @tc.desc: mock the situation that open store after rekey was interrupted last time, +* which caused key file not changed but rekey key file exist. +* @tc.type: FUNC +* @tc.require: +* @tc.author: Cui Renjie +*/ +HWTEST_F(StoreFactoryTest, RekeyInterruptedBeforeChangeKeyFile, TestSize.Level1) +{ + Status status = DB_ERROR; + StoreManager::GetInstance().GetKVStore(appId, storeId, options, status); + ASSERT_EQ(status, SUCCESS); + auto oldKeyTime = GetDate(storeId, options.baseDir); + + status = StoreManager::GetInstance().CloseKVStore(appId, storeId); + ASSERT_EQ(status, SUCCESS); + ASSERT_EQ(MoveToRekeyPath(options, storeId), true); + + StoreId newStoreId = { "newStore" }; + std::string mockPath = options.baseDir; + StoreManager::GetInstance().GetKVStore(appId, newStoreId, options, status); + + std::string keyFileName = options.baseDir + "/key/" + storeId.storeId + ".key"; + std::string mockKeyFileName = options.baseDir + "/key/" + newStoreId.storeId + ".key"; + StoreUtil::Rename(mockKeyFileName, keyFileName); + StoreUtil::Remove(mockKeyFileName); + auto isKeyExist = StoreUtil::IsFileExist(mockKeyFileName); + ASSERT_FALSE(isKeyExist); + isKeyExist = StoreUtil::IsFileExist(keyFileName); + ASSERT_TRUE(isKeyExist); + + StoreManager::GetInstance().GetKVStore(appId, storeId, options, status); + status = StoreManager::GetInstance().CloseKVStore(appId, storeId); + ASSERT_EQ(status, SUCCESS); + + isKeyExist = StoreUtil::IsFileExist(keyFileName); + ASSERT_TRUE(isKeyExist); + + auto newKeyTime = GetDate(storeId, options.baseDir); + ASSERT_EQ(oldKeyTime, newKeyTime); +} + +/** +* @tc.name: RekeyNoPwdFile +* @tc.desc: try to open kvstore and execute RekeyRecover() without key and rekey key files. +* @tc.type: FUNC +* @tc.require: +* @tc.author: Cui Renjie +*/ +HWTEST_F(StoreFactoryTest, RekeyNoPwdFile, TestSize.Level1) +{ + Status status = DB_ERROR; + StoreManager::GetInstance().GetKVStore(appId, storeId, options, status); + ASSERT_EQ(status, SUCCESS); + + status = StoreManager::GetInstance().CloseKVStore(appId, storeId); + ASSERT_EQ(status, SUCCESS); + std::string keyFileName = options.baseDir + "/key/" + storeId.storeId + ".key"; + StoreUtil::Remove(keyFileName); + + auto isKeyExist = StoreUtil::IsFileExist(keyFileName); + ASSERT_EQ(isKeyExist, false); + + StoreManager::GetInstance().GetKVStore(appId, storeId, options, status); + ASSERT_EQ(status, CRYPT_ERROR); +} diff --git a/kv_store/frameworks/innerkitsimpl/kvdb/test/store_util_test.cpp b/kv_store/frameworks/innerkitsimpl/kvdb/test/store_util_test.cpp index 942fb8f2..f93cc7e6 100644 --- a/kv_store/frameworks/innerkitsimpl/kvdb/test/store_util_test.cpp +++ b/kv_store/frameworks/innerkitsimpl/kvdb/test/store_util_test.cpp @@ -20,6 +20,7 @@ #include "store_manager.h" #include "types.h" +namespace OHOS::Test { using namespace testing::ext; using namespace OHOS::DistributedKv; @@ -127,4 +128,5 @@ HWTEST_F(StoreUtilTest, GetObserverMode, TestSize.Level1) mode = storeUtil_.GetObserverMode(SUBSCRIBE_TYPE_ALL); ASSERT_EQ(mode, DistributedDB::OBSERVER_CHANGES_FOREIGN | DistributedDB::OBSERVER_CHANGES_NATIVE); -} \ No newline at end of file +} +} // namespace OHOS::Test \ No newline at end of file diff --git a/kv_store/frameworks/jskitsimpl/distributeddata/include/napi_queue.h b/kv_store/frameworks/jskitsimpl/distributeddata/include/napi_queue.h index f401df12..f989c4b6 100644 --- a/kv_store/frameworks/jskitsimpl/distributeddata/include/napi_queue.h +++ b/kv_store/frameworks/jskitsimpl/distributeddata/include/napi_queue.h @@ -98,6 +98,15 @@ private: } \ } while (0) +#define ASSERT_CALL(env, theCall, object) \ + do { \ + if ((theCall) != napi_ok) { \ + delete (object); \ + GET_AND_THROW_LAST_ERROR((env)); \ + return nullptr; \ + } \ + } while (0) + class NapiQueue { public: static napi_value AsyncWork(napi_env env, std::shared_ptr ctxt, const std::string& name, diff --git a/kv_store/frameworks/jskitsimpl/distributeddata/src/js_device_kv_store.cpp b/kv_store/frameworks/jskitsimpl/distributeddata/src/js_device_kv_store.cpp index 0e7d5dc1..9d132f1b 100644 --- a/kv_store/frameworks/jskitsimpl/distributeddata/src/js_device_kv_store.cpp +++ b/kv_store/frameworks/jskitsimpl/distributeddata/src/js_device_kv_store.cpp @@ -475,7 +475,7 @@ napi_value JsDeviceKVStore::New(napi_env env, napi_callback_info info) CHECK_RETURN_VOID(kvStore != nullptr, "finalize null!"); delete kvStore; }; - NAPI_CALL(env, napi_wrap(env, ctxt->self, kvStore, finalize, nullptr, nullptr)); + ASSERT_CALL(env, napi_wrap(env, ctxt->self, kvStore, finalize, nullptr, nullptr), kvStore); return ctxt->self; } } // namespace OHOS::DistributedData diff --git a/kv_store/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp b/kv_store/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp index 186f070d..5762b4fb 100644 --- a/kv_store/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp +++ b/kv_store/frameworks/jskitsimpl/distributeddata/src/js_field_node.cpp @@ -97,7 +97,7 @@ napi_value JsFieldNode::New(napi_env env, napi_callback_info info) CHECK_RETURN_VOID(field != nullptr, "finalize null!"); delete field; }; - NAPI_CALL(env, napi_wrap(env, ctxt->self, fieldNode, finalize, nullptr, nullptr)); + ASSERT_CALL(env, napi_wrap(env, ctxt->self, fieldNode, finalize, nullptr, nullptr), fieldNode); return ctxt->self; } diff --git a/kv_store/frameworks/jskitsimpl/distributeddata/src/js_kv_manager.cpp b/kv_store/frameworks/jskitsimpl/distributeddata/src/js_kv_manager.cpp index 7933a326..17b15e38 100644 --- a/kv_store/frameworks/jskitsimpl/distributeddata/src/js_kv_manager.cpp +++ b/kv_store/frameworks/jskitsimpl/distributeddata/src/js_kv_manager.cpp @@ -20,7 +20,6 @@ #include "js_util.h" #include "log_print.h" #include "napi_queue.h" -#include using namespace OHOS::DistributedKv; @@ -143,14 +142,7 @@ napi_value JsKVManager::GetKVStore(napi_env env, napi_callback_info info) ZLOGD("GetSingleKvStore status:%{public}d", status); ctxt->status = (status == Status::SUCCESS) ? napi_ok : napi_generic_failure; CHECK_STATUS_RETURN_VOID(ctxt, "GetSingleKvStore() failed!"); - ZLOGI("thread sleep start"); - std::this_thread::sleep_for(std::chrono::seconds(3)); - ZLOGI("thread sleep end, ctxt->kvStore->SetNative(kvStore) start"); - uint32_t result; - napi_reference_ref(ctxt->env,ctxt->ref,&result); - ZLOGI("ctxt->ref:%{public}d",result); ctxt->kvStore->SetNative(kvStore); - ZLOGI("ctxt->kvStore->SetNative(kvStore) end"); ctxt->kvStore->SetSchemaInfo(!ctxt->options.schema.empty()); ctxt->kvStore->SetContextParam(kvm->param_); ctxt->kvStore->SetUvQueue(kvm->uvQueue_); @@ -398,7 +390,7 @@ napi_value JsKVManager::New(napi_env env, napi_callback_info info) CHECK_RETURN_VOID(kvManager != nullptr, "finalize null!"); delete kvManager; }; - NAPI_CALL(env, napi_wrap(env, ctxt->self, kvManager, finalize, nullptr, nullptr)); + ASSERT_CALL(env, napi_wrap(env, ctxt->self, kvManager, finalize, nullptr, nullptr), kvManager); return ctxt->self; } diff --git a/kv_store/frameworks/jskitsimpl/distributeddata/src/js_kv_store_resultset.cpp b/kv_store/frameworks/jskitsimpl/distributeddata/src/js_kv_store_resultset.cpp index b55ddd52..892822b3 100644 --- a/kv_store/frameworks/jskitsimpl/distributeddata/src/js_kv_store_resultset.cpp +++ b/kv_store/frameworks/jskitsimpl/distributeddata/src/js_kv_store_resultset.cpp @@ -71,7 +71,7 @@ napi_value JsKVStoreResultSet::New(napi_env env, napi_callback_info info) CHECK_RETURN_VOID(resultSet != nullptr, "finalize null!"); delete resultSet; }; - NAPI_CALL(env, napi_wrap(env, ctxt->self, resultSet, finalize, nullptr, nullptr)); + ASSERT_CALL(env, napi_wrap(env, ctxt->self, resultSet, finalize, nullptr, nullptr), resultSet); return ctxt->self; } diff --git a/kv_store/frameworks/jskitsimpl/distributeddata/src/js_query.cpp b/kv_store/frameworks/jskitsimpl/distributeddata/src/js_query.cpp index feda0477..ca8836f5 100644 --- a/kv_store/frameworks/jskitsimpl/distributeddata/src/js_query.cpp +++ b/kv_store/frameworks/jskitsimpl/distributeddata/src/js_query.cpp @@ -80,7 +80,7 @@ napi_value JsQuery::New(napi_env env, napi_callback_info info) CHECK_RETURN_VOID(query != nullptr, "finalize null!"); delete query; }; - NAPI_CALL(env, napi_wrap(env, ctxt->self, query, finalize, nullptr, nullptr)); + ASSERT_CALL(env, napi_wrap(env, ctxt->self, query, finalize, nullptr, nullptr), query); return ctxt->self; } diff --git a/kv_store/frameworks/jskitsimpl/distributeddata/src/js_schema.cpp b/kv_store/frameworks/jskitsimpl/distributeddata/src/js_schema.cpp index 2be1e271..c13b67ed 100644 --- a/kv_store/frameworks/jskitsimpl/distributeddata/src/js_schema.cpp +++ b/kv_store/frameworks/jskitsimpl/distributeddata/src/js_schema.cpp @@ -75,7 +75,7 @@ napi_value JsSchema::New(napi_env env, napi_callback_info info) CHECK_RETURN_VOID(schema != nullptr, "finalize null!"); delete schema; }; - NAPI_CALL(env, napi_wrap(env, ctxt->self, schema, finalize, nullptr, nullptr)); + ASSERT_CALL(env, napi_wrap(env, ctxt->self, schema, finalize, nullptr, nullptr), schema); return ctxt->self; } diff --git a/kv_store/frameworks/jskitsimpl/distributeddata/src/js_single_kv_store.cpp b/kv_store/frameworks/jskitsimpl/distributeddata/src/js_single_kv_store.cpp index 8cd0ed9e..504b3eb7 100644 --- a/kv_store/frameworks/jskitsimpl/distributeddata/src/js_single_kv_store.cpp +++ b/kv_store/frameworks/jskitsimpl/distributeddata/src/js_single_kv_store.cpp @@ -473,7 +473,7 @@ napi_value JsSingleKVStore::New(napi_env env, napi_callback_info info) CHECK_RETURN_VOID(kvStore != nullptr, "finalize null!"); delete kvStore; }; - NAPI_CALL(env, napi_wrap(env, ctxt->self, kvStore, finalize, nullptr, nullptr)); + ASSERT_CALL(env, napi_wrap(env, ctxt->self, kvStore, finalize, nullptr, nullptr), kvStore); return ctxt->self; } } // namespace OHOS::DistributedData diff --git a/kv_store/frameworks/jskitsimpl/distributeddata/src/napi_queue.cpp b/kv_store/frameworks/jskitsimpl/distributeddata/src/napi_queue.cpp index f225e70b..f91afc4b 100644 --- a/kv_store/frameworks/jskitsimpl/distributeddata/src/napi_queue.cpp +++ b/kv_store/frameworks/jskitsimpl/distributeddata/src/napi_queue.cpp @@ -23,12 +23,17 @@ ContextBase::~ContextBase() ZLOGD("no memory leak after callback or promise[resolved/rejected]"); if (env != nullptr) { if (work != nullptr) { - napi_delete_async_work(env, work); + auto status = napi_delete_async_work(env, work); + ZLOGD("status:%{public}d", status); } if (callbackRef != nullptr) { - napi_delete_reference(env, callbackRef); + auto status = napi_delete_reference(env, callbackRef); + ZLOGD("status:%{public}d", status); + } + if (selfRef != nullptr) { + auto status = napi_delete_reference(env, selfRef); + ZLOGD("status:%{public}d", status); } - napi_delete_reference(env, selfRef); env = nullptr; } } @@ -42,7 +47,9 @@ void ContextBase::GetCbInfo(napi_env envi, napi_callback_info info, NapiCbInfoPa CHECK_STATUS_RETURN_VOID(this, "napi_get_cb_info failed!"); CHECK_ARGS_RETURN_VOID(this, argc <= ARGC_MAX, "too many arguments!"); CHECK_ARGS_RETURN_VOID(this, self != nullptr, "no JavaScript this argument!"); - napi_create_reference(env, self, 1, &selfRef); + if (!sync) { + napi_create_reference(env, self, 1, &selfRef); + } status = napi_unwrap(env, self, &native); CHECK_STATUS_RETURN_VOID(this, "self unwrap failed!"); @@ -72,8 +79,6 @@ napi_value NapiQueue::AsyncWork(napi_env env, std::shared_ptr ctxt, NapiAsyncExecute execute, NapiAsyncComplete complete) { ZLOGD("name=%{public}s", name.c_str()); - ctxt->execute = std::move(execute); - ctxt->complete = std::move(complete); napi_value promise = nullptr; if (ctxt->callbackRef == nullptr) { @@ -108,8 +113,10 @@ napi_value NapiQueue::AsyncWork(napi_env env, std::shared_ptr ctxt, GenerateOutput(ctxt); }, reinterpret_cast(ctxt.get()), &ctxt->work); - napi_queue_async_work(ctxt->env, ctxt->work); + ctxt->execute = std::move(execute); + ctxt->complete = std::move(complete); ctxt->hold = ctxt; // save crossing-thread ctxt. + napi_queue_async_work(ctxt->env, ctxt->work); return promise; } @@ -143,6 +150,8 @@ void NapiQueue::GenerateOutput(ContextBase* ctxt) ZLOGD("call callback function"); napi_call_function(ctxt->env, nullptr, callback, RESULT_ALL, result, &callbackResult); } + ctxt->execute = nullptr; + ctxt->complete = nullptr; ctxt->hold.reset(); // release ctxt. } } // namespace OHOS::DistributedData diff --git a/kv_store/frameworks/jskitsimpl/distributeddata/src/uv_queue.cpp b/kv_store/frameworks/jskitsimpl/distributeddata/src/uv_queue.cpp index 17938431..a54641ef 100644 --- a/kv_store/frameworks/jskitsimpl/distributeddata/src/uv_queue.cpp +++ b/kv_store/frameworks/jskitsimpl/distributeddata/src/uv_queue.cpp @@ -53,9 +53,14 @@ void UvQueue::AsyncCall(NapiCallbackGetter getter, NapiArgsGenerator genArgs) delete data; delete work; }); + napi_handle_scope scope = nullptr; + napi_open_handle_scope(entry->env, &scope); napi_value method = entry->callback(entry->env); if (method == nullptr) { ZLOGE("the callback is invalid, maybe is cleared!"); + if (scope != nullptr) { + napi_close_handle_scope(entry->env, scope); + } return ; } int argc = 0; @@ -72,6 +77,9 @@ void UvQueue::AsyncCall(NapiCallbackGetter getter, NapiArgsGenerator genArgs) if (status != napi_ok) { ZLOGE("notify data change failed status:%{public}d.", status); } + if (scope != nullptr) { + napi_close_handle_scope(entry->env, scope); + } }); } diff --git a/kv_store/frameworks/jskitsimpl/distributedkvstore/include/napi_queue.h b/kv_store/frameworks/jskitsimpl/distributedkvstore/include/napi_queue.h index 29d9a95e..234100f0 100644 --- a/kv_store/frameworks/jskitsimpl/distributedkvstore/include/napi_queue.h +++ b/kv_store/frameworks/jskitsimpl/distributedkvstore/include/napi_queue.h @@ -102,6 +102,15 @@ private: #define ASSERT_NULL(condition, message) ASSERT(condition, message, nullptr) \ +#define ASSERT_CALL(env, theCall, object) \ + do { \ + if ((theCall) != napi_ok) { \ + delete (object); \ + GET_AND_THROW_LAST_ERROR((env)); \ + return nullptr; \ + } \ + } while (0) + class NapiQueue { public: static napi_value AsyncWork(napi_env env, std::shared_ptr ctxt, const std::string& name, diff --git a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_device_kv_store.cpp b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_device_kv_store.cpp index 2e6fe5df..f6b4f874 100644 --- a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_device_kv_store.cpp +++ b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_device_kv_store.cpp @@ -323,7 +323,7 @@ napi_value JsDeviceKVStore::New(napi_env env, napi_callback_info info) ASSERT_VOID(kvStore != nullptr, "finalize null!"); delete kvStore; }; - NAPI_CALL(env, napi_wrap(env, ctxt->self, kvStore, finalize, nullptr, nullptr)); + ASSERT_CALL(env, napi_wrap(env, ctxt->self, kvStore, finalize, nullptr, nullptr), kvStore); return ctxt->self; } } // namespace OHOS::DistributedKVStore diff --git a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_error_utils.cpp b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_error_utils.cpp index 83103965..7904735d 100644 --- a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_error_utils.cpp +++ b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_error_utils.cpp @@ -15,22 +15,23 @@ #define LOG_TAG "JS_ERROR_UTILS" #include "js_error_utils.h" + #include namespace OHOS::DistributedKVStore { using JsErrorCode = OHOS::DistributedKVStore::JsErrorCode; static constexpr JsErrorCode JS_ERROR_CODE_MSGS[] = { - {Status::INVALID_ARGUMENT, 401, "Parameter error."}, - {Status::STORE_NOT_OPEN, 0, ""}, - {Status::STORE_ALREADY_SUBSCRIBE, 0, ""}, - {Status::STORE_NOT_SUBSCRIBE, 0, ""}, - {Status::NOT_FOUND, 15100004, "Not found."}, - {Status::STORE_META_CHANGED, 15100002, "Open existed database with changed options."}, - {Status::PERMISSION_DENIED, 202, "Permission denied"}, - {Status::CRYPT_ERROR, 15100003, "Database corrupted."}, - {Status::OVER_MAX_SUBSCRIBE_LIMITS, 15100001, "Over max subscribe limits."}, - {Status::ALREADY_CLOSED, 15100005, "Database or result set already closed."}, + { Status::INVALID_ARGUMENT, 401, "Parameter error." }, + { Status::STORE_NOT_OPEN, 0, "" }, + { Status::STORE_ALREADY_SUBSCRIBE, 0, "" }, + { Status::STORE_NOT_SUBSCRIBE, 0, "" }, + { Status::NOT_FOUND, 15100004, "Not found." }, + { Status::STORE_META_CHANGED, 15100002, "Open existed database with changed options." }, + { Status::PERMISSION_DENIED, 202, "Permission denied" }, + { Status::CRYPT_ERROR, 15100003, "Database corrupted." }, + { Status::OVER_MAX_LIMITS, 15100001, "Over max subscribe limits." }, + { Status::ALREADY_CLOSED, 15100005, "Database or result set already closed." }, }; const std::optional GetJsErrorCode(int32_t errorCode) diff --git a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_field_node.cpp b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_field_node.cpp index b73e5eff..872ef1bd 100644 --- a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_field_node.cpp +++ b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_field_node.cpp @@ -97,7 +97,7 @@ napi_value JsFieldNode::New(napi_env env, napi_callback_info info) ASSERT_VOID(field != nullptr, "finalize null!"); delete field; }; - NAPI_CALL(env, napi_wrap(env, ctxt->self, fieldNode, finalize, nullptr, nullptr)); + ASSERT_CALL(env, napi_wrap(env, ctxt->self, fieldNode, finalize, nullptr, nullptr), fieldNode); return ctxt->self; } diff --git a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_kv_manager.cpp b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_kv_manager.cpp index cb786e29..4870603c 100644 --- a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_kv_manager.cpp +++ b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_kv_manager.cpp @@ -21,7 +21,6 @@ #include "log_print.h" #include "napi_queue.h" #include "js_error_utils.h" -#include using namespace OHOS::DistributedKv; @@ -151,11 +150,7 @@ napi_value JsKVManager::GetKVStore(napi_env env, napi_callback_info info) ctxt->status = (GenerateNapiError(status, ctxt->jsCode, ctxt->error) == Status::SUCCESS) ? napi_ok : napi_generic_failure; - ZLOGI("thread sleep start"); - std::this_thread::sleep_for(std::chrono::seconds(10)); - ZLOGI("thread sleep end, ctxt->kvStore->SetKvStorePtr(kvStore) start"); ctxt->kvStore->SetKvStorePtr(kvStore); - ZLOGI("ctxt->kvStore->SetKvStorePtr(kvStore) end"); ctxt->kvStore->SetSchemaInfo(!ctxt->options.schema.empty()); ctxt->kvStore->SetContextParam(kvm->param_); ctxt->kvStore->SetUvQueue(kvm->uvQueue_); @@ -415,7 +410,7 @@ napi_value JsKVManager::New(napi_env env, napi_callback_info info) ASSERT_VOID(kvManager != nullptr, "finalize null!"); delete kvManager; }; - NAPI_CALL(env, napi_wrap(env, ctxt->self, kvManager, finalize, nullptr, nullptr)); + ASSERT_CALL(env, napi_wrap(env, ctxt->self, kvManager, finalize, nullptr, nullptr), kvManager); return ctxt->self; } diff --git a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_kv_store_resultset.cpp b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_kv_store_resultset.cpp index 68e1760f..a967b4c4 100644 --- a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_kv_store_resultset.cpp +++ b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_kv_store_resultset.cpp @@ -71,7 +71,7 @@ napi_value JsKVStoreResultSet::New(napi_env env, napi_callback_info info) ASSERT_VOID(resultSet != nullptr, "finalize null!"); delete resultSet; }; - NAPI_CALL(env, napi_wrap(env, ctxt->self, resultSet, finalize, nullptr, nullptr)); + ASSERT_CALL(env, napi_wrap(env, ctxt->self, resultSet, finalize, nullptr, nullptr), resultSet); return ctxt->self; } diff --git a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_query.cpp b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_query.cpp index 13c01734..1e29df24 100644 --- a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_query.cpp +++ b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_query.cpp @@ -80,7 +80,7 @@ napi_value JsQuery::New(napi_env env, napi_callback_info info) ASSERT_VOID(query != nullptr, "finalize null!"); delete query; }; - NAPI_CALL(env, napi_wrap(env, ctxt->self, query, finalize, nullptr, nullptr)); + ASSERT_CALL(env, napi_wrap(env, ctxt->self, query, finalize, nullptr, nullptr), query); return ctxt->self; } diff --git a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_schema.cpp b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_schema.cpp index 12ce7a87..84e60a9b 100644 --- a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_schema.cpp +++ b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_schema.cpp @@ -75,7 +75,7 @@ napi_value JsSchema::New(napi_env env, napi_callback_info info) ASSERT_VOID(schema != nullptr, "finalize null!"); delete schema; }; - NAPI_CALL(env, napi_wrap(env, ctxt->self, schema, finalize, nullptr, nullptr)); + ASSERT_CALL(env, napi_wrap(env, ctxt->self, schema, finalize, nullptr, nullptr), schema); return ctxt->self; } diff --git a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_single_kv_store.cpp b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_single_kv_store.cpp index 451a2a17..70758ae6 100644 --- a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_single_kv_store.cpp +++ b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_single_kv_store.cpp @@ -1267,7 +1267,7 @@ napi_value JsSingleKVStore::New(napi_env env, napi_callback_info info) ASSERT_VOID(kvStore != nullptr, "finalize null!"); delete kvStore; }; - NAPI_CALL(env, napi_wrap(env, ctxt->self, kvStore, finalize, nullptr, nullptr)); + ASSERT_CALL(env, napi_wrap(env, ctxt->self, kvStore, finalize, nullptr, nullptr), kvStore); return ctxt->self; } } // namespace OHOS::DistributedKVStore diff --git a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_util.cpp b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_util.cpp index beabe9dc..8945b21f 100644 --- a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_util.cpp +++ b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/js_util.cpp @@ -1166,12 +1166,8 @@ JSUtil::StatusMsg JSUtil::GetCurrentAbilityParam(napi_env env, ContextParam &par if (hapInfo != nullptr) { param.hapName = hapInfo->moduleName; } - auto appInfo = context->GetApplicationInfo(); - if (appInfo != nullptr) { - param.isSystemApp = appInfo->isSystemApp; - } - ZLOGI("area:%{public}d hapName:%{public}s baseDir:%{public}s isSystemApp:%{public}d", param.area, - param.hapName.c_str(), param.baseDir.c_str(), param.isSystemApp); + ZLOGI("area:%{public}d hapName:%{public}s baseDir:%{public}s", param.area, param.hapName.c_str(), + param.baseDir.c_str()); return napi_ok; } diff --git a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/napi_queue.cpp b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/napi_queue.cpp index 45c9c97c..09b1405b 100644 --- a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/napi_queue.cpp +++ b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/napi_queue.cpp @@ -23,12 +23,17 @@ ContextBase::~ContextBase() ZLOGD("no memory leak after callback or promise[resolved/rejected]"); if (env != nullptr) { if (work != nullptr) { - napi_delete_async_work(env, work); + auto status = napi_delete_async_work(env, work); + ZLOGD("status:%{public}d", status); } if (callbackRef != nullptr) { - napi_delete_reference(env, callbackRef); + auto status = napi_delete_reference(env, callbackRef); + ZLOGD("status:%{public}d", status); + } + if (selfRef != nullptr) { + auto status = napi_delete_reference(env, selfRef); + ZLOGD("status:%{public}d", status); } - napi_delete_reference(env, selfRef); env = nullptr; } } @@ -42,7 +47,9 @@ void ContextBase::GetCbInfo(napi_env envi, napi_callback_info info, NapiCbInfoPa ASSERT_STATUS(this, "napi_get_cb_info failed!"); ASSERT_ARGS(this, argc <= ARGC_MAX, "too many arguments!"); ASSERT_ARGS(this, self != nullptr, "no JavaScript this argument!"); - napi_create_reference(env, self, 1, &selfRef); + if (!sync) { + napi_create_reference(env, self, 1, &selfRef); + } status = napi_unwrap(env, self, &native); ASSERT_STATUS(this, "self unwrap failed!"); diff --git a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/uv_queue.cpp b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/uv_queue.cpp index 4c44b977..2397918d 100644 --- a/kv_store/frameworks/jskitsimpl/distributedkvstore/src/uv_queue.cpp +++ b/kv_store/frameworks/jskitsimpl/distributedkvstore/src/uv_queue.cpp @@ -53,9 +53,14 @@ void UvQueue::AsyncCall(NapiCallbackGetter getter, NapiArgsGenerator genArgs) delete data; delete work; }); + napi_handle_scope scope = nullptr; + napi_open_handle_scope(entry->env, &scope); napi_value method = entry->callback(entry->env); if (method == nullptr) { ZLOGE("the callback is invalid, maybe is cleared!"); + if (scope != nullptr) { + napi_close_handle_scope(entry->env, scope); + } return ; } int argc = 0; @@ -72,6 +77,9 @@ void UvQueue::AsyncCall(NapiCallbackGetter getter, NapiArgsGenerator genArgs) if (status != napi_ok) { ZLOGE("notify data change failed status:%{public}d.", status); } + if (scope != nullptr) { + napi_close_handle_scope(entry->env, scope); + } }); } diff --git a/kv_store/frameworks/libs/distributeddb/BUILD.gn b/kv_store/frameworks/libs/distributeddb/BUILD.gn index f7569839..54f1c86f 100644 --- a/kv_store/frameworks/libs/distributeddb/BUILD.gn +++ b/kv_store/frameworks/libs/distributeddb/BUILD.gn @@ -279,6 +279,7 @@ ohos_shared_library("distributeddb") { configs += [ "//third_party/jsoncpp:jsoncpp_config" ] ldflags = [ "-Wl,--exclude-libs,ALL" ] + cflags_cc = [ "-fvisibility=hidden" ] deps += [ "//third_party/jsoncpp:jsoncpp", "//third_party/openssl:libcrypto_shared", diff --git a/kv_store/frameworks/libs/distributeddb/common/include/notification_chain.h b/kv_store/frameworks/libs/distributeddb/common/include/notification_chain.h index 8c0d50b5..b2c42c48 100644 --- a/kv_store/frameworks/libs/distributeddb/common/include/notification_chain.h +++ b/kv_store/frameworks/libs/distributeddb/common/include/notification_chain.h @@ -88,6 +88,8 @@ public: // Should be call when events happened. void NotifyEvent(EventType type, void *arg); + bool EmptyListener(EventType type) const; + NotificationChain() = default; // Delete the copy and assign constructors @@ -111,6 +113,8 @@ private: // Clear all listeners void ClearListeners(); + bool Empty() const; + ListenerChain(); // Delete the copy and assign constructors @@ -129,7 +133,7 @@ private: // Find a ListenerChain from the eventChains_ with given type, // this function needs to lock. - ListenerChain *FindAndGetListenerChainLocked(EventType type); + ListenerChain *FindAndGetListenerChainLocked(EventType type) const; // Find a ListenerChain from the eventChains_ with given type, ListenerChain *FindListenerChain(EventType type) const; diff --git a/kv_store/frameworks/libs/distributeddb/common/include/runtime_context.h b/kv_store/frameworks/libs/distributeddb/common/include/runtime_context.h index 85c22557..856c5b31 100644 --- a/kv_store/frameworks/libs/distributeddb/common/include/runtime_context.h +++ b/kv_store/frameworks/libs/distributeddb/common/include/runtime_context.h @@ -139,6 +139,8 @@ public: virtual std::map GetPermissionCheckParam(const DBProperties &properties) = 0; virtual void StopTaskPool() = 0; + + virtual void StopTimeTickMonitorIfNeed() = 0; protected: RuntimeContext() = default; virtual ~RuntimeContext() {} diff --git a/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp b/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp index 1bfecec6..c9d9870b 100644 --- a/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp +++ b/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp @@ -122,11 +122,22 @@ void NotificationChain::NotifyEvent(EventType type, void *arg) listenerChain = nullptr; } +bool NotificationChain::EmptyListener(EventType type) const +{ + NotificationChain::ListenerChain *listenerChain = FindAndGetListenerChainLocked(type); + if (listenerChain == nullptr) { + return true; + } + bool empty = listenerChain->Empty(); + RefObject::DecObjRef(listenerChain); + return empty; +} + NotificationChain::ListenerChain::ListenerChain() {} NotificationChain::ListenerChain::~ListenerChain() {} -NotificationChain::ListenerChain *NotificationChain::FindAndGetListenerChainLocked(EventType type) +NotificationChain::ListenerChain *NotificationChain::FindAndGetListenerChainLocked(EventType type) const { AutoLock lockGuard(this); ListenerChain *listenerChain = FindListenerChain(type); @@ -231,6 +242,12 @@ void NotificationChain::ListenerChain::ClearListeners() LockObj(); } +bool NotificationChain::ListenerChain::Empty() const +{ + AutoLock lockGuard(this); + return listenerSet_.empty(); +} + void NotificationChain::Listener::NotifyListener(void *arg) { if (onEvent_ && !IsKilled()) { diff --git a/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp b/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp index 8398c979..0d707887 100644 --- a/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp +++ b/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp @@ -280,6 +280,7 @@ NotificationChain::Listener *RuntimeContextImpl::RegisterTimeChangedLister(const timeTickMonitor_ = nullptr; return nullptr; } + LOGD("[RuntimeContext] TimeTickMonitor start success"); } return timeTickMonitor_->RegisterTimeChangedLister(action, errCode); } @@ -733,4 +734,16 @@ void RuntimeContextImpl::StopTaskPool() taskPool_ = nullptr; } } + +void RuntimeContextImpl::StopTimeTickMonitorIfNeed() +{ + std::lock_guard autoLock(timeTickMonitorLock_); + if (timeTickMonitor_ == nullptr) { + return; + } + if (timeTickMonitor_->EmptyListener()) { + LOGD("[RuntimeContext] TimeTickMonitor exist because no listener"); + timeTickMonitor_ = nullptr; + } +} } // namespace DistributedDB diff --git a/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.h b/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.h index e79d23ee..62b9ce62 100644 --- a/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.h +++ b/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.h @@ -127,6 +127,9 @@ public: std::map GetPermissionCheckParam(const DBProperties &properties) override; void StopTaskPool() override; + + void StopTimeTickMonitorIfNeed() override; + private: static constexpr int MAX_TP_THREADS = 10; // max threads of the task pool. static constexpr int MIN_TP_THREADS = 1; // min threads of the task pool. diff --git a/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp b/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp index 1bb415e6..2d5c3e18 100644 --- a/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp +++ b/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp @@ -66,10 +66,17 @@ void TimeTickMonitor::Stop() return; } - timeChangedNotifier_->UnRegisterEventType(TIME_CHANGE_EVENT); - RefObject::KillAndDecObjRef(timeChangedNotifier_); - timeChangedNotifier_ = nullptr; - runtimeCxt_->RemoveTimer(monitorTimerId_); + NotificationChain *notifier; + { + std::lock_guard autoLock(timeTickMonitorLock_); + notifier = timeChangedNotifier_; + timeChangedNotifier_ = nullptr; + } + if (notifier != nullptr) { + notifier->UnRegisterEventType(TIME_CHANGE_EVENT); + RefObject::KillAndDecObjRef(notifier); + } + runtimeCxt_->RemoveTimer(monitorTimerId_, true); isStarted_ = false; } @@ -123,9 +130,19 @@ int TimeTickMonitor::TimeTick(TimerId timerId) int64_t changedOffset = systemOffset - monotonicOffset; if (std::abs(changedOffset) > MAX_NOISE) { LOGI("Local system time may be changed! changedOffset %ld", changedOffset); - int ret = RuntimeContext::GetInstance()->ScheduleTask([this, changedOffset](){ + NotificationChain *notifier = nullptr; + { + std::lock_guard autoLock(timeTickMonitorLock_); + notifier = timeChangedNotifier_; + RefObject::IncObjRef(notifier); + } + int ret = RuntimeContext::GetInstance()->ScheduleTask([notifier, changedOffset](){ + if (notifier == nullptr) { + return; + } int64_t offset = changedOffset; - timeChangedNotifier_->NotifyEvent(TIME_CHANGE_EVENT, &offset); + notifier->NotifyEvent(TIME_CHANGE_EVENT, &offset); + RefObject::DecObjRef(notifier); }); if (ret != E_OK) { LOGE("TimeTickMonitor ScheduleTask failed %d", ret); @@ -165,4 +182,10 @@ void TimeTickMonitor::NotifyTimeChange(TimeOffset offset) const } timeChangedNotifier_->NotifyEvent(TIME_CHANGE_EVENT, static_cast(&offset)); } + +bool TimeTickMonitor::EmptyListener() const +{ + std::lock_guard lock(timeTickMonitorLock_); + return timeChangedNotifier_->EmptyListener(TIME_CHANGE_EVENT); +} } // namespace DistributedDB \ No newline at end of file diff --git a/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.h b/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.h index eab966e3..7513f950 100644 --- a/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.h +++ b/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.h @@ -40,6 +40,8 @@ public: // Notify TIME_CHANGE_EVENT. void NotifyTimeChange(TimeOffset offset) const; + + bool EmptyListener() const; private: static constexpr uint64_t MONITOR_INTERVAL = 1 * 1000; // 1s static constexpr int64_t MAX_NOISE = 9 * 100 * 1000; // 900ms diff --git a/kv_store/frameworks/libs/distributeddb/interfaces/include/kv_store_nb_delegate.h b/kv_store/frameworks/libs/distributeddb/interfaces/include/kv_store_nb_delegate.h index e10ec80c..21a11218 100644 --- a/kv_store/frameworks/libs/distributeddb/interfaces/include/kv_store_nb_delegate.h +++ b/kv_store/frameworks/libs/distributeddb/interfaces/include/kv_store_nb_delegate.h @@ -54,6 +54,7 @@ public: bool isNeedCompressOnSync = false; uint8_t compressionRate = 100; // Valid in [1, 100]. bool syncDualTupleMode = false; // communicator label use dualTuple hash or not + bool localOnly = false; // active sync module }; DB_API virtual ~KvStoreNbDelegate() {} diff --git a/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp b/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp index adc8a0ec..84da4cad 100644 --- a/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp +++ b/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp @@ -108,6 +108,7 @@ namespace { ParamCheckUtils::GetValidCompressionRate(option.compressionRate)); } properties.SetBoolProp(KvDBProperties::SYNC_DUAL_TUPLE_MODE, option.syncDualTupleMode); + properties.SetBoolProp(KvDBProperties::LOCAL_ONLY, option.localOnly); } bool CheckObserverConflictParam(const KvStoreNbDelegate::Option &option) diff --git a/kv_store/frameworks/libs/distributeddb/storage/include/kvdb_properties.h b/kv_store/frameworks/libs/distributeddb/storage/include/kvdb_properties.h index 6b668a79..1f8749ea 100644 --- a/kv_store/frameworks/libs/distributeddb/storage/include/kvdb_properties.h +++ b/kv_store/frameworks/libs/distributeddb/storage/include/kvdb_properties.h @@ -66,6 +66,7 @@ public: static const std::string RM_CORRUPTED_DB; static const std::string COMPRESS_ON_SYNC; static const std::string COMPRESSION_RATE; + static const std::string LOCAL_ONLY; static const int LOCAL_TYPE = 1; static const int MULTI_VER_TYPE = 2; diff --git a/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp b/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp index 74337966..162457d3 100644 --- a/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp +++ b/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp @@ -926,7 +926,13 @@ int KvDBManager::CheckKvDBProperties(const IKvDB *kvDB, const KvDBProperties &pr properties.GetBoolProp(KvDBProperties::SYNC_DUAL_TUPLE_MODE, false)) { LOGE("Different dual tuple sync mode"); return -E_MODE_MISMATCH; - } + } + + if (kvDB->GetMyProperties().GetBoolProp(KvDBProperties::LOCAL_ONLY, false) != + properties.GetBoolProp(KvDBProperties::LOCAL_ONLY, false)) { + LOGE("Different local only mode"); + return -E_INVALID_ARGS; + } if (!CheckSecOptions(properties, kvDB->GetMyProperties())) { return -E_INVALID_ARGS; diff --git a/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp b/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp index 72885909..bf07aba2 100644 --- a/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp +++ b/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp @@ -30,6 +30,7 @@ const std::string KvDBProperties::CHECK_INTEGRITY = "checkIntegrity"; const std::string KvDBProperties::RM_CORRUPTED_DB = "rmCorruptedDb"; const std::string KvDBProperties::COMPRESS_ON_SYNC = "needCompressOnSync"; const std::string KvDBProperties::COMPRESSION_RATE = "compressionRate"; +const std::string KvDBProperties::LOCAL_ONLY = "localOnly"; KvDBProperties::KvDBProperties() : cipherType_(CipherType::AES_256_GCM) diff --git a/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.h b/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.h index e9632897..84381bfc 100644 --- a/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.h +++ b/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.h @@ -210,7 +210,7 @@ private: DECLARE_OBJECT_TAG(SQLiteSingleVerNaturalStoreConnection); // ResultSet Related Info - static constexpr std::size_t MAX_RESULT_SET_SIZE = 4; // Max 4 ResultSet At The Same Time + static constexpr std::size_t MAX_RESULT_SET_SIZE = 8; // Max 8 ResultSet At The Same Time std::atomic cacheModeForNewResultSet_{ResultSetCacheMode::CACHE_FULL_ENTRY}; std::atomic cacheMaxSizeForNewResultSet_{0}; // Will be init to default value in constructor diff --git a/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp b/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp index ba66fcfc..711621e3 100644 --- a/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp +++ b/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp @@ -176,7 +176,7 @@ int SyncAbleKvDB::StartSyncerWithNoLock(bool isCheckSyncActive, bool isNeedActiv if (errCode == E_OK) { started_ = true; } else { - LOGE("KvDB start syncer failed, err:'%d'.", errCode); + LOGW("KvDB start syncer failed, err:'%d'.", errCode); } bool isSyncDualTupleMode = syncInterface->GetDbProperties().GetBoolProp(KvDBProperties::SYNC_DUAL_TUPLE_MODE, false); diff --git a/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp b/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp index 7df6e2ac..8227f3c2 100644 --- a/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp +++ b/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp @@ -101,6 +101,9 @@ int GenericSyncer::Initialize(ISyncInterface *syncInterface, bool isNeedActive) // It will be clear in destructor. int errCodeTimeHelper = InitTimeHelper(syncInterface); + if (!IsNeedActive(syncInterface)) { + return -E_NO_NEED_ACTIVE; + } // As timeChangedListener_ will record time change, it should not be clear even if engine init failed. // It will be clear in destructor. int errCodeTimeChangedListener = InitTimeChangedListener(); @@ -905,6 +908,7 @@ void GenericSyncer::ReleaseInnerResource() } if (timeChangedListener != nullptr) { timeChangedListener->Drop(true); + RuntimeContext::GetInstance()->StopTimeTickMonitorIfNeed(); } } @@ -1009,4 +1013,14 @@ int GenericSyncer::GetSyncDataSize(const std::string &device, size_t &size) cons size = (totalLen >= expectedMtuSize) ? expectedMtuSize : totalLen; return E_OK; } + +bool GenericSyncer::IsNeedActive(ISyncInterface *syncInterface) +{ + bool localOnly = syncInterface->GetDbProperties().GetBoolProp(KvDBProperties::LOCAL_ONLY, false); + if (localOnly) { + LOGD("[Syncer] Local only db, don't need active syncer"); + return false; + } + return true; +} } // namespace DistributedDB diff --git a/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.h b/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.h index d38ad390..7d89adbf 100644 --- a/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.h +++ b/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.h @@ -192,6 +192,8 @@ protected: static int SyncResourceInit(); + static bool IsNeedActive(ISyncInterface *syncInterface); + static const int MIN_VALID_SYNC_ID; static std::mutex moduleInitLock_; diff --git a/kv_store/frameworks/libs/distributeddb/test/fuzztest/delegate_fuzzer/BUILD.gn b/kv_store/frameworks/libs/distributeddb/test/fuzztest/delegate_fuzzer/BUILD.gn index c76f6e9e..1f3c8f9e 100644 --- a/kv_store/frameworks/libs/distributeddb/test/fuzztest/delegate_fuzzer/BUILD.gn +++ b/kv_store/frameworks/libs/distributeddb/test/fuzztest/delegate_fuzzer/BUILD.gn @@ -26,12 +26,18 @@ ohos_fuzztest("DelegateFuzzTest") { "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/storage", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src", @@ -57,9 +63,201 @@ ohos_fuzztest("DelegateFuzzTest") { fuzz_config_file = "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/delegate_fuzzer" sources = [ + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/auto_launch.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_compression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_value.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_common.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dfx_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dump_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_epoll.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_select.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent_loop.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/flatbuffer_schema.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/hash.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/json_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/lock_status_observer.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/log_print.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/param_check_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/parcel.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/performance_analysis.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/platform_specific.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query_expression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/ref_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/prepared_stmt.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_row_data_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/table_info.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_negotiate.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/semaphore_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_queue.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/types_export.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/user_change_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/combine_status.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_aggregator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_linker.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_combiner.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_retainer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/header_converter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/message_transform.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/network_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/protocol_proto.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/send_task_scheduler.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/serial_buffer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/intercepted_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_errno.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_conflict_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_snapshot_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/runtime_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/data_transformer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/db_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/default_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_single_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/iconnection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/ikvdb_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_commit_notify_filterable_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_observer_handle.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_windowed_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/generic_multi_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_commit.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_kvdata_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_transfer_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum_executor_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/local_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/multi_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/single_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/package_file.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_row_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_instance.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_sync_able_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relationaldb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/result_entries_window.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/single_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/collaboration_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/log_table_manager_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_sync_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/relational_remote_query_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_single_relational_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/split_device_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_data_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_transaction.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_query_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_forward_cursor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_cache.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_subscribe.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/ability_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/commit_history_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/communicator_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/db_ability.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/device_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/meta_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/query_sync_water_mark_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_message_schedule.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_serialize_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/subscribe_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_operation.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/value_slice_sync.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/common/distributeddb_tools_test.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/common/distributeddb_data_generate_unit_test.cpp", "delegate_fuzzer.cpp", @@ -79,12 +277,15 @@ ohos_fuzztest("DelegateFuzzTest") { "OMIT_FLATBUFFER", "RELATIONAL_STORE", "SQLITE_DISTRIBUTE_RELATIONAL", + "SQLITE_ENABLE_DROPTABLE_CALLBACK", ] deps = [ "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", "//third_party/jsoncpp:jsoncpp", "//third_party/openssl:libcrypto_shared", + "//third_party/sqlite:sqlite", + "//third_party/zlib:shared_libz", ] external_deps = [ diff --git a/kv_store/frameworks/libs/distributeddb/test/fuzztest/fileoper_fuzzer/BUILD.gn b/kv_store/frameworks/libs/distributeddb/test/fuzztest/fileoper_fuzzer/BUILD.gn index 839275c8..4726054e 100644 --- a/kv_store/frameworks/libs/distributeddb/test/fuzztest/fileoper_fuzzer/BUILD.gn +++ b/kv_store/frameworks/libs/distributeddb/test/fuzztest/fileoper_fuzzer/BUILD.gn @@ -26,18 +26,23 @@ ohos_fuzztest("FileOperFuzzTest") { "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/storage", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include/relational", "//third_party/jsoncpp/include/json", "//third_party/skia/third_party/externals/spirv-headers/tools/buildHeaders/jsoncpp/dist/json", "//third_party/skia/third_party/externals/swiftshader/third_party/SPIRV-Headers/tools/buildHeaders/jsoncpp/dist/json", @@ -58,9 +63,201 @@ ohos_fuzztest("FileOperFuzzTest") { fuzz_config_file = "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/fileoper_fuzzer" sources = [ + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/auto_launch.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_compression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_value.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_common.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dfx_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dump_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_epoll.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_select.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent_loop.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/flatbuffer_schema.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/hash.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/json_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/lock_status_observer.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/log_print.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/param_check_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/parcel.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/performance_analysis.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/platform_specific.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query_expression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/ref_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/prepared_stmt.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_row_data_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/table_info.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_negotiate.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/semaphore_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_queue.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/types_export.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/user_change_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/combine_status.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_aggregator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_linker.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_combiner.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_retainer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/header_converter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/message_transform.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/network_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/protocol_proto.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/send_task_scheduler.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/serial_buffer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/intercepted_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_errno.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_conflict_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_snapshot_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/runtime_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/data_transformer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/db_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/default_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_single_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/iconnection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/ikvdb_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_commit_notify_filterable_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_observer_handle.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_windowed_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/generic_multi_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_commit.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_kvdata_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_transfer_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum_executor_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/local_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/multi_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/single_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/package_file.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_row_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_instance.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_sync_able_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relationaldb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/result_entries_window.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/single_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/collaboration_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/log_table_manager_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_sync_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/relational_remote_query_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_single_relational_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/split_device_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_data_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_transaction.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_query_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_forward_cursor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_cache.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_subscribe.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/ability_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/commit_history_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/communicator_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/db_ability.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/device_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/meta_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/query_sync_water_mark_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_message_schedule.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_serialize_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/subscribe_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_operation.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/value_slice_sync.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/common/distributeddb_tools_test.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/common/distributeddb_data_generate_unit_test.cpp", "fileoper_fuzzer.cpp", @@ -70,6 +267,8 @@ ohos_fuzztest("FileOperFuzzTest") { "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", "//third_party/jsoncpp:jsoncpp", "//third_party/openssl:libcrypto_shared", + "//third_party/sqlite:sqlite", + "//third_party/zlib:shared_libz", ] defines = [ @@ -86,6 +285,7 @@ ohos_fuzztest("FileOperFuzzTest") { "OMIT_FLATBUFFER", "RELATIONAL_STORE", "SQLITE_DISTRIBUTE_RELATIONAL", + "SQLITE_ENABLE_DROPTABLE_CALLBACK", ] external_deps = [ diff --git a/kv_store/frameworks/libs/distributeddb/test/fuzztest/importfile_fuzzer/BUILD.gn b/kv_store/frameworks/libs/distributeddb/test/fuzztest/importfile_fuzzer/BUILD.gn index de2338af..3e214090 100644 --- a/kv_store/frameworks/libs/distributeddb/test/fuzztest/importfile_fuzzer/BUILD.gn +++ b/kv_store/frameworks/libs/distributeddb/test/fuzztest/importfile_fuzzer/BUILD.gn @@ -26,12 +26,18 @@ ohos_fuzztest("ImportFileFuzzTest") { "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/storage", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src", @@ -57,9 +63,201 @@ ohos_fuzztest("ImportFileFuzzTest") { fuzz_config_file = "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/importfile_fuzzer" sources = [ + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/auto_launch.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_compression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_value.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_common.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dfx_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dump_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_epoll.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_select.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent_loop.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/flatbuffer_schema.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/hash.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/json_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/lock_status_observer.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/log_print.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/param_check_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/parcel.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/performance_analysis.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/platform_specific.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query_expression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/ref_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/prepared_stmt.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_row_data_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/table_info.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_negotiate.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/semaphore_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_queue.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/types_export.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/user_change_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/combine_status.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_aggregator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_linker.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_combiner.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_retainer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/header_converter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/message_transform.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/network_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/protocol_proto.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/send_task_scheduler.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/serial_buffer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/intercepted_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_errno.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_conflict_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_snapshot_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/runtime_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/data_transformer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/db_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/default_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_single_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/iconnection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/ikvdb_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_commit_notify_filterable_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_observer_handle.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_windowed_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/generic_multi_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_commit.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_kvdata_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_transfer_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum_executor_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/local_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/multi_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/single_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/package_file.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_row_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_instance.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_sync_able_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relationaldb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/result_entries_window.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/single_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/collaboration_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/log_table_manager_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_sync_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/relational_remote_query_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_single_relational_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/split_device_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_data_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_transaction.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_query_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_forward_cursor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_cache.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_subscribe.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/ability_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/commit_history_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/communicator_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/db_ability.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/device_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/meta_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/query_sync_water_mark_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_message_schedule.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_serialize_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/subscribe_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_operation.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/value_slice_sync.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/common/distributeddb_tools_test.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/common/distributeddb_data_generate_unit_test.cpp", "importfile_fuzzer.cpp", @@ -79,12 +277,15 @@ ohos_fuzztest("ImportFileFuzzTest") { "OMIT_FLATBUFFER", "RELATIONAL_STORE", "SQLITE_DISTRIBUTE_RELATIONAL", + "SQLITE_ENABLE_DROPTABLE_CALLBACK", ] deps = [ "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", "//third_party/jsoncpp:jsoncpp", "//third_party/openssl:libcrypto_shared", + "//third_party/sqlite:sqlite", + "//third_party/zlib:shared_libz", ] external_deps = [ diff --git a/kv_store/frameworks/libs/distributeddb/test/fuzztest/iprocesscommunicator_fuzzer/BUILD.gn b/kv_store/frameworks/libs/distributeddb/test/fuzztest/iprocesscommunicator_fuzzer/BUILD.gn index 8f0ad1f2..2b552af2 100644 --- a/kv_store/frameworks/libs/distributeddb/test/fuzztest/iprocesscommunicator_fuzzer/BUILD.gn +++ b/kv_store/frameworks/libs/distributeddb/test/fuzztest/iprocesscommunicator_fuzzer/BUILD.gn @@ -26,12 +26,18 @@ ohos_fuzztest("IProcessCommunicatorFuzzTest") { "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/storage", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src", @@ -57,9 +63,201 @@ ohos_fuzztest("IProcessCommunicatorFuzzTest") { fuzz_config_file = "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/iprocesscommunicator_fuzzer" sources = [ + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/auto_launch.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_compression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_value.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_common.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dfx_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dump_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_epoll.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_select.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent_loop.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/flatbuffer_schema.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/hash.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/json_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/lock_status_observer.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/log_print.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/param_check_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/parcel.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/performance_analysis.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/platform_specific.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query_expression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/ref_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/prepared_stmt.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_row_data_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/table_info.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_negotiate.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/semaphore_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_queue.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/types_export.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/user_change_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/combine_status.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_aggregator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_linker.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_combiner.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_retainer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/header_converter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/message_transform.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/network_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/protocol_proto.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/send_task_scheduler.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/serial_buffer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/intercepted_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_errno.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_conflict_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_snapshot_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/runtime_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/data_transformer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/db_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/default_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_single_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/iconnection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/ikvdb_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_commit_notify_filterable_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_observer_handle.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_windowed_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/generic_multi_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_commit.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_kvdata_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_transfer_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum_executor_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/local_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/multi_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/single_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/package_file.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_row_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_instance.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_sync_able_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relationaldb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/result_entries_window.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/single_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/collaboration_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/log_table_manager_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_sync_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/relational_remote_query_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_single_relational_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/split_device_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_data_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_transaction.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_query_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_forward_cursor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_cache.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_subscribe.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/ability_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/commit_history_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/communicator_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/db_ability.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/device_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/meta_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/query_sync_water_mark_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_message_schedule.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_serialize_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/subscribe_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_operation.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/value_slice_sync.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/common/distributeddb_tools_test.cpp", "iprocesscommunicator_fuzzer.cpp", ] @@ -78,12 +276,15 @@ ohos_fuzztest("IProcessCommunicatorFuzzTest") { "OMIT_FLATBUFFER", "RELATIONAL_STORE", "SQLITE_DISTRIBUTE_RELATIONAL", + "SQLITE_ENABLE_DROPTABLE_CALLBACK", ] deps = [ "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", "//third_party/jsoncpp:jsoncpp", "//third_party/openssl:libcrypto_shared", + "//third_party/sqlite:sqlite", + "//third_party/zlib:shared_libz", ] external_deps = [ diff --git a/kv_store/frameworks/libs/distributeddb/test/fuzztest/kvdelegatemanager_fuzzer/BUILD.gn b/kv_store/frameworks/libs/distributeddb/test/fuzztest/kvdelegatemanager_fuzzer/BUILD.gn index 587b29e2..12423b76 100644 --- a/kv_store/frameworks/libs/distributeddb/test/fuzztest/kvdelegatemanager_fuzzer/BUILD.gn +++ b/kv_store/frameworks/libs/distributeddb/test/fuzztest/kvdelegatemanager_fuzzer/BUILD.gn @@ -26,12 +26,18 @@ ohos_fuzztest("KvDelegateManagerFuzzTest") { "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/storage", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src", @@ -57,9 +63,201 @@ ohos_fuzztest("KvDelegateManagerFuzzTest") { fuzz_config_file = "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/kvdelegatemanager_fuzzer" sources = [ + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/auto_launch.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_compression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_value.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_common.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dfx_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dump_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_epoll.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_select.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent_loop.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/flatbuffer_schema.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/hash.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/json_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/lock_status_observer.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/log_print.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/param_check_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/parcel.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/performance_analysis.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/platform_specific.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query_expression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/ref_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/prepared_stmt.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_row_data_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/table_info.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_negotiate.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/semaphore_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_queue.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/types_export.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/user_change_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/combine_status.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_aggregator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_linker.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_combiner.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_retainer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/header_converter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/message_transform.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/network_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/protocol_proto.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/send_task_scheduler.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/serial_buffer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/intercepted_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_errno.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_conflict_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_snapshot_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/runtime_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/data_transformer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/db_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/default_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_single_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/iconnection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/ikvdb_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_commit_notify_filterable_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_observer_handle.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_windowed_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/generic_multi_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_commit.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_kvdata_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_transfer_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum_executor_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/local_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/multi_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/single_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/package_file.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_row_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_instance.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_sync_able_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relationaldb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/result_entries_window.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/single_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/collaboration_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/log_table_manager_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_sync_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/relational_remote_query_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_single_relational_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/split_device_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_data_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_transaction.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_query_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_forward_cursor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_cache.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_subscribe.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/ability_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/commit_history_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/communicator_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/db_ability.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/device_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/meta_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/query_sync_water_mark_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_message_schedule.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_serialize_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/subscribe_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_operation.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/value_slice_sync.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/common/distributeddb_tools_test.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/common/distributeddb_data_generate_unit_test.cpp", "kvdelegatemanager_fuzzer.cpp", @@ -79,12 +277,15 @@ ohos_fuzztest("KvDelegateManagerFuzzTest") { "OMIT_FLATBUFFER", "RELATIONAL_STORE", "SQLITE_DISTRIBUTE_RELATIONAL", + "SQLITE_ENABLE_DROPTABLE_CALLBACK", ] deps = [ "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", "//third_party/jsoncpp:jsoncpp", "//third_party/openssl:libcrypto_shared", + "//third_party/sqlite:sqlite", + "//third_party/zlib:shared_libz", ] external_deps = [ diff --git a/kv_store/frameworks/libs/distributeddb/test/fuzztest/kvstoreresultset_fuzzer/BUILD.gn b/kv_store/frameworks/libs/distributeddb/test/fuzztest/kvstoreresultset_fuzzer/BUILD.gn index 7be73aca..229ee3bd 100644 --- a/kv_store/frameworks/libs/distributeddb/test/fuzztest/kvstoreresultset_fuzzer/BUILD.gn +++ b/kv_store/frameworks/libs/distributeddb/test/fuzztest/kvstoreresultset_fuzzer/BUILD.gn @@ -26,12 +26,18 @@ ohos_fuzztest("KvStoreResultSetFuzzTest") { "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/storage", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src", @@ -57,9 +63,201 @@ ohos_fuzztest("KvStoreResultSetFuzzTest") { fuzz_config_file = "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/kvstoreresultset_fuzzer" sources = [ + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/auto_launch.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_compression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_value.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_common.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dfx_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dump_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_epoll.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_select.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent_loop.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/flatbuffer_schema.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/hash.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/json_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/lock_status_observer.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/log_print.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/param_check_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/parcel.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/performance_analysis.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/platform_specific.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query_expression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/ref_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/prepared_stmt.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_row_data_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/table_info.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_negotiate.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/semaphore_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_queue.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/types_export.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/user_change_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/combine_status.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_aggregator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_linker.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_combiner.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_retainer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/header_converter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/message_transform.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/network_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/protocol_proto.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/send_task_scheduler.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/serial_buffer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/intercepted_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_errno.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_conflict_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_snapshot_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/runtime_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/data_transformer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/db_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/default_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_single_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/iconnection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/ikvdb_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_commit_notify_filterable_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_observer_handle.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_windowed_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/generic_multi_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_commit.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_kvdata_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_transfer_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum_executor_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/local_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/multi_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/single_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/package_file.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_row_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_instance.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_sync_able_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relationaldb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/result_entries_window.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/single_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/collaboration_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/log_table_manager_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_sync_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/relational_remote_query_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_single_relational_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/split_device_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_data_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_transaction.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_query_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_forward_cursor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_cache.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_subscribe.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/ability_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/commit_history_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/communicator_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/db_ability.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/device_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/meta_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/query_sync_water_mark_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_message_schedule.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_serialize_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/subscribe_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_operation.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/value_slice_sync.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/common/distributeddb_tools_test.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/common/distributeddb_data_generate_unit_test.cpp", "kvstoreresultset_fuzzer.cpp", @@ -79,12 +277,15 @@ ohos_fuzztest("KvStoreResultSetFuzzTest") { "OMIT_FLATBUFFER", "RELATIONAL_STORE", "SQLITE_DISTRIBUTE_RELATIONAL", + "SQLITE_ENABLE_DROPTABLE_CALLBACK", ] deps = [ "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", "//third_party/jsoncpp:jsoncpp", "//third_party/openssl:libcrypto_shared", + "//third_party/sqlite:sqlite", + "//third_party/zlib:shared_libz", ] external_deps = [ diff --git a/kv_store/frameworks/libs/distributeddb/test/fuzztest/nbdelegate_fuzzer/BUILD.gn b/kv_store/frameworks/libs/distributeddb/test/fuzztest/nbdelegate_fuzzer/BUILD.gn index e73260a6..b912d80c 100644 --- a/kv_store/frameworks/libs/distributeddb/test/fuzztest/nbdelegate_fuzzer/BUILD.gn +++ b/kv_store/frameworks/libs/distributeddb/test/fuzztest/nbdelegate_fuzzer/BUILD.gn @@ -26,12 +26,18 @@ ohos_fuzztest("NbDelegateFuzzTest") { "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/storage", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src", @@ -57,9 +63,201 @@ ohos_fuzztest("NbDelegateFuzzTest") { fuzz_config_file = "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/nbdelegate_fuzzer" sources = [ + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/auto_launch.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_compression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_value.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_common.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dfx_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dump_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_epoll.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_select.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent_loop.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/flatbuffer_schema.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/hash.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/json_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/lock_status_observer.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/log_print.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/param_check_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/parcel.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/performance_analysis.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/platform_specific.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query_expression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/ref_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/prepared_stmt.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_row_data_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/table_info.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_negotiate.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/semaphore_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_queue.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/types_export.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/user_change_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/combine_status.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_aggregator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_linker.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_combiner.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_retainer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/header_converter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/message_transform.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/network_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/protocol_proto.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/send_task_scheduler.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/serial_buffer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/intercepted_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_errno.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_conflict_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_snapshot_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/runtime_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/data_transformer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/db_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/default_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_single_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/iconnection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/ikvdb_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_commit_notify_filterable_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_observer_handle.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_windowed_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/generic_multi_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_commit.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_kvdata_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_transfer_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum_executor_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/local_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/multi_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/single_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/package_file.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_row_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_instance.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_sync_able_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relationaldb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/result_entries_window.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/single_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/collaboration_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/log_table_manager_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_sync_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/relational_remote_query_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_single_relational_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/split_device_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_data_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_transaction.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_query_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_forward_cursor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_cache.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_subscribe.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/ability_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/commit_history_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/communicator_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/db_ability.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/device_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/meta_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/query_sync_water_mark_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_message_schedule.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_serialize_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/subscribe_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_operation.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/value_slice_sync.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/common/distributeddb_tools_test.cpp", "nbdelegate_fuzzer.cpp", ] @@ -78,12 +276,15 @@ ohos_fuzztest("NbDelegateFuzzTest") { "OMIT_FLATBUFFER", "RELATIONAL_STORE", "SQLITE_DISTRIBUTE_RELATIONAL", + "SQLITE_ENABLE_DROPTABLE_CALLBACK", ] deps = [ "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", "//third_party/jsoncpp:jsoncpp", "//third_party/openssl:libcrypto_shared", + "//third_party/sqlite:sqlite", + "//third_party/zlib:shared_libz", ] external_deps = [ diff --git a/kv_store/frameworks/libs/distributeddb/test/fuzztest/parseckeck_fuzzer/BUILD.gn b/kv_store/frameworks/libs/distributeddb/test/fuzztest/parseckeck_fuzzer/BUILD.gn index d083e09e..d995db2e 100644 --- a/kv_store/frameworks/libs/distributeddb/test/fuzztest/parseckeck_fuzzer/BUILD.gn +++ b/kv_store/frameworks/libs/distributeddb/test/fuzztest/parseckeck_fuzzer/BUILD.gn @@ -11,7 +11,7 @@ # See the License for the specific language governing permissions and # limitations under the License. -#####################hydra-fuzz################### +#####################hydra-fuzz###################common\src\schema_constant. import("//build/config/features.gni") import("//build/test.gni") @@ -26,12 +26,18 @@ ohos_fuzztest("ParseCkeckFuzzTest") { "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/storage", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src", @@ -57,13 +63,201 @@ ohos_fuzztest("ParseCkeckFuzzTest") { fuzz_config_file = "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/parseckeck_fuzzer" sources = [ + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/auto_launch.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_compression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_value.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_common.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dfx_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dump_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_epoll.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_select.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent_loop.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/flatbuffer_schema.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/hash.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/json_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/lock_status_observer.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/log_print.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/param_check_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/parcel.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/performance_analysis.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/platform_specific.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query_expression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/ref_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/prepared_stmt.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_row_data_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/table_info.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_negotiate.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_object.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/semaphore_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_queue.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/types_export.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/user_change_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/combine_status.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_aggregator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_linker.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_combiner.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_retainer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/header_converter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/message_transform.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/network_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/protocol_proto.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/send_task_scheduler.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/serial_buffer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/intercepted_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_errno.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_conflict_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_snapshot_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/runtime_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/data_transformer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/db_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/default_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_single_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/iconnection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/ikvdb_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_commit_notify_filterable_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_observer_handle.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_windowed_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/generic_multi_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_commit.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_kvdata_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_transfer_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum_executor_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/local_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/multi_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/single_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/package_file.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_row_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_instance.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_sync_able_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relationaldb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/result_entries_window.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/single_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/collaboration_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/log_table_manager_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_sync_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/relational_remote_query_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_single_relational_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/split_device_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_data_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_transaction.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_query_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_forward_cursor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_cache.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_subscribe.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/ability_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/commit_history_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/communicator_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/db_ability.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/device_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/meta_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/query_sync_water_mark_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_message_schedule.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_serialize_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/subscribe_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_operation.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/value_slice_sync.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/common/distributeddb_tools_test.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/common/distributeddb_data_generate_unit_test.cpp", "parseckeck_fuzzer.cpp", @@ -83,12 +277,15 @@ ohos_fuzztest("ParseCkeckFuzzTest") { "OMIT_FLATBUFFER", "RELATIONAL_STORE", "SQLITE_DISTRIBUTE_RELATIONAL", + "SQLITE_ENABLE_DROPTABLE_CALLBACK", ] deps = [ "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", "//third_party/jsoncpp:jsoncpp", "//third_party/openssl:libcrypto_shared", + "//third_party/sqlite:sqlite", + "//third_party/zlib:shared_libz", ] external_deps = [ diff --git a/kv_store/frameworks/libs/distributeddb/test/fuzztest/query_fuzzer/BUILD.gn b/kv_store/frameworks/libs/distributeddb/test/fuzztest/query_fuzzer/BUILD.gn index f40c73a3..d3ff70fb 100644 --- a/kv_store/frameworks/libs/distributeddb/test/fuzztest/query_fuzzer/BUILD.gn +++ b/kv_store/frameworks/libs/distributeddb/test/fuzztest/query_fuzzer/BUILD.gn @@ -25,12 +25,18 @@ ohos_fuzztest("QueryFuzzTest") { "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/storage", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src", @@ -56,12 +62,201 @@ ohos_fuzztest("QueryFuzzTest") { fuzz_config_file = "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/query_fuzzer" sources = [ + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/auto_launch.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_compression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_value.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_common.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dfx_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dump_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_epoll.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_select.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent_loop.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/flatbuffer_schema.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/hash.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/json_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/lock_status_observer.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/log_print.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/param_check_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/parcel.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/performance_analysis.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/platform_specific.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query_expression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/ref_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/prepared_stmt.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_row_data_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/table_info.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_negotiate.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_object.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/semaphore_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_queue.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/types_export.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/user_change_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/combine_status.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_aggregator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_linker.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_combiner.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_retainer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/header_converter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/message_transform.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/network_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/protocol_proto.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/send_task_scheduler.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/serial_buffer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/intercepted_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_errno.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_conflict_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_snapshot_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/runtime_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/data_transformer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/db_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/default_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_single_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/iconnection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/ikvdb_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_commit_notify_filterable_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_observer_handle.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_windowed_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/generic_multi_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_commit.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_kvdata_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_transfer_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum_executor_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/local_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/multi_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/single_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/package_file.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_row_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_instance.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_sync_able_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relationaldb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/result_entries_window.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/single_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/collaboration_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/log_table_manager_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_sync_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/relational_remote_query_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_single_relational_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/split_device_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_data_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_transaction.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_query_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_forward_cursor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_cache.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_subscribe.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/ability_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/commit_history_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/communicator_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/db_ability.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/device_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/meta_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/query_sync_water_mark_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_message_schedule.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_serialize_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/subscribe_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_operation.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/value_slice_sync.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/common/distributeddb_data_generate_unit_test.cpp", "query_fuzzer.cpp", ] @@ -80,12 +275,15 @@ ohos_fuzztest("QueryFuzzTest") { "OMIT_FLATBUFFER", "RELATIONAL_STORE", "SQLITE_DISTRIBUTE_RELATIONAL", + "SQLITE_ENABLE_DROPTABLE_CALLBACK", ] deps = [ "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", "//third_party/jsoncpp:jsoncpp", "//third_party/openssl:libcrypto_shared", + "//third_party/sqlite:sqlite", + "//third_party/zlib:shared_libz", ] external_deps = [ diff --git a/kv_store/frameworks/libs/distributeddb/test/fuzztest/rekey_fuzzer/BUILD.gn b/kv_store/frameworks/libs/distributeddb/test/fuzztest/rekey_fuzzer/BUILD.gn index f6c00e2c..74f91697 100644 --- a/kv_store/frameworks/libs/distributeddb/test/fuzztest/rekey_fuzzer/BUILD.gn +++ b/kv_store/frameworks/libs/distributeddb/test/fuzztest/rekey_fuzzer/BUILD.gn @@ -26,12 +26,18 @@ ohos_fuzztest("ReKeyFuzzTest") { "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/storage", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src", @@ -57,9 +63,201 @@ ohos_fuzztest("ReKeyFuzzTest") { fuzz_config_file = "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/rekey_fuzzer" sources = [ + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/auto_launch.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_compression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_value.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_common.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dfx_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dump_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_epoll.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_select.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent_loop.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/flatbuffer_schema.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/hash.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/json_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/lock_status_observer.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/log_print.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/param_check_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/parcel.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/performance_analysis.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/platform_specific.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query_expression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/ref_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/prepared_stmt.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_row_data_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/table_info.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_negotiate.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/semaphore_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_queue.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/types_export.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/user_change_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/combine_status.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_aggregator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_linker.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_combiner.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_retainer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/header_converter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/message_transform.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/network_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/protocol_proto.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/send_task_scheduler.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/serial_buffer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/intercepted_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_errno.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_conflict_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_snapshot_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/runtime_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/data_transformer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/db_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/default_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_single_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/iconnection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/ikvdb_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_commit_notify_filterable_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_observer_handle.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_windowed_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/generic_multi_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_commit.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_kvdata_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_transfer_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum_executor_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/local_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/multi_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/single_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/package_file.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_row_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_instance.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_sync_able_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relationaldb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/result_entries_window.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/single_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/collaboration_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/log_table_manager_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_sync_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/relational_remote_query_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_single_relational_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/split_device_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_data_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_transaction.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_query_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_forward_cursor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_cache.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_subscribe.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/ability_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/commit_history_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/communicator_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/db_ability.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/device_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/meta_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/query_sync_water_mark_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_message_schedule.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_serialize_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/subscribe_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_operation.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/value_slice_sync.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/common/distributeddb_tools_test.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/common/distributeddb_data_generate_unit_test.cpp", "rekey_fuzzer.cpp", @@ -79,12 +277,15 @@ ohos_fuzztest("ReKeyFuzzTest") { "OMIT_FLATBUFFER", "RELATIONAL_STORE", "SQLITE_DISTRIBUTE_RELATIONAL", + "SQLITE_ENABLE_DROPTABLE_CALLBACK", ] deps = [ "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", "//third_party/jsoncpp:jsoncpp", "//third_party/openssl:libcrypto_shared", + "//third_party/sqlite:sqlite", + "//third_party/zlib:shared_libz", ] external_deps = [ diff --git a/kv_store/frameworks/libs/distributeddb/test/fuzztest/relationalstoredelegate_fuzzer/BUILD.gn b/kv_store/frameworks/libs/distributeddb/test/fuzztest/relationalstoredelegate_fuzzer/BUILD.gn index 10541455..9c18e643 100644 --- a/kv_store/frameworks/libs/distributeddb/test/fuzztest/relationalstoredelegate_fuzzer/BUILD.gn +++ b/kv_store/frameworks/libs/distributeddb/test/fuzztest/relationalstoredelegate_fuzzer/BUILD.gn @@ -27,12 +27,18 @@ ohos_fuzztest("RelationalstoredelegateFuzzTest") { "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/include/distributeddb", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src", @@ -58,9 +64,201 @@ ohos_fuzztest("RelationalstoredelegateFuzzTest") { fuzz_config_file = "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/relationalstoredelegate_fuzzer" sources = [ + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/auto_launch.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_compression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_value.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_common.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dfx_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dump_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_epoll.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_select.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent_loop.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/flatbuffer_schema.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/hash.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/json_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/lock_status_observer.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/log_print.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/param_check_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/parcel.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/performance_analysis.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/platform_specific.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query_expression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/ref_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/prepared_stmt.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_row_data_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/table_info.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_negotiate.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/semaphore_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_queue.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/types_export.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/user_change_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/combine_status.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_aggregator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_linker.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_combiner.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_retainer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/header_converter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/message_transform.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/network_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/protocol_proto.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/send_task_scheduler.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/serial_buffer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/intercepted_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_errno.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_conflict_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_snapshot_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/runtime_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/data_transformer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/db_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/default_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_single_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/iconnection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/ikvdb_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_commit_notify_filterable_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_observer_handle.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_windowed_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/generic_multi_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_commit.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_kvdata_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_transfer_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum_executor_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/local_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/multi_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/single_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/package_file.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_row_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_instance.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_sync_able_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relationaldb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/result_entries_window.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/single_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/collaboration_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/log_table_manager_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_sync_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/relational_remote_query_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_single_relational_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/split_device_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_data_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_transaction.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_query_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_forward_cursor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_cache.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_subscribe.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/ability_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/commit_history_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/communicator_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/db_ability.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/device_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/meta_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/query_sync_water_mark_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_message_schedule.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_serialize_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/subscribe_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_operation.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/value_slice_sync.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/common/distributeddb_tools_test.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/common/fuzzer_data.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/relationalstoredelegate_fuzzer/relationalstoredelegate_fuzzer.cpp", @@ -84,6 +282,7 @@ ohos_fuzztest("RelationalstoredelegateFuzzTest") { "RELATIONAL_STORE", "SQLITE_DISTRIBUTE_RELATIONAL", "SQLITE_EXPORT_SYMBOLS", + "SQLITE_ENABLE_DROPTABLE_CALLBACK", ] deps = [ @@ -91,6 +290,7 @@ ohos_fuzztest("RelationalstoredelegateFuzzTest") { "//third_party/jsoncpp:jsoncpp", "//third_party/openssl:libcrypto_shared", "//third_party/sqlite:sqlite", + "//third_party/zlib:shared_libz", ] external_deps = [ diff --git a/kv_store/frameworks/libs/distributeddb/test/fuzztest/relationalstoremanager_fuzzer/BUILD.gn b/kv_store/frameworks/libs/distributeddb/test/fuzztest/relationalstoremanager_fuzzer/BUILD.gn index 558de907..6139ab5a 100644 --- a/kv_store/frameworks/libs/distributeddb/test/fuzztest/relationalstoremanager_fuzzer/BUILD.gn +++ b/kv_store/frameworks/libs/distributeddb/test/fuzztest/relationalstoremanager_fuzzer/BUILD.gn @@ -25,14 +25,19 @@ ohos_fuzztest("RelationalstoremanagerFuzzTest") { "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/syncer", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/storage", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/include", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/include/distributeddb", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src", @@ -58,9 +63,201 @@ ohos_fuzztest("RelationalstoremanagerFuzzTest") { fuzz_config_file = "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/relationalstoremanager_fuzzer" sources = [ + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/auto_launch.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_compression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_value.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_common.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dfx_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dump_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_epoll.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_select.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent_loop.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/flatbuffer_schema.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/hash.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/json_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/lock_status_observer.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/log_print.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/param_check_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/parcel.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/performance_analysis.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/platform_specific.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query_expression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/ref_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/prepared_stmt.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_row_data_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/table_info.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_negotiate.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/semaphore_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_queue.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/types_export.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/user_change_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/combine_status.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_aggregator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_linker.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_combiner.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_retainer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/header_converter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/message_transform.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/network_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/protocol_proto.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/send_task_scheduler.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/serial_buffer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/intercepted_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_errno.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_conflict_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_snapshot_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/runtime_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/data_transformer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/db_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/default_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_single_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/iconnection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/ikvdb_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_commit_notify_filterable_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_observer_handle.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_windowed_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/generic_multi_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_commit.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_kvdata_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_transfer_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum_executor_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/local_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/multi_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/single_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/package_file.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_row_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_instance.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_sync_able_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relationaldb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/result_entries_window.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/single_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/collaboration_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/log_table_manager_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_sync_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/relational_remote_query_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_single_relational_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/split_device_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_data_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_transaction.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_query_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_forward_cursor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_cache.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_subscribe.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/ability_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/commit_history_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/communicator_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/db_ability.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/device_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/meta_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/query_sync_water_mark_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_message_schedule.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_serialize_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/subscribe_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_operation.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/value_slice_sync.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/common/distributeddb_tools_test.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/common/fuzzer_data.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/relationalstoremanager_fuzzer/relationalstoremanager_fuzzer.cpp", @@ -84,6 +281,7 @@ ohos_fuzztest("RelationalstoremanagerFuzzTest") { "RELATIONAL_STORE", "SQLITE_DISTRIBUTE_RELATIONAL", "SQLITE_EXPORT_SYMBOLS", + "SQLITE_ENABLE_DROPTABLE_CALLBACK", ] deps = [ @@ -91,6 +289,7 @@ ohos_fuzztest("RelationalstoremanagerFuzzTest") { "//third_party/jsoncpp:jsoncpp", "//third_party/openssl:libcrypto_shared", "//third_party/sqlite:sqlite", + "//third_party/zlib:shared_libz", ] external_deps = [ diff --git a/kv_store/frameworks/libs/distributeddb/test/fuzztest/schemadelegate_fuzzer/BUILD.gn b/kv_store/frameworks/libs/distributeddb/test/fuzztest/schemadelegate_fuzzer/BUILD.gn index e9fbd144..5138b341 100644 --- a/kv_store/frameworks/libs/distributeddb/test/fuzztest/schemadelegate_fuzzer/BUILD.gn +++ b/kv_store/frameworks/libs/distributeddb/test/fuzztest/schemadelegate_fuzzer/BUILD.gn @@ -26,12 +26,18 @@ ohos_fuzztest("SchemaDelegateFuzzTest") { "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/storage", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src", @@ -55,9 +61,201 @@ ohos_fuzztest("SchemaDelegateFuzzTest") { fuzz_config_file = "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/schemadelegate_fuzzer" sources = [ + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/auto_launch.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_compression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_value.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_common.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dfx_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dump_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_epoll.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_select.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent_loop.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/flatbuffer_schema.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/hash.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/json_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/lock_status_observer.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/log_print.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/param_check_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/parcel.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/performance_analysis.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/platform_specific.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query_expression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/ref_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/prepared_stmt.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_row_data_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/table_info.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_negotiate.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/semaphore_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_queue.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/types_export.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/user_change_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/combine_status.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_aggregator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_linker.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_combiner.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_retainer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/header_converter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/message_transform.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/network_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/protocol_proto.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/send_task_scheduler.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/serial_buffer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/intercepted_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_errno.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_conflict_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_snapshot_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/runtime_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/data_transformer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/db_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/default_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_single_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/iconnection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/ikvdb_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_commit_notify_filterable_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_observer_handle.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_windowed_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/generic_multi_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_commit.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_kvdata_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_transfer_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum_executor_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/local_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/multi_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/single_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/package_file.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_row_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_instance.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_sync_able_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relationaldb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/result_entries_window.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/single_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/collaboration_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/log_table_manager_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_sync_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/relational_remote_query_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_single_relational_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/split_device_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_data_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_transaction.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_query_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_forward_cursor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_cache.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_subscribe.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/ability_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/commit_history_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/communicator_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/db_ability.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/device_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/meta_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/query_sync_water_mark_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_message_schedule.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_serialize_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/subscribe_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_operation.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/value_slice_sync.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/common/distributeddb_tools_test.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/common/fuzzer_data.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/common/distributeddb_data_generate_unit_test.cpp", @@ -78,12 +276,15 @@ ohos_fuzztest("SchemaDelegateFuzzTest") { "OMIT_FLATBUFFER", "RELATIONAL_STORE", "SQLITE_DISTRIBUTE_RELATIONAL", + "SQLITE_ENABLE_DROPTABLE_CALLBACK", ] deps = [ "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", "//third_party/jsoncpp:jsoncpp", "//third_party/openssl:libcrypto_shared", + "//third_party/sqlite:sqlite", + "//third_party/zlib:shared_libz", ] external_deps = [ diff --git a/kv_store/frameworks/libs/distributeddb/test/fuzztest/sync_fuzzer/BUILD.gn b/kv_store/frameworks/libs/distributeddb/test/fuzztest/sync_fuzzer/BUILD.gn index 76e3ead5..55cbb16d 100644 --- a/kv_store/frameworks/libs/distributeddb/test/fuzztest/sync_fuzzer/BUILD.gn +++ b/kv_store/frameworks/libs/distributeddb/test/fuzztest/sync_fuzzer/BUILD.gn @@ -26,12 +26,18 @@ ohos_fuzztest("SyncFuzzTest") { "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/storage", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src", - "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/include/relational", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/include", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src", @@ -57,9 +63,201 @@ ohos_fuzztest("SyncFuzzTest") { fuzz_config_file = "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/sync_fuzzer" sources = [ + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/auto_launch.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_compression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/data_value.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_common.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dfx_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/db_dump_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_epoll.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/event_loop_select.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/evloop/src/ievent_loop.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/flatbuffer_schema.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/hash.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/json_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/lock_status_observer.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/log_print.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/notification_chain.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/param_check_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/parcel.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/performance_analysis.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/platform_specific.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/query_expression.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/ref_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/prepared_stmt.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_row_data_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/relational_schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/relational/table_info.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/runtime_context_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_constant.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_negotiate.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/schema_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/semaphore_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_pool_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/task_queue.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/time_tick_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/types_export.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/user_change_monitor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/common/src/value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/combine_status.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_aggregator.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/communicator_linker.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_combiner.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/frame_retainer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/header_converter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/message_transform.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/network_adapter.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/protocol_proto.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/send_task_scheduler.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/communicator/src/serial_buffer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/intercepted_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_delegate_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_errno.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_conflict_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_nb_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_result_set_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/kv_store_snapshot_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_changed_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_delegate_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/relational/relational_store_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/interfaces/src/runtime_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/data_transformer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/db_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/default_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/generic_single_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/iconnection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/ikvdb_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_commit_notify_filterable_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_observer_handle.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/kvdb_windowed_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/generic_multi_ver_kv_entry.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_commit.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_kvdata_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_commit_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_natural_store_transfer_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_vacuum_executor_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/multiver/multi_ver_value_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/local_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/multi_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/operation/single_ver_database_oper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/package_file.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_row_data_impl.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_store_instance.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relational_sync_able_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/relationaldb_properties.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/result_entries_window.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/single_ver_natural_store_commit_notify_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/collaboration_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/log_table_manager_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/query_sync_object.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/relational_remote_query_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_relational_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/relational/sqlite_single_relational_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/split_device_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_kvdb_snapshot.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_local_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_log_table_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_data_storage.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_multi_ver_transaction.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_query_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_forward_cursor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_natural_store_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_continue_token.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_relational_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_result_set.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_cache.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_single_ver_storage_executor_subscribe.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sqlite/sqlite_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_engine_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/storage_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/sync_able_kvdb_connection.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/storage/src/upgrader/single_ver_schema_database_upgrader.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/ability_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/commit_history_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/communicator_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/db_ability.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/device_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/generic_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/meta_data.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/multi_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/query_sync_water_mark_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/remote_executor_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_message_schedule.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_packet.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_data_sync_utils.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_kv_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_relational_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_serialize_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/single_ver_syncer.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/subscribe_manager.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_config.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_engine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_operation.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_state_machine.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_target.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/sync_task_context.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_factory.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/syncer_proxy.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_helper.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/time_sync.cpp", + "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/syncer/src/value_slice_sync.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/fuzztest/common/distributeddb_tools_test.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/syncer/generic_virtual_device.cpp", "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb/test/unittest/common/syncer/kv_virtual_device.cpp", @@ -84,12 +282,15 @@ ohos_fuzztest("SyncFuzzTest") { "OMIT_MULTI_VER", "RELATIONAL_STORE", "SQLITE_DISTRIBUTE_RELATIONAL", + "SQLITE_ENABLE_DROPTABLE_CALLBACK", ] deps = [ "//foundation/distributeddatamgr/kv_store/frameworks/libs/distributeddb:distributeddb", "//third_party/jsoncpp:jsoncpp", "//third_party/openssl:libcrypto_shared", + "//third_party/sqlite:sqlite", + "//third_party/zlib:shared_libz", ] external_deps = [ diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/BUILD.gn b/kv_store/frameworks/libs/distributeddb/test/moduletest/BUILD.gn index 0095263f..eeb51b20 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/BUILD.gn +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/BUILD.gn @@ -58,6 +58,7 @@ config("module_private_config") { "LOW_LEVEL_MEM_DEV", "RELEASE_MODE_V2", "RELEASE_MODE_V3", + "OMIT_MULTI_VER", ] ldflags = [ "-Wl,--exclude-libs,ALL" ] } diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/common/distributeddb/include/distributeddb_nb_test_tools.h b/kv_store/frameworks/libs/distributeddb/test/moduletest/common/distributeddb/include/distributeddb_nb_test_tools.h index b75b7086..fdc8b858 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/common/distributeddb/include/distributeddb_nb_test_tools.h +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/common/distributeddb/include/distributeddb_nb_test_tools.h @@ -351,6 +351,7 @@ private: }; #endif // endif of RELEASE_MODE_V2 - bool EndCaseDeleteDB(DistributedDB::KvStoreDelegateManager *&manager, DistributedDB::KvStoreNbDelegate *&nbDelegate, - const std::string base, bool isMemoryDb); +bool EndCaseDeleteDB(DistributedDB::KvStoreDelegateManager *&manager, DistributedDB::KvStoreNbDelegate *&nbDelegate, + const std::string base, bool isMemoryDb); + #endif // DISTRIBUTEDDB_NB_TEST_TOOLS_H \ No newline at end of file diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/common/distributeddb/src/distributed_rdb_tools.cpp b/kv_store/frameworks/libs/distributeddb/test/moduletest/common/distributeddb/src/distributed_rdb_tools.cpp index ac2ba1e3..7c36546d 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/common/distributeddb/src/distributed_rdb_tools.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/common/distributeddb/src/distributed_rdb_tools.cpp @@ -92,9 +92,6 @@ DBStatus DistributedRdbTools::GetOpenStoreStatus(const RelatetionalStoreManager MST_LOG("%s GetRdbStore failed! manager nullptr.", TAG.c_str()); return DBStatus::DB_ERROR; } - if (delegate != nullptr) { - delegate = nullptr; - } DBStatus status = manager->OpenStore(param.path, param.storeId, delegate); if (delegate == nullptr) { MST_LOG("%s GetRdbStore failed! delegate nullptr.", TAG.c_str()); @@ -128,12 +125,12 @@ bool DistributedRdbTools::InitSqlite3Store(sqlite3 *&db, const RdbParameters &pa const std::string dbName = param.path + param.storeId + ".db"; DBStributedDB::OS::RemoveFile(dbName); int errCode = sqlite3_open(dbName, &db); - if (errCode1 != SQLITE_OK) { + if (errCode != SQLITE_OK) { MST_LOG("sqlite3_open Failed!"); return false; } - errCode = sqlite3_exec(db, "PRAGMA journal_mode = WAL;", 0, 0, 0); - if (errCode != SQLITE_OK) { + int errCode1 = sqlite3_exec(db, "PRAGMA journal_mode = WAL;", 0, 0, 0); + if (errCode1 != SQLITE_OK) { MST_LOG("PRAGMA journal_mode = WAL Failed!"); return false; } @@ -166,7 +163,7 @@ bool DistributedRdbTools::InitTableDataAndTrigger(const sqlite3 *&db) SqliteExecSql(db, SQL_INSERT_NORMAL_TABLE); for (int i = 1; i <= MAX_DISTRIBUTED_TABLE_COUNT + 1; i++) { - std::string str_0 = "RDB_" + i; + std::string str_0 = "RDB_" + std::to_string(i); std::string str_1 = "CREATE TABLE IF NOT EXISTS " std::string str_2 = "( id INT NOT NULL PRIMARY KEY AUTO_INCREMENT," \ "name VARCHAR(100) NOT NULL, age VARCHAR(100) NOT NULL);"; @@ -191,32 +188,32 @@ bool DistributedRdbTools::AlterTableAttributes(const sqlite3 *&db) return false; } - errCode = sqlite3_exec(db, SQL_ADD_INDEX_TABLE2, nullptr, nullptr, &errMsg); - if (errCode != SQLITE_OK && errMsg != nullptr) { + int errCode1 = sqlite3_exec(db, SQL_ADD_INDEX_TABLE2, nullptr, nullptr, &errMsg); + if (errCode1 != SQLITE_OK && errMsg != nullptr) { MST_LOG("sqlite3_exec SQL_ADD_INDEX_TABLE2 Failed(%s)", errMsg.c_str()); return false; } - errCode = sqlite3_exec(db, SQL_DROP_TABLE3, nullptr, nullptr, &errMsg); - if (errCode != SQLITE_OK && errMsg != nullptr) { + int errCode2 = sqlite3_exec(db, SQL_DROP_TABLE3, nullptr, nullptr, &errMsg); + if (errCode2 != SQLITE_OK && errMsg != nullptr) { MST_LOG("sqlite3_exec SQL_DROP_TABLE3 Failed(%s)", errMsg.c_str()); return false; } - errCode = sqlite3_exec(db, SQL_DROP_CREATE_TABLE3, nullptr, nullptr, &errMsg); - if (errCode1 != SQLITE_OK && errMsg != nullptr) { + int errCode3 = sqlite3_exec(db, SQL_DROP_CREATE_TABLE3, nullptr, nullptr, &errMsg); + if (errCode3 != SQLITE_OK && errMsg != nullptr) { MST_LOG("sqlite3_exec SQL_ADD_INDEX_TABLE Failed(%s)", errMsg.c_str()); return false; } - errCode = sqlite3_exec(db, SQL_DROP_TABLE4, nullptr, nullptr, &errMsg); - if (errCode != SQLITE_OK && errMsg != nullptr) { + int errCode4 = sqlite3_exec(db, SQL_DROP_TABLE4, nullptr, nullptr, &errMsg); + if (errCode4 != SQLITE_OK && errMsg != nullptr) { MST_LOG("sqlite3_exec SQL_DROP_TABLE4 Failed(%s)", errMsg.c_str()); return false; } - errCode = sqlite3_exec(db, SQL_DROP_CREATE_TABLE4, nullptr, nullptr, &errMsg); - if (errCode != SQLITE_OK && errMsg != nullptr) { + int errCode5 = sqlite3_exec(db, SQL_DROP_CREATE_TABLE4, nullptr, nullptr, &errMsg); + if (errCode5 != SQLITE_OK && errMsg != nullptr) { MST_LOG("sqlite3_exec SQL_DROP_CREATE_TABLE4 Failed(%s)", errMsg.c_str()); return false; } diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/common/distributeddb/src/distributeddb_schema_test_tools.cpp b/kv_store/frameworks/libs/distributeddb/test/moduletest/common/distributeddb/src/distributeddb_schema_test_tools.cpp index 21f88d96..094e78eb 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/common/distributeddb/src/distributeddb_schema_test_tools.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/common/distributeddb/src/distributeddb_schema_test_tools.cpp @@ -241,7 +241,7 @@ bool DistributedDBSchemaTestTools::PreInsertRecords(KvStoreNbDelegate *&delegate } // insert query condition between brackets. -static void SpliceQueryMethod(int flag, Query &query) +void SpliceQueryMethod(int flag, Query &query) { switch (flag) { case 0: // query condition 0 diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/include/distributed_crud_transaction_tools.h b/kv_store/frameworks/libs/distributeddb/test/moduletest/include/distributed_crud_transaction_tools.h index 1363b278..37e3605a 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/include/distributed_crud_transaction_tools.h +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/include/distributed_crud_transaction_tools.h @@ -14,7 +14,7 @@ */ #ifndef DISTRIBUTED_DB_MODULE_CRUD_TRANSACTION_TOOLS_H #define DISTRIBUTED_DB_MODULE_CRUD_TRANSACTION_TOOLS_H - +#ifndef OMIT_MULTI_VER #include "kv_store_delegate.h" #include "kv_store_delegate_manager.h" @@ -60,5 +60,5 @@ private: bool secondComplete_ = false; bool success_ = true; }; - +#endif // OMIT_MULTI_VER #endif // DISTRIBUTED_DB_MODULE_CRUD_TRANSACTION_TOOLS_H \ No newline at end of file diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributed_crud_transaction_tools.cpp b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributed_crud_transaction_tools.cpp index a9fa6180..b439bebd 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributed_crud_transaction_tools.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributed_crud_transaction_tools.cpp @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#ifndef OMIT_MULTI_VER #include "distributed_crud_transaction_tools.h" #include #include @@ -199,8 +200,8 @@ void SleepOneSecond() std::this_thread::sleep_for(std::chrono::duration(1)); } -bool DeleteDataBase(bool success_, KvStoreDelegate *delegate1, KvStoreDelegate *delegate2, - KvStoreDelegateManager *delegateManager1, KvStoreDelegateManager *delegateManager2) +bool DeleteDataBase(bool success_, KvStoreDelegate *&delegate1, KvStoreDelegate *&delegate2, + KvStoreDelegateManager *&delegateManager1, KvStoreDelegateManager *&delegateManager2) { SleepOneSecond(); if ((delegateManager1->CloseKvStore(delegate1) != OK) || @@ -271,4 +272,5 @@ bool DistributedCrudTransactionTools::testCrudTransaction() ERROR: secondComplete_ = true; return false; -} \ No newline at end of file +} +#endif // OMIT_MULTI_VER \ No newline at end of file diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_backup_test.cpp b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_backup_test.cpp index b168cdb5..e592ca2b 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_backup_test.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_backup_test.cpp @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#ifndef OMIT_MULTI_VER #include #include #include @@ -1223,4 +1224,5 @@ HWTEST_F(DistributeddbKvBackupTest, Exchange003, TestSize.Level2) EXPECT_EQ(g_kvBackupDelegate->Delete(KEY_2), OK); RemoveDir(exportPath); } -} \ No newline at end of file +} +#endif // OMIT_MULTI_VER \ No newline at end of file diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_batch_crud_test.cpp b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_batch_crud_test.cpp index 8784a7a8..dfba8cf9 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_batch_crud_test.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_batch_crud_test.cpp @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#ifndef OMIT_MULTI_VER #include #include #include @@ -1083,3 +1084,4 @@ HWTEST_F(DistributeddbKvBatchCrudTest, ComplexSnap002, TestSize.Level1) DistributedTestTools::Clear(*g_kvStoreBatchDelegate); } } +#endif // OMIT_MULTI_VER diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_concurrency_crud_test.cpp b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_concurrency_crud_test.cpp index 62612011..95bfcdc4 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_concurrency_crud_test.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_concurrency_crud_test.cpp @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#ifndef OMIT_MULTI_VER #include #include #include @@ -321,3 +322,4 @@ HWTEST_F(DistributeddbKvConcurrencyCrudTest, ReadWrite004, TestSize.Level3) } #endif } +#endif // OMIT_MULTI_VER diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_create_test.cpp b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_create_test.cpp index 34166d4d..76341c65 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_create_test.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_create_test.cpp @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#ifndef OMIT_MULTI_VER #include #include #include @@ -1977,3 +1978,4 @@ HWTEST_F(DistributeddbKvCreateTest, MergeRepeat001, TestSize.Level2) } #endif } +#endif // OMIT_MULTI_VER diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_crud_test.cpp b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_crud_test.cpp index 16b064a4..b9ee63b1 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_crud_test.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_crud_test.cpp @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#ifndef OMIT_MULTI_VER #include #include #include @@ -717,4 +718,5 @@ HWTEST_F(DistributeddbKvCrudTest, ReadWritePerformance001, TestSize.Level3) DistributedTestTools::CalculateUseClearPerformance(performanceData[ps]); } } -} \ No newline at end of file +} +#endif // OMIT_MULTI_VER \ No newline at end of file diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_observer_snap_test.cpp b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_observer_snap_test.cpp index 4321f824..f31d47f5 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_observer_snap_test.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_observer_snap_test.cpp @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#ifndef OMIT_MULTI_VER #include #include #include @@ -1584,4 +1585,5 @@ HWTEST_F(DistributeddbKvObserverSnapTest, RekeyDb001, TestSize.Level1) delete manager; manager = nullptr; } -} \ No newline at end of file +} +#endif // OMIT_MULTI_VER \ No newline at end of file diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_observer_test.cpp b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_observer_test.cpp index f3ac0120..97f9303e 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_observer_test.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_observer_test.cpp @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#ifndef OMIT_MULTI_VER #include #include #include @@ -1681,3 +1682,4 @@ HWTEST_F(DistributeddbKvObserverTest, ObserverRekeyDb001, TestSize.Level3) } #endif } +#endif // OMIT_MULTI_VER \ No newline at end of file diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_realdel_test.cpp b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_realdel_test.cpp index 837cbaab..5e2879f8 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_realdel_test.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_realdel_test.cpp @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#ifndef OMIT_MULTI_VER #include #include #include @@ -371,4 +372,5 @@ HWTEST_F(DistributeddbKvRealdelTest, KvDeleteAll007, TestSize.Level2) manager2 = nullptr; } #endif -} \ No newline at end of file +} +#endif // OMIT_MULTI_VER \ No newline at end of file diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_transaction_perf_test.cpp b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_transaction_perf_test.cpp index 257ee5f9..7fb8f49f 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_transaction_perf_test.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_transaction_perf_test.cpp @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#ifndef OMIT_MULTI_VER #include #include "distributeddb_data_generator.h" @@ -336,4 +337,5 @@ HWTEST_F(DistributeddbKvTransactionPerfTest, Performance006, TestSize.Level3) EXPECT_TRUE(DistributedTestTools::CalculateGetUpdatePerformance(performance)); EXPECT_TRUE(DistributedTestTools::CalculateUseClearPerformance(performance)); } -} \ No newline at end of file +} +#endif // OMIT_MULTI_VER \ No newline at end of file diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_transaction_test.cpp b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_transaction_test.cpp index 4a4bc768..be2a5a73 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_transaction_test.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_kv_transaction_test.cpp @@ -12,6 +12,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +#ifndef OMIT_MULTI_VER #include #include #include @@ -1994,4 +1995,5 @@ HWTEST_F(DistributeddbKvTransactionTest, BasicActionAcid008, TestSize.Level2) EXPECT_TRUE(transactionTools.testCrudTransaction()); } } -} \ No newline at end of file +} +#endif // OMIT_MULTI_VER \ No newline at end of file diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_nb_backup_test.cpp b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_nb_backup_test.cpp index b2db1d98..817fe9c0 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_nb_backup_test.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_nb_backup_test.cpp @@ -662,6 +662,7 @@ HWTEST_F(DistributeddbNbBackupTest, ImportTest003, TestSize.Level1) * @tc.require: SR000D4878 * @tc.author: fengxiaoyun */ +#ifndef OMIT_MULTI_VER HWTEST_F(DistributeddbNbBackupTest, ImportTest004, TestSize.Level1) { KvStoreDelegate *multiEncryptDelegate = nullptr; @@ -732,7 +733,7 @@ HWTEST_F(DistributeddbNbBackupTest, ImportTest004, TestSize.Level1) RemoveDir(multiImportPath); RemoveDir(nbImportPath); } - +#endif // OMIT_MULTI_VER /* * @tc.name: ImportTest 006 * @tc.desc: Verify that many kvstore of one DB or the DB registered observer can't import the backup file. diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_nb_batch_crud_test.cpp b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_nb_batch_crud_test.cpp index b3f361d8..fb3ebe97 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_nb_batch_crud_test.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_nb_batch_crud_test.cpp @@ -14,6 +14,8 @@ */ #include #include +#include +#include #include "distributeddb_nb_test_tools.h" #include "process_communicator_test_stub.h" @@ -2469,4 +2471,58 @@ HWTEST_F(DistributeddbNbBatchCrudTest, TransactionObserver003, TestSize.Level1) EXPECT_TRUE(VerifyObserverResult(observers[cnt], CHANGED_ONE_TIME, DELETE_LIST, observerCheckList)); } } + +/** + * @tc.name: GetKeysPressure 001 + * @tc.desc: Concurrent GetEntries and GetKeys. + * @tc.type: FUNC + * @tc.require: SR000DORPP + * @tc.author: xuhongkang + */ +#ifdef GETKEYS_PRESSURE001 +HWTEST_F(DistributeddbNbBatchCrudTest, GetKeysPressure001, TestSize.Level3) +{ + DBStatus status, status1, status2; + std::vector allKeysKA, allKeysKB, expectKeyResult; + std::vector entriesA, entriesB, entriesBatch; + DistributedDB::Value longValue1; + DistributedDB::Key ka = {'k', 'a'}; + DistributedDB::Key kb = {'k', 'b'}; + longValue1.assign(ONE_K_LONG_STRING, (uint8_t)'v'); + GenerateRecords(TEN_THOUSAND_RECORDS, DEFAULT_START, allKeysKA, entriesA, ka); + GenerateRecords(FIVE_THOUSANDS_RECORDS, DEFAULT_START, allKeysKB, entriesB, kb); + + entriesBatch.insert(entriesBatch.end(), entriesA.begin(), entriesA.end()); + entriesBatch.insert(entriesBatch.end(), entriesB.begin(), entriesB.end()); + for (unsigned int index = 0; index < FIFTEEN_THOUSAND_RECORDS; index++) + { + if (index < TEN_THOUSAND_RECORDS) { + entriesA[index].value = longValue1; + } + entriesBatch[index].value = longValue1; + status = g_nbBatchCrudDelegate->Put(entriesBatch[index].key, entriesBatch[index].value); + EXPECT_EQ(status, OK); + } + std::vector keyResult; + std::vector valueResult; + std::thread sub = std::thread([&status1, &ka, &valueResult]() { + status1 = DistributedDBNbTestTools::GetEntries(*g_nbBatchCrudDelegate, ka, valueResult); + }); + status2 = DistributedDBNbTestTools::GetKeys(*g_nbBatchCrudDelegate, KEY_EMPTY, keyResult); + sub.join(); + EXPECT_EQ(status1, OK); + EXPECT_EQ(status2, OK); + expectKeyResult.insert(expectKeyResult.end(), allKeysKA.begin(), allKeysKA.end()); + expectKeyResult.insert(expectKeyResult.end(), allKeysKB.begin(), allKeysKB.end()); + sort(keyResult.begin(), keyResult.end()); + sort(expectKeyResult.begin(), expectKeyResult.end()); + for (unsigned int index = 0; index < FIFTEEN_THOUSAND_RECORDS; index++) { + string actResult(keyResult[index].begin(), keyResult[index].end()); + string expectResult(expectKeyResult[index].begin(), expectKeyResult[index].end()); + bool result = (actResult == expectResult); + EXPECT_EQ(result, true); + } + EXPECT_TRUE(CompareEntriesVector(valueResult, entriesA)); +} +#endif // GETKEYS_PRESSURE001 } diff --git a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_nb_cursor_testcase.cpp b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_nb_cursor_testcase.cpp index 54773729..bebdd962 100644 --- a/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_nb_cursor_testcase.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/moduletest/src/distributeddb_nb_cursor_testcase.cpp @@ -247,17 +247,15 @@ void DistributeddbNbCursorTestcase::ResultSetDb002(KvStoreNbDelegate *delegate, * @tc.steps: step2. set the current position is 100, call MoveToPrevious, GetPostion, GetEntry looply. * @tc.expected: step2. return values are all right. */ - int positionGot = CURSOR_POSITION_NEGATIVE1; Entry entry; - bool result = true; for (int position = CURSOR_POSITION_100; position > CURSOR_POSITION_NEGATIVE1; --position) { - result = resultSet->MoveToPrevious(); + bool result = resultSet->MoveToPrevious(); if (position > (CURSOR_POSITION_NEGATIVE1 + CURSOR_POSITION_1)) { EXPECT_TRUE(result == true); } else { EXPECT_TRUE(result == false); } - positionGot = resultSet->GetPosition(); + int positionGot = resultSet->GetPosition(); EXPECT_TRUE(positionGot == (position - CURSOR_POSITION_1)); if (position > (CURSOR_POSITION_NEGATIVE1 + CURSOR_POSITION_1)) { EXPECT_TRUE(resultSet->GetEntry(entry) == OK); @@ -541,17 +539,15 @@ void DistributeddbNbCursorTestcase::ResultSetDb006(KvStoreNbDelegate *delegate, * @tc.steps: step2. set the current position is -1, call MoveToNext, GetPostion and GetEntry interface looply. * @tc.expected: step2. return values are all right. */ - int currentPosition = CURSOR_POSITION_NEGATIVE1; Entry entry; - bool result = true; for (int position = CURSOR_POSITION_NEGATIVE1; position < ONE_RECORD; ++position) { - result = resultSet->MoveToNext(); + bool result = resultSet->MoveToNext(); if (position < (ONE_RECORD - CURSOR_POSITION_1)) { EXPECT_TRUE(result == true); } else { EXPECT_TRUE(result == false); } - currentPosition = resultSet->GetPosition(); + int currentPosition = resultSet->GetPosition(); EXPECT_TRUE(currentPosition == (position + CURSOR_POSITION_1)); if (position < (ONE_RECORD - CURSOR_POSITION_1)) { EXPECT_TRUE(resultSet->GetEntry(entry) == OK); @@ -566,13 +562,13 @@ void DistributeddbNbCursorTestcase::ResultSetDb006(KvStoreNbDelegate *delegate, * @tc.expected: step2. return values are all right. */ for (int position = ONE_RECORD; position > CURSOR_POSITION_NEGATIVE1; --position) { - result = resultSet->MoveToPrevious(); + bool result = resultSet->MoveToPrevious(); if (position > (CURSOR_POSITION_NEGATIVE1 + CURSOR_POSITION_1)) { EXPECT_TRUE(result == true); } else { EXPECT_TRUE(result == false); } - currentPosition = resultSet->GetPosition(); + int currentPosition = resultSet->GetPosition(); EXPECT_TRUE(currentPosition == (position - CURSOR_POSITION_1)); if (position > (CURSOR_POSITION_NEGATIVE1 + CURSOR_POSITION_1)) { EXPECT_TRUE(resultSet->GetEntry(entry) == OK); @@ -817,9 +813,8 @@ void DistributeddbNbCursorTestcase::ResultSetDb010(KvStoreNbDelegate *delegate, */ int currentPosition = CURSOR_POSITION_NEGATIVE1; Entry entry; - bool result = true; for (int position = ONE_HUNDRED_RECORDS; position > CURSOR_POSITION_NEGATIVE1; --position) { - result = resultSet->MoveToPrevious(); + bool result = resultSet->MoveToPrevious(); if (position > (CURSOR_POSITION_NEGATIVE1 + CURSOR_POSITION_1)) { EXPECT_TRUE(result == true); } else { @@ -1409,8 +1404,41 @@ void DistributeddbNbCursorTestcase::ResultSetDb020(KvStoreNbDelegate *delegate, Key keyPrefixKC = kc; EXPECT_EQ(delegate->GetEntries(keyPrefixKC, resultSetKC), OK); /** - * @tc.steps: step1. call GetEntries interface with "" parameter to get KvStoreResultSet. - * @tc.expected: step1. get success. + * @tc.steps: step4. call GetEntries interface with "kd" parameter to get KvStoreResultSet. + * @tc.expected: step4. get success. + */ + KvStoreResultSet *resultSetKD = nullptr; + std::vector kd = { 'k', 'd' }; + Key keyPrefixKD = kd; + EXPECT_EQ(delegate->GetEntries(keyPrefixKD, resultSetKD), OK); + /** + * @tc.steps: step5. call GetEntries interface with "ke" parameter to get KvStoreResultSet. + * @tc.expected: step5. get success. + */ + KvStoreResultSet *resultSetKE = nullptr; + std::vector ke = { 'k', 'e' }; + Key keyPrefixKE = ke; + EXPECT_EQ(delegate->GetEntries(keyPrefixKE, resultSetKE), OK); + /** + * @tc.steps: step6. call GetEntries interface with "kf" parameter to get KvStoreResultSet. + * @tc.expected: step6. get success. + */ + KvStoreResultSet *resultSetKF = nullptr; + std::vector kf = { 'k', 'f' }; + Key keyPrefixKF = kf; + EXPECT_EQ(delegate->GetEntries(keyPrefixKF, resultSetKF), OK); + + /** + * @tc.steps: step7. call GetEntries interface with "kg" parameter to get KvStoreResultSet. + * @tc.expected: step7. get success. + */ + KvStoreResultSet *resultSetKG = nullptr; + std::vector kg = { 'k', 'g' }; + Key keyPrefixKG = kg; + EXPECT_EQ(delegate->GetEntries(keyPrefixKG, resultSetKG), OK); + /** + * @tc.steps: step8. call GetEntries interface with "" parameter to get KvStoreResultSet. + * @tc.expected: step8. get success. */ KvStoreResultSet *resultSetAll2 = nullptr; EXPECT_EQ(delegate->GetEntries(KEY_EMPTY, resultSetAll2), OVER_MAX_LIMITS); @@ -1419,6 +1447,13 @@ void DistributeddbNbCursorTestcase::ResultSetDb020(KvStoreNbDelegate *delegate, EXPECT_EQ(delegate->CloseResultSet(resultSetKA), OK); EXPECT_EQ(delegate->CloseResultSet(resultSetKB), OK); EXPECT_EQ(delegate->CloseResultSet(resultSetKC), OK); + EXPECT_EQ(delegate->CloseResultSet(resultSetKD), OK); + EXPECT_EQ(delegate->CloseResultSet(resultSetKE), OK); + EXPECT_EQ(delegate->CloseResultSet(resultSetKF), OK); + EXPECT_EQ(delegate->CloseResultSet(resultSetKG), OK); + if (resultSetAll2 != nullptr) { + EXPECT_EQ(delegate->CloseResultSet(resultSetAll2), OK); + } } void DistributeddbNbCursorTestcase::ResultSetDb021(KvStoreNbDelegate *delegate, @@ -1994,7 +2029,6 @@ void DistributeddbNbCursorTestcase::ResultSetDb027(bool isRowIdMode) SetResultSetCacheMode(delegates[INDEX_ZEROTH], isRowIdMode); vector entriesKA, entriesKB; - vector allKeysKA, allKeysKB; std::vector ka = { 'k', 'a' }; std::vector kb = { 'k', 'b' }; EntrySize entrySizeKA = { FIVE_BYTE_KEY, ONE_K_LONG_STRING }; diff --git a/kv_store/frameworks/libs/distributeddb/test/unittest/common/interfaces/distributeddb_interfaces_nb_delegate_schema_put_test.cpp b/kv_store/frameworks/libs/distributeddb/test/unittest/common/interfaces/distributeddb_interfaces_nb_delegate_schema_put_test.cpp index eefdbe91..06b91ce1 100644 --- a/kv_store/frameworks/libs/distributeddb/test/unittest/common/interfaces/distributeddb_interfaces_nb_delegate_schema_put_test.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/unittest/common/interfaces/distributeddb_interfaces_nb_delegate_schema_put_test.cpp @@ -409,4 +409,60 @@ HWTEST_F(DistributedDBInterfacesNBDelegateSchemaPutTest, SqliteKeyWord001, TestS EXPECT_EQ(g_kvStore->GetEntries(query, entries), OK); EXPECT_EQ(entries.size(), 1U); } + +/** + * @tc.name: ResultSetLimitTest001 + * @tc.desc: Get result set over limit + * @tc.type: FUNC + * @tc.require: + * @tc.author: lianhuix + */ +HWTEST_F(DistributedDBInterfacesNBDelegateSchemaPutTest, ResultSetLimitTest001, TestSize.Level0) +{ + /** + * @tc.steps:step1. Create database. + * @tc.expected: step1. Returns a non-null kvstore. + */ + g_mgr.GetKvStore(g_storeName, g_strictOpt, g_kvNbDelegateCallback); + ASSERT_TRUE(g_kvStore != nullptr); + EXPECT_TRUE(g_kvDelegateStatus == OK); + + /** + * @tc.steps:step2. Put the random entry into the database. + * @tc.expected: step2. Returns OK. + */ + Key key1; + std::string valueData = "{\"field_name1\":true,\"field_name2\":1}"; + Value value(valueData.begin(), valueData.end()); + DistributedDBToolsUnitTest::GetRandomKeyValue(key1); + EXPECT_EQ(g_kvStore->Put(key1, value), OK); + + /** + * @tc.steps:step3. Get the resultset overlimit. + * @tc.expected: step3. In limit returns OK, else return OVER_MAX_LIMITS. + */ + Query query = Query::Select().EqualTo("$.field_name2", 1); + std::vector dataResultSet; + for (int i = 0; i < 8; i++) { // 8: max result set count + KvStoreResultSet *resultSet = nullptr; + EXPECT_EQ(g_kvStore->GetEntries(query, resultSet), OK); + dataResultSet.push_back(resultSet); + EXPECT_NE(resultSet, nullptr); + } + + KvStoreResultSet *resultSet = nullptr; + EXPECT_EQ(g_kvStore->GetEntries(query, resultSet), OVER_MAX_LIMITS); + EXPECT_EQ(resultSet, nullptr); + if (resultSet != nullptr) { + EXPECT_EQ(g_kvStore->CloseResultSet(resultSet), OK); + } + + /** + * @tc.steps:step4. Close result set. + * @tc.expected: step4. Returns OK. + */ + for (auto it : dataResultSet) { + EXPECT_EQ(g_kvStore->CloseResultSet(it), OK); + } +} #endif // OMIT_JSON \ No newline at end of file diff --git a/kv_store/frameworks/libs/distributeddb/test/unittest/common/interfaces/distributeddb_interfaces_nb_delegate_test.cpp b/kv_store/frameworks/libs/distributeddb/test/unittest/common/interfaces/distributeddb_interfaces_nb_delegate_test.cpp index 9e0d2952..367c7465 100644 --- a/kv_store/frameworks/libs/distributeddb/test/unittest/common/interfaces/distributeddb_interfaces_nb_delegate_test.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/unittest/common/interfaces/distributeddb_interfaces_nb_delegate_test.cpp @@ -2245,6 +2245,7 @@ HWTEST_F(DistributedDBInterfacesNBDelegateTest, RemoveDeviceDataTest001, TestSiz FreeVirtualDevice(g_deviceD); } +#ifdef RUNNING_ON_SIMULATED_ENV /** * @tc.name: TimeChangeWithCloseStoreTest001 * @tc.desc: Test close store with time changed @@ -2293,4 +2294,177 @@ HWTEST_F(DistributedDBInterfacesNBDelegateTest, TimeChangeWithCloseStoreTest001, it.join(); } EXPECT_EQ(mgr.DeleteKvStore(STORE_ID_1), OK); +} + +/** + * @tc.name: TimeChangeWithCloseStoreTest002 + * @tc.desc: Test close store with time changed + * @tc.type: FUNC + * @tc.require: + * @tc.author: zhangqiquan + */ +HWTEST_F(DistributedDBInterfacesNBDelegateTest, TimeChangeWithCloseStoreTest002, TestSize.Level3) +{ + KvStoreDelegateManager mgr(APP_ID, USER_ID); + mgr.SetKvStoreConfig(g_config); + + const KvStoreNbDelegate::Option option = {true, false, false}; + mgr.GetKvStore(STORE_ID_1, option, g_kvNbDelegateCallback); + ASSERT_TRUE(g_kvNbDelegatePtr != nullptr); + EXPECT_EQ(g_kvDelegateStatus, OK); + const int threadPoolMax = 10; + for (int i = 0; i < threadPoolMax; ++i) { + (void) RuntimeContext::GetInstance()->ScheduleTask([]() { + std::this_thread::sleep_for(std::chrono::seconds(10)); // sleep 10s for block thread pool + }); + } + OS::SetOffsetBySecond(100); // 100 2 : fake system time change + std::this_thread::sleep_for(std::chrono::seconds(1)); // sleep 1s for time tick + + EXPECT_EQ(mgr.CloseKvStore(g_kvNbDelegatePtr), OK); + g_kvNbDelegatePtr = nullptr; + + EXPECT_EQ(mgr.DeleteKvStore(STORE_ID_1), OK); + RuntimeContext::GetInstance()->StopTaskPool(); // stop all async task +} +#endif // RUNNING_ON_SIMULATED_ENV + +/** + * @tc.name: LocalStore001 + * @tc.desc: Test get kv store with localOnly + * @tc.type: FUNC + * @tc.require: + * @tc.author: zhangqiquan + */ +HWTEST_F(DistributedDBInterfacesNBDelegateTest, LocalStore001, TestSize.Level1) +{ + KvStoreDelegateManager mgr(APP_ID, USER_ID); + mgr.SetKvStoreConfig(g_config); + + /** + * @tc.steps:step1. Create database with localOnly. + * @tc.expected: step1. Returns a non-null store. + */ + KvStoreNbDelegate::Option option = {true, false, false}; + option.localOnly = true; + DBStatus openStatus = DBStatus::DB_ERROR; + KvStoreNbDelegate *openDelegate = nullptr; + mgr.GetKvStore(STORE_ID_1, option, [&openStatus, &openDelegate](DBStatus status, KvStoreNbDelegate *delegate) { + openStatus = status; + openDelegate = delegate; + }); + ASSERT_TRUE(openDelegate != nullptr); + EXPECT_EQ(openStatus, OK); + /** + * @tc.steps:step2. call sync and put/get interface. + * @tc.expected: step2. sync return NOT_ACTIVE. + */ + DBStatus actionStatus = openDelegate->Sync({}, SyncMode::SYNC_MODE_PUSH_ONLY, nullptr); + EXPECT_EQ(actionStatus, DBStatus::NOT_ACTIVE); + Key key = {'k'}; + Value expectValue = {'v'}; + EXPECT_EQ(openDelegate->Put(key, expectValue), OK); + Value actualValue; + EXPECT_EQ(openDelegate->Get(key, actualValue), OK); + EXPECT_EQ(actualValue, expectValue); + EXPECT_EQ(mgr.CloseKvStore(openDelegate), OK); +} + +/** + * @tc.name: LocalStore002 + * @tc.desc: Test get kv store different local mode + * @tc.type: FUNC + * @tc.require: + * @tc.author: zhangqiquan + */ +HWTEST_F(DistributedDBInterfacesNBDelegateTest, LocalStore002, TestSize.Level1) +{ + KvStoreDelegateManager mgr(APP_ID, USER_ID); + mgr.SetKvStoreConfig(g_config); + + /** + * @tc.steps:step1. Create database with localOnly. + * @tc.expected: step1. Returns a non-null store. + */ + KvStoreNbDelegate::Option option = {true, false, false}; + option.localOnly = true; + DBStatus openStatus = DBStatus::DB_ERROR; + KvStoreNbDelegate *localDelegate = nullptr; + mgr.GetKvStore(STORE_ID_1, option, [&openStatus, &localDelegate](DBStatus status, KvStoreNbDelegate *delegate) { + openStatus = status; + localDelegate = delegate; + }); + ASSERT_TRUE(localDelegate != nullptr); + EXPECT_EQ(openStatus, OK); + /** + * @tc.steps:step2. Create database without localOnly. + * @tc.expected: step2. Returns a null store. + */ + option.localOnly = false; + KvStoreNbDelegate *syncDelegate = nullptr; + mgr.GetKvStore(STORE_ID_1, option, [&openStatus, &syncDelegate](DBStatus status, KvStoreNbDelegate *delegate) { + openStatus = status; + syncDelegate = delegate; + }); + EXPECT_EQ(syncDelegate, nullptr); + EXPECT_EQ(openStatus, INVALID_ARGS); + EXPECT_EQ(mgr.CloseKvStore(localDelegate), OK); +} + +/** + * @tc.name: ResultSetLimitTest001 + * @tc.desc: Get result set over limit + * @tc.type: FUNC + * @tc.require: + * @tc.author: lianhuix + */ +HWTEST_F(DistributedDBInterfacesNBDelegateTest, ResultSetLimitTest001, TestSize.Level0) +{ + /** + * @tc.steps:step1. Create database. + * @tc.expected: step1. Returns a non-null kvstore. + */ + KvStoreNbDelegate::Option option; + g_mgr.GetKvStore("ResultSetLimitTest001", option, g_kvNbDelegateCallback); + ASSERT_TRUE(g_kvNbDelegatePtr != nullptr); + EXPECT_TRUE(g_kvDelegateStatus == OK); + + /** + * @tc.steps:step2. Put the random entry into the database. + * @tc.expected: step2. Returns OK. + */ + EXPECT_EQ(g_kvNbDelegatePtr->Put(KEY_1, VALUE_1), OK); + EXPECT_EQ(g_kvNbDelegatePtr->Put(KEY_2, VALUE_2), OK); + EXPECT_EQ(g_kvNbDelegatePtr->Put(KEY_3, VALUE_3), OK); + + /** + * @tc.steps:step3. Get the resultset overlimit. + * @tc.expected: step3. In limit returns OK, else return OVER_MAX_LIMITS. + */ + std::vector dataResultSet; + for (int i = 0; i < 8; i++) { // 8: max result set count + KvStoreResultSet *resultSet = nullptr; + EXPECT_EQ(g_kvNbDelegatePtr->GetEntries(Key{}, resultSet), OK); + dataResultSet.push_back(resultSet); + EXPECT_NE(resultSet, nullptr); + } + + KvStoreResultSet *resultSet = nullptr; + EXPECT_EQ(g_kvNbDelegatePtr->GetEntries(Key{}, resultSet), OVER_MAX_LIMITS); + EXPECT_EQ(resultSet, nullptr); + if (resultSet != nullptr) { + EXPECT_EQ(g_kvNbDelegatePtr->CloseResultSet(resultSet), OK); + } + + /** + * @tc.steps:step4. Close result set and store. + * @tc.expected: step4. Returns OK. + */ + for (auto it : dataResultSet) { + EXPECT_EQ(g_kvNbDelegatePtr->CloseResultSet(it), OK); + } + + EXPECT_EQ(g_mgr.CloseKvStore(g_kvNbDelegatePtr), OK); + EXPECT_EQ(g_mgr.DeleteKvStore("ResultSetLimitTest001"), OK); + g_kvNbDelegatePtr = nullptr; } \ No newline at end of file diff --git a/kv_store/frameworks/libs/distributeddb/test/unittest/common/syncer/distributeddb_mock_sync_module_test.cpp b/kv_store/frameworks/libs/distributeddb/test/unittest/common/syncer/distributeddb_mock_sync_module_test.cpp index 0c42e30c..bb3efcf3 100644 --- a/kv_store/frameworks/libs/distributeddb/test/unittest/common/syncer/distributeddb_mock_sync_module_test.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/unittest/common/syncer/distributeddb_mock_sync_module_test.cpp @@ -69,7 +69,7 @@ public: private: SyncerProxy syncer_; }; -class TestInterface : public TestKvDb, public VirtualSingleVerSyncDBInterface { +class TestInterface : public TestKvDb, public VirtualSingleVerSyncDBInterface, public RefObject { public: TestInterface() {} ~TestInterface() @@ -88,6 +88,16 @@ public: { VirtualSingleVerSyncDBInterface::SetIdentifier(identifierVec); } + + void IncRefCount() override + { + RefObject::IncObjRef(this); + } + + void DecRefCount() override + { + RefObject::DecObjRef(this); + } }; namespace { @@ -932,7 +942,11 @@ HWTEST_F(DistributedDBMockSyncModuleTest, SyncLifeTest003, TestSize.Level3) syncDBInterface->Initialize(); virtualCommunicatorAggregator->OnlineDevice(DEVICE_B); syncDBInterface->TestLocalChange(); - delete syncDBInterface; + virtualCommunicatorAggregator->OfflineDevice(DEVICE_B); + syncDBInterface->Close(); + RefObject::KillAndDecObjRef(syncDBInterface); + RuntimeContext::GetInstance()->StopTaskPool(); + std::this_thread::sleep_for(std::chrono::seconds(1)); RuntimeContext::GetInstance()->SetCommunicatorAggregator(nullptr); } diff --git a/kv_store/frameworks/libs/distributeddb/test/unittest/common/syncer/distributeddb_relational_ver_p2p_sync_test.cpp b/kv_store/frameworks/libs/distributeddb/test/unittest/common/syncer/distributeddb_relational_ver_p2p_sync_test.cpp index cea44770..1ab5d57c 100644 --- a/kv_store/frameworks/libs/distributeddb/test/unittest/common/syncer/distributeddb_relational_ver_p2p_sync_test.cpp +++ b/kv_store/frameworks/libs/distributeddb/test/unittest/common/syncer/distributeddb_relational_ver_p2p_sync_test.cpp @@ -1859,19 +1859,28 @@ HWTEST_F(DistributedDBRelationalVerP2PSyncTest, RemoteQuery006, TestSize.Level1) PrepareEnvironment(dataMap, {g_deviceB}); ASSERT_NE(g_deviceB, nullptr); ASSERT_NE(g_rdbDelegatePtr, nullptr); - g_communicatorAggregator->RegOnDispatch([](const std::string &device, Message *inMsg) { + std::thread offlineThread; + std::atomic offline = false; + g_communicatorAggregator->RegOnDispatch([&offlineThread, &offline](const std::string &device, Message *inMsg) { ASSERT_NE(inMsg, nullptr); inMsg->SetMessageId(INVALID_MESSAGE_ID); + if (offline) { + return; + } + offline = true; std::thread t([]() { g_deviceB->Offline(); }); - t.detach(); + offlineThread = std::move(t); }); RemoteCondition condition; condition.sql = "SELECT * FROM " + g_tableName + " WHERE 1=0"; std::shared_ptr result = nullptr; EXPECT_EQ(g_rdbDelegatePtr->RemoteQuery(DEVICE_B, condition, DBConstant::MIN_TIMEOUT, result), COMM_FAILURE); ASSERT_EQ(result, nullptr); + if (offline) { + offlineThread.join(); + } } /** diff --git a/kv_store/interfaces/innerkits/distributeddata/include/store_errno.h b/kv_store/interfaces/innerkits/distributeddata/include/store_errno.h index 45a44e0f..28061c2b 100644 --- a/kv_store/interfaces/innerkits/distributeddata/include/store_errno.h +++ b/kv_store/interfaces/innerkits/distributeddata/include/store_errno.h @@ -54,10 +54,11 @@ enum Status : int32_t { RECOVER_FAILED = DISTRIBUTEDDATAMGR_ERR_OFFSET + 29, EXCEED_MAX_ACCESS_RATE = DISTRIBUTEDDATAMGR_ERR_OFFSET + 31, SECURITY_LEVEL_ERROR = DISTRIBUTEDDATAMGR_ERR_OFFSET + 32, - OVER_MAX_SUBSCRIBE_LIMITS = DISTRIBUTEDDATAMGR_ERR_OFFSET + 33, + OVER_MAX_LIMITS = DISTRIBUTEDDATAMGR_ERR_OFFSET + 33, ALREADY_CLOSED = DISTRIBUTEDDATAMGR_ERR_OFFSET + 34, IPC_PARCEL_ERROR = DISTRIBUTEDDATAMGR_ERR_OFFSET + 35, DATA_CORRUPTED = DISTRIBUTEDDATAMGR_ERR_OFFSET + 36, + WAL_OVER_LIMITS = DISTRIBUTEDDATAMGR_ERR_OFFSET + 37, }; -} +} // namespace OHOS::DistributedKv #endif // OHOS_DISTRIBUTED_DATA_INTERFACES_DISTRIBUTEDDATA_STORE_ERRNO_H diff --git a/kv_store/interfaces/innerkits/distributeddata/include/types.h b/kv_store/interfaces/innerkits/distributeddata/include/types.h index a3bf298c..d14564b5 100644 --- a/kv_store/interfaces/innerkits/distributeddata/include/types.h +++ b/kv_store/interfaces/innerkits/distributeddata/include/types.h @@ -225,7 +225,7 @@ struct Options { bool persistent = true; bool backup = true; bool autoSync = true; - bool syncable = true; // let bms delete first + bool syncable = true; // true if is distributed store, false if is local store bool rebuild = false; int32_t securityLevel = NO_LABEL; int32_t area = EL1; diff --git a/kv_store/kvstoremock/frameworks/innerkitsimpl/kvdb/src/store_util.cpp b/kv_store/kvstoremock/frameworks/innerkitsimpl/kvdb/src/store_util.cpp index b109a40b..8b0586a6 100644 --- a/kv_store/kvstoremock/frameworks/innerkitsimpl/kvdb/src/store_util.cpp +++ b/kv_store/kvstoremock/frameworks/innerkitsimpl/kvdb/src/store_util.cpp @@ -13,13 +13,15 @@ * limitations under the License. */ #define LOG_TAG "StoreUtil" +#include "store_util.h" + #include +#include #include #include -#include + #include "log_print.h" #include "types.h" -#include "store_util.h" namespace OHOS::DistributedKv { constexpr mode_t DEFAULT_UMASK = 0002; constexpr int32_t HEAD_SIZE = 3; @@ -136,7 +138,7 @@ Status StoreUtil::ConvertStatus(DBStatus status) case DBStatus::TIME_OUT: return Status::TIME_OUT; case DBStatus::OVER_MAX_LIMITS: - return Status::OVER_MAX_SUBSCRIBE_LIMITS; + return Status::OVER_MAX_LIMITS; case DBStatus::INVALID_PASSWD_OR_CORRUPTED_DB: return Status::CRYPT_ERROR; case DBStatus::SCHEMA_MISMATCH: diff --git a/kv_store/test/unittest/distributedKVStore/DeviceKvStoreKVCallbackJsTest.js b/kv_store/test/unittest/distributedKVStore/DeviceKvStoreKVCallbackJsTest.js index 6a528498..11bc52a6 100644 --- a/kv_store/test/unittest/distributedKVStore/DeviceKvStoreKVCallbackJsTest.js +++ b/kv_store/test/unittest/distributedKVStore/DeviceKvStoreKVCallbackJsTest.js @@ -436,7 +436,7 @@ describe('DeviceKvStoreCallbackTest', function () { expect(err == undefined).assertTrue(); }); } catch (e) { - console.error('DeviceKvStorePutBoolCallbackTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutBoolCallbackTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -682,31 +682,31 @@ describe('DeviceKvStoreCallbackTest', function () { }) /** - * @tc.name DeviceKvStoreDeletePredicatesCallbackSucTest - * @tc.desc Test Js Api DeviceKvStore.Delete() successfully + * @tc.name DeviceKvStoreDeletePredicatesCallbackTest + * @tc.desc Test Js Api DeviceKvStore.Delete() * @tc.type: FUNC * @tc.require: issueNumber */ - it('DeviceKvStoreDeletePredicatesCallbackSucTest', 0, async function (done) { - console.log('DeviceKvStoreDeletePredicatesCallbackSucTest'); + it('DeviceKvStoreDeletePredicatesCallbackTest', 0, async function (done) { + console.log('DeviceKvStoreDeletePredicatesCallbackTest'); try { let predicates = new dataShare.DataSharePredicates(); let arr = ["name"]; predicates.inKeys(arr); - await kvStore.put("name", "Bob", async function (err, data) { - console.log('DeviceKvStoreDeletePredicatesCallbackSucTest put success'); - expect(err == undefined).assertTrue(); - await kvStore.delete(predicates, function (err, data) { - console.log('DeviceKvStoreDeletePredicatesCallbackSucTest delete success'); - expect(err == undefined).assertTrue(); - done(); - }); - }) + await kvStore.delete(predicates, function (err, data) { + if (err == undefined) { + console.error('DeviceKvStoreDeletePredicatesCallbackTest delete success'); + expect(null).assertFail(); + } else { + console.error('DeviceKvStoreDeletePredicatesCallbackTest delete fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); + } + }); } catch (e) { - console.error('DeviceKvStoreDeletePredicatesCallbackSucTest e' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); - done(); + console.info('DeviceKvStoreDeletePredicatesCallbackTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } + done(); }) /** @@ -867,7 +867,7 @@ describe('DeviceKvStoreCallbackTest', function () { kvStore.on('dataChange', 0, func); kvStore.off('dataChange', func); } catch (e) { - console.error('DeviceKvStoreOffChangeCallbackSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreOffChangeCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -889,7 +889,7 @@ describe('DeviceKvStoreCallbackTest', function () { expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreOffChangeCallbackSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.info('DeviceKvStoreOffChangeCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -910,7 +910,7 @@ describe('DeviceKvStoreCallbackTest', function () { kvStore.off('syncComplete', func); expect(true).assertTrue(); } catch (e) { - console.error('DeviceKvStoreOffSyncCompleteCallbackSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreOffSyncCompleteCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -933,7 +933,7 @@ describe('DeviceKvStoreCallbackTest', function () { } }); } catch (e) { - console.error('DeviceKvStoreOffSyncCompleteCallbackInvalidArgsTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.info('DeviceKvStoreOffSyncCompleteCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -951,12 +951,12 @@ describe('DeviceKvStoreCallbackTest', function () { var localLabels = ['A', 'B']; var remoteSupportLabels = ['C', 'D']; await kvStore.setSyncRange(localLabels, remoteSupportLabels, function (err, data) { - console.info('DeviceKvStoreSetSyncRangeCallbackDisjointTest put success'); + console.info('DeviceKvStoreSetSyncRangeCallbackDisjointTest setSyncRange success'); expect(err == undefined).assertTrue(); done(); }); } catch (e) { - console.error('DeviceKvStoreSetSyncRangeCallbackDisjointTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreSetSyncRangeCallbackDisjointTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -974,12 +974,12 @@ describe('DeviceKvStoreCallbackTest', function () { var localLabels = ['A', 'B']; var remoteSupportLabels = ['B', 'C']; await kvStore.setSyncRange(localLabels, remoteSupportLabels, function (err, data) { - console.info('DeviceKvStoreSetSyncRangeCallbackTest put success'); + console.info('DeviceKvStoreSetSyncRangeCallbackTest setSyncRange success'); expect(err == undefined).assertTrue(); done(); }); } catch (e) { - console.error('DeviceKvStoreSetSyncRangeCallbackTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreSetSyncRangeCallbackTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1002,7 +1002,7 @@ describe('DeviceKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error(' DeviceKvStoreSetSyncRangeCallbackSameTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreSetSyncRangeCallbackSameTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1022,7 +1022,7 @@ describe('DeviceKvStoreCallbackTest', function () { expect(null).assertFail(); }); } catch (e) { - console.error(' DeviceKvStoreSetSyncRangeCallbackSameTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreSetSyncRangeCallbackSameTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -1060,7 +1060,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvStorePutBatchEntryCallbackStringTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutBatchEntryCallbackStringTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1098,7 +1098,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvStorePutBatchEntryCallbackIntegerTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutBatchEntryCallbackIntegerTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1136,7 +1136,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvStorePutBatchEntryCallbackFloatTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutBatchEntryCallbackFloatTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1174,7 +1174,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvStorePutBatchEntryCallbackDoubleTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutBatchEntryCallbackDoubleTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1213,7 +1213,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvStorePutBatchEntryCallbackBooleanTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutBatchEntryCallbackBooleanTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1252,7 +1252,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvStorePutBatchEntryCallbackByteArrayTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutBatchEntryCallbackByteArrayTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1265,7 +1265,7 @@ describe('DeviceKvStoreCallbackTest', function () { * @tc.require: issueNumber */ it('DeviceKvStorePutBatchValueCallbackUint8ArrayTest', 0, async function (done) { - console.info('DeviceKvStorePutBatchValueCallbackUint8ArrayTest001'); + console.info('DeviceKvStorePutBatchValueCallbackUint8ArrayTest'); try { let values = []; let arr1 = new Uint8Array([4, 5, 6, 7]); @@ -1274,23 +1274,21 @@ describe('DeviceKvStoreCallbackTest', function () { let vb2 = {key: "name_2", value: arr2}; values.push(vb1); values.push(vb2); - console.info('DeviceKvStorePutBatchValueCallbackUint8ArrayTest001 values: ' + JSON.stringify(values)); + console.info('DeviceKvStorePutBatchValueCallbackUint8ArrayTest values: ' + JSON.stringify(values)); await kvStore.putBatch(values, async function (err, data) { - console.info('DeviceKvStorePutBatchValueCallbackUint8ArrayTest001 putBatch success'); - expect(err == undefined).assertTrue(); - var query = new factory.Query(); - query.prefixKey("name_"); - kvStore.getEntries(localDeviceId, query, function (err, entrys) { - console.info(JSON.stringify(entrys)); - expect(entrys.length == 2).assertTrue(); - done(); - }); + if (err == undefined) { + console.error('DeviceKvStorePutBatchValueCallbackUint8ArrayTest putBatch success'); + expect(null).assertFail(); + } else { + console.error('DeviceKvStorePutBatchValueCallbackUint8ArrayTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); + } }); } catch (e) { - console.error('DeviceKvStorePutBatchValueCallbackUint8ArrayTest001 e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); - done(); + console.info('DeviceKvStorePutBatchValueCallbackUint8ArrayTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } + done(); }) /** @@ -1309,7 +1307,7 @@ describe('DeviceKvStoreCallbackTest', function () { } }); } catch (e) { - console.error('DeviceKvStorePutBatchCallbackInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.info('DeviceKvStorePutBatchCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -1335,12 +1333,13 @@ describe('DeviceKvStoreCallbackTest', function () { if (err == undefined) { expect(null).assertFail(); } else { - expect(err.code == 15100005).assertFail(); + console.info('DeviceKvStorePutBatchCallbackClosedKvstoreTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); } }); } catch (e) { - console.error('DeviceKvStorePutBatchCallbackClosedKvstoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); + console.info('DeviceKvStorePutBatchCallbackClosedKvstoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } done(); }) @@ -1379,7 +1378,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvStoreDeleteBatchCallbackSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreDeleteBatchCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1419,7 +1418,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvStoreDeleteBatchCallbackInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.info('DeviceKvStoreDeleteBatchCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -1462,7 +1461,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvStoreDeleteBatchCallbackClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreDeleteBatchCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1500,7 +1499,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvStoreGetEntriesCallbackQueryTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetEntriesCallbackQueryTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1543,7 +1542,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvStoreGetEntriesCallbackQueryClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetEntriesCallbackQueryClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1579,7 +1578,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvStoreGetEntriesCallbackSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetEntriesCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1620,7 +1619,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvStoreGetEntriesCallbackClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetEntriesCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1658,7 +1657,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvStoreGetEntriesCallbackInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.info('DeviceKvStoreGetEntriesCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -1697,7 +1696,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvstoreStartTransactionCallbackCommitTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvstoreStartTransactionCallbackCommitTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1733,7 +1732,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvstoreStartTransactionCallbackRollbackTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvstoreStartTransactionCallbackRollbackTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1759,7 +1758,7 @@ describe('DeviceKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('DeviceKvstoreStartTransactionCallbackClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvstoreStartTransactionCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1786,7 +1785,7 @@ describe('DeviceKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('DeviceKvStoreCommitCallbackClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreCommitCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1813,7 +1812,7 @@ describe('DeviceKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('DeviceKvStoreRollbackCallbackClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreRollbackCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1839,7 +1838,7 @@ describe('DeviceKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('DeviceKvStoreEnableSyncCallbackTrueTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreEnableSyncCallbackTrueTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1865,7 +1864,7 @@ describe('DeviceKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('DeviceKvStoreEnableSyncCallbackFalseTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreEnableSyncCallbackFalseTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1891,7 +1890,7 @@ describe('DeviceKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('DeviceKvStoreEnableSyncCallbackInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreEnableSyncCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); done(); } @@ -1921,7 +1920,7 @@ describe('DeviceKvStoreCallbackTest', function () { } }); } catch (e) { - console.error('DeviceKvStoreRemoveDeviceDataCallbackClosedKvstoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreRemoveDeviceDataCallbackClosedKvstoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1944,7 +1943,7 @@ describe('DeviceKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('DeviceKvStoreRemoveDeviceDataCallbackInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreRemoveDeviceDataCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); done(); } @@ -1987,7 +1986,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvStoreGetResultSetCallbackSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetResultSetCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -2009,7 +2008,7 @@ describe('DeviceKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('DeviceKvStoreGetResultSetCallbackInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetResultSetCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); done(); } @@ -2026,18 +2025,15 @@ describe('DeviceKvStoreCallbackTest', function () { try { let predicates = new dataShare.DataSharePredicates(); await kvStore.getResultSet(localDeviceId, predicates).then((result) => { - console.log('DeviceKvStoreGetResultSetPredicatesCallbackTest getResultSet success'); - expect(true).assertTrue(); - kvStore.closeResultSet(result).then(() => { - expect(true).assertTrue(); - }); + console.error('DeviceKvStoreGetResultSetPredicatesCallbackTest getResultSet success'); + expect(null).assertFail(); }).catch((err) => { - console.error('DeviceKvStoreGetResultSetPredicatesCallbackTest getResultSet fail ' + err`, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreGetResultSetPredicatesCallbackTest getResultSet fail' + err`, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreGetResultSetPredicatesCallbackTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); + console.info('DeviceKvStoreGetResultSetPredicatesCallbackTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } done(); }) @@ -2077,7 +2073,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvStoreGetResultSetQueryCallbackTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetResultSetQueryCallbackTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -2108,7 +2104,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('DeviceKvStoreCloseResultSetCallbackSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreCloseResultSetCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -2135,7 +2131,7 @@ describe('DeviceKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('DeviceKvStoreCloseResultSetCallbackInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.info('DeviceKvStoreCloseResultSetCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); done(); } @@ -2171,7 +2167,7 @@ describe('DeviceKvStoreCallbackTest', function () { expect(resultSize == 10).assertTrue(); }) } catch (e) { - console.error('DeviceKvStoreGetResultSizePromiseQueryTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetResultSizePromiseQueryTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2204,7 +2200,7 @@ describe('DeviceKvStoreCallbackTest', function () { expect(null).assertFail(); }) } catch (e) { - console.error('DeviceKvStoreGetResultSizeCallbackInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.info('DeviceKvStoreGetResultSizeCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -2246,7 +2242,7 @@ describe('DeviceKvStoreCallbackTest', function () { } }); } catch (e) { - console.error('DeviceKvStoreGetResultSizeCallbackClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetResultSizeCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2288,7 +2284,7 @@ describe('DeviceKvStoreCallbackTest', function () { }); console.info('DeviceKvStoreGetEntriesCallbackSucTest success'); } catch (e) { - console.error('DeviceKvStoreGetEntriesCallbackSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetEntriesCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); diff --git a/kv_store/test/unittest/distributedKVStore/DeviceKvStoreKVPromiseJsTest.js b/kv_store/test/unittest/distributedKVStore/DeviceKvStoreKVPromiseJsTest.js index 7d161ebe..6d4bcce0 100644 --- a/kv_store/test/unittest/distributedKVStore/DeviceKvStoreKVPromiseJsTest.js +++ b/kv_store/test/unittest/distributedKVStore/DeviceKvStoreKVPromiseJsTest.js @@ -103,7 +103,7 @@ describe('DeviceKvStorePromiseTest', function () { console.info('beforeAll getDeviceId ' + JSON.stringify(deviceId)); localDeviceId = deviceId; }).catch((error) => { - console.error('beforeAll can NOT getDeviceId, fail: ' + `, error code is ${error.code}, message is ${error.message}`); + console.error('beforeAll can NOT getDeviceId, fail:' + `, error code is ${error.code}, message is ${error.message}`); expect(null).assertFail(); }); await kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID); @@ -158,11 +158,11 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStorePutStringPromiseInvalidArgsTest put success'); expect(null).assertFail(); }).catch((error) => { - console.error('DeviceKvStorePutStringPromiseInvalidArgsTest put error' + `, error code is ${error.code}, message is ${error.message}`); + console.error('DeviceKvStorePutStringPromiseInvalidArgsTest put fail' + `, error code is ${error.code}, message is ${error.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutStringPromiseInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutStringPromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -188,11 +188,11 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStorePutStringPromiseClosedKVStoreTest put success'); expect(null).assertFail(); }).catch((error) => { - console.error('DeviceKvStorePutStringPromiseClosedKVStoreTest put error' + `, error code is ${error.code}, message is ${error.message}`); + console.error('DeviceKvStorePutStringPromiseClosedKVStoreTest put fail' + `, error code is ${error.code}, message is ${error.message}`); expect(error.code == 15100005).assertTrue(); }); } catch (e) { - console.error('DeviceKvStorePutStringPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutStringPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -211,11 +211,11 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStorePutStringPromiseSucTest put success'); expect(data == undefined).assertTrue(); }).catch((error) => { - console.error('DeviceKvStorePutStringPromiseSucTest put error' + `, error code is ${error.code}, message is ${error.message}`); + console.error('DeviceKvStorePutStringPromiseSucTest put fail' + `, error code is ${error.code}, message is ${error.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutStringPromiseSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutStringPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -265,7 +265,7 @@ describe('DeviceKvStorePromiseTest', function () { expect(error.code == 401).assertTrue(); }); } catch (e) { - console.error('DeviceKvStoreGetStringPromiseInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetStringPromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -282,7 +282,7 @@ describe('DeviceKvStorePromiseTest', function () { await kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then(async (data) => { expect(data == undefined).assertTrue(); }).catch((error) => { - console.error('DeviceKvStoreGetStringPromiseClosedKVStoreTest put error' + `, error code is ${error.code}, message is ${error.message}`); + console.error('DeviceKvStoreGetStringPromiseClosedKVStoreTest put fail' + `, error code is ${error.code}, message is ${error.message}`); expect(null).assertFail(); }); await kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID).then(async () => { @@ -298,7 +298,7 @@ describe('DeviceKvStorePromiseTest', function () { expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('DeviceKvStoreGetStringPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetStringPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -317,11 +317,11 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreGetStringPromiseNoPutTest get success'); expect(null).assertFail(); }).catch((err) => { - console.error('DeviceKvStoreGetStringPromiseNoPutTest get fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreGetStringPromiseNoPutTest get fail' + `, error code is ${err.code}, message is ${err.message}`); expect(err.code == 15100004).assertTrue(); }); } catch (e) { - console.error('DeviceKvStoreGetStringPromiseNoPutTest get e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetStringPromiseNoPutTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -340,11 +340,11 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStorePutIntPromiseSucTest put success'); expect(data == undefined).assertTrue(); }).catch((err) => { - console.error('DeviceKvStorePutIntPromiseSucTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutIntPromiseSucTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutIntPromiseSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutIntPromiseSucTest put fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -367,15 +367,15 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStorePutIntPromiseMaxTest get success'); expect(intValue == data).assertTrue(); }).catch((err) => { - console.error('DeviceKvStorePutIntPromiseMaxTest get fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutIntPromiseMaxTest get fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('DeviceKvStorePutIntPromiseMaxTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutIntPromiseMaxTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutIntPromiseMaxTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutIntPromiseMaxTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -398,15 +398,15 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStorePutIntPromiseMinTest get success'); expect(intValue == data).assertTrue(); }).catch((err) => { - console.error('DeviceKvStorePutIntPromiseMinTest get fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutIntPromiseMinTest get fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('DeviceKvStorePutIntPromiseMinTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutIntPromiseMinTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutIntPromiseMinTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutIntPromiseMinTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -428,15 +428,15 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreGetIntPromiseSucTest get success'); expect(VALUE_TEST_INT_ELEMENT == data).assertTrue(); }).catch((err) => { - console.error('DeviceKvStoreGetIntPromiseSucTest get fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreGetIntPromiseSucTest get fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('DeviceKvStoreGetIntPromiseSucTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreGetIntPromiseSucTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreGetIntPromiseSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetIntPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -455,11 +455,11 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStorePutBoolPromiseSucTest put success'); expect(data == undefined).assertTrue(); }).catch((err) => { - console.error('DeviceKvStorePutBoolPromiseSucTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutBoolPromiseSucTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutBoolPromiseSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutBoolPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -482,15 +482,15 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreGetBoolPromiseSucTest get success'); expect(boolValue == data).assertTrue(); }).catch((err) => { - console.error('DeviceKvStoreGetBoolPromiseSucTest get fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreGetBoolPromiseSucTest get fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('DeviceKvStoreGetBoolPromiseSucTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreGetBoolPromiseSucTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreGetBoolPromiseSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetBoolPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -509,11 +509,11 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStorePutFloatPromiseSucTest put success'); expect(data == undefined).assertTrue(); }).catch((err) => { - console.error('DeviceKvStorePutFloatPromiseSucTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutFloatPromiseSucTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutFloatPromiseSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutFloatPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -536,15 +536,15 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreGetFloatPromiseSucTest get success'); expect(floatValue == data).assertTrue(); }).catch((err) => { - console.error('DeviceKvStoreGetFloatPromiseSucTest get fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreGetFloatPromiseSucTest get fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('DeviceKvStoreGetFloatPromiseSucTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreGetFloatPromiseSucTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreGetFloatPromiseSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetFloatPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -567,15 +567,15 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreDeleteStringPromiseSucTest delete success'); expect(data == undefined).assertTrue(); }).catch((err) => { - console.error('DeviceKvStoreDeleteStringPromiseSucTest delete fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreDeleteStringPromiseSucTest delete fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('DeviceKvStoreDeleteStringPromiseSucTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreDeleteStringPromiseSucTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreDeleteStringPromiseSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreDeleteStringPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -621,7 +621,7 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreDeleteStringPromiseSucTest put success'); expect(true).assertTrue(); }).catch((err) => { - console.error('DeviceKvStoreDeleteStringPromiseClosedKVStoreTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreDeleteStringPromiseClosedKVStoreTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); await kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID).then(async () => { @@ -635,80 +635,39 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreDeleteStringPromiseSucTest delete success'); expect(null).assertFail(); }).catch((err) => { - console.error('DeviceKvStoreDeleteStringPromiseSucTest delete fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreDeleteStringPromiseSucTest delete fail' + `, error code is ${err.code}, message is ${err.message}`); expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('DeviceKvStorePutStringPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreDeleteStringPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); }) /** - * @tc.name DeviceKvStoreDeletePredicatesPromiseSucTest - * @tc.desc Test Js Api DeviceKvStore.Delete() success + * @tc.name DeviceKvStoreDeletePredicatesPromiseTest + * @tc.desc Test Js Api DeviceKvStore.Delete() * @tc.type: FUNC * @tc.require: issueNumber */ - it('DeviceKvStoreDeletePredicatesPromiseSucTest', 0, async function (done) { - console.log('DeviceKvStoreDeletePredicatesPromiseSucTest'); + it('DeviceKvStoreDeletePredicatesPromiseTest', 0, async function (done) { + console.log('DeviceKvStoreDeletePredicatesPromiseTest'); try { let predicates = new dataShare.DataSharePredicates(); let arr = ["name"]; predicates.inKeys(arr); - await kvStore.put("name", "Bob").then(async (data) => { - console.log('DeviceKvStoreDeletePredicatesPromiseSucTest put success'); - expect(data == undefined).assertTrue(); - await kvStore.delete(predicates).then((data) => { - console.log('DeviceKvStoreDeletePredicatesPromiseSucTest delete success'); - expect(data == undefined).assertTrue(); - }).catch((err) => { - console.error('DeviceKvStoreDeletePredicatesPromiseSucTest delete fail ' + `, error code is ${err.code}, message is ${err.message}`); - expect(null).assertFail(); - }); - }).catch((err) => { - console.error('DeviceKvStoreDeletePredicatesPromiseSucTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); - expect(null).assertFail(); - }); - } catch (e) { - console.error('DeviceKvStoreDeletePredicatesPromiseSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); - } - done(); - }) - - /** - * @tc.name DeviceKvStoreDeletePredicatesPromiseClosedKVStoreTest - * @tc.desc Test Js Api DeviceKvStoreDelete predicates into a closed kvstore - * @tc.type: FUNC - * @tc.require: issueNumber - */ - it('DeviceKvStoreDeletePredicatesPromiseClosedKVStoreTest', 0, async function (done) { - try { - let predicates = new dataShare.DataSharePredicates(); - let arr = ["name"]; - predicates.inKeys(arr); - await kvStore.put("name", "Bob").then(async () => { - expect(true).assertTrue(); - }).catch((err) => { - expect(null).assertFail(); - }); - await kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID).then(async () => { - await kvManager.deleteKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID).then(() => { - expect(true).assertTrue(); - }).catch((err) => { - console.error('deleteKVStore err ' + `, error code is ${err.code}, message is ${err.message}`); - }); - }) await kvStore.delete(predicates).then((data) => { + console.error('DeviceKvStoreDeletePredicatesPromiseTest delete success'); expect(null).assertFail(); }).catch((err) => { - expect(err.code == 15100005).assertTrue(); + console.error('DeviceKvStoreDeletePredicatesPromiseTest delete fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); }); + } catch (e) { - console.error('DeviceKvStoreDeletePredicatesPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); + console.info('DeviceKvStoreDeletePredicatesPromiseTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } done(); }) @@ -756,11 +715,11 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreSetSyncRangePromiseDisjointTest setSyncRange success'); expect(err == undefined).assertTrue(); }).catch((err) => { - console.error('DeviceKvStoreDeleteStringPromiseNoPutTest delete fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreSetSyncRangePromiseDisjointTest setSyncRange fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreSetSyncRangePromiseDisjointTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreSetSyncRangePromiseDisjointTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -781,11 +740,11 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreSetSyncRangePromiseJointTest setSyncRange success'); expect(err == undefined).assertTrue(); }).catch((err) => { - console.error('DeviceKvStoreSetSyncRangePromiseJointTest delete fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreSetSyncRangePromiseJointTest setSyncRange fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreSetSyncRangePromiseJointTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreSetSyncRangePromiseJointTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -806,11 +765,11 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreSetSyncRangePromiseSameTest setSyncRange success'); expect(err == undefined).assertTrue(); }).catch((err) => { - console.error('DeviceKvStoreSetSyncRangePromiseSameTest delete fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreSetSyncRangePromiseSameTest setSyncRange fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreSetSyncRangePromiseSameTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreSetSyncRangePromiseSameTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -823,16 +782,18 @@ describe('DeviceKvStorePromiseTest', function () { * @tc.require: issueNumber */ it('DeviceKvStoreSetSyncRangePromiseInvalidArgsTest', 0, async function (done) { - console.info('DeviceKvStoreSetSyncRangePromiseSameTest'); + console.info('DeviceKvStoreSetSyncRangePromiseInvalidArgsTest'); try { var remoteSupportLabels = ['A', 'B']; await kvStore.setSyncRange(remoteSupportLabels).then((err) => { + console.info('DeviceKvStoreSetSyncRangePromiseInvalidArgsTest setSyncRange success'); expect(null).assertFail(); }).catch((err) => { + console.error('DeviceKvStoreSetSyncRangePromiseInvalidArgsTest setSyncRange fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreSetSyncRangePromiseSameTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreSetSyncRangePromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -858,15 +819,15 @@ describe('DeviceKvStorePromiseTest', function () { expect(entrys.length == 10).assertTrue(); expect(entrys[0].value.value == 'batch_test_string_value').assertTrue(); }).catch((err) => { - console.error('DeviceKvStorePutBatchPromiseStringTest getEntries fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutBatchPromiseStringTest getEntries fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('DeviceKvStorePutBatchPromiseStringTest putBatch fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutBatchPromiseStringTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutBatchPromiseStringTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutBatchPromiseStringTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -902,15 +863,15 @@ describe('DeviceKvStorePromiseTest', function () { expect(entrys.length == 10).assertTrue(); expect(entrys[0].value.value == 222).assertTrue(); }).catch((err) => { - console.error('DeviceKvStorePutBatchPromiseIntegerTest getEntries fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutBatchPromiseIntegerTest getEntries fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('DeviceKvStorePutBatchPromiseIntegerTest putBatch fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutBatchPromiseIntegerTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutBatchPromiseIntegerTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutBatchPromiseIntegerTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -946,15 +907,15 @@ describe('DeviceKvStorePromiseTest', function () { expect(entrys.length == 10).assertTrue(); expect(entrys[0].value.value == 2.0).assertTrue(); }).catch((err) => { - console.error('DeviceKvStorePutBatchPromiseFloatTest getEntries fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutBatchPromiseFloatTest getEntries fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('DeviceKvStorePutBatchPromiseFloatTest putBatch fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutBatchPromiseFloatTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutBatchPromiseFloatTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutBatchPromiseFloatTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -990,15 +951,15 @@ describe('DeviceKvStorePromiseTest', function () { expect(entrys.length == 10).assertTrue(); expect(entrys[0].value.value == 2.00).assertTrue(); }).catch((err) => { - console.error('DeviceKvStorePutBatchPromiseDoubleTest getEntries fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutBatchPromiseDoubleTest getEntries fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('DeviceKvStorePutBatchPromiseDoubleTest putBatch fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutBatchPromiseDoubleTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutBatchPromiseDoubleTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutBatchPromiseDoubleTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1035,15 +996,15 @@ describe('DeviceKvStorePromiseTest', function () { expect(entrys.length == 10).assertTrue(); expect(entrys[0].value.value == bo).assertTrue(); }).catch((err) => { - console.error('DeviceKvStorePutBatchPromiseBooleanTest getEntries fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutBatchPromiseBooleanTest getEntries fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('DeviceKvStorePutBatchPromiseBooleanTest putBatch fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutBatchPromiseBooleanTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutBatchPromiseBooleanTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutBatchPromiseBooleanTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1080,15 +1041,15 @@ describe('DeviceKvStorePromiseTest', function () { expect(entrys.length == 10).assertTrue(); expect(entrys[0].value.value.toString() == arr.toString()).assertTrue(); }).catch((err) => { - console.error('DeviceKvStorePutBatchPromiseByteArrayTest getEntries fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutBatchPromiseByteArrayTest getEntries fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('DeviceKvStorePutBatchPromiseByteArrayTest putBatch fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStorePutBatchPromiseByteArrayTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutBatchPromiseBooleanTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutBatchPromiseByteArrayTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1112,20 +1073,17 @@ describe('DeviceKvStorePromiseTest', function () { values.push(vb2); console.info('DeviceKvStorePutBatchValuePromiseUint8ArrayTest values: ' + JSON.stringify(values)); await kvStore.putBatch(values).then(async (err) => { - console.info('DeviceKvStorePutBatchValuePromiseUint8ArrayTest putBatch success'); - expect(err == undefined).assertTrue(); - var query = new factory.Query(); - query.prefixKey("name_"); - await kvStore.getEntries(localDeviceId, query).then((entrys) => { - expect(entrys.length == 2).assertTrue(); - done(); - }); + console.error('DeviceKvStorePutBatchValuePromiseUint8ArrayTest PutBatch success'); + expect(null).assertFail(); + }).catch((err) => { + console.error('DeviceKvStorePutBatchValuePromiseUint8ArrayTest PutBatch fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutBatchValuePromiseUint8ArrayTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); - done(); + console.info('DeviceKvStorePutBatchValuePromiseUint8ArrayTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } + done(); }) /** @@ -1144,24 +1102,15 @@ describe('DeviceKvStorePromiseTest', function () { values.push(vb2); console.info('DeviceKvStorePutBatchValuePromiseStringTest values: ' + JSON.stringify(values)); await kvStore.putBatch(values).then(async (err) => { - console.info('DeviceKvStorePutBatchValuePromiseUint8ArrayTest putBatch success'); - expect(err == undefined).assertTrue(); - var query = new factory.Query(); - query.prefixKey("name_"); - await kvStore.getEntries(localDeviceId, query).then((entrys) => { - expect(entrys.length == 2).assertTrue(); - done(); - }).catch((err) => { - console.log('DeviceKvStorePutBatchValueTest delete fail ' + err); - expect(null).assertFail(); - }); + console.error('DeviceKvStorePutBatchValuePromiseStringTest putBatch success'); + expect(null).assertFail(); }).catch((err) => { - console.log('DeviceKvStorePutBatchValueTest delete fail ' + err); + console.error('DeviceKvStorePutBatchValuePromiseStringTest PutBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutBatchValuePromiseStringTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); + console.info('DeviceKvStorePutBatchValuePromiseStringTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } done(); }) @@ -1182,19 +1131,17 @@ describe('DeviceKvStorePromiseTest', function () { values.push(vb2); values.push(vb3); await kvStore.putBatch(values).then(async (err) => { - expect(err == undefined).assertTrue(); - var query = new factory.Query(); - query.prefixKey("name_"); - await kvStore.getEntries(localDeviceId, query).then((entrys) => { - expect(entrys.length == 3).assertTrue(); - done(); - }); + console.error('DeviceKvStorePutBatchValuePromiseNumbersTest putBatch success'); + expect(null).assertFail(); + }).catch((err) => { + console.error('DeviceKvStorePutBatchValuePromiseNumbersTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutBatchValuePromiseTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); - done(); + console.info('DeviceKvStorePutBatchValuePromiseNumbersTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } + done(); }) /** @@ -1211,17 +1158,15 @@ describe('DeviceKvStorePromiseTest', function () { values.push(vb1); values.push(vb2); await kvStore.putBatch(values).then(async (err) => { - expect(err == undefined).assertTrue(); - var query = new factory.Query(); - query.prefixKey("name_"); - await kvStore.getEntries(localDeviceId, query).then((entrys) => { - expect(entrys.length == 2).assertTrue(); - done(); - }); + console.error('DeviceKvStorePutBatchValuePromiseBooleanTest putBatch success'); + expect(null).assertFail(); + }).catch((err) => { + console.error('DeviceKvStorePutBatchValuePromiseBooleanTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutBatchValuePromiseTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); + console.info('DeviceKvStorePutBatchValuePromiseBooleanTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); done(); } }) @@ -1242,21 +1187,17 @@ describe('DeviceKvStorePromiseTest', function () { values.push(vb2); console.info('DeviceKvStorePutBatchValuePromiseNullTest values: ' + JSON.stringify(values)); await kvStore.putBatch(values).then(async (err) => { - console.info('DeviceKvStorePutBatchValuePromiseNullTest putBatch success'); - expect(err == undefined).assertTrue(); - var query = new factory.Query(); - query.prefixKey("name_"); - await kvStore.getEntries(localDeviceId, query).then((entrys) => { - expect(entrys.length == 2).assertTrue(); - expect(entrys[0].value == null).assertTrue(); - done(); - }); + console.error('DeviceKvStorePutBatchValuePromiseNullTest putBatch success'); + expect(null).assertFail(); + }).catch((err) => { + console.error('DeviceKvStorePutBatchValuePromiseNullTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutBatchValuePromiseNullTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); - done(); + console.info('DeviceKvStorePutBatchValuePromiseNullTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } + done(); }) /** @@ -1273,7 +1214,7 @@ describe('DeviceKvStorePromiseTest', function () { expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutBatchValuePromiseNullTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStorePutBatchValuePromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -1300,13 +1241,15 @@ describe('DeviceKvStorePromiseTest', function () { values.push(vb1); values.push(vb2); await kvStore.putBatch(values).then(() => { + console.error('DeviceKvStorePutBatchValuePromiseClosedKvstoreTest putBatch success'); expect(null).assertFail(); }).catch((err) => { - expect(err.code == 15100005).assertTrue(); + console.error('DeviceKvStorePutBatchValuePromiseClosedKvstoreTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStorePutBatchValuePromiseNullTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); + console.info('DeviceKvStorePutBatchValuePromiseClosedKvstoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } done(); }) @@ -1345,7 +1288,7 @@ describe('DeviceKvStorePromiseTest', function () { expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreDeleteBatchPromiseSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreDeleteBatchPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1388,7 +1331,7 @@ describe('DeviceKvStorePromiseTest', function () { expect(err.code == 401).assertTrue(); }); } catch (e) { - console.error('DeviceKvStoreDeleteBatchPromiseInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreDeleteBatchPromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1436,7 +1379,7 @@ describe('DeviceKvStorePromiseTest', function () { expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('DeviceKvStoreDeleteBatchPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreDeleteBatchPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1482,7 +1425,7 @@ describe('DeviceKvStorePromiseTest', function () { expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreGetEntriesPromiseQueryTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetEntriesPromiseQueryTest fail' + `, error code is ${e.code}, message is ${e.message}`); console.log("errr3") expect(null).assertFail(); } @@ -1530,7 +1473,7 @@ describe('DeviceKvStorePromiseTest', function () { expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('DeviceKvStoreGetEntriesPromiseQueryClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetEntriesPromiseQueryClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1572,7 +1515,7 @@ describe('DeviceKvStorePromiseTest', function () { expect(error == undefined).assertTrue(); }); } catch (e) { - console.error('DeviceKvStoreGetEntriesPromiseSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetEntriesPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1617,7 +1560,7 @@ describe('DeviceKvStorePromiseTest', function () { expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('DeviceKvStoreGetEntriesPromiseSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetEntriesPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1656,7 +1599,7 @@ describe('DeviceKvStorePromiseTest', function () { expect(err.code == 401).assertTrue(); }); } catch (e) { - console.error('DeviceKvStoreGetEntriesPromiseInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetEntriesPromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1964,11 +1907,11 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreRemoveDeviceDataPromiseInvalidArgsTest removeDeviceData success'); expect(null).assertFail(); }).catch((err) => { - console.error('DeviceKvStoreRemoveDeviceDataPromiseInvalidArgsTest removeDeviceData fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreRemoveDeviceDataPromiseInvalidArgsTest removeDeviceData fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreRemoveDeviceDataPromiseInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreRemoveDeviceDataPromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -2003,7 +1946,7 @@ describe('DeviceKvStorePromiseTest', function () { }); } catch (e) { - console.error('DeviceKvStoreRemoveDeviceDataPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreRemoveDeviceDataPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2048,7 +1991,7 @@ describe('DeviceKvStorePromiseTest', function () { expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreGetResultSetPromiseSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetResultSetPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2068,11 +2011,11 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreGetResultSetPromiseInvalidArgsTest getResultSet success'); expect(null).assertFail(); }).catch((err) => { - console.error('DeviceKvStoreGetResultSetPromiseInvalidArgsTest getResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreGetResultSetPromiseInvalidArgsTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreGetResultSetPromiseInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetResultSetPromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -2103,11 +2046,11 @@ describe('DeviceKvStorePromiseTest', function () { await kvStore.getResultSet(localDeviceId, 'batch_test_string_key').then((result) => { expect(null).assertFail(); }).catch((err) => { - console.error('DeviceKvStoreGetResultSetPromiseClosedKVStoreTest getResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreGetResultSetPromiseClosedKVStoreTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('DeviceKvStoreGetResultSetPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetResultSetPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2139,7 +2082,7 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreGetResultSetPromiseQueryTest putBatch success'); expect(err == undefined).assertTrue(); }).catch((err) => { - console.error('DeviceKvStorePutBatchPromiseStringTest putBatch fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreGetResultSetPromiseQueryTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); var query = new factory.Query(); @@ -2149,18 +2092,18 @@ describe('DeviceKvStorePromiseTest', function () { resultSet = result; expect(resultSet.getCount() == 10).assertTrue(); }).catch((err) => { - console.error('DeviceKvStoreGetResultSetPromiseQueryTest getResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreGetResultSetPromiseQueryTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); await kvStore.closeResultSet(resultSet).then((err) => { console.info('DeviceKvStoreGetResultSetPromiseQueryTest closeResultSet success'); expect(err == undefined).assertTrue(); }).catch((err) => { - console.error('DeviceKvStoreGetResultSetPromiseQueryTest closeResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreGetResultSetPromiseQueryTest closeResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreGetResultSetPromiseQueryTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetResultSetPromiseQueryTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2202,28 +2145,29 @@ describe('DeviceKvStorePromiseTest', function () { var query = new factory.Query(); query.prefixKey("batch_test"); await kvStore.getResultSet(localDeviceId, query).then((result) => { + console.info('DeviceKvStoreGetResultSetQueryPromiseClosedKVStoreTest getResultSet success'); expect(null).assertFail(); }).catch((err) => { + console.error('DeviceKvStoreGetResultSetQueryPromiseClosedKVStoreTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('DeviceKvStoreGetResultSetQueryPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetResultSetQueryPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); }) /** - * @tc.name DeviceKvStoreGetResultSetPredicatesPromiseSucTest - * @tc.desc Test Js Api DeviceKvStore.GetResultSet() with predicates success + * @tc.name DeviceKvStoreGetResultSetPredicatesPromiseTest + * @tc.desc Test Js Api DeviceKvStore.GetResultSet() with predicates * @tc.type: FUNC * @tc.require: issueNumber */ - it('DeviceKvStoreGetResultSetPredicatesPromiseSucTest', 0, async function (done) { - console.log('DeviceKvStoreGetResultSetPredicatesPromiseSucTest'); + it('DeviceKvStoreGetResultSetPredicatesPromiseTest', 0, async function (done) { + console.log('DeviceKvStoreGetResultSetPredicatesPromiseTest'); try { let entries = []; - let resultSet; for (let i = 0; i < 10; i++) { let key = 'name_'; let value = 'Bob_' @@ -2244,18 +2188,15 @@ describe('DeviceKvStorePromiseTest', function () { let predicates = new dataShare.DataSharePredicates(); predicates.prefixKey("name_"); await kvStore.getResultSet(localDeviceId, predicates).then((result) => { - resultSet = result; - expect(resultSet.getCount() == 10).assertTrue(); - }).catch((err) => { + console.error('DeviceKvStoreGetResultSetPredicatesPromiseTest getResultSet success'); expect(null).assertFail(); - }); - await kvStore.closeResultSet(resultSet).then((err) => { - expect(err == undefined).assertTrue(); }).catch((err) => { + console.error('DeviceKvStoreGetResultSetPredicatesPromiseTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - expect(null).assertFail(); + console.info('DeviceKvStoreGetResultSetPredicatesPromiseTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code== 202).assertTrue(); } done(); }) @@ -2296,13 +2237,15 @@ describe('DeviceKvStorePromiseTest', function () { let predicates = new dataShare.DataSharePredicates(); predicates.prefixKey("batch_test"); await kvStore.getResultSet(localDeviceId, predicates).then((result) => { + console.error('DeviceKvStoreGetResultSetPredicatesPromiseClosedKVStoreTest getResultSet success'); expect(null).assertFail(); }).catch((err) => { - expect(err.code == 15100005).assertTrue(); + console.error('DeviceKvStoreGetResultSetPredicatesPromiseClosedKVStoreTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreGetResultSetPredicatesPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); + console.info('DeviceKvStoreGetResultSetPredicatesPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code== 202).assertTrue(); } done(); }) @@ -2322,18 +2265,18 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreCloseResultSetPromiseSucTest getResultSet success'); resultSet = result; }).catch((err) => { - console.error('DeviceKvStoreCloseResultSetPromiseSucTest getResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreCloseResultSetPromiseSucTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); await kvStore.closeResultSet(resultSet).then((err) => { console.info('DeviceKvStoreCloseResultSetPromiseSucTest closeResultSet success'); expect(err == undefined).assertTrue(); }).catch((err) => { - console.error('DeviceKvStoreCloseResultSetPromiseSucTest closeResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreCloseResultSetPromiseSucTest closeResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreCloseResultSetPromiseSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreCloseResultSetPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2350,10 +2293,10 @@ describe('DeviceKvStorePromiseTest', function () { await kvStore.closeResultSet().then(() => { expect(null).assertFail(); }).catch((err) => { - console.error('DeviceKvStoreCloseResultSetPromiseInvalidArgsTest closeResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreCloseResultSetPromiseInvalidArgsTest closeResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); }); } catch (e) { - console.error('DeviceKvStoreCloseResultSetPromiseInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.info('DeviceKvStoreCloseResultSetPromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -2383,7 +2326,7 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreGetResultSizePromiseQueryTest putBatch success'); expect(err == undefined).assertTrue(); }).catch((err) => { - console.error('DeviceKvStorePutBatchPromiseStringTest putBatch fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreGetResultSizePromiseQueryTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); var query = new factory.Query(); @@ -2392,11 +2335,11 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreGetResultSizePromiseQueryTest getResultSet success'); expect(resultSize == 10).assertTrue(); }).catch((err) => { - console.error('DeviceKvStoreGetResultSizePromiseQueryTest getResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('DeviceKvStoreGetResultSizePromiseQueryTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreGetResultSizePromiseQueryTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetResultSizePromiseQueryTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2433,7 +2376,7 @@ describe('DeviceKvStorePromiseTest', function () { expect(null).assertFail(); }); } catch (e) { - console.error('DeviceKvStoreGetResultSizePromiseInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.info('DeviceKvStoreGetResultSizePromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -2477,11 +2420,11 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreGetResultSizePromiseClosedKVStoreTest getResultSet success'); expect(null).assertFail(); }).catch((err) => { - console.error('DeviceKvStoreGetResultSizePromiseClosedKVStoreTest getResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.info('DeviceKvStoreGetResultSizePromiseClosedKVStoreTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('DeviceKvStoreGetResultSizePromiseQueryTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('DeviceKvStoreGetResultSizePromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2506,7 +2449,7 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreChangeNotificationPromiseTest getInsertEntries' + JSON.stringify(insertEntries)); expect(insertEntries != null).assertTrue(); }).catch((error) => { - console.error('DeviceKvStoreChangeNotificationPromiseTest can NOT getInsertEntries, fail:' + `, error code is ${error.code}, message is ${error.message}`); + console.error('DeviceKvStoreChangeNotificationPromiseTest getInsertEntries fail' + `, error code is ${error.code}, message is ${error.message}`); expect(null).assertFail(); }); done(); @@ -2534,7 +2477,7 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreChangeNotificationPromisePutTest getUpdateEntries' + JSON.stringify(updateEntries)); expect(updateEntries != null).assertTrue(); }).catch((error) => { - console.error('DeviceKvStoreChangeNotificationPromisePutTest can NOT getUpdateEntries, fail:' + `, error code is ${error.code}, message is ${error.message}`); + console.error('DeviceKvStoreChangeNotificationPromisePutTest getUpdateEntries fail' + `, error code is ${error.code}, message is ${error.message}`); expect(null).assertFail(); }); done(); @@ -2562,7 +2505,7 @@ describe('DeviceKvStorePromiseTest', function () { console.info('DeviceKvStoreChangeNotificationPromiseDeleteTest deleteEntries' + JSON.stringify(getdeleteEntries)); expect(deleteEntries != null).assertTrue(); }).catch((error) => { - console.error('DeviceKvStoreChangeNotificationPromiseDeleteTest can NOT getdeleteEntries, fail:' + `, error code is ${error.code}, message is ${error.message}`); + console.error('DeviceKvStoreChangeNotificationPromiseDeleteTest getdeleteEntries fail' + `, error code is ${error.code}, message is ${error.message}`); expect(null).assertFail(); }); done(); diff --git a/kv_store/test/unittest/distributedKVStore/SingleKvStoreKVCallbackJsTest.js b/kv_store/test/unittest/distributedKVStore/SingleKvStoreKVCallbackJsTest.js index 42a8e501..b318facd 100644 --- a/kv_store/test/unittest/distributedKVStore/SingleKvStoreKVCallbackJsTest.js +++ b/kv_store/test/unittest/distributedKVStore/SingleKvStoreKVCallbackJsTest.js @@ -107,7 +107,7 @@ describe('SingleKvStoreCallbackTest', function () { }); kvStore = null; } catch (e) { - console.error('afterEach closeKVStore err ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('afterEach closeKVStore fail' + `, error code is ${err.code}, message is ${err.message}`); } }) @@ -130,7 +130,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStorePutStringCallbackSucTest put e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutStringCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -155,7 +155,7 @@ describe('SingleKvStoreCallbackTest', function () { } }); } catch (e) { - console.error('SingleKvStorePutStringCallbackInvalidArgsTest put e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutStringCallbackInvalidArgsTest put fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -183,7 +183,7 @@ describe('SingleKvStoreCallbackTest', function () { } }); } catch (e) { - console.error('SingleKvStorePutStringCallbackClosedKvStoreTest put e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutStringCallbackClosedKvStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -208,7 +208,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }) } catch (e) { - console.error('SingleKvStoreGetStringCallbackSucTest get e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetStringCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -230,13 +230,15 @@ describe('SingleKvStoreCallbackTest', function () { }); await kvStore.get(KEY_TEST_STRING_ELEMENT, function (err) { if (err == undefined) { + console.error('SingleKvStoreGetStringCallbackClosedKVStoreTest get success'); expect(null).assertFail(); } else { + console.info('SingleKvStoreGetStringCallbackClosedKVStoreTest get fail' + `, error code is ${e.code}, message is ${e.message}`); expect(err.code == 15100005).assertTrue(); } }); } catch (e) { - console.error('SingleKvStoreGetStringCallbackClosedKVStoreTest get e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetStringCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -262,7 +264,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }) } catch (e) { - console.error('SingleKvStoreGetStringCallbackInvalidArgsTest get e' + `, error code is ${e.code}, message is ${e.message}`); + console.info('SingleKvStoreGetStringCallbackInvalidArgsTest get fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -287,7 +289,7 @@ describe('SingleKvStoreCallbackTest', function () { }) }); } catch (e) { - console.error('SingleKvStorePutIntCallbackSucTest put e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutIntCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -313,7 +315,7 @@ describe('SingleKvStoreCallbackTest', function () { }) }); } catch (e) { - console.error('SingleKvStorePutIntCallbackMaxTest put e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutIntCallbackMaxTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -339,7 +341,7 @@ describe('SingleKvStoreCallbackTest', function () { }) }); } catch (e) { - console.error('SingleKvStorePutIntCallbackMinTest put e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutIntCallbackMinTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -356,7 +358,7 @@ describe('SingleKvStoreCallbackTest', function () { try { await kvStore.get(KEY_TEST_INT_ELEMENT, function (err) { if (err == undefined) { - console.info('SingleKvStoreGetIntCallbackTest get success'); + console.error('SingleKvStoreGetIntCallbackTest get success'); expect(null).assertFail(); } else { console.info('SingleKvStoreGetIntCallbackTest get fail'); @@ -365,7 +367,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }) } catch (e) { - console.error('SingleKvStoreGetIntCallbackTest put e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetIntCallbackTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -386,7 +388,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStorePutBoolCallbackTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutBoolCallbackTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -411,7 +413,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }) } catch (e) { - console.error('SingleKvStoreGetBoolCallbackSucTest e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetBoolCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -432,7 +434,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStorePutFloatCallbackSucTest e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutFloatCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -463,7 +465,7 @@ describe('SingleKvStoreCallbackTest', function () { }); } catch (e) { - console.error('SingleKvStoreGetFloatCallbackSucTest e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetFloatCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -488,7 +490,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }) } catch (e) { - console.error('SingleKvStoreDeleteStringCallbackSucTest e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreDeleteStringCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -512,7 +514,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }) } catch (e) { - console.error('SingleKvStoreDeleteStringCallbackInvalidArgsTest e' + `, error code is ${e.code}, message is ${e.message}`); + console.info('SingleKvStoreDeleteStringCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -529,9 +531,9 @@ describe('SingleKvStoreCallbackTest', function () { await kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT, function (err) { if (err == undefined) { expect(true).assertTrue(); - console.info('SingleKvStorePutStringCallbackClosedKvStoreTest put success'); + console.info('SingleKvStoreDeleteCallbackClosedKVStoreTest put success'); } else { - console.error('SingleKvStorePutStringCallbackClosedKvStoreTest put fail' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreDeleteCallbackClosedKVStoreTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); } }); @@ -544,13 +546,15 @@ describe('SingleKvStoreCallbackTest', function () { }); await kvStore.delete(KEY_TEST_STRING_ELEMENT, function (err) { if (err == undefined) { + console.info('SingleKvStoreDeleteCallbackClosedKVStoreTest delete success'); expect(null).assertFail(); } else { + console.info('SingleKvStoreDeleteCallbackClosedKVStoreTest delete fail' + `, error code is ${err.code}, message is ${err.message}`); expect(err.code == 15100005).assertTrue(); } }); } catch (e) { - console.error('SingleKvStorePutStringCallbackClosedKvStoreTest put e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreDeleteCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -575,7 +579,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }) } catch (e) { - console.error('SingleKvStoreDeleteIntCallbackSucTest e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreDeleteIntCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -600,7 +604,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }) } catch (e) { - console.error('SingleKvStoreDeleteFloatCallbackSucTest e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreDeleteFloatCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -625,7 +629,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }) } catch (e) { - console.error('SingleKvStoreDeleteBoolCallbackSucTest e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreDeleteBoolCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -643,20 +647,20 @@ describe('SingleKvStoreCallbackTest', function () { let predicates = new dataShare.DataSharePredicates(); let arr = ["name"]; predicates.inKeys(arr); - await kvStore.put("name", "Bob", async function (err, data) { - console.log('SingleKvStoreDeletePredicatesCallbackSucTest put success'); - expect(err == undefined).assertTrue(); - await kvStore.delete(predicates, function (err, data) { - console.log('SingleKvStoreDeletePredicatesCallbackSucTest delete success'); - expect(err == undefined).assertTrue(); - done(); - }); - }) + await kvStore.delete(predicates, async function (err) { + if (err == undefined) { + console.error('SingleKvStoreDeletePredicatesCallbackSucTest delete success'); + expect(null).assertFail(); + } else { + console.error('SingleKvStoreDeletePredicatesCallbackSucTest delete fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); + } + }); } catch (e) { - console.error('SingleKvStoreDeletePredicatesCallbackSucTest e' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); - done(); + console.info('SingleKvStoreDeletePredicatesCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } + done(); }) /** @@ -824,7 +828,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStoreOnChangeCallbackTest e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreOnChangeCallbackTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -849,7 +853,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStoreOnChangeCallbackType1Test e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreOnChangeCallbackType1Test fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -874,7 +878,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStoreOnChangeCallbackType2Test e' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreOnChangeCallbackType2Test fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -896,7 +900,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStoreOnChangeCallbackClosedKVStoreTest e' + `, error code is ${e.code}, message is ${e.message}`); + console.info('SingleKvStoreOnChangeCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 15100005).assertTrue(); } done(); @@ -921,7 +925,7 @@ describe('SingleKvStoreCallbackTest', function () { expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreOnChangeCallbackPassMaxTest e' + `, error code is ${e.code}, message is ${e.message}`); + console.info('SingleKvStoreOnChangeCallbackPassMaxTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 15100001).assertTrue(); } done(); @@ -942,7 +946,7 @@ describe('SingleKvStoreCallbackTest', function () { }); } catch (e) { - console.error('SingleKvStoreOnChangeCallbackInvalidArgsTest e' + `, error code is ${e.code}, message is ${e.message}`); + console.info('SingleKvStoreOnChangeCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); done(); } @@ -963,7 +967,7 @@ describe('SingleKvStoreCallbackTest', function () { kvStore.on('dataChange', 0, func); kvStore.off('dataChange', func); } catch (e) { - console.error('SingleKvStoreOffChangeCallbackSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.info('SingleKvStoreOffChangeCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -985,7 +989,7 @@ describe('SingleKvStoreCallbackTest', function () { expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreOffChangeCallbackSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.info('SingleKvStoreOffChangeCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -1006,7 +1010,7 @@ describe('SingleKvStoreCallbackTest', function () { kvStore.off('syncComplete', func); expect(true).assertTrue(); } catch (e) { - console.error('SingleKvStoreOffSyncCompleteCallbackSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreOffSyncCompleteCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1029,7 +1033,7 @@ describe('SingleKvStoreCallbackTest', function () { } }); } catch (e) { - console.error('SingleKvStoreOffSyncCompleteCallbackInvalidArgsTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.info('SingleKvStoreOffSyncCompleteCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -1052,7 +1056,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStoreSetSyncRangeCallbackDisjointTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreSetSyncRangeCallbackDisjointTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1075,7 +1079,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStoreSetSyncRangeCallbackTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreSetSyncRangeCallbackTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1098,7 +1102,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error(' SingleKvStoreSetSyncRangeCallbackSameTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreSetSyncRangeCallbackSameTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1118,7 +1122,7 @@ describe('SingleKvStoreCallbackTest', function () { expect(null).assertFail(); }); } catch (e) { - console.error(' SingleKvStoreSetSyncRangeCallbackSameTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.info(' SingleKvStoreSetSyncRangeCallbackSameTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -1156,7 +1160,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStorePutBatchEntryCallbackStringTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutBatchEntryCallbackStringTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1194,7 +1198,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStorePutBatchEntryCallbackIntegerTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutBatchEntryCallbackIntegerTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1232,7 +1236,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStorePutBatchEntryCallbackFloatTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutBatchEntryCallbackFloatTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1270,7 +1274,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStorePutBatchEntryCallbackDoubleTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutBatchEntryCallbackDoubleTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1309,7 +1313,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStorePutBatchEntryCallbackBooleanTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutBatchEntryCallbackBooleanTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1348,7 +1352,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStorePutBatchEntryCallbackByteArrayTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutBatchEntryCallbackByteArrayTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1361,7 +1365,7 @@ describe('SingleKvStoreCallbackTest', function () { * @tc.require: issueNumber */ it('SingleKvStorePutBatchValueCallbackUint8ArrayTest', 0, async function (done) { - console.info('SingleKvStorePutBatchValueCallbackUint8ArrayTest001'); + console.info('SingleKvStorePutBatchValueCallbackUint8ArrayTest'); try { let values = []; let arr1 = new Uint8Array([4, 5, 6, 7]); @@ -1371,21 +1375,20 @@ describe('SingleKvStoreCallbackTest', function () { values.push(vb1); values.push(vb2); console.info('SingleKvStorePutBatchValueCallbackUint8ArrayTest001 values: ' + JSON.stringify(values)); - await kvStore.putBatch(values, async function (err, data) { - console.info('SingleKvStorePutBatchValueCallbackUint8ArrayTest001 putBatch success'); - expect(err == undefined).assertTrue(); - var query = new factory.Query(); - query.prefixKey("name_"); - kvStore.getEntries(query, function (err, entrys) { - expect(entrys.length == 2).assertTrue(); - done(); - }); + await kvStore.putBatch(values, async function (err) { + if (err == undefined) { + console.error('SingleKvStorePutBatchValueCallbackUint8ArrayTest putBatch success'); + expect(null).assertFail(); + } else { + console.error('SingleKvStorePutBatchValueCallbackUint8ArrayTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); + } }); } catch (e) { - console.error('SingleKvStorePutBatchValueCallbackUint8ArrayTest001 e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); - done(); + console.info('SingleKvStorePutBatchValueCallbackUint8ArrayTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } + done(); }) /** @@ -1404,7 +1407,7 @@ describe('SingleKvStoreCallbackTest', function () { } }); } catch (e) { - console.error('SingleKvStorePutBatchCallbackInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.info('SingleKvStorePutBatchCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -1428,14 +1431,16 @@ describe('SingleKvStoreCallbackTest', function () { values.push(vb2); await kvStore.putBatch(values, async function (err) { if (err == undefined) { + console.error('SingleKvStorePutBatchCallbackClosedKvstoreTest putBatch success'); expect(null).assertFail(); } else { - expect(err.code == 15100005).assertFail(); + console.error('SingleKvStorePutBatchCallbackClosedKvstoreTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); } }); } catch (e) { - console.error('SingleKvStorePutBatchCallbackClosedKvstoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); + console.info('SingleKvStorePutBatchCallbackClosedKvstoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } done(); }) @@ -1474,7 +1479,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStoreDeleteBatchCallbackSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreDeleteBatchCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1514,7 +1519,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStoreDeleteBatchCallbackInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreDeleteBatchCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -1557,7 +1562,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStoreDeleteBatchCallbackClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreDeleteBatchCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1595,7 +1600,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStoreGetEntriesCallbackQueryTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetEntriesCallbackQueryTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1638,7 +1643,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStoreGetEntriesCallbackQueryClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetEntriesCallbackQueryClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1674,7 +1679,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStoreGetEntriesCallbackSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetEntriesCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1715,7 +1720,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStoreGetEntriesCallbackClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetEntriesCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1753,7 +1758,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStoreGetEntriesCallbackInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetEntriesCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -1792,7 +1797,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvstoreStartTransactionCallbackCommitTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvstoreStartTransactionCallbackCommitTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1828,7 +1833,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvstoreStartTransactionCallbackRollbackTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvstoreStartTransactionCallbackRollbackTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1854,7 +1859,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvstoreStartTransactionCallbackClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvstoreStartTransactionCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1881,7 +1886,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStoreCommitCallbackClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreCommitCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1908,7 +1913,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStoreRollbackCallbackClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreRollbackCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1934,7 +1939,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStoreEnableSyncCallbackTrueTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreEnableSyncCallbackTrueTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1960,7 +1965,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStoreEnableSyncCallbackFalseTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreEnableSyncCallbackFalseTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -1986,7 +1991,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStoreEnableSyncCallbackInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreEnableSyncCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); done(); } @@ -2016,7 +2021,7 @@ describe('SingleKvStoreCallbackTest', function () { } }); } catch (e) { - console.error('SingleKvStoreRemoveDeviceDataCallbackClosedKvstoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreRemoveDeviceDataCallbackClosedKvstoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2039,7 +2044,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStoreRemoveDeviceDataCallbackInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreRemoveDeviceDataCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); done(); } @@ -2061,7 +2066,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStoreSetSyncParamCallbackSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreSetSyncParamCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -2087,7 +2092,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStoreSetSyncParamCallbackInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreSetSyncParamCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); done(); } @@ -2107,7 +2112,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStoreGetSecurityLevelCallbackSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetSecurityLevelCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -2136,7 +2141,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStoreGetSecurityLevelCallbackClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetSecurityLevelCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -2179,7 +2184,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStoreGetResultSetCallbackSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetResultSetCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -2201,7 +2206,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStoreGetResultSetCallbackInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetResultSetCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); done(); } @@ -2216,24 +2221,21 @@ describe('SingleKvStoreCallbackTest', function () { it('SingleKvStoreGetResultSetPredicatesCallbackTest', 0, async function (done) { console.log('SingleKvStoreGetResultSetPredicatesCallbackTest'); try { - let resultSet; let predicates = new dataShare.DataSharePredicates(); - await kvStore.getResultSet(predicates).then((result) => { - console.log('SingleKvStoreGetResultSetPredicatesCallbackTest getResultSet success'); - resultSet = result; - expect(true).assertTrue(); - }).catch((err) => { - console.error('SingleKvStoreGetResultSetPredicatesCallbackTest getResultSet fail ' + err`, error code is ${err.code}, message is ${err.message}`); - expect(null).assertFail(); - }); - await kvStore.closeResultSet(resultSet).then((err) => { - expect(err == undefined).assertTrue(); - }).catch((err) => { - expect(null).assertFail(); + let arr = ["name"]; + predicates.inKeys(arr); + await kvStore.getResultSet(predicates, async function (err, result) { + if (err == undefined) { + console.error('SingleKvStoreGetResultSetPredicatesCallbackTest getResultSet success'); + expect(null).assertTrue(); + } else { + console.error('SingleKvStoreGetResultSetPredicatesCallbackTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); + } }); } catch (e) { - console.error('SingleKvStoreGetResultSetPredicatesCallbackTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); + console.info('SingleKvStoreGetResultSetPredicatesCallbackTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } done(); }) @@ -2273,7 +2275,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStoreGetResultSetQueryCallbackTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetResultSetQueryCallbackTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -2304,7 +2306,7 @@ describe('SingleKvStoreCallbackTest', function () { }); }); } catch (e) { - console.error('SingleKvStoreCloseResultSetCallbackSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreCloseResultSetCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); done(); } @@ -2331,7 +2333,7 @@ describe('SingleKvStoreCallbackTest', function () { done(); }); } catch (e) { - console.error('SingleKvStoreCloseResultSetCallbackInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreCloseResultSetCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); done(); } @@ -2367,7 +2369,7 @@ describe('SingleKvStoreCallbackTest', function () { expect(resultSize == 10).assertTrue(); }) } catch (e) { - console.error('SingleKvStoreGetResultSizePromiseQueryTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetResultSizePromiseQueryTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2400,7 +2402,7 @@ describe('SingleKvStoreCallbackTest', function () { expect(null).assertFail(); }) } catch (e) { - console.error('SingleKvStoreGetResultSizeCallbackInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetResultSizeCallbackInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -2442,7 +2444,7 @@ describe('SingleKvStoreCallbackTest', function () { } }); } catch (e) { - console.error('SingleKvStoreGetResultSizeCallbackClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetResultSizeCallbackClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2484,7 +2486,7 @@ describe('SingleKvStoreCallbackTest', function () { }); console.info('SingleKvStoreGetEntriesCallbackSucTest success'); } catch (e) { - console.error('SingleKvStoreGetEntriesCallbackSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetEntriesCallbackSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); diff --git a/kv_store/test/unittest/distributedKVStore/SingleKvStoreKVPromiseJsTest.js b/kv_store/test/unittest/distributedKVStore/SingleKvStoreKVPromiseJsTest.js index 2662d750..dcd1f01c 100644 --- a/kv_store/test/unittest/distributedKVStore/SingleKvStoreKVPromiseJsTest.js +++ b/kv_store/test/unittest/distributedKVStore/SingleKvStoreKVPromiseJsTest.js @@ -127,11 +127,11 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStorePutStringPromiseInvalidArgsTest put success'); expect(null).assertFail(); }).catch((error) => { - console.error('SingleKvStorePutStringPromiseInvalidArgsTest put error' + `, error code is ${error.code}, message is ${error.message}`); + console.error('SingleKvStorePutStringPromiseInvalidArgsTest put fail' + `, error code is ${error.code}, message is ${error.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutStringPromiseInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutStringPromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -157,11 +157,11 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStorePutStringPromiseClosedKVStoreTest put success'); expect(null).assertFail(); }).catch((error) => { - console.error('SingleKvStorePutStringPromiseClosedKVStoreTest put error' + `, error code is ${error.code}, message is ${error.message}`); + console.error('SingleKvStorePutStringPromiseClosedKVStoreTest put fail' + `, error code is ${error.code}, message is ${error.message}`); expect(error.code == 15100005).assertTrue(); }); } catch (e) { - console.error('SingleKvStorePutStringPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutStringPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -180,11 +180,11 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStorePutStringPromiseSucTest put success'); expect(data == undefined).assertTrue(); }).catch((error) => { - console.error('SingleKvStorePutStringPromiseSucTest put error' + `, error code is ${error.code}, message is ${error.message}`); + console.error('SingleKvStorePutStringPromiseSucTest put fail' + `, error code is ${error.code}, message is ${error.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutStringPromiseSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutStringPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -234,7 +234,7 @@ describe('SingleKvStorePromiseTest', function () { expect(error.code == 401).assertTrue(); }); } catch (e) { - console.error('SingleKvStoreGetStringPromiseInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetStringPromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -251,7 +251,7 @@ describe('SingleKvStorePromiseTest', function () { await kvStore.put(KEY_TEST_STRING_ELEMENT, VALUE_TEST_STRING_ELEMENT).then(async (data) => { expect(data == undefined).assertTrue(); }).catch((error) => { - console.error('SingleKvStoreGetStringPromiseClosedKVStoreTest put error' + `, error code is ${error.code}, message is ${error.message}`); + console.error('SingleKvStoreGetStringPromiseClosedKVStoreTest put fail' + `, error code is ${error.code}, message is ${error.message}`); expect(null).assertFail(); }); await kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID).then(async () => { @@ -267,7 +267,7 @@ describe('SingleKvStorePromiseTest', function () { expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('SingleKvStoreGetStringPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetStringPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -286,11 +286,11 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreGetStringPromiseNoPutTest get success'); expect(null).assertFail(); }).catch((err) => { - console.error('SingleKvStoreGetStringPromiseNoPutTest get fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreGetStringPromiseNoPutTest get fail' + `, error code is ${err.code}, message is ${err.message}`); expect(err.code == 15100004).assertTrue(); }); } catch (e) { - console.error('SingleKvStoreGetStringPromiseNoPutTest get e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetStringPromiseNoPutTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -309,11 +309,11 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStorePutIntPromiseSucTest put success'); expect(data == undefined).assertTrue(); }).catch((err) => { - console.error('SingleKvStorePutIntPromiseSucTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutIntPromiseSucTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutIntPromiseSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutIntPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -336,15 +336,15 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStorePutIntPromiseMaxTest get success'); expect(intValue == data).assertTrue(); }).catch((err) => { - console.error('SingleKvStorePutIntPromiseMaxTest get fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutIntPromiseMaxTest get fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('SingleKvStorePutIntPromiseMaxTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutIntPromiseMaxTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutIntPromiseMaxTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutIntPromiseMaxTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -367,15 +367,15 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStorePutIntPromiseMinTest get success'); expect(intValue == data).assertTrue(); }).catch((err) => { - console.error('SingleKvStorePutIntPromiseMinTest get fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutIntPromiseMinTest get fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('SingleKvStorePutIntPromiseMinTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutIntPromiseMinTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutIntPromiseMinTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutIntPromiseMinTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -397,15 +397,15 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreGetIntPromiseSucTest get success'); expect(VALUE_TEST_INT_ELEMENT == data).assertTrue(); }).catch((err) => { - console.error('SingleKvStoreGetIntPromiseSucTest get fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreGetIntPromiseSucTest get fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('SingleKvStoreGetIntPromiseSucTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreGetIntPromiseSucTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreGetIntPromiseSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetIntPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -424,11 +424,11 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStorePutBoolPromiseSucTest put success'); expect(data == undefined).assertTrue(); }).catch((err) => { - console.error('SingleKvStorePutBoolPromiseSucTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutBoolPromiseSucTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutBoolPromiseSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutBoolPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -451,15 +451,15 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreGetBoolPromiseSucTest get success'); expect(boolValue == data).assertTrue(); }).catch((err) => { - console.error('SingleKvStoreGetBoolPromiseSucTest get fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreGetBoolPromiseSucTest get fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('SingleKvStoreGetBoolPromiseSucTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreGetBoolPromiseSucTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreGetBoolPromiseSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetBoolPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -478,11 +478,11 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStorePutFloatPromiseSucTest put success'); expect(data == undefined).assertTrue(); }).catch((err) => { - console.error('SingleKvStorePutFloatPromiseSucTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutFloatPromiseSucTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutFloatPromiseSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutFloatPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -505,15 +505,15 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreGetFloatPromiseSucTest get success'); expect(floatValue == data).assertTrue(); }).catch((err) => { - console.error('SingleKvStoreGetFloatPromiseSucTest get fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreGetFloatPromiseSucTest get fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('SingleKvStoreGetFloatPromiseSucTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreGetFloatPromiseSucTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreGetFloatPromiseSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetFloatPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -536,15 +536,15 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreDeleteStringPromiseSucTest delete success'); expect(data == undefined).assertTrue(); }).catch((err) => { - console.error('SingleKvStoreDeleteStringPromiseSucTest delete fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreDeleteStringPromiseSucTest delete fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('SingleKvStoreDeleteStringPromiseSucTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreDeleteStringPromiseSucTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreDeleteStringPromiseSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreDeleteStringPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -590,7 +590,7 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreDeleteStringPromiseSucTest put success'); expect(true).assertTrue(); }).catch((err) => { - console.error('SingleKvStoreDeleteStringPromiseClosedKVStoreTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreDeleteStringPromiseClosedKVStoreTest put fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); await kvManager.closeKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID).then(async () => { @@ -604,11 +604,11 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreDeleteStringPromiseSucTest delete success'); expect(null).assertFail(); }).catch((err) => { - console.error('SingleKvStoreDeleteStringPromiseSucTest delete fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreDeleteStringPromiseSucTest delete fail' + `, error code is ${err.code}, message is ${err.message}`); expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('SingleKvStorePutStringPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreDeleteStringPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -626,23 +626,16 @@ describe('SingleKvStorePromiseTest', function () { let predicates = new dataShare.DataSharePredicates(); let arr = ["name"]; predicates.inKeys(arr); - await kvStore.put("name", "Bob").then(async (data) => { - console.log('SingleKvStoreDeletePredicatesPromiseSucTest put success'); - expect(data == undefined).assertTrue(); - await kvStore.delete(predicates).then((data) => { - console.log('SingleKvStoreDeletePredicatesPromiseSucTest delete success'); - expect(data == undefined).assertTrue(); - }).catch((err) => { - console.error('SingleKvStoreDeletePredicatesPromiseSucTest delete fail ' + `, error code is ${err.code}, message is ${err.message}`); - expect(null).assertFail(); - }); + await kvStore.delete(predicates).then((data) => { + console.error('SingleKvStoreDeletePredicatesPromiseSucTest delete success'); + expect(null).assertFail(); }).catch((err) => { - console.error('SingleKvStoreDeletePredicatesPromiseSucTest put fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreDeletePredicatesPromiseSucTest delete fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreDeletePredicatesPromiseSucTest put e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); + console.log('SingleKvStoreDeletePredicatesPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } done(); }) @@ -671,13 +664,15 @@ describe('SingleKvStorePromiseTest', function () { }); }) await kvStore.delete(predicates).then((data) => { + console.error('SingleKvStoreDeletePredicatesPromiseClosedKVStoreTest delete success'); expect(null).assertFail(); }).catch((err) => { - expect(err.code == 15100005).assertTrue(); + console.error('SingleKvStoreDeletePredicatesPromiseClosedKVStoreTest delete fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreDeletePredicatesPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); + console.log('SingleKvStoreDeletePredicatesPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } done(); }) @@ -725,11 +720,11 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreSetSyncRangePromiseDisjointTest setSyncRange success'); expect(err == undefined).assertTrue(); }).catch((err) => { - console.error('SingleKvStoreSetSyncRangePromiseDisjointTest delete fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreSetSyncRangePromiseDisjointTest setSyncRange fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreSetSyncRangePromiseDisjointTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreSetSyncRangePromiseDisjointTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -750,11 +745,11 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreSetSyncRangePromiseJointTest setSyncRange success'); expect(err == undefined).assertTrue(); }).catch((err) => { - console.error('SingleKvStoreSetSyncRangePromiseJointTest delete fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreSetSyncRangePromiseJointTest setSyncRange fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreSetSyncRangePromiseJointTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreSetSyncRangePromiseJointTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -775,11 +770,11 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreSetSyncRangePromiseSameTest setSyncRange success'); expect(err == undefined).assertTrue(); }).catch((err) => { - console.error('SingleKvStoreSetSyncRangePromiseSameTest delete fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreSetSyncRangePromiseSameTest setSyncRange fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreSetSyncRangePromiseSameTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreSetSyncRangePromiseSameTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -801,7 +796,7 @@ describe('SingleKvStorePromiseTest', function () { expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreSetSyncRangePromiseSameTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreSetSyncRangePromiseSameTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -827,15 +822,15 @@ describe('SingleKvStorePromiseTest', function () { expect(entrys.length == 10).assertTrue(); expect(entrys[0].value.value == 'batch_test_string_value').assertTrue(); }).catch((err) => { - console.error('SingleKvStorePutBatchPromiseStringTest getEntries fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutBatchPromiseStringTest getEntries fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('SingleKvStorePutBatchPromiseStringTest putBatch fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutBatchPromiseStringTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutBatchPromiseStringTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutBatchPromiseStringTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -871,15 +866,15 @@ describe('SingleKvStorePromiseTest', function () { expect(entrys.length == 10).assertTrue(); expect(entrys[0].value.value == 222).assertTrue(); }).catch((err) => { - console.error('SingleKvStorePutBatchPromiseIntegerTest getEntries fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutBatchPromiseIntegerTest getEntries fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('SingleKvStorePutBatchPromiseIntegerTest putBatch fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutBatchPromiseIntegerTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutBatchPromiseIntegerTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutBatchPromiseIntegerTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -915,15 +910,15 @@ describe('SingleKvStorePromiseTest', function () { expect(entrys.length == 10).assertTrue(); expect(entrys[0].value.value == 2.0).assertTrue(); }).catch((err) => { - console.error('SingleKvStorePutBatchPromiseFloatTest getEntries fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutBatchPromiseFloatTest getEntries fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('SingleKvStorePutBatchPromiseFloatTest putBatch fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutBatchPromiseFloatTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutBatchPromiseFloatTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutBatchPromiseFloatTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -959,15 +954,15 @@ describe('SingleKvStorePromiseTest', function () { expect(entrys.length == 10).assertTrue(); expect(entrys[0].value.value == 2.00).assertTrue(); }).catch((err) => { - console.error('SingleKvStorePutBatchPromiseDoubleTest getEntries fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutBatchPromiseDoubleTest getEntries fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('SingleKvStorePutBatchPromiseDoubleTest putBatch fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutBatchPromiseDoubleTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutBatchPromiseDoubleTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutBatchPromiseDoubleTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1004,15 +999,15 @@ describe('SingleKvStorePromiseTest', function () { expect(entrys.length == 10).assertTrue(); expect(entrys[0].value.value == bo).assertTrue(); }).catch((err) => { - console.error('SingleKvStorePutBatchPromiseBooleanTest getEntries fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutBatchPromiseBooleanTest getEntries fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('SingleKvStorePutBatchPromiseBooleanTest putBatch fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutBatchPromiseBooleanTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutBatchPromiseBooleanTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutBatchPromiseBooleanTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1049,15 +1044,15 @@ describe('SingleKvStorePromiseTest', function () { expect(entrys.length == 10).assertTrue(); expect(entrys[0].value.value.toString() == arr.toString()).assertTrue(); }).catch((err) => { - console.error('SingleKvStorePutBatchPromiseByteArrayTest getEntries fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutBatchPromiseByteArrayTest getEntries fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); }).catch((err) => { - console.error('SingleKvStorePutBatchPromiseByteArrayTest putBatch fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutBatchPromiseByteArrayTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutBatchPromiseBooleanTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutBatchPromiseByteArrayTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1081,20 +1076,17 @@ describe('SingleKvStorePromiseTest', function () { values.push(vb2); console.info('SingleKvStorePutBatchValuePromiseUint8ArrayTest values: ' + JSON.stringify(values)); await kvStore.putBatch(values).then(async (err) => { - console.info('SingleKvStorePutBatchValuePromiseUint8ArrayTest putBatch success'); - expect(err == undefined).assertTrue(); - var query = new factory.Query(); - query.prefixKey("name_"); - await kvStore.getEntries(query).then((entrys) => { - expect(entrys.length == 2).assertTrue(); - done(); - }); + console.error('SingleKvStorePutBatchValuePromiseUint8ArrayTest putBatch success'); + expect(null).assertFail(); + }).catch((err) => { + console.error('SingleKvStorePutBatchValuePromiseUint8ArrayTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutBatchValuePromiseUint8ArrayTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); - done(); + console.info('SingleKvStorePutBatchValuePromiseUint8ArrayTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } + done(); }) /** @@ -1113,24 +1105,15 @@ describe('SingleKvStorePromiseTest', function () { values.push(vb2); console.info('SingleKvStorePutBatchValuePromiseStringTest values: ' + JSON.stringify(values)); await kvStore.putBatch(values).then(async (err) => { - console.info('SingleKvStorePutBatchValuePromiseUint8ArrayTest putBatch success'); - expect(err == undefined).assertTrue(); - var query = new factory.Query(); - query.prefixKey("name_"); - await kvStore.getEntries(query).then((entrys) => { - expect(entrys.length == 2).assertTrue(); - done(); - }).catch((err) => { - console.log('SingleKvStorePutBatchValueTest delete fail ' + err); - expect(null).assertFail(); - }); + console.error('SingleKvStorePutBatchValuePromiseStringTest putBatch success'); + expect(null).assertFail(); }).catch((err) => { - console.log('SingleKvStorePutBatchValueTest delete fail ' + err); + console.error('SingleKvStorePutBatchValuePromiseStringTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutBatchValuePromiseStringTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); + console.info('SingleKvStorePutBatchValuePromiseStringTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } done(); }) @@ -1151,19 +1134,17 @@ describe('SingleKvStorePromiseTest', function () { values.push(vb2); values.push(vb3); await kvStore.putBatch(values).then(async (err) => { - expect(err == undefined).assertTrue(); - var query = new factory.Query(); - query.prefixKey("name_"); - await kvStore.getEntries(query).then((entrys) => { - expect(entrys.length == 3).assertTrue(); - done(); - }); + console.info('SingleKvStorePutBatchValuePromiseNumbersTest putBatch success'); + expect(null).assertFail(); + }).catch((err) => { + console.error('SingleKvStorePutBatchValuePromiseNumbersTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutBatchValuePromiseTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); - done(); + console.error('SingleKvStorePutBatchValuePromiseNumbersTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } + done(); }) /** @@ -1180,17 +1161,15 @@ describe('SingleKvStorePromiseTest', function () { values.push(vb1); values.push(vb2); await kvStore.putBatch(values).then(async (err) => { - expect(err == undefined).assertTrue(); - var query = new factory.Query(); - query.prefixKey("name_"); - await kvStore.getEntries(query).then((entrys) => { - expect(entrys.length == 2).assertTrue(); - done(); - }); + console.error('SingleKvStorePutBatchValuePromiseBooleanTest putBatch success'); + expect(null).assertFail(); + }).catch((err) => { + console.error('SingleKvStorePutBatchValuePromiseBooleanTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutBatchValuePromiseTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); + console.info('SingleKvStorePutBatchValuePromiseBooleanTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); done(); } }) @@ -1211,19 +1190,15 @@ describe('SingleKvStorePromiseTest', function () { values.push(vb2); console.info('SingleKvStorePutBatchValuePromiseNullTest values: ' + JSON.stringify(values)); await kvStore.putBatch(values).then(async (err) => { - console.info('SingleKvStorePutBatchValuePromiseNullTest putBatch success'); - expect(err == undefined).assertTrue(); - var query = new factory.Query(); - query.prefixKey("name_"); - await kvStore.getEntries(query).then((entrys) => { - expect(entrys.length == 2).assertTrue(); - expect(entrys[0].value == null).assertTrue(); - done(); - }); + console.error('SingleKvStorePutBatchValuePromiseNullTest putBatch success'); + expect(null).assertFail(); + }).catch((err) => { + console.error('SingleKvStorePutBatchValuePromiseNullTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutBatchValuePromiseNullTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); + console.info('SingleKvStorePutBatchValuePromiseNullTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); done(); } }) @@ -1242,7 +1217,7 @@ describe('SingleKvStorePromiseTest', function () { expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutBatchValuePromiseNullTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStorePutBatchValuePromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -1269,13 +1244,15 @@ describe('SingleKvStorePromiseTest', function () { values.push(vb1); values.push(vb2); await kvStore.putBatch(values).then(() => { + console.error('SingleKvStorePutBatchValuePromiseClosedKvstoreTest putBatch success'); expect(null).assertFail(); }).catch((err) => { - expect(err.code == 15100005).assertTrue(); + console.error('SingleKvStorePutBatchValuePromiseClosedKvstoreTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStorePutBatchValuePromiseNullTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); + console.info('SingleKvStorePutBatchValuePromiseClosedKvstoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } done(); }) @@ -1314,7 +1291,7 @@ describe('SingleKvStorePromiseTest', function () { expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreDeleteBatchPromiseSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreDeleteBatchPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1357,7 +1334,7 @@ describe('SingleKvStorePromiseTest', function () { expect(err.code == 401).assertTrue(); }); } catch (e) { - console.error('SingleKvStoreDeleteBatchPromiseInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreDeleteBatchPromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1405,7 +1382,7 @@ describe('SingleKvStorePromiseTest', function () { expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('SingleKvStoreDeleteBatchPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreDeleteBatchPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1451,7 +1428,7 @@ describe('SingleKvStorePromiseTest', function () { expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreGetEntriesPromiseQueryTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetEntriesPromiseQueryTest fail' + `, error code is ${e.code}, message is ${e.message}`); console.log("errr3") expect(null).assertFail(); } @@ -1499,7 +1476,7 @@ describe('SingleKvStorePromiseTest', function () { expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('SingleKvStoreGetEntriesPromiseQueryClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetEntriesPromiseQueryClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1541,7 +1518,7 @@ describe('SingleKvStorePromiseTest', function () { expect(error == undefined).assertTrue(); }); } catch (e) { - console.error('SingleKvStoreGetEntriesPromiseSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetEntriesPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1586,7 +1563,7 @@ describe('SingleKvStorePromiseTest', function () { expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('SingleKvStoreGetEntriesPromiseSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetEntriesPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1625,7 +1602,7 @@ describe('SingleKvStorePromiseTest', function () { expect(err.code == 401).assertTrue(); }); } catch (e) { - console.error('SingleKvStoreGetEntriesPromiseInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetEntriesPromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -1933,11 +1910,11 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreRemoveDeviceDataPromiseInvalidArgsTest removeDeviceData success'); expect(null).assertFail(); }).catch((err) => { - console.error('SingleKvStoreRemoveDeviceDataPromiseInvalidArgsTest removeDeviceData fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreRemoveDeviceDataPromiseInvalidArgsTest removeDeviceData fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreRemoveDeviceDataPromiseInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreRemoveDeviceDataPromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -1966,13 +1943,15 @@ describe('SingleKvStorePromiseTest', function () { }) var deviceid = 'no_exist_device_id'; await kvStore.removeDeviceData(deviceid).then(() => { + console.error('SingleKvStoreRemoveDeviceDataPromiseClosedKVStoreTest removeDeviceData success'); expect(null).assertFail(); }).catch((err) => { + console.info('SingleKvStoreRemoveDeviceDataPromiseClosedKVStoreTest removeDeviceData fail' + `, error code is ${err.code}, message is ${err.message}`); expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('SingleKvStoreRemoveDeviceDataPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreRemoveDeviceDataPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2013,7 +1992,7 @@ describe('SingleKvStorePromiseTest', function () { expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreSetSyncParamPromiseInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreSetSyncParamPromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -2058,11 +2037,11 @@ describe('SingleKvStorePromiseTest', function () { await kvStore.getSecurityLevel().then((data) => { expect(null).assertFail(); }).catch((err) => { - console.error('SingleKvStoreGetSecurityLevelPromiseSucTest getSecurityLevel fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreGetSecurityLevelPromiseSucTest getSecurityLevel fail' + `, error code is ${err.code}, message is ${err.message}`); expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('SingleKvStoreGetSecurityLevelPromiseSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetSecurityLevelPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2107,7 +2086,7 @@ describe('SingleKvStorePromiseTest', function () { expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreGetResultSetPromiseSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetResultSetPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2127,11 +2106,11 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreGetResultSetPromiseInvalidArgsTest getResultSet success'); expect(null).assertFail(); }).catch((err) => { - console.error('SingleKvStoreGetResultSetPromiseInvalidArgsTest getResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreGetResultSetPromiseInvalidArgsTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreGetResultSetPromiseInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetResultSetPromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -2162,11 +2141,11 @@ describe('SingleKvStorePromiseTest', function () { await kvStore.getResultSet('batch_test_string_key').then((result) => { expect(null).assertFail(); }).catch((err) => { - console.error('SingleKvStoreGetResultSetPromiseClosedKVStoreTest getResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreGetResultSetPromiseClosedKVStoreTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('SingleKvStoreGetResultSetPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetResultSetPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2198,7 +2177,7 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreGetResultSetPromiseQueryTest putBatch success'); expect(err == undefined).assertTrue(); }).catch((err) => { - console.error('SingleKvStorePutBatchPromiseStringTest putBatch fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStorePutBatchPromiseStringTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); var query = new factory.Query(); @@ -2208,18 +2187,18 @@ describe('SingleKvStorePromiseTest', function () { resultSet = result; expect(resultSet.getCount() == 10).assertTrue(); }).catch((err) => { - console.error('SingleKvStoreGetResultSetPromiseQueryTest getResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreGetResultSetPromiseQueryTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); await kvStore.closeResultSet(resultSet).then((err) => { console.info('SingleKvStoreGetResultSetPromiseQueryTest closeResultSet success'); expect(err == undefined).assertTrue(); }).catch((err) => { - console.error('SingleKvStoreGetResultSetPromiseQueryTest closeResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreGetResultSetPromiseQueryTest closeResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreGetResultSetPromiseQueryTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetResultSetPromiseQueryTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2266,20 +2245,20 @@ describe('SingleKvStorePromiseTest', function () { expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('SingleKvStoreGetResultSetQueryPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetResultSetQueryPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); }) /** - * @tc.name SingleKvStoreGetResultSetPredicatesPromiseSucTest - * @tc.desc Test Js Api SingleKvStore.GetResultSet() with predicates success + * @tc.name SingleKvStoreGetResultSetPredicatesPromiseTest + * @tc.desc Test Js Api SingleKvStore.GetResultSet() with predicates * @tc.type: FUNC * @tc.require: issueNumber */ - it('SingleKvStoreGetResultSetPredicatesPromiseSucTest', 0, async function (done) { - console.log('SingleKvStoreGetResultSetPredicatesPromiseSucTest'); + it('SingleKvStoreGetResultSetPredicatesPromiseTest', 0, async function (done) { + console.log('SingleKvStoreGetResultSetPredicatesPromiseTest'); try { let entries = []; let resultSet; @@ -2303,18 +2282,15 @@ describe('SingleKvStorePromiseTest', function () { let predicates = new dataShare.DataSharePredicates(); predicates.prefixKey("name_"); await kvStore.getResultSet(predicates).then((result) => { - resultSet = result; - expect(resultSet.getCount() == 10).assertTrue(); - }).catch((err) => { + console.error('SingleKvStoreGetResultSetPredicatesPromiseTest getResultSet success'); expect(null).assertFail(); - }); - await kvStore.closeResultSet(resultSet).then((err) => { - expect(err == undefined).assertTrue(); }).catch((err) => { + console.error('SingleKvStoreGetResultSetPredicatesPromiseTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - expect(null).assertFail(); + console.info('SingleKvStoreGetResultSetPredicatesPromiseTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } done(); }) @@ -2349,19 +2325,21 @@ describe('SingleKvStorePromiseTest', function () { await kvManager.deleteKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID).then(() => { expect(true).assertTrue(); }).catch((err) => { - console.error('deleteKVStore err ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreGetResultSetPredicatesPromiseClosedKVStoreTest deleteKVStore fail' + `, error code is ${err.code}, message is ${err.message}`); }); }); let predicates = new dataShare.DataSharePredicates(); predicates.prefixKey("batch_test"); await kvStore.getResultSet(predicates).then((result) => { + console.error('SingleKvStoreGetResultSetPredicatesPromiseClosedKVStoreTest getResultSet success'); expect(null).assertFail(); }).catch((err) => { - expect(err.code == 15100005).assertTrue(); + console.error('SingleKvStoreGetResultSetPredicatesPromiseClosedKVStoreTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); + expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreGetResultSetPredicatesPromiseClosedKVStoreTest e ' + `, error code is ${e.code}, message is ${e.message}`); - expect(null).assertFail(); + console.info('SingleKvStoreGetResultSetPredicatesPromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); + expect(e.code == 202).assertTrue(); } done(); }) @@ -2381,18 +2359,18 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreCloseResultSetPromiseSucTest getResultSet success'); resultSet = result; }).catch((err) => { - console.error('SingleKvStoreCloseResultSetPromiseSucTest getResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreCloseResultSetPromiseSucTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); await kvStore.closeResultSet(resultSet).then((err) => { console.info('SingleKvStoreCloseResultSetPromiseSucTest closeResultSet success'); expect(err == undefined).assertTrue(); }).catch((err) => { - console.error('SingleKvStoreCloseResultSetPromiseSucTest closeResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreCloseResultSetPromiseSucTest closeResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreCloseResultSetPromiseSucTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreCloseResultSetPromiseSucTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2409,10 +2387,10 @@ describe('SingleKvStorePromiseTest', function () { await kvStore.closeResultSet().then(() => { expect(null).assertFail(); }).catch((err) => { - console.error('SingleKvStoreCloseResultSetPromiseInvalidArgsTest closeResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreCloseResultSetPromiseInvalidArgsTest closeResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); }); } catch (e) { - console.error('SingleKvStoreCloseResultSetPromiseInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreCloseResultSetPromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -2442,7 +2420,7 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreGetResultSizePromiseQueryTest putBatch success'); expect(err == undefined).assertTrue(); }).catch((err) => { - console.error('SingleKvStorePutBatchPromiseStringTest putBatch fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreGetResultSizePromiseQueryTest putBatch fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); var query = new factory.Query(); @@ -2451,11 +2429,11 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreGetResultSizePromiseQueryTest getResultSet success'); expect(resultSize == 10).assertTrue(); }).catch((err) => { - console.error('SingleKvStoreGetResultSizePromiseQueryTest getResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreGetResultSizePromiseQueryTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreGetResultSizePromiseQueryTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetResultSizePromiseQueryTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2492,7 +2470,7 @@ describe('SingleKvStorePromiseTest', function () { expect(null).assertFail(); }); } catch (e) { - console.error('SingleKvStoreGetResultSizePromiseInvalidArgsTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetResultSizePromiseInvalidArgsTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(e.code == 401).assertTrue(); } done(); @@ -2527,7 +2505,7 @@ describe('SingleKvStorePromiseTest', function () { await kvManager.deleteKVStore(TEST_BUNDLE_NAME, TEST_STORE_ID).then(() => { expect(true).assertTrue(); }).catch((err) => { - console.error('deleteKVStore err ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreGetResultSizePromiseClosedKVStoreTest deleteKVStore fail' + `, error code is ${err.code}, message is ${err.message}`); }); }); var query = new factory.Query(); @@ -2536,11 +2514,11 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreGetResultSizePromiseClosedKVStoreTest getResultSet success'); expect(null).assertFail(); }).catch((err) => { - console.error('SingleKvStoreGetResultSizePromiseClosedKVStoreTest getResultSet fail ' + `, error code is ${err.code}, message is ${err.message}`); + console.error('SingleKvStoreGetResultSizePromiseClosedKVStoreTest getResultSet fail' + `, error code is ${err.code}, message is ${err.message}`); expect(err.code == 15100005).assertTrue(); }); } catch (e) { - console.error('SingleKvStoreGetResultSizePromiseQueryTest e ' + `, error code is ${e.code}, message is ${e.message}`); + console.error('SingleKvStoreGetResultSizePromiseClosedKVStoreTest fail' + `, error code is ${e.code}, message is ${e.message}`); expect(null).assertFail(); } done(); @@ -2565,7 +2543,7 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreChangeNotificationPromiseTest getInsertEntries' + JSON.stringify(insertEntries)); expect(insertEntries != null).assertTrue(); }).catch((error) => { - console.error('SingleKvStoreChangeNotificationPromiseTest can NOT getInsertEntries, fail:' + `, error code is ${error.code}, message is ${error.message}`); + console.error('SingleKvStoreChangeNotificationPromiseTest getInsertEntries fail' + `, error code is ${error.code}, message is ${error.message}`); expect(null).assertFail(); }); done(); @@ -2593,7 +2571,7 @@ describe('SingleKvStorePromiseTest', function () { console.info('SingleKvStoreChangeNotificationPromisePutTest getUpdateEntries' + JSON.stringify(updateEntries)); expect(updateEntries != null).assertTrue(); }).catch((error) => { - console.error('SingleKvStoreChangeNotificationPromisePutTest can NOT getUpdateEntries, fail:' + `, error code is ${error.code}, message is ${error.message}`); + console.error('SingleKvStoreChangeNotificationPromisePutTest getUpdateEntries fail' + `, error code is ${error.code}, message is ${error.message}`); expect(null).assertFail(); }); done(); @@ -2618,10 +2596,10 @@ describe('SingleKvStorePromiseTest', function () { }); }); await getdeleteEntries.then(function (deleteEntries) { - console.info('SingleKvStoreChangeNotificationPromiseDeleteTest deleteEntries' + JSON.stringify(getdeleteEntries)); + console.info('SingleKvStoreChangeNotificationPromiseDeleteTest getdeleteEntries' + JSON.stringify(getdeleteEntries)); expect(deleteEntries != null).assertTrue(); }).catch((error) => { - console.error('SingleKvStoreChangeNotificationPromiseDeleteTest can NOT getdeleteEntries, fail:' + `, error code is ${error.code}, message is ${error.message}`); + console.error('SingleKvStoreChangeNotificationPromiseDeleteTest getdeleteEntries fail' + `, error code is ${error.code}, message is ${error.message}`); expect(null).assertFail(); }); done(); diff --git a/preferences/frameworks/native/src/task_pool.cpp b/preferences/frameworks/native/src/task_pool.cpp index d33d8fa8..4a160983 100644 --- a/preferences/frameworks/native/src/task_pool.cpp +++ b/preferences/frameworks/native/src/task_pool.cpp @@ -17,6 +17,7 @@ #include #include "logger.h" #include "preferences_errno.h" +#include "pthread.h" namespace OHOS { namespace NativePreferences { @@ -231,7 +232,14 @@ int TaskPool::SpawnThreads(bool isStart) int limits = isStart ? minThreads_ : (curThreads_ + 1); while (curThreads_ < limits) { ++curThreads_; - std::thread thread([this]() { TaskWorker(); }); + std::thread thread([this]() { +#if defined(MAC_PLATFORM) + pthread_setname_np("Preferences_TaskWorker"); +#else + pthread_setname_np(pthread_self(), "Preferences_TaskWorker"); +#endif + TaskWorker(); + }); LOG_INFO("Spawn task pool threads, min:%d cur:%d max:%d", minThreads_, curThreads_, maxThreads_); thread.detach(); } diff --git a/preferences/interfaces/inner_api/BUILD.gn b/preferences/interfaces/inner_api/BUILD.gn index f9f84788..1384f973 100644 --- a/preferences/interfaces/inner_api/BUILD.gn +++ b/preferences/interfaces/inner_api/BUILD.gn @@ -41,6 +41,8 @@ ohos_shared_library("native_preferences") { "${preferences_native_path}/src/task_queue.cpp", ] + innerapi_tags = [ "platformsdk" ] + configs = [ ":native_preferences_config" ] if (is_mingw || is_mac) { diff --git a/preferences/interfaces/inner_api/include/preferences.h b/preferences/interfaces/inner_api/include/preferences.h index b1eb1786..6e37dcb5 100644 --- a/preferences/interfaces/inner_api/include/preferences.h +++ b/preferences/interfaces/inner_api/include/preferences.h @@ -26,58 +26,268 @@ namespace OHOS { namespace NativePreferences { + +/** + * The function class of the preference. Various operations on preferences instances are provided in this class. + */ class Preferences { public: virtual ~Preferences() { } + /** + * @brief The constant Indicates the maximum length of the key in the preferences. + */ static const unsigned int MAX_KEY_LENGTH = 80; + /** + * @brief The constant Indicates the maximum length of the value in the preferences. + */ static const unsigned int MAX_VALUE_LENGTH = 8 * 1024; + /** + * @brief Obtains the value of a preferences. + * + * This function is used to get the value of the corresponding key in the preference. + * + * @param key Indicates the key of the preferences. It cannot be empty. + * @param defValue Indicates the default value of the preferences. + * + * @return Returns the value matching the specified key if it is found; returns the default value otherwise. + */ virtual PreferencesValue Get(const std::string &key, const PreferencesValue &defValue) = 0; + /** + * @brief Sets a value for the key in the preferences. + * + * This function is used to set or update the value of the corresponding key in the preferences. + * + * @param key Indicates the key of the preferences. It cannot be empty. + * @param value Indicates the default value of the preferences. + * + * @return Returns 0 for success, others for failure. + */ virtual int Put(const std::string &key, const PreferencesValue &value) = 0; + /** + * @brief Obtains the int value of a preferences. + * + * This function is used to get an int value of the corresponding key in the preference. + * + * @param key Indicates the key of the preferences. It cannot be empty. + * @param defValue Indicates the default value of the preferences. + * + * @return Returns a int value matching the specified key if it is found; returns the default value otherwise. + */ virtual int GetInt(const std::string &key, const int &defValue = {}) = 0; + /** + * @brief Obtains the string value of a preferences. + * + * This function is used to get a string value of the corresponding key in the preference. + * + * @param key Indicates the key of the preferences. It cannot be empty. + * @param defValue Indicates the default value of the preferences. + * + * @return Returns a string value matching the specified key if it is found; returns the default value otherwise. + */ virtual std::string GetString(const std::string &key, const std::string &defValue = {}) = 0; + /** + * @brief Obtains the bool value of a preferences. + * + * This function is used to get a bool value of the corresponding key in the preference. + * + * @param key Indicates the key of the preferences. It cannot be empty. + * @param defValue Indicates the default value of the preferences. + * + * @return Returns a bool value matching the specified key if it is found; returns the default value otherwise. + */ virtual bool GetBool(const std::string &key, const bool &defValue = {}) = 0; + /** + * @brief Obtains the float value of a preferences. + * + * This function is used to get a float value of the corresponding key in the preference. + * + * @param key Indicates the key of the preferences. It cannot be empty. + * @param defValue Indicates the default value of the preferences. + * + * @return Returns a float value matching the specified key if it is found; returns the default value otherwise. + */ virtual float GetFloat(const std::string &key, const float &defValue = {}) = 0; + /** + * @brief Obtains the double value of a preferences. + * + * This function is used to get a double value of the corresponding key in the preference. + * + * @param key Indicates the key of the preferences. It cannot be empty. + * @param defValue Indicates the default value of the preferences. + * + * @return Returns a double value matching the specified key if it is found; returns the default value otherwise. + */ virtual double GetDouble(const std::string &key, const double &defValue = {}) = 0; + /** + * @brief Obtains the long value of a preferences. + * + * This function is used to get a long value of the corresponding key in the preference. + * + * @param key Indicates the key of the preferences. It cannot be empty. + * @param defValue Indicates the default value of the preferences. + * + * @return Returns a long value matching the specified key if it is found; returns the default value otherwise. + */ virtual int64_t GetLong(const std::string &key, const int64_t &defValue = {}) = 0; + /** + * @brief Obtains all the keys and values of a preferences. + * + * This function is used to get all keys and values in an object. + * + * @return Returns a map, the key is string type and the value is PreferencesValue type. + */ virtual std::map GetAll() = 0; + /** + * @brief Checks whether contains a preferences matching a specified key. + * + * This function is used to Checks whether contains a preferences matching a specified key. + * + * @param key Indicates the key of the preferences. It cannot be empty. + * + * @return Returning true means it contains, false means it doesn't. + */ virtual bool HasKey(const std::string &key) = 0; + /** + * @brief Put or update an int value of a preferences. + * + * This function is used to put or update an int value of the corresponding key in the preference. + * + * @param key Indicates the key of the preferences. It cannot be empty. + * @param value Indicates the value of preferences to put or update. + * + * @return Returns 0 for success, others for failure. + */ virtual int PutInt(const std::string &key, int value) = 0; + /** + * @brief Put or update an string value for the key. + * + * This function is used to put or update a string value of the corresponding key in the preference. + * + * @param key Indicates the key of the preferences. It cannot be empty. + * @param value Indicates the value of preferences to put or update. + * + * @return Returns 0 for success, others for failure. + */ virtual int PutString(const std::string &key, const std::string &value) = 0; + /** + * @brief Put or update bool string value for the key. + * + * This function is used to put or update a bool value of the corresponding key in the preference. + * + * @param key Indicates the key of the preferences. It cannot be empty. + * @param value Indicates the value of preferences to put or update. + * + * @return Returns 0 for success, others for failure. + */ virtual int PutBool(const std::string &key, bool value) = 0; + /** + * @brief Put or update an long value for the key. + * + * This function is used to put or update a long value of the corresponding key in the preference. + * + * @param key Indicates the key of the preferences. It cannot be empty. + * @param value Indicates the value of preferences to put or update. + * + * @return Returns 0 for success, others for failure. + */ virtual int PutLong(const std::string &key, int64_t value) = 0; + /** + * @brief Put or update an float value for the key. + * + * This function is used to put or update a float value of the corresponding key in the preference. + * + * @param key Indicates the key of the preferences. It cannot be empty. + * @param value Indicates the value of preferences to put or update. + * + * @return Returns 0 for success, others for failure. + */ virtual int PutFloat(const std::string &key, float value) = 0; + /** + * @brief Put or update an double value for the key. + * + * This function is used to put or update a double value of the corresponding key in the preference. + * + * @param key Indicates the key of the preferences. It cannot be empty. + * @param value Indicates the value of preferences to put or update. + * + * @return Returns 0 for success, others for failure. + */ virtual int PutDouble(const std::string &key, double value) = 0; + /** + * @brief Deletes the preferences with a specified key. + * + * This function is used to delete the preferences with a specified key in the preference. + * + * @param key Indicates the key of the preferences. It cannot be empty. + * + * @return Returns 0 for success, others for failure. + */ virtual int Delete(const std::string &key) = 0; + /** + * @brief Clears all preferences. + * + * This function is used to clear all preferences in an object. + * + * @return Returns 0 for success, others for failure. + */ virtual int Clear() = 0; + /** + * @brief Asynchronously saves the preferences to the file. + * + * This function is used to saves the preferences to the file. Files are written to disk only after + * this interface or {@link FlushSync}is called. + */ virtual void Flush() = 0; + /** + * @brief Synchronously saves the preferences to the file. + * + * This function is used to saves the preferences to the file synchronously. Files are written to disk only after + * this interface or {@link Flush} is called. + * + * @return The result of write to disk. Returns 0 for success, others for failure. + */ virtual int FlushSync() = 0; + /** + * @brief Registers an observer. + * + * This function is used to registers an observer to listen for the change of a preferences. + * + * @param preferencesObserver Indicates callback function for data changes. + */ virtual void RegisterObserver(std::shared_ptr preferencesObserver) = 0; + /** + * @brief Unregister an existing observer. + * + * This function is used to unregister an existing observer. + * + * @param preferencesObserver Indicates callback function for data changes. + */ virtual void UnRegisterObserver(std::shared_ptr preferencesObserver) = 0; }; } // End of namespace NativePreferences diff --git a/preferences/interfaces/inner_api/include/preferences_errno.h b/preferences/interfaces/inner_api/include/preferences_errno.h index 073dbddd..bea67f6f 100644 --- a/preferences/interfaces/inner_api/include/preferences_errno.h +++ b/preferences/interfaces/inner_api/include/preferences_errno.h @@ -20,26 +20,111 @@ namespace OHOS { namespace NativePreferences { + +/** +* @brief The error code in the correct case. +*/ constexpr int E_OK = 0; + +/** +* @brief The base code of the exception error code. +*/ constexpr int E_BASE = -1000; // different from the other errno. + +/** +* @brief The error code for common exceptions. +*/ constexpr int E_ERROR = (E_BASE - 1); + +/** +* @brief The error code for resource has been stopped, killed or destroyed. +*/ constexpr int E_STALE = (E_BASE - 2); // Resource has been stopped, killed or destroyed. + +/** +* @brief The error code for the input args is invalid. +*/ constexpr int E_INVALID_ARGS = (E_BASE - 3); // the input args is invalid. + +/** +* @brief The error code for out of memory. +*/ constexpr int E_OUT_OF_MEMORY = (E_BASE - 4); // out of memory + +/** +* @brief The error code for operation is not permitted. +*/ constexpr int E_NOT_PERMIT = (E_BASE - 5); // operation is not permitted + +/** +* @brief The error code for the key is empty. +*/ constexpr int E_KEY_EMPTY = (E_BASE - 6); + +/** +* @brief The error code for the key string length exceed the max length (80). +*/ constexpr int E_KEY_EXCEED_MAX_LENGTH = (E_BASE - 7); + +/** +* @brief The error code for the former Preferences object pointer is held by another thread and may +* not be able to be deleted. +*/ constexpr int E_PTR_EXIST_ANOTHER_HOLDER = (E_BASE - 8); + +/** +* @brief The error code when deleting a file fails. +*/ constexpr int E_DELETE_FILE_FAIL = (E_BASE - 9); + +/** +* @brief The error code for the file path is empty. +*/ constexpr int E_EMPTY_FILE_PATH = (E_BASE - 10); + +/** +* @brief The error code for the file path is relative path. +*/ constexpr int E_RELATIVE_PATH = (E_BASE - 11); + +/** +* @brief The error code for the file name is empty. +*/ constexpr int E_EMPTY_FILE_NAME = (E_BASE - 12); + +/** +* @brief The error code for the file path is invalid. +*/ constexpr int E_INVALID_FILE_PATH = (E_BASE - 13); + +/** +* @brief The error code for the file path exceeds the max length. +*/ constexpr int E_PATH_EXCEED_MAX_LENGTH = (E_BASE - 14); + +/** +* @brief The error code for the value exceeds the max length (8 * 1024). +*/ constexpr int E_VALUE_EXCEED_MAX_LENGTH = (E_BASE - 15); + +/** +* @brief The error code for the key exceeds the length limit (32). +*/ constexpr int E_KEY_EXCEED_LENGTH_LIMIT = (E_BASE - 16); + +/** +* @brief The error code for the value exceeds the length limit (128). +*/ constexpr int E_VALUE_EXCEED_LENGTH_LIMIT = (E_BASE - 17); + +/** +* @brief The error code for the default exceeds the max length (128). +*/ constexpr int E_DEFAULT_EXCEED_LENGTH_LIMIT = (E_BASE - 18); + +/** +* @brief The error code for napi get error. +*/ constexpr int E_NAPI_GET_ERROR = (E_BASE - 19); } // namespace NativePreferences diff --git a/preferences/interfaces/inner_api/include/preferences_helper.h b/preferences/interfaces/inner_api/include/preferences_helper.h index 06d89b3b..2a18cc49 100644 --- a/preferences/interfaces/inner_api/include/preferences_helper.h +++ b/preferences/interfaces/inner_api/include/preferences_helper.h @@ -25,10 +25,48 @@ namespace OHOS { namespace NativePreferences { + +/** + * The observer class of preferences. This class is used to obtain and delete preferences instances. + */ class PreferencesHelper { public: + + /** + * @brief Obtains a preferences instance matching a specified preferences file name. + * + * The preferences instance does not load data from the specified file every time. This is because if The + * preferences instance is being used in another thread, it will be cached until it will no longer be used to and + * performed {@link RemovePreferencesFromCache}. + * + * @param path Indicates the preferences file name + * @param errCode Indicates the error code. Returns 0 for success, others for failure. + * + * @return Returns a Preferences instance matching the specified preferences file name. + */ static std::shared_ptr GetPreferences(const std::string &path, int &errCode); + + /** + * @brief Deletes a preferences instance matching a specified preferences file name. + * + * Calling this interface will delete both the preferences instance in the cache and the corresponding file on disk. + * If you only want to remove preferences instances from cache, call interface {@link RemovePreferencesFromCache}. + * + * @param path Indicates the preferences file name. + * + * @return Returns 0 for success, others for failure. + */ static int DeletePreferences(const std::string &path); + + /** + * @brief Remove a preferences instance matching a specified preferences file name from cache. + * + * This function is used to remove a preferences instance matching a specified preferences file name from cache. + * + * @param path Indicates the preferences file name + * + * @return Returns 0 for success, others for failure. + */ static int RemovePreferencesFromCache(const std::string &path); private: diff --git a/preferences/interfaces/inner_api/include/preferences_observer.h b/preferences/interfaces/inner_api/include/preferences_observer.h index 8759b677..5b2bb3c7 100644 --- a/preferences/interfaces/inner_api/include/preferences_observer.h +++ b/preferences/interfaces/inner_api/include/preferences_observer.h @@ -20,9 +20,21 @@ namespace OHOS { namespace NativePreferences { + +/** + * The observer class of preferences. + */ class PreferencesObserver { public: virtual ~PreferencesObserver(); + + /** + * @brief A callback function when the data changes. + * + * This function is the callback when the value corresponding to key in the preferences changes. + * + * @param key Indicates the key of the preferences. It cannot be empty. + */ virtual void OnChange(const std::string &key) = 0; }; } // End of namespace NativePreferences diff --git a/preferences/interfaces/inner_api/include/preferences_value.h b/preferences/interfaces/inner_api/include/preferences_value.h index c74356dc..71529374 100644 --- a/preferences/interfaces/inner_api/include/preferences_value.h +++ b/preferences/interfaces/inner_api/include/preferences_value.h @@ -22,48 +22,261 @@ namespace OHOS { namespace NativePreferences { + +/** + * The PreferencesValue class of the preference. Various operations on PreferencesValue are provided in this class. + */ class PreferencesValue { public: ~PreferencesValue() { } + /** + * @brief Move constructor. + */ PreferencesValue(PreferencesValue &&preferencesValue) noexcept; + + /** + * @brief Copy constructor. + */ PreferencesValue(const PreferencesValue &preferencesValue); + /** + * @brief Constructor. + * + * This constructor is used to convert the int input parameter to a value of type PreferencesValue. + * + * @param value Indicates an int input parameter. + */ PreferencesValue(int value); + + /** + * @brief Constructor. + * + * This constructor is used to convert the int64_t input parameter to a value of type PreferencesValue. + * + * @param value Indicates a int64_t input parameter. + */ PreferencesValue(int64_t value); + + /** + * @brief Constructor. + * + * This constructor is used to convert the int64_t input parameter to a value of type PreferencesValue. + * + * @param value Indicates a int64_t input parameter. + */ PreferencesValue(float value); + + /** + * @brief Constructor. + * + * This constructor is used to convert the double input parameter to a value of type PreferencesValue. + * + * @param value Indicates a double input parameter. + */ PreferencesValue(double value); + + /** + * @brief Constructor. + * + * This constructor is used to convert the bool input parameter to a value of type PreferencesValue. + * + * @param value Indicates a bool input parameter. + */ PreferencesValue(bool value); + + /** + * @brief Constructor. + * + * This constructor is used to convert the string input parameter to a value of type PreferencesValue. + * + * @param value Indicates a string input parameter. + */ PreferencesValue(std::string value); + + /** + * @brief Constructor. + * + * This constructor is used to convert the char input parameter to a value of type PreferencesValue. + * + * @param value Indicates a char input parameter. + */ PreferencesValue(const char *value); + + /** + * @brief Constructor. + * + * This constructor is used to convert the vector input parameter to a value of type PreferencesValue. + * + * @param value Indicates a vector input parameter. + */ PreferencesValue(std::vector value); + + /** + * @brief Constructor. + * + * This constructor is used to convert the vector input parameter to a value of type PreferencesValue. + * + * @param value Indicates a vector input parameter. + */ PreferencesValue(std::vector value); + + /** + * @brief Constructor. + * + * This constructor is used to convert the vector input parameter to a value of type PreferencesValue. + * + * @param value Indicates a vector input parameter. + */ PreferencesValue(std::vector value); + + /** + * @brief Move assignment operator overloaded function. + */ PreferencesValue &operator=(PreferencesValue &&preferencesValue) noexcept; + + /** + * @brief Copy assignment operator overloaded function. + */ PreferencesValue &operator=(const PreferencesValue &preferencesValue); + /** + * @brief Determines whether the int type PreferencesValue is currently used. + * + * @return Returning true means it is, false means it isn't. + */ bool IsInt() const; + + /** + * @brief Determines whether the long type PreferencesValue is currently used. + * + * @return Returning true means it is, false means it isn't. + */ bool IsLong() const; + + /** + * @brief Determines whether the float type PreferencesValue is currently used. + * + * @return Returning true means it is, false means it isn't. + */ bool IsFloat() const; + + /** + * @brief Determines whether the double type PreferencesValue is currently used. + * + * @return Returning true means it is, false means it isn't. + */ bool IsDouble() const; + + /** + * @brief Determines whether the bool type PreferencesValue is currently used. + * + * @return Returning true means it is, false means it isn't. + */ bool IsBool() const; + + /** + * @brief Determines whether the string type PreferencesValue is currently used. + * + * @return Returning true means it is, false means it isn't. + */ bool IsString() const; + + /** + * @brief Determines whether the string array type PreferencesValue is currently used. + * + * @return Returning true means it is, false means it isn't. + */ bool IsStringArray() const; + + /** + * @brief Determines whether the bool array type PreferencesValue is currently used. + * + * @return Returning true means it is, false means it isn't. + */ bool IsBoolArray() const; + + /** + * @brief Determines whether the double array type PreferencesValue is currently used. + * + * @return Returning true means it is, false means it isn't. + */ bool IsDoubleArray() const; + /** + * @brief Type conversion function. + * + * @return The int type PreferencesValue. + */ operator int() const; + + /** + * @brief Type conversion function. + * + * @return Returns float type PreferencesValue. + */ operator float() const; + + /** + * @brief Type conversion function. + * + * @return Returns double type PreferencesValue. + */ operator double() const; + + /** + * @brief Type conversion function. + * + * @return Returns bool type PreferencesValue. + */ operator bool() const; + + /** + * @brief Type conversion function. + * + * @return Returns int64_t type PreferencesValue. + */ operator int64_t() const; + + /** + * @brief Type conversion function. + * + * @return Returns string type PreferencesValue. + */ operator std::string() const; + + /** + * @brief Type conversion function. + * + * @return Returns vector type PreferencesValue. + */ operator std::vector() const; + + /** + * @brief Type conversion function. + * + * @return Returns vector type PreferencesValue. + */ operator std::vector() const; + + /** + * @brief Type conversion function. + * + * @return Returns vector type PreferencesValue. + */ operator std::vector() const; + /** + * @brief Overloaded operator "==". + * + * This function is used to determine whether the input value is equal to the current PreferencesValue. + * + * @param value Indicates a PreferencesValue. + * + * @return Returning true means the input value is equal to the current PreferencesValue, false means it isn't. + */ bool operator==(const PreferencesValue &value); private: diff --git a/relational_store/frameworks/js/napi/relationalstore/src/napi_rdb_predicates.cpp b/relational_store/frameworks/js/napi/relationalstore/src/napi_rdb_predicates.cpp index 8b966524..7ae0654f 100644 --- a/relational_store/frameworks/js/napi/relationalstore/src/napi_rdb_predicates.cpp +++ b/relational_store/frameworks/js/napi/relationalstore/src/napi_rdb_predicates.cpp @@ -26,15 +26,6 @@ namespace OHOS { namespace RelationalStoreJsKit { static __thread napi_ref constructor_ = nullptr; -void SetGlobalNamedProperty(napi_env env, const char *name, napi_value constructor) -{ - napi_value global = nullptr; - napi_status status = napi_get_global(env, &global); - NAPI_ASSERT_RETURN_VOID(env, status == napi_ok, "RdbPredicatesProxy get napi global failed"); - status = napi_set_named_property(env, global, name, constructor); - NAPI_ASSERT_RETURN_VOID(env, status == napi_ok, "RdbPredicatesProxy set RdbPredicates Constructor failed"); -} - void RdbPredicatesProxy::Init(napi_env env, napi_value exports) { LOG_INFO("RdbPredicatesProxy::Init"); @@ -88,8 +79,7 @@ void RdbPredicatesProxy::Init(napi_env env, napi_value exports) sizeof(descriptors) / sizeof(napi_property_descriptor), descriptors, &cons)); NAPI_CALL_RETURN_VOID(env, napi_create_reference(env, cons, 1, &constructor_)); NAPI_CALL_RETURN_VOID(env, napi_set_named_property(env, exports, "RdbPredicates", cons)); - - SetGlobalNamedProperty(env, "RdbPredicatesConstructor", cons); + LOG_DEBUG("RdbPredicatesProxy::Init end"); } diff --git a/relational_store/frameworks/native/dataability/src/data_ability_predicates.cpp b/relational_store/frameworks/native/dataability/src/data_ability_predicates.cpp index d2954741..5073e862 100644 --- a/relational_store/frameworks/native/dataability/src/data_ability_predicates.cpp +++ b/relational_store/frameworks/native/dataability/src/data_ability_predicates.cpp @@ -22,15 +22,13 @@ int g_invalidObjectFlag = 0; int g_validObjectFlag = 1; int g_defaultSelectArgNumber = 8; bool DataAbilityPredicates::result = false; -DataAbilityPredicates::DataAbilityPredicates() +DataAbilityPredicates::DataAbilityPredicates() : isRawSelection(false), judgeSource(false) { - this->isRawSelection = false; } -DataAbilityPredicates::DataAbilityPredicates(std::string rawSelection) +DataAbilityPredicates::DataAbilityPredicates(std::string rawSelection) : isRawSelection(true), judgeSource(false) { AbsPredicates::SetWhereClause(rawSelection); - this->isRawSelection = true; } DataAbilityPredicates::DataAbilityPredicates(OHOS::Parcel *source) diff --git a/relational_store/frameworks/native/rdb/include/rdb_security_manager.h b/relational_store/frameworks/native/rdb/include/rdb_security_manager.h index ba7ad02c..21d571e1 100644 --- a/relational_store/frameworks/native/rdb/include/rdb_security_manager.h +++ b/relational_store/frameworks/native/rdb/include/rdb_security_manager.h @@ -108,6 +108,7 @@ private: static const uint32_t TIMES = 4; static const uint32_t MAX_UPDATE_SIZE = 64; static const uint32_t MAX_OUTDATA_SIZE = MAX_UPDATE_SIZE * TIMES; + static const uint8_t AEAD_LEN = 16; std::string bundleName_; std::string dbDir_; diff --git a/relational_store/frameworks/native/rdb/mock/include/rdb_store_impl.h b/relational_store/frameworks/native/rdb/mock/include/rdb_store_impl.h index fd1762b4..9074b631 100644 --- a/relational_store/frameworks/native/rdb/mock/include/rdb_store_impl.h +++ b/relational_store/frameworks/native/rdb/mock/include/rdb_store_impl.h @@ -110,6 +110,7 @@ private: std::string name; std::string fileType; std::stack transactionObserverStack; + bool isEncrypt_; int BeginExecuteSql(const std::string &sql, SqliteConnection **connection); }; diff --git a/relational_store/frameworks/native/rdb/src/abs_shared_result_set.cpp b/relational_store/frameworks/native/rdb/src/abs_shared_result_set.cpp index 9df25da5..f6537982 100644 --- a/relational_store/frameworks/native/rdb/src/abs_shared_result_set.cpp +++ b/relational_store/frameworks/native/rdb/src/abs_shared_result_set.cpp @@ -202,7 +202,6 @@ int AbsSharedResultSet::GetString(int columnIndex, std::string &value) const char *tempValue = sharedBlock_->GetCellUnitValueString(cellUnit, &sizeIncludingNull); if ((sizeIncludingNull <= 1) || (tempValue == nullptr)) { value = ""; - LOG_ERROR("AbsSharedResultSet::GetString string is null"); return E_OK; } value = tempValue; diff --git a/relational_store/frameworks/native/rdb/src/rdb_security_manager.cpp b/relational_store/frameworks/native/rdb/src/rdb_security_manager.cpp index c7960372..bbab8a03 100644 --- a/relational_store/frameworks/native/rdb/src/rdb_security_manager.cpp +++ b/relational_store/frameworks/native/rdb/src/rdb_security_manager.cpp @@ -22,8 +22,8 @@ #include "directory_ex.h" #include "file_ex.h" -#include "hks_param.h" #include "hks_mem.h" +#include "hks_param.h" #include "logger.h" #include "sqlite_database_utils.h" @@ -126,7 +126,11 @@ int32_t RdbSecurityManager::HksLoopUpdate(const struct HksBlob *handle, const st HksFree(outDataSeg.data); return HKS_FAILURE; } - (void)memcpy_s(cur, outDataSeg.size, outDataSeg.data, outDataSeg.size); + if (memcpy_s(cur, outDataSeg.size, outDataSeg.data, outDataSeg.size) != 0) { + LOG_ERROR("Method memcpy_s failed"); + HksFree(outDataSeg.data); + return HKS_FAILURE; + } cur += outDataSeg.size; outData->size += outDataSeg.size; HksFree(outDataSeg.data); @@ -147,7 +151,11 @@ int32_t RdbSecurityManager::HksLoopUpdate(const struct HksBlob *handle, const st HksFree(outDataFinish.data); return HKS_FAILURE; } - (void)memcpy_s(cur, outDataFinish.size, outDataFinish.data, outDataFinish.size); + if (memcpy_s(cur, outDataFinish.size, outDataFinish.data, outDataFinish.size) != 0) { + LOG_ERROR("Method memcpy_s failed"); + HksFree(outDataFinish.data); + return HKS_FAILURE; + } outData->size += outDataFinish.size; HksFree(outDataFinish.data); @@ -340,12 +348,12 @@ std::vector RdbSecurityManager::EncryptWorkKey(const std::vector &source, std::vector &key) { - uint8_t aead_[16] = { 0 }; + uint8_t aead_[AEAD_LEN] = { 0 }; struct HksBlob blobAad = { uint32_t(aad_.size()), &(aad_[0]) }; struct HksBlob blobNonce = { uint32_t(nonce_.size()), &(nonce_[0]) }; struct HksBlob rootKeyName = { uint32_t(rootKeyAlias_.size()), &(rootKeyAlias_[0]) }; struct HksBlob encryptedKeyBlob = { uint32_t(source.size()), source.data() }; - struct HksBlob blobAead = { 16, aead_ }; + struct HksBlob blobAead = { AEAD_LEN, aead_ }; struct HksParamSet *params = nullptr; int32_t ret = HksInitParamSet(¶ms); @@ -377,11 +385,15 @@ bool RdbSecurityManager::DecryptWorkKey(std::vector &source, std::vecto return false; } - encryptedKeyBlob.size -= 16; + encryptedKeyBlob.size -= AEAD_LEN; for (uint32_t i = 0; i < params->paramsCnt; i++) { if (params->params[i].tag == HKS_TAG_AE_TAG) { uint8_t *tempPtr = encryptedKeyBlob.data; - (void)memcpy_s(params->params[i].blob.data, 16, tempPtr + encryptedKeyBlob.size, 16); + if (memcpy_s(params->params[i].blob.data, AEAD_LEN, tempPtr + encryptedKeyBlob.size, AEAD_LEN) != 0) { + LOG_ERROR("Method memcpy_s failed"); + HksFreeParamSet(¶ms); + return false; + } break; } } @@ -403,8 +415,7 @@ bool RdbSecurityManager::DecryptWorkKey(std::vector &source, std::vecto void RdbSecurityManager::Init(const std::string &bundleName, const std::string &path) { rootKeyAlias_ = GenerateRootKeyAlias(bundleName); - nonce_ = - std::vector(RDB_HKS_BLOB_TYPE_NONCE, RDB_HKS_BLOB_TYPE_NONCE + strlen(RDB_HKS_BLOB_TYPE_NONCE)); + nonce_ = std::vector(RDB_HKS_BLOB_TYPE_NONCE, RDB_HKS_BLOB_TYPE_NONCE + strlen(RDB_HKS_BLOB_TYPE_NONCE)); aad_ = std::vector(RDB_HKS_BLOB_TYPE_AAD, RDB_HKS_BLOB_TYPE_AAD + strlen(RDB_HKS_BLOB_TYPE_AAD)); ParsePath(path); @@ -543,8 +554,8 @@ std::vector RdbSecurityManager::GenerateRootKeyAlias(const std::string LOG_ERROR("BundleName is empty!"); return {}; } - std::vector rootKeyAlias = std::vector( - RDB_ROOT_KEY_ALIAS_PREFIX, RDB_ROOT_KEY_ALIAS_PREFIX + strlen(RDB_ROOT_KEY_ALIAS_PREFIX)); + std::vector rootKeyAlias = + std::vector(RDB_ROOT_KEY_ALIAS_PREFIX, RDB_ROOT_KEY_ALIAS_PREFIX + strlen(RDB_ROOT_KEY_ALIAS_PREFIX)); rootKeyAlias.insert(rootKeyAlias.end(), bundleName.begin(), bundleName.end()); return rootKeyAlias; } diff --git a/relational_store/frameworks/native/rdb/src/rdb_store_impl.cpp b/relational_store/frameworks/native/rdb/src/rdb_store_impl.cpp index fcaece06..6288ec3b 100644 --- a/relational_store/frameworks/native/rdb/src/rdb_store_impl.cpp +++ b/relational_store/frameworks/native/rdb/src/rdb_store_impl.cpp @@ -73,6 +73,7 @@ int RdbStoreImpl::InnerOpen(const RdbStoreConfig &config) isMemoryRdb = config.IsMemoryRdb(); name = config.GetName(); fileType = config.GetDatabaseFileType(); + isEncrypt_ = config.IsEncrypt(); #if !defined(WINDOWS_PLATFORM) && !defined(MAC_PLATFORM) syncerParam_.bundleName_ = config.GetBundleName(); syncerParam_.hapName_ = config.GetModuleName(); @@ -82,7 +83,6 @@ int RdbStoreImpl::InnerOpen(const RdbStoreConfig &config) syncerParam_.type_ = config.GetDistributedType(); syncerParam_.isEncrypt_ = config.IsEncrypt(); syncerParam_.password_ = {}; - isEncrypt_ = config.IsEncrypt(); // open uri share if (!config.GetUri().empty()) { auto service = DistributedRdb::RdbManager::GetRdbService(syncerParam_); @@ -101,7 +101,7 @@ int RdbStoreImpl::InnerOpen(const RdbStoreConfig &config) } RdbStoreImpl::RdbStoreImpl() - : connectionPool(nullptr), isOpen(false), path(""), orgPath(""), isReadOnly(false), isMemoryRdb(false) + : connectionPool(nullptr), isOpen(false), path(""), orgPath(""), isReadOnly(false), isMemoryRdb(false), isEncrypt_(false) { } diff --git a/relational_store/frameworks/native/rdb_data_share_adapter/src/rdb_result_set_bridge.cpp b/relational_store/frameworks/native/rdb_data_share_adapter/src/rdb_result_set_bridge.cpp index 1c3665f3..81730127 100644 --- a/relational_store/frameworks/native/rdb_data_share_adapter/src/rdb_result_set_bridge.cpp +++ b/relational_store/frameworks/native/rdb_data_share_adapter/src/rdb_result_set_bridge.cpp @@ -73,22 +73,10 @@ int RdbResultSetBridge::OnGo(int32_t start, int32_t target, Writer &writer) return -1; } - std::vector columnTypes; - GetColumnTypes(columnCount, columnTypes); - return WriteBlock(start, target, columnCount, columnTypes, writer); + return WriteBlock(start, target, columnCount, writer); } -void RdbResultSetBridge::GetColumnTypes(int columnCount, std::vector &columnTypes) -{ - for (int i = 0; i < columnCount; ++i) { - ColumnType type; - rdbResultSet_->GetColumnType(i, type); - columnTypes.push_back(type); - } -} - -int32_t RdbResultSetBridge::WriteBlock( - int32_t start, int32_t target, int columnCount, const std::vector &columnTypes, Writer &writer) +int32_t RdbResultSetBridge::WriteBlock(int32_t start, int32_t target, int columnCount, Writer &writer) { int errCode = 0; int row = start; @@ -100,18 +88,19 @@ int32_t RdbResultSetBridge::WriteBlock( return row - 1; } - WriteColumn(columnCount, columnTypes, writer, row); + WriteColumn(columnCount, writer, row); row++; errCode = rdbResultSet_->GoToNextRow(); } return target; } -void RdbResultSetBridge::WriteColumn( - int columnCount, const std::vector &columnTypes, Writer &writer, int row) +void RdbResultSetBridge::WriteColumn(int columnCount, Writer &writer, int row) { for (int i = 0; i < columnCount; i++) { - switch (columnTypes[i]) { + ColumnType type; + rdbResultSet_->GetColumnType(i, type); + switch (type) { case ColumnType::TYPE_INTEGER: int64_t value; rdbResultSet_->GetLong(i, value); @@ -139,7 +128,7 @@ void RdbResultSetBridge::WriteColumn( default: std::string stringValue; rdbResultSet_->GetString(i, stringValue); - if (writer.Write(i, (char *)stringValue.c_str(), strlen(stringValue.c_str()) + 1)) { + if (writer.Write(i, stringValue.c_str(), stringValue.size() + 1)) { LOG_DEBUG("WriteString failed of row: %{public}d, column: %{public}d", row, i); } } @@ -150,23 +139,11 @@ bool RdbResultSetBridge::WriteBlobData(int column, Writer &writer) { std::vector blobValue; rdbResultSet_->GetBlob(column, blobValue); - if (blobValue.empty()) { return false; } - size_t size = blobValue.size() * sizeof(uint8_t); - uint8_t *value = (uint8_t *)malloc(size); - if (!value) { - LOG_ERROR("%s: malloc failed.", __func__); - return false; - } - if (memcpy_s(value, size, &blobValue[0], size) != EOK) { - free(value); - return false; - } - int ret = writer.Write(column, value, size); - free(value); - return ret; + + return writer.Write(column, &blobValue[0], blobValue.size() * sizeof(uint8_t)); } } // namespace RdbDataShareAdapter } // namespace OHOS diff --git a/relational_store/interfaces/inner_api/rdb_data_share_adapter/include/rdb_result_set_bridge.h b/relational_store/interfaces/inner_api/rdb_data_share_adapter/include/rdb_result_set_bridge.h index c2689893..ca0c7d67 100644 --- a/relational_store/interfaces/inner_api/rdb_data_share_adapter/include/rdb_result_set_bridge.h +++ b/relational_store/interfaces/inner_api/rdb_data_share_adapter/include/rdb_result_set_bridge.h @@ -38,11 +38,9 @@ public: int OnGo(int32_t start, int32_t length, Writer &writer) override; private: - void GetColumnTypes(int columnCount, std::vector &columnTypes); - int32_t WriteBlock( - int32_t start, int32_t target, int columnCount, const std::vector &columnTypes, Writer &writer); + int32_t WriteBlock(int32_t start, int32_t target, int columnCount, Writer &writer); bool WriteBlobData(int column, Writer &writer); - void WriteColumn(int columnCount, const std::vector &columnTypes, Writer &writer, int row); + void WriteColumn(int columnCount, Writer &writer, int row); std::shared_ptr rdbResultSet_; }; } // namespace RdbDataShareAdapter diff --git a/relational_store/test/js/rdb/unittest/src/RdbStoreDataShareJsunit.test.js b/relational_store/test/js/rdb/unittest/src/RdbStoreDataShareJsunit.test.js index 0bad6b1e..8c8ed31f 100644 --- a/relational_store/test/js/rdb/unittest/src/RdbStoreDataShareJsunit.test.js +++ b/relational_store/test/js/rdb/unittest/src/RdbStoreDataShareJsunit.test.js @@ -97,6 +97,7 @@ describe('rdbStoreDataSharePredicatesTest', function () { } catch (err) { expect(false).assertTrue() } + resultSet.close() resultSet = null done() @@ -159,6 +160,7 @@ describe('rdbStoreDataSharePredicatesTest', function () { console.log(TAG + "dataShare update: {id=" + id + ", name=" + name + ", " + "age=" + age + ", salary=" + salary + ", blobType=" + blobType) + resultSet.close() resultSet = null done() @@ -218,6 +220,7 @@ describe('rdbStoreDataSharePredicatesTest', function () { expect(6).assertEqual(blobType[2]) console.log(TAG + "dataShare update: {id=" + id + ", name=" + name + ", " + "age=" + age + ", salary=" + salary + ", blobType=" + blobType) + resultSet.close() resultSet = null }) @@ -251,7 +254,7 @@ describe('rdbStoreDataSharePredicatesTest', function () { const age = resultSet.getLong(resultSet.getColumnIndex("age")) const salary = resultSet.getDouble(resultSet.getColumnIndex("salary")) const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType")) - + resultSet.close() expect("zhangsan").assertEqual(name) expect(18).assertEqual(age) expect(100.5).assertEqual(salary) @@ -299,7 +302,7 @@ describe('rdbStoreDataSharePredicatesTest', function () { const age = resultSet.getLong(resultSet.getColumnIndex("age")) const salary = resultSet.getDouble(resultSet.getColumnIndex("salary")) const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType")) - + resultSet.close() expect("zhangsan").assertEqual(name) expect(18).assertEqual(age) expect(100.5).assertEqual(salary) @@ -344,6 +347,7 @@ describe('rdbStoreDataSharePredicatesTest', function () { rdbPredicates.equalTo("name", "zhangsan") let resultSet = await rdbStore.query(rdbPredicates) expect(false).assertEqual(resultSet.goToFirstRow()) + resultSet.close() resultSet = null done() @@ -380,6 +384,7 @@ describe('rdbStoreDataSharePredicatesTest', function () { rdbPredicates.equalTo("name", "zhangsan") let resultSet = await rdbStore.query(rdbPredicates) expect(false).assertEqual(resultSet.goToFirstRow()) + resultSet.close() resultSet = null }) diff --git a/relational_store/test/js/rdb/unittest/src/RdbStoreDistributedJsunit.test.js b/relational_store/test/js/rdb/unittest/src/RdbStoreDistributedJsunit.test.js index aac7489c..a34252d0 100644 --- a/relational_store/test/js/rdb/unittest/src/RdbStoreDistributedJsunit.test.js +++ b/relational_store/test/js/rdb/unittest/src/RdbStoreDistributedJsunit.test.js @@ -21,32 +21,8 @@ const STORE_NAME = "distributed_rdb.db" var rdbStore = undefined; describe('rdbStoreDistributedTest', function () { - beforeAll(async function () { + beforeAll(async function (done) { console.info(TAG + 'beforeAll') - }) - - beforeEach(async function () { - console.info(TAG + 'beforeEach') - }) - - afterEach(async function () { - console.info(TAG + 'afterEach') - }) - - afterAll(async function () { - console.info(TAG + 'afterAll') - await dataRdb.deleteRdbStore(STORE_NAME); - }) - - console.log(TAG + "*************Unit Test Begin*************"); - - /** - * @tc.name rdb open test - * @tc.number SUB_DDM_AppDataFWK_JSRDB_Distributed_001 - * @tc.desc rdb open test - */ - it('testRdbStoreDistributed0001', 0, async function (done) { - console.log(TAG + "************* testRdbStoreDistributed001 start *************"); const config = { "name": STORE_NAME, } @@ -85,9 +61,24 @@ describe('rdbStoreDistributedTest', function () { expect(null).assertFail() } done() - console.log(TAG + "************* testRdbStoreDistributed001 end *************"); }) + beforeEach(async function () { + console.info(TAG + 'beforeEach') + }) + + afterEach(async function () { + console.info(TAG + 'afterEach') + }) + + afterAll(async function () { + console.info(TAG + 'afterAll') + rdbStore = null + await dataRdb.deleteRdbStore(STORE_NAME); + }) + + console.log(TAG + "*************Unit Test Begin*************"); + /** * @tc.name set_distributed_table_none_table * @tc.number SUB_DDM_AppDataFWK_JSRDB_Distributed_002 diff --git a/relational_store/test/js/rdb/unittest/src/RdbStoreResultSetJsunit.test.js b/relational_store/test/js/rdb/unittest/src/RdbStoreResultSetJsunit.test.js index 206a015b..8b4e6850 100644 --- a/relational_store/test/js/rdb/unittest/src/RdbStoreResultSetJsunit.test.js +++ b/relational_store/test/js/rdb/unittest/src/RdbStoreResultSetJsunit.test.js @@ -16,7 +16,8 @@ import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from ' import dataRdb from '@ohos.data.rdb' const TAG = "[RDB_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "data1 text," + "data2 long, " + "data3 double," + "data4 blob)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "data1 text," + "data2 long, " + "data3 double," + "data4 blob)"; const STORE_CONFIG = { name: "Resultset.db", @@ -80,10 +81,6 @@ describe('rdbResultSetTest', function () { console.log(TAG + "createTest data end"); } - function random(min, max) { - return Math.floor(Math.random() * (max - min)) + min; - } - function createUint8Array(length) { let i = 0 let index = 0 @@ -129,15 +126,14 @@ describe('rdbResultSetTest', function () { let predicates = await new dataRdb.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) try { - { - expect(true).assertEqual(resultSet.goToFirstRow()) - const id = resultSet.getLong(resultSet.getColumnIndex("id")) - const data4 = resultSet.getBlob(resultSet.getColumnIndex("data4")) - console.log(TAG + "id=" + id + ", data4=" + data4); - expect(1).assertEqual(data4[0]); - expect(2).assertEqual(data4[1]); - expect(3).assertEqual(data4[2]); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + const id = resultSet.getLong(resultSet.getColumnIndex("id")) + const data4 = resultSet.getBlob(resultSet.getColumnIndex("data4")) + console.log(TAG + "id=" + id + ", data4=" + data4); + expect(1).assertEqual(data4[0]); + expect(2).assertEqual(data4[1]); + expect(3).assertEqual(data4[2]); + resultSet.close(); expect(true).assertEqual(resultSet.isClosed) } catch (e) { @@ -158,16 +154,14 @@ describe('rdbResultSetTest', function () { let predicates = await new dataRdb.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) try { - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - const id = resultSet.getLong(resultSet.getColumnIndex("id")) - const data4 = resultSet.getBlob(resultSet.getColumnIndex("data4")) - console.log(TAG + "id=" + id + ", data4=" + data4); - expect(3).assertEqual(data4[0]); - expect(4).assertEqual(data4[1]); - expect(5).assertEqual(data4[2]); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + const id = resultSet.getLong(resultSet.getColumnIndex("id")) + const data4 = resultSet.getBlob(resultSet.getColumnIndex("data4")) + console.log(TAG + "id=" + id + ", data4=" + data4); + expect(3).assertEqual(data4[0]); + expect(4).assertEqual(data4[1]); + resultSet.close(); expect(true).assertEqual(resultSet.isClosed) } catch (e) { @@ -188,15 +182,13 @@ describe('rdbResultSetTest', function () { let predicates = await new dataRdb.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) try { - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - const id = resultSet.getLong(resultSet.getColumnIndex("id")) - const data4 = resultSet.getBlob(resultSet.getColumnIndex("data4")) - console.log(TAG + "id=" + id + ", data4=" + data4); - expect("").assertEqual("" + data4); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + const id = resultSet.getLong(resultSet.getColumnIndex("id")) + const data4 = resultSet.getBlob(resultSet.getColumnIndex("data4")) + console.log(TAG + "id=" + id + ", data4=" + data4); + resultSet.close(); expect(true).assertEqual(resultSet.isClosed) } catch (e) { @@ -221,6 +213,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsStarted0001 end *************"); @@ -241,6 +234,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsStarted0002 end *************"); @@ -263,6 +257,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsStarted0003 end *************"); @@ -284,6 +279,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsStarted0004 end *************"); @@ -305,6 +301,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsEnded0001 end *************"); @@ -325,6 +322,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsEnded0002 end *************"); @@ -345,6 +343,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsEnded0003 end *************"); @@ -366,6 +365,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsEnded0004 end *************"); @@ -385,6 +385,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testRowCount0001 end *************"); @@ -405,6 +406,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testRowCount0002 end *************"); @@ -425,6 +427,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testRowCount0003 end *************"); @@ -446,6 +449,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testRowCount0003 end *************"); @@ -461,13 +465,12 @@ describe('rdbResultSetTest', function () { let predicates = await new dataRdb.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) try { - { - expect(true).assertEqual(resultSet.goToFirstRow()) - const id = resultSet.getLong(resultSet.getColumnIndex("id")) - const data2 = resultSet.getLong(resultSet.getColumnIndex("data2")) - console.log(TAG + "id=" + id + ", data2=" + data2); - expect(10).assertEqual(data2); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + const id = resultSet.getLong(resultSet.getColumnIndex("id")) + const data2 = resultSet.getLong(resultSet.getColumnIndex("data2")) + console.log(TAG + "id=" + id + ", data2=" + data2); + expect(10).assertEqual(data2); + resultSet.close(); expect(true).assertEqual(resultSet.isClosed) } catch (e) { @@ -488,12 +491,11 @@ describe('rdbResultSetTest', function () { let predicates = await new dataRdb.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) try { - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - const data1 = resultSet.getLong(resultSet.getColumnIndex("data1")) - expect(2).assertEqual(data1); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + const data1 = resultSet.getLong(resultSet.getColumnIndex("data1")) + expect(2).assertEqual(data1); + resultSet.close(); expect(true).assertEqual(resultSet.isClosed) } catch (e) { @@ -514,12 +516,11 @@ describe('rdbResultSetTest', function () { let predicates = await new dataRdb.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) try { - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - const data2 = resultSet.getLong(resultSet.getColumnIndex("data2")) - expect(-5).assertEqual(data2); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + const data2 = resultSet.getLong(resultSet.getColumnIndex("data2")) + expect(-5).assertEqual(data2); + resultSet.close(); expect(true).assertEqual(resultSet.isClosed) } catch (e) { @@ -539,11 +540,11 @@ describe('rdbResultSetTest', function () { console.log(TAG + "************* testGetString0001 start *************"); let predicates = await new dataRdb.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - const data1 = resultSet.getString(resultSet.getColumnIndex("data1")) - expect("hello").assertEqual(data1); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + const data1 = resultSet.getString(resultSet.getColumnIndex("data1")) + expect("hello").assertEqual(data1); + + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testGetString0001 end *************"); @@ -558,11 +559,11 @@ describe('rdbResultSetTest', function () { console.log(TAG + "************* testGetString0002 start *************"); let predicates = await new dataRdb.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - const data2 = resultSet.getString(resultSet.getColumnIndex("data2")) - expect("10").assertEqual(data2); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + const data2 = resultSet.getString(resultSet.getColumnIndex("data2")) + expect("10").assertEqual(data2); + + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testGetString0002 end *************"); @@ -577,12 +578,12 @@ describe('rdbResultSetTest', function () { console.log(TAG + "************* testGetString0003 start *************"); let predicates = await new dataRdb.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - const data3 = resultSet.getString(resultSet.getColumnIndex("data3")) - expect("2.5").assertEqual(data3); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + const data3 = resultSet.getString(resultSet.getColumnIndex("data3")) + expect("2.5").assertEqual(data3); + + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testGetString0003 end *************"); @@ -597,17 +598,17 @@ describe('rdbResultSetTest', function () { console.log(TAG + "************* testGetString0004 start *************"); let predicates = await new dataRdb.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - const data1 = resultSet.getString(resultSet.getColumnIndex("data1")) - const data2 = resultSet.getString(resultSet.getColumnIndex("data2")) - const data3 = resultSet.getString(resultSet.getColumnIndex("data3")) - expect("hello world").assertEqual(data1); - expect("3").assertEqual(data2); - expect("1.8").assertEqual(data3); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + const data1 = resultSet.getString(resultSet.getColumnIndex("data1")) + const data2 = resultSet.getString(resultSet.getColumnIndex("data2")) + const data3 = resultSet.getString(resultSet.getColumnIndex("data3")) + expect("hello world").assertEqual(data1); + expect("3").assertEqual(data2); + expect("1.8").assertEqual(data3); + + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testGetString0004 end *************"); @@ -627,6 +628,7 @@ describe('rdbResultSetTest', function () { resultSet.close(); expect(true).assertEqual(resultSet.isClosed) + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsClosed0001 end *************"); @@ -643,6 +645,7 @@ describe('rdbResultSetTest', function () { let resultSet = await rdbStore.query(predicates) expect(false).assertEqual(resultSet.isClosed) + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsClosed0002 end *************"); @@ -660,6 +663,7 @@ describe('rdbResultSetTest', function () { let resultSet = await rdbStore.query(predicates) expect(false).assertEqual(resultSet.isClosed) + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsClosed0003 end *************"); @@ -672,14 +676,13 @@ describe('rdbResultSetTest', function () { */ it('testColumnCount0001', 0, async function (done) { console.log(TAG + "************* testColumnCount0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - expect(5).assertEqual(resultSet.columnCount); - resultSet = null; - done(); - console.log(TAG + "************* testColumnCount0001 end *************"); - } + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + expect(5).assertEqual(resultSet.columnCount); + resultSet.close(); + resultSet = null; + done(); + console.log(TAG + "************* testColumnCount0001 end *************"); }) /** @@ -689,15 +692,14 @@ describe('rdbResultSetTest', function () { */ it('testColumnCount0002', 0, async function (done) { console.log(TAG + "************* testColumnCount0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - expect(0).assertEqual(resultSet.columnCount); - resultSet = null; - done(); - console.log(TAG + "************* testColumnCount0002 end *************"); - } + let predicates = await new dataRdb.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + expect(0).assertEqual(resultSet.columnCount); + resultSet.close(); + resultSet = null; + done(); + console.log(TAG + "************* testColumnCount0002 end *************"); }) /** @@ -707,18 +709,15 @@ describe('rdbResultSetTest', function () { */ it('testRowIndex0001', 0, async function (done) { console.log(TAG + "************* testRowIndex0001 *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(0).assertEqual(resultSet.rowIndex) - } + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(0).assertEqual(resultSet.rowIndex) - resultSet = null; - done(); - console.log(TAG + "************* testRowIndex0001 end *************"); - } + resultSet.close(); + resultSet = null; + done(); + console.log(TAG + "************* testRowIndex0001 end *************"); }) /** @@ -728,18 +727,15 @@ describe('rdbResultSetTest', function () { */ it('testRowIndex0002', 0, async function (done) { console.log(TAG + "************* testRowIndex0002 *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - expect(2).assertEqual(resultSet.rowIndex) - } + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + expect(true).assertEqual(resultSet.goToLastRow()) + expect(2).assertEqual(resultSet.rowIndex) - resultSet = null; - done(); - console.log(TAG + "************* testRowIndex0002 end *************"); - } + resultSet.close(); + resultSet = null; + done(); + console.log(TAG + "************* testRowIndex0002 end *************"); }) /** @@ -754,10 +750,10 @@ describe('rdbResultSetTest', function () { let resultSet = await rdbStore.query(predicates) try { expect(true).assertEqual(resultSet.goToFirstRow()) - resultSet.close(); } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testGoToFirstRow0001 end *************"); @@ -779,6 +775,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close() resultSet = null done(); console.log(TAG + "************* testGoToFirstRow0002 end *************"); @@ -801,6 +798,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close() resultSet = null done(); console.log(TAG + "************* testGoToFirstRow0003 end *************"); @@ -813,16 +811,15 @@ describe('rdbResultSetTest', function () { */ it('testGoToLastRow0001', 0, async function (done) { console.log(TAG + "************* testGoToLastRow0001 start *************"); + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToLastRow0001 end *************"); + expect(true).assertEqual(resultSet.goToLastRow()) } + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToLastRow0001 end *************"); }) /** @@ -832,17 +829,14 @@ describe('rdbResultSetTest', function () { */ it('testGoToLastRow0002', 0, async function (done) { console.log(TAG + "************* testGoToLastRow0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - { - expect(false).assertEqual(resultSet.goToLastRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToLastRow0002 end *************"); - } + let predicates = await new dataRdb.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + expect(false).assertEqual(resultSet.goToLastRow()) + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToLastRow0002 end *************"); }) /** @@ -852,18 +846,19 @@ describe('rdbResultSetTest', function () { */ it('testGoToLastRow0003', 0, async function (done) { console.log(TAG + "************* testGoToLastRow0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - expect(true).assertEqual(resultSet.goToPreviousRow()) - expect(true).assertEqual(resultSet.goToLastRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToLastRow0003 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToLastRow()) + expect(true).assertEqual(resultSet.goToPreviousRow()) + expect(true).assertEqual(resultSet.goToLastRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToLastRow0003 end *************"); + }) /** @@ -873,16 +868,17 @@ describe('rdbResultSetTest', function () { */ it('testGoToNextRow0001', 0, async function (done) { console.log(TAG + "************* testGoToNextRow0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToNextRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToNextRow0001 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToNextRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToNextRow0001 end *************"); + }) /** @@ -892,17 +888,18 @@ describe('rdbResultSetTest', function () { */ it('testGoToNextRow0002', 0, async function (done) { console.log(TAG + "************* testGoToNextRow0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - { - expect(false).assertEqual(resultSet.goToNextRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToNextRow0002 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + + expect(false).assertEqual(resultSet.goToNextRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToNextRow0002 end *************"); + }) /** @@ -912,19 +909,20 @@ describe('rdbResultSetTest', function () { */ it('testGoToNextRow0003', 0, async function (done) { console.log(TAG + "************* testGoToNextRow0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(true).assertEqual(resultSet.goToPreviousRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToNextRow0003 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(true).assertEqual(resultSet.goToPreviousRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToNextRow0003 end *************"); + }) /** @@ -934,17 +932,18 @@ describe('rdbResultSetTest', function () { */ it('testGoToNextRow0004', 0, async function (done) { console.log(TAG + "************* testGoToNextRow0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - expect(false).assertEqual(resultSet.goToNextRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToNextRow0004 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToLastRow()) + expect(false).assertEqual(resultSet.goToNextRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToNextRow0004 end *************"); + }) /** @@ -954,16 +953,17 @@ describe('rdbResultSetTest', function () { */ it('testGoToPreviousRow0001', 0, async function (done) { console.log(TAG + "************* testGoToPreviousRow0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(false).assertEqual(resultSet.goToPreviousRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToPreviousRow0001 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(false).assertEqual(resultSet.goToPreviousRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToPreviousRow0001 end *************"); + }) /** @@ -973,17 +973,18 @@ describe('rdbResultSetTest', function () { */ it('testGoToPreviousRow0002', 0, async function (done) { console.log(TAG + "************* testGoToPreviousRow0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - { - expect(false).assertEqual(resultSet.goToPreviousRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToPreviousRow0002 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + + expect(false).assertEqual(resultSet.goToPreviousRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToPreviousRow0002 end *************"); + }) /** @@ -993,18 +994,19 @@ describe('rdbResultSetTest', function () { */ it('testGoToPreviousRow0003', 0, async function (done) { console.log(TAG + "************* testGoToPreviousRow0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(true).assertEqual(resultSet.goToPreviousRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToPreviousRow0003 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(true).assertEqual(resultSet.goToPreviousRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToPreviousRow0003 end *************"); + }) /** @@ -1014,17 +1016,18 @@ describe('rdbResultSetTest', function () { */ it('testGoToPreviousRow0004', 0, async function (done) { console.log(TAG + "************* testGoToPreviousRow0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - expect(true).assertEqual(resultSet.goToPreviousRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToPreviousRow0004 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToLastRow()) + expect(true).assertEqual(resultSet.goToPreviousRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToPreviousRow0004 end *************"); + }) /** @@ -1034,18 +1037,19 @@ describe('rdbResultSetTest', function () { */ it('testGoTo0001', 0, async function (done) { console.log(TAG + "************* testGoTo0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - resultSet.goTo(1) - expect(1).assertEqual(resultSet.rowIndex) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoTo0001 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + resultSet.goTo(1) + expect(1).assertEqual(resultSet.rowIndex) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoTo0001 end *************"); + }) /** @@ -1055,18 +1059,19 @@ describe('rdbResultSetTest', function () { */ it('testGoTo0002', 0, async function (done) { console.log(TAG + "************* testGoTo0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - { - resultSet.goTo(1) - expect(-1).assertEqual(resultSet.rowIndex) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoTo0002 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + + resultSet.goTo(1) + expect(-1).assertEqual(resultSet.rowIndex) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoTo0002 end *************"); + }) /** @@ -1076,19 +1081,20 @@ describe('rdbResultSetTest', function () { */ it('testGoTo0003', 0, async function (done) { console.log(TAG + "************* testGoTo0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - resultSet.goTo(1) - expect(2).assertEqual(resultSet.rowIndex) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoTo0003 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + resultSet.goTo(1) + expect(2).assertEqual(resultSet.rowIndex) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoTo0003 end *************"); + }) /** @@ -1098,18 +1104,19 @@ describe('rdbResultSetTest', function () { */ it('testGoTo0004', 0, async function (done) { console.log(TAG + "************* testGoTo0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - resultSet.goTo(5) - expect(3).assertEqual(resultSet.rowIndex) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoTo0004 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToLastRow()) + resultSet.goTo(5) + expect(3).assertEqual(resultSet.rowIndex) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoTo0004 end *************"); + }) /** @@ -1119,18 +1126,19 @@ describe('rdbResultSetTest', function () { */ it('testGoToRow0001', 0, async function (done) { console.log(TAG + "************* testGoToRow0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - resultSet.goToRow(1) - expect(1).assertEqual(resultSet.rowIndex) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToRow0001 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + resultSet.goToRow(1) + expect(1).assertEqual(resultSet.rowIndex) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToRow0001 end *************"); + }) /** @@ -1140,41 +1148,43 @@ describe('rdbResultSetTest', function () { */ it('testGoToRow0002', 0, async function (done) { console.log(TAG + "************* testGoToRow0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - { - resultSet.goToRow(1) - expect(-1).assertEqual(resultSet.rowIndex) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToRow0002 end *************"); - } - }) - /** - * @tc.name resultSet goToRow test - * @tc.number SUB_DDM_AppDataFWK_JSRDB_ResultSet_0152 - * @tc.desc resultSet goToRow test - */ + let predicates = await new dataRdb.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + + resultSet.goToRow(1) + expect(-1).assertEqual(resultSet.rowIndex) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToRow0002 end *************"); + + }) + + /** + * @tc.name resultSet goToRow test + * @tc.number SUB_DDM_AppDataFWK_JSRDB_ResultSet_0152 + * @tc.desc resultSet goToRow test + */ it('testGoToRow0003', 0, async function (done) { console.log(TAG + "************* testGoToRow0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - resultSet.goToRow(1) - expect(1).assertEqual(resultSet.rowIndex) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToRow0003 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + resultSet.goToRow(1) + expect(1).assertEqual(resultSet.rowIndex) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToRow0003 end *************"); + }) /** @@ -1184,18 +1194,19 @@ describe('rdbResultSetTest', function () { */ it('testGoToRow0004', 0, async function (done) { console.log(TAG + "************* testGoToRow0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - resultSet.goToRow(5) - expect(3).assertEqual(resultSet.rowIndex) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToRow0004 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToLastRow()) + resultSet.goToRow(5) + expect(3).assertEqual(resultSet.rowIndex) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToRow0004 end *************"); + }) /** @@ -1205,17 +1216,18 @@ describe('rdbResultSetTest', function () { */ it('testIsAtFirstRow0001', 0, async function (done) { console.log(TAG + "************* testIsAtFirstRow0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.isAtFirstRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtFirstRow0001 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.isAtFirstRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtFirstRow0001 end *************"); + }) /** @@ -1225,17 +1237,18 @@ describe('rdbResultSetTest', function () { */ it('testIsAtFirstRow0002', 0, async function (done) { console.log(TAG + "************* testIsAtFirstRow0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - { - expect(false).assertEqual(resultSet.isAtFirstRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtFirstRow0002 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + + expect(false).assertEqual(resultSet.isAtFirstRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtFirstRow0002 end *************"); + }) /** @@ -1245,18 +1258,19 @@ describe('rdbResultSetTest', function () { */ it('testIsAtFirstRow0003', 0, async function (done) { console.log(TAG + "************* testIsAtFirstRow0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(false).assertEqual(resultSet.isAtFirstRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtFirstRow0003 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(false).assertEqual(resultSet.isAtFirstRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtFirstRow0003 end *************"); + }) /** @@ -1266,17 +1280,18 @@ describe('rdbResultSetTest', function () { */ it('testIsAtFirstRow0004', 0, async function (done) { console.log(TAG + "************* testIsAtFirstRow0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - expect(false).assertEqual(resultSet.isAtFirstRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtFirstRow0004 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToLastRow()) + expect(false).assertEqual(resultSet.isAtFirstRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtFirstRow0004 end *************"); + }) /** @@ -1286,18 +1301,19 @@ describe('rdbResultSetTest', function () { */ it('testIsAtFirstRow0005', 0, async function (done) { console.log(TAG + "************* testIsAtFirstRow0005 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - resultSet.goTo(1) - resultSet.goTo(0) - expect(true).assertEqual(resultSet.isAtFirstRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtFirstRow0005 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + resultSet.goTo(1) + resultSet.goTo(0) + expect(true).assertEqual(resultSet.isAtFirstRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtFirstRow0005 end *************"); + }) /** @@ -1307,18 +1323,19 @@ describe('rdbResultSetTest', function () { */ it('testIsAtFirstRow0006', 0, async function (done) { console.log(TAG + "************* testIsAtFirstRow0006 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - resultSet.goTo(1) - expect(true).assertEqual(resultSet.isAtFirstRow) - expect(true).assertEqual(resultSet.isAtFirstRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtFirstRow0006 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + resultSet.goTo(1) + expect(true).assertEqual(resultSet.isAtFirstRow) + expect(true).assertEqual(resultSet.isAtFirstRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtFirstRow0006 end *************"); + }) /** @@ -1328,17 +1345,18 @@ describe('rdbResultSetTest', function () { */ it('testIsAtLastRow0001', 0, async function (done) { console.log(TAG + "************* testIsAtLastRow0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(false).assertEqual(resultSet.isAtLastRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtLastRow0001 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(false).assertEqual(resultSet.isAtLastRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtLastRow0001 end *************"); + }) /** @@ -1348,17 +1366,18 @@ describe('rdbResultSetTest', function () { */ it('testIsAtLastRow0002', 0, async function (done) { console.log(TAG + "************* testIsAtLastRow0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - { - expect(false).assertEqual(resultSet.isAtLastRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtLastRow0002 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + + expect(false).assertEqual(resultSet.isAtLastRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtLastRow0002 end *************"); + }) /** @@ -1368,18 +1387,19 @@ describe('rdbResultSetTest', function () { */ it('testIsAtLastRow0003', 0, async function (done) { console.log(TAG + "************* testIsAtLastRow0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(false).assertEqual(resultSet.isAtLastRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtLastRow0003 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(false).assertEqual(resultSet.isAtLastRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtLastRow0003 end *************"); + }) /** @@ -1389,17 +1409,18 @@ describe('rdbResultSetTest', function () { */ it('testIsAtLastRow0004', 0, async function (done) { console.log(TAG + "************* testIsAtLastRow0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - expect(true).assertEqual(resultSet.isAtLastRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtLastRow0004 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToLastRow()) + expect(true).assertEqual(resultSet.isAtLastRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtLastRow0004 end *************"); + }) /** @@ -1409,18 +1430,19 @@ describe('rdbResultSetTest', function () { */ it('testIsAtLastRow0005', 0, async function (done) { console.log(TAG + "************* testIsAtLastRow0005 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - resultSet.goToRow(2) - expect(true).assertEqual(resultSet.isAtLastRow) - expect(true).assertEqual(resultSet.isAtLastRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtLastRow0005 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + resultSet.goToRow(2) + expect(true).assertEqual(resultSet.isAtLastRow) + expect(true).assertEqual(resultSet.isAtLastRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtLastRow0005 end *************"); + }) /** @@ -1430,18 +1452,19 @@ describe('rdbResultSetTest', function () { */ it('testGetDouble0001', 0, async function (done) { console.log(TAG + "************* testGetDouble0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - resultSet.goTo(1) - const data3 = resultSet.getDouble(resultSet.getColumnIndex("data3")) - expect(1.0).assertEqual(data3) - } - resultSet = null; - done(); - console.log(TAG + "************* testGetDouble0001 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + resultSet.goTo(1) + const data3 = resultSet.getDouble(resultSet.getColumnIndex("data3")) + expect(1.0).assertEqual(data3) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetDouble0001 end *************"); + }) /** @@ -1451,18 +1474,19 @@ describe('rdbResultSetTest', function () { */ it('testGetDouble0002', 0, async function (done) { console.log(TAG + "************* testGetDouble0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - resultSet.goTo(2) - const data3 = resultSet.getDouble(resultSet.getColumnIndex("data3")) - expect(2.5).assertEqual(data3) - } - resultSet = null; - done(); - console.log(TAG + "************* testGetDouble0002 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + resultSet.goTo(2) + const data3 = resultSet.getDouble(resultSet.getColumnIndex("data3")) + expect(2.5).assertEqual(data3) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetDouble0002 end *************"); + }) /** @@ -1472,18 +1496,19 @@ describe('rdbResultSetTest', function () { */ it('testGetDouble0003', 0, async function (done) { console.log(TAG + "************* testGetDouble0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - resultSet.goTo(3) - const data3 = resultSet.getDouble(resultSet.getColumnIndex("data3")) - expect(1.8).assertEqual(data3) - } - resultSet = null; - done(); - console.log(TAG + "************* testGetDouble0003 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + resultSet.goTo(3) + const data3 = resultSet.getDouble(resultSet.getColumnIndex("data3")) + expect(1.8).assertEqual(data3) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetDouble0003 end *************"); + }) /** @@ -1493,18 +1518,19 @@ describe('rdbResultSetTest', function () { */ it('testGetDouble0004', 0, async function (done) { console.log(TAG + "************* testGetDouble0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - resultSet.goTo(1) - const data2 = resultSet.getDouble(resultSet.getColumnIndex("data2")) - expect(10).assertEqual(data2) - } - resultSet = null; - done(); - console.log(TAG + "************* testGetDouble0004 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + resultSet.goTo(1) + const data2 = resultSet.getDouble(resultSet.getColumnIndex("data2")) + expect(10).assertEqual(data2) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetDouble0004 end *************"); + }) /** @@ -1514,20 +1540,21 @@ describe('rdbResultSetTest', function () { */ it('testIsColumnNull0001', 0, async function (done) { console.log(TAG + "************* testIsColumnNull0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - const isColumnNull1 = resultSet.isColumnNull(resultSet.getColumnIndex("data1")) - expect(false).assertEqual(isColumnNull1) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsColumnNull0001 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + const isColumnNull1 = resultSet.isColumnNull(resultSet.getColumnIndex("data1")) + expect(false).assertEqual(isColumnNull1) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsColumnNull0001 end *************"); + }) /** @@ -1537,20 +1564,21 @@ describe('rdbResultSetTest', function () { */ it('testIsColumnNull0002', 0, async function (done) { console.log(TAG + "************* testIsColumnNull0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - const isColumnNull4 = resultSet.isColumnNull(resultSet.getColumnIndex("data4")) - expect(true).assertEqual(isColumnNull4) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsColumnNull0002 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + const isColumnNull4 = resultSet.isColumnNull(resultSet.getColumnIndex("data4")) + expect(true).assertEqual(isColumnNull4) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsColumnNull0002 end *************"); + }) /** @@ -1560,15 +1588,20 @@ describe('rdbResultSetTest', function () { */ it('testIsColumnNull0003', 0, async function (done) { console.log(TAG + "************* testIsColumnNull0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - resultSet.goToRow(5) + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + resultSet.goToRow(5) + try { expect(false).assertEqual(resultSet.isColumnNull(1)); - resultSet = null; - done(); - console.log(TAG + "************* testIsColumnNull0003 end *************"); + } catch (e) { + expect(e.code).assertEqual("14800013"); } + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsColumnNull0003 end *************"); + }) /** * @tc.name resultSet isColumnNull test @@ -1577,18 +1610,19 @@ describe('rdbResultSetTest', function () { */ it('testIsColumnNull0004', 0, async function (done) { console.log(TAG + "************* testIsColumnNull0004 start *************"); + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - resultSet.goToRow(2) - expect(false).assertEqual(resultSet.isColumnNull(1)) - expect(true).assertEqual(resultSet.isColumnNull(4)) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsColumnNull0004 end *************"); + resultSet.goToRow(2) + expect(false).assertEqual(resultSet.isColumnNull(1)) + expect(true).assertEqual(resultSet.isColumnNull(4)) } + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsColumnNull0004 end *************"); + }) /** @@ -1598,16 +1632,17 @@ describe('rdbResultSetTest', function () { */ it('testGetColumnIndex0001', 0, async function (done) { console.log(TAG + "************* testGetColumnIndex0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(1).assertEqual(resultSet.getColumnIndex("data1")) - resultSet = null; - done(); - console.log(TAG + "************* testGetColumnIndex0001 end *************"); - } + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(1).assertEqual(resultSet.getColumnIndex("data1")) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetColumnIndex0001 end *************"); + }) /** @@ -1617,16 +1652,17 @@ describe('rdbResultSetTest', function () { */ it('testGetColumnIndex0002', 0, async function (done) { console.log(TAG + "************* testGetColumnIndex0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - expect(-1).assertEqual(resultSet.getColumnIndex("data1")) - - resultSet = null; - done(); - console.log(TAG + "************* testGetColumnIndex0002 end *************"); - } + + let predicates = await new dataRdb.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + expect(-1).assertEqual(resultSet.getColumnIndex("data1")) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetColumnIndex0002 end *************"); + }) /** @@ -1636,15 +1672,16 @@ describe('rdbResultSetTest', function () { */ it('testGetColumnIndex0003', 0, async function (done) { console.log(TAG + "************* testGetColumnIndex0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - expect(-1).assertEqual(resultSet.getColumnIndex("dataX")) - resultSet = null; - done(); - console.log(TAG + "************* testGetColumnIndex0003 end *************"); - } + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + expect(-1).assertEqual(resultSet.getColumnIndex("dataX")) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetColumnIndex0003 end *************"); + }) /** @@ -1654,18 +1691,19 @@ describe('rdbResultSetTest', function () { */ it('testGetColumnIndex0004', 0, async function (done) { console.log(TAG + "************* testGetColumnIndex0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - try{ - expect(-1).assertEqual(resultSet.getColumnIndex("")) - } catch(err) { - expect("401").assertEqual(err.code) - } - resultSet = null - done() - console.log(TAG + "************* testGetColumnIndex0004 end *************"); + + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + try { + expect(-1).assertEqual(resultSet.getColumnIndex("")) + } catch (err) { + expect("401").assertEqual(err.code) } + resultSet.close() + resultSet = null + done() + console.log(TAG + "************* testGetColumnIndex0004 end *************"); + }) /** @@ -1675,17 +1713,18 @@ describe('rdbResultSetTest', function () { */ it('testGetColumnName0001', 0, async function (done) { console.log(TAG + "************* testGetColumnIndex0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - expect("data1").assertEqual(resultSet.getColumnName(1)) - expect("data4").assertEqual(resultSet.getColumnName(4)) + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect("data1").assertEqual(resultSet.getColumnName(1)) + expect("data4").assertEqual(resultSet.getColumnName(4)) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetColumnName0001 end *************"); - resultSet = null; - done(); - console.log(TAG + "************* testGetColumnName0001 end *************"); - } }) /** @@ -1695,18 +1734,19 @@ describe('rdbResultSetTest', function () { */ it('testGetColumnName0002', 0, async function (done) { console.log(TAG + "************* testGetColumnName0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - expect("").assertEqual(resultSet.getColumnName(1)) - expect("").assertEqual(resultSet.getColumnName(4)) + let predicates = await new dataRdb.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + + expect("").assertEqual(resultSet.getColumnName(1)) + expect("").assertEqual(resultSet.getColumnName(4)) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetColumnName0002 end *************"); - resultSet = null; - done(); - console.log(TAG + "************* testGetColumnName0002 end *************"); - } }) /** @@ -1716,16 +1756,17 @@ describe('rdbResultSetTest', function () { */ it('testGetColumnName0003', 0, async function (done) { console.log(TAG + "************* testGetColumnName0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - expect("").assertEqual(resultSet.getColumnName(10)) + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect("").assertEqual(resultSet.getColumnName(10)) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetColumnName0003 end *************"); - resultSet = null; - done(); - console.log(TAG + "************* testGetColumnName0003 end *************"); - } }) /** @@ -1735,17 +1776,18 @@ describe('rdbResultSetTest', function () { */ it('testGetColumnName0004', 0, async function (done) { console.log(TAG + "************* testGetColumnName0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - expect("").assertEqual(resultSet.getColumnName(10)) + let predicates = await new dataRdb.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + + expect("").assertEqual(resultSet.getColumnName(10)) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetColumnName0004 end *************"); - resultSet = null; - done(); - console.log(TAG + "************* testGetColumnName0004 end *************"); - } }) /** @@ -1755,17 +1797,18 @@ describe('rdbResultSetTest', function () { */ it('testClose0001', 0, async function (done) { console.log(TAG + "************* testClose0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - resultSet.goToRow(1) - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testClose0001 end *************"); - } + let predicates = await new dataRdb.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + resultSet.goToRow(1) + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testClose0001 end *************"); + }) /** @@ -1775,17 +1818,18 @@ describe('rdbResultSetTest', function () { */ it('testClose0002', 0, async function (done) { console.log(TAG + "************* testClose0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testClose0002 end *************"); - } + let predicates = await new dataRdb.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testClose0002 end *************"); + }) /** @@ -1795,25 +1839,25 @@ describe('rdbResultSetTest', function () { */ it('testBigData0001', 0, async function (done) { console.log(TAG + "************* testBigData0001 start *************"); - { - await createBigData(500); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(500).assertEqual(count); - - resultSet.goToFirstRow(); - let i = 0; - while (resultSet.isEnded == false) { - expect("test" + i++).assertEqual(resultSet.getString(1)) - resultSet.goToNextRow(); - } - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0001 end *************"); + await createBigData(500); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(500).assertEqual(count); + + resultSet.goToFirstRow(); + let i = 0; + while (resultSet.isEnded == false) { + expect("test" + i++).assertEqual(resultSet.getString(1)) + resultSet.goToNextRow(); } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0001 end *************"); + }) /** @@ -1823,25 +1867,25 @@ describe('rdbResultSetTest', function () { */ it('testBigData0002', 0, async function (done) { console.log(TAG + "************* testBigData0002 start *************"); - { - await createBigData(500); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(500).assertEqual(count); - - resultSet.goToLastRow(); - let i = resultSet.rowCount; - while (i >= 1) { - expect("test" + --i).assertEqual(resultSet.getString(1)) - resultSet.goToPreviousRow(); - } - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0002 end *************"); + await createBigData(500); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(500).assertEqual(count); + + resultSet.goToLastRow(); + let i = resultSet.rowCount; + while (i >= 1) { + expect("test" + --i).assertEqual(resultSet.getString(1)) + resultSet.goToPreviousRow(); } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0002 end *************"); + }) /** @@ -1851,24 +1895,24 @@ describe('rdbResultSetTest', function () { */ it('testBigData0003', 0, async function (done) { console.log(TAG + "************* testBigData0003 start *************"); - { - await createBigData(500); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(500).assertEqual(count); - let rows = [62, 80, 59, 121, 45, 99, 42, 104, 41, 105, 499, 248]; - for (const i of rows) { - resultSet.goToRow(i); - expect("test" + i).assertEqual(resultSet.getString(1)) - } + await createBigData(500); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(500).assertEqual(count); - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0003 end *************"); + let rows = [62, 80, 59, 121, 45, 99, 42, 104, 41, 105, 499, 248]; + for (const i of rows) { + resultSet.goToRow(i); + expect("test" + i).assertEqual(resultSet.getString(1)) } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0003 end *************"); + }) /** @@ -1878,27 +1922,27 @@ describe('rdbResultSetTest', function () { */ it('testBigData0004', 0, async function (done) { console.log(TAG + "************* testBigData0004 start *************"); - { - await createBigData(0); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(0).assertEqual(count); - resultSet.goToFirstRow(); - expect(false).assertEqual(resultSet.isStarted); + await createBigData(0); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(0).assertEqual(count); - let rows = [1, 2, 0, -1, -2]; - for (const i of rows) { - resultSet.goToRow(i); - expect(false).assertEqual(resultSet.isStarted); - } + resultSet.goToFirstRow(); + expect(false).assertEqual(resultSet.isStarted); - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0004 end *************"); + let rows = [1, 2, 0, -1, -2]; + for (const i of rows) { + resultSet.goToRow(i); + expect(false).assertEqual(resultSet.isStarted); } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0004 end *************"); + }) /** @@ -1908,29 +1952,31 @@ describe('rdbResultSetTest', function () { */ it('testBigData0005', 0, async function (done) { console.log(TAG + "************* testBigData0005 start *************"); - { - await createBigData(1); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(1).assertEqual(count); - resultSet.goToFirstRow(); - expect(true).assertEqual(resultSet.isStarted); - expect("test0").assertEqual(resultSet.getString(1)) + await createBigData(1); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(1).assertEqual(count); + resultSet.goToFirstRow(); + expect(true).assertEqual(resultSet.isStarted); + expect("test0").assertEqual(resultSet.getString(1)) + try { let rows = [1, 2, -1, -2]; for (const i of rows) { resultSet.goToRow(i) expect(true).assertEqual(resultSet.isStarted) expect("").assertEqual(resultSet.getString(1)) } - - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0005 end *************"); + } catch (e) { + expect(e.code).assertEqual("14800013"); } + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0005 end *************"); + }) /** @@ -1940,35 +1986,39 @@ describe('rdbResultSetTest', function () { */ it('testBigData0006', 0, async function (done) { console.log(TAG + "************* testBigData0006 start *************"); - { - await createBigData(2); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(2).assertEqual(count); - resultSet.goToFirstRow(); - expect(true).assertEqual(resultSet.isStarted); + await createBigData(2); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(2).assertEqual(count); - let rows = [0, 1]; - for (const i of rows) { - resultSet.goToRow(i); - expect(true).assertEqual(resultSet.isStarted); - expect("test" + i).assertEqual(resultSet.getString(1)) - } + resultSet.goToFirstRow(); + expect(true).assertEqual(resultSet.isStarted); + let rows = [0, 1]; + for (const i of rows) { + resultSet.goToRow(i); + expect(true).assertEqual(resultSet.isStarted); + expect("test" + i).assertEqual(resultSet.getString(1)) + } + + try { rows = [2, 3, 4, -1, -2]; for (const i of rows) { resultSet.goToRow(i); expect(true).assertEqual(resultSet.isStarted); expect("").assertEqual(resultSet.getString(1)) } - - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0006 end *************"); + } catch (e) { + expect(e.code).assertEqual("14800013"); } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0006 end *************"); + }) /** @@ -1978,28 +2028,28 @@ describe('rdbResultSetTest', function () { */ it('testBigData0007', 0, async function (done) { console.log(TAG + "************* testBigData0007 start *************"); - { - await createBigData(500); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(500).assertEqual(count); - let rows = [62, 80, 59, 121, 45, -1, 99, 42, 104, 41, 105, 499, 248]; - for (const i of rows) { - resultSet.goToRow(i); - if (i > 0 ) { - expect("test" + i).assertEqual(resultSet.getString(1)) - } else { - expect("test45").assertEqual(resultSet.getString(1)) - } - } + await createBigData(500); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(500).assertEqual(count); - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0007 end *************"); + let rows = [62, 80, 59, 121, 45, -1, 99, 42, 104, 41, 105, 499, 248]; + for (const i of rows) { + resultSet.goToRow(i); + if (i > 0) { + expect("test" + i).assertEqual(resultSet.getString(1)) + } else { + expect("test45").assertEqual(resultSet.getString(1)) + } } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0007 end *************"); + }) /** @@ -2009,23 +2059,23 @@ describe('rdbResultSetTest', function () { */ it('testBigData0008', 0, async function (done) { console.log(TAG + "************* testBigData0008 start *************"); - { - await createBigData(200); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(200).assertEqual(count); - - let i = 0; - while (resultSet.goToNextRow() == 0) { - expect("test" + i++).assertEqual(resultSet.getString(1)) - } - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0008 end *************"); + await createBigData(200); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(200).assertEqual(count); + + let i = 0; + while (resultSet.goToNextRow() == 0) { + expect("test" + i++).assertEqual(resultSet.getString(1)) } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0008 end *************"); + }) /** @@ -2035,25 +2085,25 @@ describe('rdbResultSetTest', function () { */ it('testBigData0009', 0, async function (done) { console.log(TAG + "************* testBigData0009 start *************"); - { - await createBigData(200); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(200).assertEqual(count); - let i = 0; - while (i < 200) { - resultSet.goToRow(i); - expect("test" + i).assertEqual(resultSet.getString(1)) - i++; - } + await createBigData(200); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(200).assertEqual(count); - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0009 end *************"); + let i = 0; + while (i < 200) { + resultSet.goToRow(i); + expect("test" + i).assertEqual(resultSet.getString(1)) + i++; } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0009 end *************"); + }) /** @@ -2063,32 +2113,32 @@ describe('rdbResultSetTest', function () { */ it('testBigData0010', 0, async function (done) { console.log(TAG + "************* testBigData0010 start *************"); - { - await createBigData(200); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(200).assertEqual(count); - - resultSet.goToFirstRow(); - let i = 0; - while (resultSet.isEnded == false) { - expect("test" + i++).assertEqual(resultSet.getString(1)) - resultSet.goToNextRow(); - } - i = 0; - while (i < 200) { - resultSet.goToRow(i); - expect("test" + i).assertEqual(resultSet.getString(1)) - i++; - } + await createBigData(200); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(200).assertEqual(count); - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0010 end *************"); + resultSet.goToFirstRow(); + let i = 0; + while (resultSet.isEnded == false) { + expect("test" + i++).assertEqual(resultSet.getString(1)) + resultSet.goToNextRow(); } + + i = 0; + while (i < 200) { + resultSet.goToRow(i); + expect("test" + i).assertEqual(resultSet.getString(1)) + i++; + } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0010 end *************"); + }) /** @@ -2098,32 +2148,32 @@ describe('rdbResultSetTest', function () { */ it('testBigData0011', 0, async function (done) { console.log(TAG + "************* testBigData0011 start *************"); - { - await createBigData(200); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(200).assertEqual(count); - let i = 0; - while (i < 200) { - resultSet.goToRow(i); - expect("test" + i).assertEqual(resultSet.getString(1)) - i++; - } + await createBigData(200); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(200).assertEqual(count); - resultSet.goToFirstRow(); - i = 0; - while (resultSet.isEnded == false) { - expect("test" + i++).assertEqual(resultSet.getString(1)) - resultSet.goToNextRow(); - } + let i = 0; + while (i < 200) { + resultSet.goToRow(i); + expect("test" + i).assertEqual(resultSet.getString(1)) + i++; + } - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0011 end *************"); + resultSet.goToFirstRow(); + i = 0; + while (resultSet.isEnded == false) { + expect("test" + i++).assertEqual(resultSet.getString(1)) + resultSet.goToNextRow(); } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0011 end *************"); + }) /** @@ -2133,22 +2183,22 @@ describe('rdbResultSetTest', function () { */ it('testBigData0012', 0, async function (done) { console.log(TAG + "************* testBigData0012 start *************"); - { - await createBigData(1); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(1).assertEqual(count); - let i = 0; - resultSet.goToNextRow(); - expect("test0").assertEqual(resultSet.getString(1)) + await createBigData(1); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(1).assertEqual(count); + + let i = 0; + resultSet.goToNextRow(); + expect("test0").assertEqual(resultSet.getString(1)) + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0012 end *************"); - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0012 end *************"); - } }) /** @@ -2158,31 +2208,31 @@ describe('rdbResultSetTest', function () { */ it('testBigData0013', 0, async function (done) { console.log(TAG + "************* testBigData0013 start *************"); - { - await createBigData(200); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(200).assertEqual(count); - - resultSet.goToFirstRow(); - let i = 0; - while (resultSet.isEnded == false) { - expect("test" + i++).assertEqual(resultSet.getString(1)) - resultSet.goToNextRow(); - } - resultSet.goToRow(1); - expect("test1").assertEqual(resultSet.getString(1)) + await createBigData(200); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(200).assertEqual(count); - resultSet.goToRow(5); - expect("test5").assertEqual(resultSet.getString(1)) - - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0013 end *************"); + resultSet.goToFirstRow(); + let i = 0; + while (resultSet.isEnded == false) { + expect("test" + i++).assertEqual(resultSet.getString(1)) + resultSet.goToNextRow(); } + + resultSet.goToRow(1); + expect("test1").assertEqual(resultSet.getString(1)) + + resultSet.goToRow(5); + expect("test5").assertEqual(resultSet.getString(1)) + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0013 end *************"); + }) /** @@ -2192,32 +2242,32 @@ describe('rdbResultSetTest', function () { */ it('testBigData0014', 0, async function (done) { console.log(TAG + "************* testBigData0014 start *************"); - { - await createBigData(5); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(5).assertEqual(count); - - resultSet.goToFirstRow(); - let i = 0; - while (resultSet.isEnded == false) { - expect("test" + i++).assertEqual(resultSet.getString(1)) - resultSet.goToNextRow(); - } - i = 0; - while (i < 5) { - resultSet.goToRow(i); - expect("test" + i).assertEqual(resultSet.getString(1)) - i++; - } + await createBigData(5); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(5).assertEqual(count); - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0014 end *************"); + resultSet.goToFirstRow(); + let i = 0; + while (resultSet.isEnded == false) { + expect("test" + i++).assertEqual(resultSet.getString(1)) + resultSet.goToNextRow(); + } + + i = 0; + while (i < 5) { + resultSet.goToRow(i); + expect("test" + i).assertEqual(resultSet.getString(1)) + i++; } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0014 end *************"); + }) console.log(TAG + "*************Unit Test End*************"); }) \ No newline at end of file diff --git a/relational_store/test/js/rdb/unittest/src/RdbstoreBackupRestoreWithFAContextJsunit.test.js b/relational_store/test/js/rdb/unittest/src/RdbstoreBackupRestoreWithFAContextJsunit.test.js index 2d62b6fe..4b174d56 100644 --- a/relational_store/test/js/rdb/unittest/src/RdbstoreBackupRestoreWithFAContextJsunit.test.js +++ b/relational_store/test/js/rdb/unittest/src/RdbstoreBackupRestoreWithFAContextJsunit.test.js @@ -107,6 +107,7 @@ describe('rdbStoreBackupRestoreWithFAContextTest', function () { afterEach(async function () { console.info(TAG + 'afterEach') + rdbStore = null await data_rdb.deleteRdbStore(context, STORE_CONFIG.name) await data_rdb.deleteRdbStore(context, DATABASE_BACKUP_NAME) }) @@ -176,8 +177,8 @@ describe('rdbStoreBackupRestoreWithFAContextTest', function () { } catch (err) { expect(false).assertTrue() } + resultSet.close() resultSet = null - rdbStore = null done() await console.log(TAG + "************* RdbBackupRestoreTest_0010 end *************") }) diff --git a/relational_store/test/js/rdb/unittest/src/RdbstoreCreateDeleteWithFAContextJsunit.test.js b/relational_store/test/js/rdb/unittest/src/RdbstoreCreateDeleteWithFAContextJsunit.test.js index 9563fc51..5b8910de 100644 --- a/relational_store/test/js/rdb/unittest/src/RdbstoreCreateDeleteWithFAContextJsunit.test.js +++ b/relational_store/test/js/rdb/unittest/src/RdbstoreCreateDeleteWithFAContextJsunit.test.js @@ -17,7 +17,8 @@ import dataRdb from '@ohos.data.rdb'; import featureAbility from '@ohos.ability.featureAbility'; const TAG = "[RDB_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; const STORE_CONFIG = { name: "CreateDeleteWithFAContextTest.db", @@ -34,6 +35,7 @@ describe('rdbStoreCreateDeleteWithFAContextTest', function () { afterEach(async function () { console.info(TAG + 'afterEach') + await dataRdb.deleteRdbStore(context, "CreateDeleteWithFAContextTest.db"); }) afterAll(async function () { @@ -161,6 +163,7 @@ describe('rdbStoreCreateDeleteWithFAContextTest', function () { return } console.log("Delete RdbStore successfully.") + rdbStore = null done() console.log(TAG + "************* testRdbStoreCreateDeleteWithFAContextTest0003 end *************"); }); @@ -195,6 +198,7 @@ describe('rdbStoreCreateDeleteWithFAContextTest', function () { rdbStore.delete(predicates).then((rows) => { console.log("Delete rows: " + rows) expect(1).assertEqual(rows) + rdbStore = null dataRdb.deleteRdbStore(context, "CreateDeleteWithFAContextTest.db").then(() => { console.log("Delete RdbStore successfully.") done() diff --git a/relational_store/test/js/rdb/unittest/src/RdbstoreDeleteJsunit.test.js b/relational_store/test/js/rdb/unittest/src/RdbstoreDeleteJsunit.test.js index 58951234..ca833470 100644 --- a/relational_store/test/js/rdb/unittest/src/RdbstoreDeleteJsunit.test.js +++ b/relational_store/test/js/rdb/unittest/src/RdbstoreDeleteJsunit.test.js @@ -16,7 +16,8 @@ import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from ' import dataRdb from '@ohos.data.rdb'; const TAG = "[RDB_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; const STORE_CONFIG = { name: "Delete.db", @@ -36,7 +37,6 @@ describe('rdbStoreDeleteTest', function () { afterEach(async function () { console.info(TAG + 'afterEach') - await rdbStore.executeSql("DELETE FROM test"); rdbStore = null await dataRdb.deleteRdbStore("Delete.db"); }) @@ -178,6 +178,7 @@ describe('rdbStoreDeleteTest', function () { predicates.equalTo("age", 28) let resultSet = await rdbStore.query(predicates) expect(1).assertEqual(resultSet.rowCount) + resultSet.close() } { let predicates = await new dataRdb.RdbPredicates("test") @@ -196,6 +197,7 @@ describe('rdbStoreDeleteTest', function () { predicates.equalTo("age", 28) let resultSet = await rdbStore.query(predicates) expect(0).assertEqual(resultSet.rowCount) + resultSet.close() } done() console.log(TAG + "************* testRdbStoreDelete0003 end *************"); diff --git a/relational_store/test/js/rdb/unittest/src/RdbstoreEncryptionJsunit.test.js b/relational_store/test/js/rdb/unittest/src/RdbstoreEncryptionJsunit.test.js index 51d1ae61..18fc07ff 100644 --- a/relational_store/test/js/rdb/unittest/src/RdbstoreEncryptionJsunit.test.js +++ b/relational_store/test/js/rdb/unittest/src/RdbstoreEncryptionJsunit.test.js @@ -86,7 +86,6 @@ describe('rdbEncryptTest', function () { await data_rdb.deleteRdbStore(context, STORE_CONFIG_ENCRYPT.name) await data_rdb.deleteRdbStore(context, STORE_CONFIG_UNENCRYPT.name) await data_rdb.deleteRdbStore(context, STORE_CONFIG_WRONG.name) - rdbStore = null }) afterAll(async function () { @@ -110,6 +109,7 @@ describe('rdbEncryptTest', function () { } catch (err) { expect(null).assertFail(); } + store = null }).catch((err) => { expect(null).assertFail(); }) @@ -135,6 +135,7 @@ describe('rdbEncryptTest', function () { } catch (err) { expect(null).assertFail(); } + store = null }).catch((err) => { expect(null).assertFail(); }) @@ -170,6 +171,7 @@ describe('rdbEncryptTest', function () { } catch (err) { expect(false).assertTrue() } + resultSet.close() resultSet = null rdbStore = null done() diff --git a/relational_store/test/js/rdb/unittest/src/RdbstoreInsertJsunit.test.js b/relational_store/test/js/rdb/unittest/src/RdbstoreInsertJsunit.test.js index 74e2da5e..2e3f186c 100644 --- a/relational_store/test/js/rdb/unittest/src/RdbstoreInsertJsunit.test.js +++ b/relational_store/test/js/rdb/unittest/src/RdbstoreInsertJsunit.test.js @@ -17,7 +17,8 @@ import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from ' import dataRdb from '@ohos.data.rdb'; const TAG = "[RDB_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; const STORE_CONFIG = { name: "InsertTest.db", @@ -108,6 +109,7 @@ describe('rdbStoreInsertTest', function () { } catch (e) { console.log("insert1 error " + e); } + resultSet.close() resultSet = null done() console.log(TAG + "************* testRdbStoreInsert0001 end *************"); @@ -204,6 +206,7 @@ describe('rdbStoreInsertTest', function () { } catch (e) { console.log("insert error " + e); } + resultSet.close() resultSet = null done() console.log(TAG + "************* testRdbStoreInsert0004 end *************"); @@ -237,6 +240,7 @@ describe('rdbStoreInsertTest', function () { } catch (e) { console.log("insert error " + e); } + resultSet.close() resultSet = null done() console.log(TAG + "************* testRdbStoreInsert0005 end *************"); @@ -270,6 +274,7 @@ describe('rdbStoreInsertTest', function () { } catch (e) { console.log("insert error " + e); } + resultSet.close() resultSet = null done() console.log(TAG + "************* testRdbStoreInsert0006 end *************"); @@ -299,6 +304,7 @@ describe('rdbStoreInsertTest', function () { let resultSet = await rdbStore.querySql("SELECT * FROM test"); let count = resultSet.rowCount; expect(100).assertEqual(count); + resultSet.close() console.log(TAG + "************* testRdbStorebatchInsert001 end *************"); }) diff --git a/relational_store/test/js/rdb/unittest/src/RdbstorePredicatesComplexFiledJsunit.test.js b/relational_store/test/js/rdb/unittest/src/RdbstorePredicatesComplexFiledJsunit.test.js index b6603d1c..80ffc254 100644 --- a/relational_store/test/js/rdb/unittest/src/RdbstorePredicatesComplexFiledJsunit.test.js +++ b/relational_store/test/js/rdb/unittest/src/RdbstorePredicatesComplexFiledJsunit.test.js @@ -16,7 +16,8 @@ import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from import dataRdb from '@ohos.data.rdb'; const TAG = "[RDB_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT, " + "age INTEGER, " + "salary REAL, " + "adddate DATE)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "name TEXT, " + "age INTEGER, " + "salary REAL, " + "adddate DATE)"; const STORE_CONFIG = { name: "PredicatesComplexFiledJsunit.db", } @@ -81,6 +82,7 @@ describe('rdbStorePredicatesComplexFiledTest', function () { expect(3).assertEqual(count); await expect("2022-09-02").assertEqual(birthday) expect(false).assertEqual(resultSet.goToNextRow()) + resultSet.close(); done(); console.log(TAG + "************* testRdbPredicatesComplexFiled0001 end *************"); }) @@ -107,6 +109,7 @@ describe('rdbStorePredicatesComplexFiledTest', function () { expect(2).assertEqual(count); await expect("2022-09-01").assertEqual(birthday) expect(false).assertEqual(resultSet.goToNextRow()) + resultSet.close(); done(); console.log(TAG + "************* testRdbPredicatesComplexFiled0002 end *************"); }) diff --git a/relational_store/test/js/rdb/unittest/src/RdbstorePredicatesJoinBJsunit.test.js b/relational_store/test/js/rdb/unittest/src/RdbstorePredicatesJoinBJsunit.test.js index 45611edc..df572a73 100644 --- a/relational_store/test/js/rdb/unittest/src/RdbstorePredicatesJoinBJsunit.test.js +++ b/relational_store/test/js/rdb/unittest/src/RdbstorePredicatesJoinBJsunit.test.js @@ -35,7 +35,7 @@ const STORE_CONFIG = { name: "RdbJoinBTest.db" } const CURRENT_STORE_VERSION = 1; -const TAG = 'RDB_TEST'; +const TAG = 'RDB_TEST '; var rdbStore = undefined; @@ -57,8 +57,8 @@ describe('rdbStorePredicatesJoinBTest', function () { afterEach(async function () { console.info(TAG + 'afterEach'); - await dataRdb.deleteRdbStore("RdbJoinBTest.db"); rdbStore = null; + await dataRdb.deleteRdbStore("RdbJoinBTest.db"); console.info(TAG + 'afterEach end'); }) @@ -78,7 +78,7 @@ describe('rdbStorePredicatesJoinBTest', function () { {id:40, dName:"CaiWuBu", loc:"ShenZhen"}, ]; - rdbStore.batchInsert("dept", depts); + await rdbStore.batchInsert("dept", depts); console.info(TAG + 'generateDeptTable end'); } @@ -93,7 +93,7 @@ describe('rdbStorePredicatesJoinBTest', function () { {id:4, jName:"Clerk", description:"UseOfficeSoftware"}, ] - rdbStore.batchInsert("job", jobs); + await rdbStore.batchInsert("job", jobs); console.info(TAG + 'generateJobTable end') } @@ -118,7 +118,7 @@ describe('rdbStorePredicatesJoinBTest', function () { {id:1014, eName:"GuanYu", jobId:4, mgr:1007, joinDate:"2002-01-23", salary:13000.00, bonus:null, deptId:10}, ]; - rdbStore.batchInsert("emp", emps); + await rdbStore.batchInsert("emp", emps); console.info(TAG + 'generateEmpTable end'); } @@ -135,7 +135,7 @@ describe('rdbStorePredicatesJoinBTest', function () { {grade:5, loSalary:30010, hiSalary:99990}, ]; - rdbStore.batchInsert("salarygrade", salarygrades); + await rdbStore.batchInsert("salarygrade", salarygrades); console.info(TAG + 'generateSalarygradeTable end') } @@ -164,6 +164,7 @@ describe('rdbStorePredicatesJoinBTest', function () { expect(20).assertEqual(resultSet.getInt(8)); expect("XueGongBu").assertEqual(resultSet.getString(9)); expect("ShangHai").assertEqual(resultSet.getString(10)); + resultSet.close(); done(); }) @@ -175,8 +176,8 @@ describe('rdbStorePredicatesJoinBTest', function () { */ it('testRdbJoinB002', 0, async function (done) { console.log(TAG + "testRdbJoinB002 begin."); - let resultSet = await rdbStore.querySql( - "SELECT t1.id, t1.eName, t1.salary, t2.jName, t2.description FROM emp t1 INNER JOIN job t2 ON t1.`jobId` = t2.`id` WHERE t1.eName = 'SunWuKong'") + let resultSet = await rdbStore.querySql("SELECT t1.id, t1.eName, t1.salary, t2.jName, t2.description" + + " FROM emp t1 INNER JOIN job t2 ON t1.`jobId` = t2.`id` WHERE t1.eName = 'SunWuKong'") expect(1).assertEqual(resultSet.rowCount); expect(true).assertEqual(resultSet.goToFirstRow()); @@ -185,6 +186,7 @@ describe('rdbStorePredicatesJoinBTest', function () { expect(8000.00).assertEqual(resultSet.getDouble(2)); expect("Clerk").assertEqual(resultSet.getString(3)); expect("UseOfficeSoftware").assertEqual(resultSet.getString(4)); + resultSet.close(); done(); }) @@ -197,8 +199,8 @@ describe('rdbStorePredicatesJoinBTest', function () { */ it('testRdbJoinB003', 0, async function (done) { console.log(TAG + "testRdbJoinB003 begin."); - let resultSet = await rdbStore.querySql( - "SELECT t1.eName, t1.salary, t2.* FROM emp t1 INNER JOIN salarygrade t2 WHERE t1.salary BETWEEN t2.losalary AND t2.hisalary") + let resultSet = await rdbStore.querySql("SELECT t1.eName, t1.salary, t2.* " + + "FROM emp t1 INNER JOIN salarygrade t2 WHERE t1.salary BETWEEN t2.losalary AND t2.hisalary") expect(14).assertEqual(resultSet.rowCount); expect(true).assertEqual(resultSet.goToFirstRow()); @@ -207,6 +209,7 @@ describe('rdbStorePredicatesJoinBTest', function () { expect(1).assertEqual(resultSet.getInt(2)); expect(7000).assertEqual(resultSet.getInt(3)); expect(12000).assertEqual(resultSet.getInt(4)); + resultSet.close(); done(); }) @@ -218,9 +221,9 @@ describe('rdbStorePredicatesJoinBTest', function () { */ it('testRdbJoinB004', 0, async function (done) { console.log(TAG + "testRdbJoinB004 begin."); - let resultSet = await rdbStore.querySql( - "SELECT t1.eName, t1.salary, t2.jName, t2.description, t3.dName, t3.loc, t4.grade FROM emp t1 INNER JOIN job t2 INNER JOIN dept t3 " - + "INNER JOIN salarygrade t4 ON t1.jobId = t2.id AND t1.deptId = t3.id AND t1.salary BETWEEN t4.loSalary AND t4.hiSalary"); + let resultSet = await rdbStore.querySql("SELECT t1.eName, t1.salary, t2.jName, t2.description, t3.dName, " + + "t3.loc, t4.grade FROM emp t1 INNER JOIN job t2 INNER JOIN dept t3 INNER JOIN salarygrade t4 " + + "ON t1.jobId = t2.id AND t1.deptId = t3.id AND t1.salary BETWEEN t4.loSalary AND t4.hiSalary"); expect(14).assertEqual(resultSet.rowCount); expect(true).assertEqual(resultSet.goToFirstRow()); @@ -231,6 +234,7 @@ describe('rdbStorePredicatesJoinBTest', function () { expect("XueGongBu").assertEqual(resultSet.getString(4)); expect("ShangHai").assertEqual(resultSet.getString(5)); expect(1).assertEqual(resultSet.getInt(6)); + resultSet.close(); done(); }) @@ -251,6 +255,7 @@ describe('rdbStorePredicatesJoinBTest', function () { expect(1004).assertEqual(resultSet.getInt(1)); expect(1004).assertEqual(resultSet.getInt(2)); expect("TangCeng").assertEqual(resultSet.getString(3)); + resultSet.close(); done(); }) diff --git a/relational_store/test/js/rdb/unittest/src/RdbstorePredicatesJoinJsunit.test.js b/relational_store/test/js/rdb/unittest/src/RdbstorePredicatesJoinJsunit.test.js index 9b0d5002..f529bc74 100644 --- a/relational_store/test/js/rdb/unittest/src/RdbstorePredicatesJoinJsunit.test.js +++ b/relational_store/test/js/rdb/unittest/src/RdbstorePredicatesJoinJsunit.test.js @@ -35,7 +35,7 @@ const STORE_CONFIG = { name: "RdbJoinTest.db" } const CURRENT_STORE_VERSION = 1; -const TAG = 'RDB_TEST'; +const TAG = 'RDB_TEST '; var rdbStore = undefined; @@ -58,8 +58,8 @@ describe('rdbStorePredicatesJoinTest', function () { afterAll(async function () { console.info(TAG + 'afterAll') - await dataRdb.deleteRdbStore("RdbJoinTest.db"); rdbStore = null + await dataRdb.deleteRdbStore("RdbJoinTest.db"); console.info(TAG + 'afterAll end') }) @@ -132,6 +132,7 @@ describe('rdbStorePredicatesJoinTest', function () { expect(1).assertEqual(resultSet.getInt(5)); expect("SanGuo").assertEqual(resultSet.getString(6)); expect(1).assertEqual(resultSet.getInt(7)); + resultSet.close(); done(); }) @@ -156,6 +157,7 @@ describe('rdbStorePredicatesJoinTest', function () { expect(1).assertEqual(resultSet.getInt(5)); expect("SanGuo").assertEqual(resultSet.getString(6)); expect(1).assertEqual(resultSet.getInt(7)); + resultSet.close(); done(); }) @@ -171,6 +173,7 @@ describe('rdbStorePredicatesJoinTest', function () { "SELECT * FROM user LEFT OUTER JOIN book ON user.userId = book.userId"); expect(5).assertEqual(resultSet.rowCount); + resultSet.close(); done(); }) @@ -195,6 +198,7 @@ describe('rdbStorePredicatesJoinTest', function () { expect(100.51).assertEqual(resultSet.getDouble(4)); expect(1).assertEqual(resultSet.getInt(5)); expect("SanGuo").assertEqual(resultSet.getString(6)); + resultSet.close(); done(); }) diff --git a/relational_store/test/js/rdb/unittest/src/RdbstorePredicatesJsunit.test.js b/relational_store/test/js/rdb/unittest/src/RdbstorePredicatesJsunit.test.js index 55c9e3a0..602f8c12 100644 --- a/relational_store/test/js/rdb/unittest/src/RdbstorePredicatesJsunit.test.js +++ b/relational_store/test/js/rdb/unittest/src/RdbstorePredicatesJsunit.test.js @@ -17,13 +17,13 @@ import dataRdb from '@ohos.data.rdb'; const TAG = "[RDB_JSKITS _TEST]" const CREATE_TABLE_ALL_DATA_TYPE_SQL = "CREATE TABLE IF NOT EXISTS AllDataType " -+ "(id INTEGER PRIMARY KEY AUTOINCREMENT, " -+ "integerValue INTEGER , longValue INTEGER , shortValue INTEGER , booleanValue INTEGER , " -+ "doubleValue REAL , floatValue REAL , stringValue TEXT , blobValue BLOB , clobValue TEXT , " -+ "byteValue INTEGER , dateValue INTEGER , timeValue INTEGER , timestampValue INTEGER , " -+ "calendarValue INTEGER , characterValue TEXT , primIntValue INTEGER , primLongValue INTEGER , " -+ "primShortValue INTEGER , primFloatValue REAL , primDoubleValue REAL , " -+ "primBooleanValue INTEGER , primByteValue INTEGER , primCharValue TEXT, `order` INTEGER);"; + + "(id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "integerValue INTEGER , longValue INTEGER , shortValue INTEGER , booleanValue INTEGER , " + + "doubleValue REAL , floatValue REAL , stringValue TEXT , blobValue BLOB , clobValue TEXT , " + + "byteValue INTEGER , dateValue INTEGER , timeValue INTEGER , timestampValue INTEGER , " + + "calendarValue INTEGER , characterValue TEXT , primIntValue INTEGER , primLongValue INTEGER , " + + "primShortValue INTEGER , primFloatValue REAL , primDoubleValue REAL , " + + "primBooleanValue INTEGER , primByteValue INTEGER , primCharValue TEXT, `order` INTEGER);"; const STORE_CONFIG = { name: "Predicates.db", @@ -54,17 +54,6 @@ describe('rdbPredicatesTest', function () { await dataRdb.deleteRdbStore("Predicates.db"); }) - function resultSize(resultSet) { - if (!resultSet.goToFirstRow()) { - return 0; - } - let count = 1; - while (resultSet.goToNextRow()) { - count++; - } - return count; - } - async function buildAllDataType1() { console.log(TAG + "buildAllDataType1 start"); { @@ -134,13 +123,14 @@ describe('rdbPredicatesTest', function () { */ it('testEqualTo0001', 0, async function (done) { console.log(TAG + "************* testEqualTo0001 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - { - predicates.equalTo("booleanValue", true); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + let predicates = new dataRdb.RdbPredicates("AllDataType"); + + predicates.equalTo("booleanValue", true); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testEqualTo0001 end *************"); }) @@ -152,13 +142,14 @@ describe('rdbPredicatesTest', function () { */ it('testEqualTo0002', 0, async function (done) { console.log(TAG + "************* testEqualTo0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("byteValue", -128).or().equalTo("byteValue", 1); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("byteValue", -128).or().equalTo("byteValue", 1); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testEqualTo0002 end *************"); }) @@ -170,13 +161,14 @@ describe('rdbPredicatesTest', function () { */ it('testEqualTo0003', 0, async function (done) { console.log(TAG + "************* testEqualTo0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testEqualTo0003 end *************"); }) @@ -188,13 +180,14 @@ describe('rdbPredicatesTest', function () { */ it('testEqualTo0004', 0, async function (done) { console.log(TAG + "************* testEqualTo0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("doubleValue", DOUBLE_MAX); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("doubleValue", DOUBLE_MAX); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testEqualTo0004 end *************"); }) @@ -206,13 +199,14 @@ describe('rdbPredicatesTest', function () { */ it('testEqualTo0005', 0, async function (done) { console.log(TAG + "************* testEqualTo0005 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("shortValue", -32768.0); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("shortValue", -32768.0); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testEqualTo0005 end *************"); }) @@ -224,13 +218,14 @@ describe('rdbPredicatesTest', function () { */ it('testEqualTo0006', 0, async function (done) { console.log(TAG + "************* testEqualTo0006 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("integerValue", 1); - let result = await rdbStore.query(predicates); - expect(true).assertEqual(result.goToFirstRow()); - expect(2).assertEqual(result.getLong(0)); - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("integerValue", 1); + let result = await rdbStore.query(predicates); + expect(true).assertEqual(result.goToFirstRow()); + expect(2).assertEqual(result.getLong(0)); + result.close() + done(); console.log(TAG + "************* testEqualTo0006 end *************"); }) @@ -242,13 +237,14 @@ describe('rdbPredicatesTest', function () { */ it('testEqualTo0007', 0, async function (done) { console.log(TAG + "************* testEqualTo0007 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("longValue", 1); - let result = await rdbStore.query(predicates); - expect(true).assertEqual(result.goToFirstRow()); - expect(2).assertEqual(result.getLong(0)) - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("longValue", 1); + let result = await rdbStore.query(predicates); + expect(true).assertEqual(result.goToFirstRow()); + expect(2).assertEqual(result.getLong(0)) + result.close() + done(); console.log(TAG + "************* testEqualTo0007 end *************"); }) @@ -260,14 +256,15 @@ describe('rdbPredicatesTest', function () { */ it('testEqualTo0008', 0, async function (done) { console.log(TAG + "************* testEqualTo0008 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("floatValue", -0.123); - let result = await rdbStore.query(predicates); - expect(true).assertEqual(result.goToFirstRow()); - expect(1).assertEqual(result.getLong(0)) - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("floatValue", -0.123); + let result = await rdbStore.query(predicates); + expect(true).assertEqual(result.goToFirstRow()); + expect(1).assertEqual(result.getLong(0)) + result.close() + result = null + done(); console.log(TAG + "************* testEqualTo0008 end *************"); }) @@ -279,13 +276,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotEqualTo0001', 0, async function (done) { console.log(TAG + "************* testNotEqualTo0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.notEqualTo("booleanValue", true); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.notEqualTo("booleanValue", true); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testNotEqualTo0001 end *************"); }) @@ -297,14 +295,15 @@ describe('rdbPredicatesTest', function () { */ it('testNotEqualTo0002', 0, async function (done) { console.log(TAG + "************* testNotEqualTo0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.notEqualTo("byteValue", -128); - predicates.notEqualTo("byteValue", 1); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.notEqualTo("byteValue", -128); + predicates.notEqualTo("byteValue", 1); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testNotEqualTo0002 end *************"); }) @@ -316,13 +315,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotEqualTo0003', 0, async function (done) { console.log(TAG + "************* testNotEqualTo0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.notEqualTo("stringValue", "ABCDEFGHIJKLMN"); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.notEqualTo("stringValue", "ABCDEFGHIJKLMN"); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testNotEqualTo0003 end *************"); }) @@ -334,13 +334,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotEqualTo0004', 0, async function (done) { console.log(TAG + "************* testNotEqualTo0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.notEqualTo("doubleValue", DOUBLE_MAX); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.notEqualTo("doubleValue", DOUBLE_MAX); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testNotEqualTo0004 end *************"); }) @@ -352,13 +353,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotEqualTo0005', 0, async function (done) { console.log(TAG + "************* testNotEqualTo0005 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.notEqualTo("shortValue", -32768); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.notEqualTo("shortValue", -32768); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testNotEqualTo0005 end *************"); }) @@ -370,13 +372,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotEqualTo0006', 0, async function (done) { console.log(TAG + "************* testNotEqualTo0006 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.notEqualTo("integerValue", 1); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.notEqualTo("integerValue", 1); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testNotEqualTo0006 end *************"); }) @@ -388,13 +391,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotEqualTo0007', 0, async function (done) { console.log(TAG + "************* testNotEqualTo0007 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.notEqualTo("longValue", 1); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.notEqualTo("longValue", 1); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testNotEqualTo0007 end *************"); }) @@ -406,13 +410,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotEqualTo0008', 0, async function (done) { console.log(TAG + "************* testNotEqualTo0008 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.notEqualTo("floatValue", -0.123); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.notEqualTo("floatValue", -0.123); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testNotEqualTo0008 end *************"); }) @@ -424,10 +429,11 @@ describe('rdbPredicatesTest', function () { */ it('testIsNull0001', 0, async function (done) { console.log(TAG + "************* testIsNull001 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.isNull("primLongValue"); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIsNull0001 end *************"); @@ -440,10 +446,11 @@ describe('rdbPredicatesTest', function () { */ it('testIsNull0002', 0, async function (done) { console.log(TAG + "************* testIsNull0002 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.isNull("longValue"); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIsNull0002 end *************"); @@ -456,10 +463,11 @@ describe('rdbPredicatesTest', function () { */ it('testIsNull0003', 0, async function (done) { console.log(TAG + "************* testIsNull0003 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.isNull("stringValue"); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIsNull0003 end *************"); @@ -472,10 +480,11 @@ describe('rdbPredicatesTest', function () { */ it('testIsNull0004', 0, async function (done) { console.log(TAG + "************* testIsNull0004 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.isNull("stringValueX"); let result = await rdbStore.query(predicates); expect(-1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIsNull0004 end *************"); @@ -488,10 +497,11 @@ describe('rdbPredicatesTest', function () { */ it('testIsNotNull0001', 0, async function (done) { console.log(TAG + "************* testIsNotNull0001 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.isNotNull("primLongValue"); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIsNotNull0001 end *************"); @@ -504,10 +514,11 @@ describe('rdbPredicatesTest', function () { */ it('testIsNotNull0002', 0, async function (done) { console.log(TAG + "************* testIsNotNull0002 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.isNotNull("longValue"); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIsNotNull0002 end *************"); @@ -520,10 +531,11 @@ describe('rdbPredicatesTest', function () { */ it('testIsNotNull0003', 0, async function (done) { console.log(TAG + "************* testIsNotNull0003 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.isNotNull("stringValue"); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIsNotNull0003 end *************"); @@ -536,10 +548,11 @@ describe('rdbPredicatesTest', function () { */ it('testIsNotNull0004', 0, async function (done) { console.log(TAG + "************* testIsNotNull0004 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.isNotNull("stringValueX"); let result = await rdbStore.query(predicates); expect(-1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIsNotNull0004 end *************"); @@ -552,13 +565,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThan0001', 0, async function (done) { console.log(TAG + "************* testGreaterThan0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.greaterThan("stringValue", "ABC"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.greaterThan("stringValue", "ABC"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThan0001 end *************"); }) @@ -570,13 +584,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThan0002', 0, async function (done) { console.log(TAG + "************* testGreaterThan0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.greaterThan("doubleValue", 0.0); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.greaterThan("doubleValue", 0.0); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThan0002 end *************"); }) @@ -588,13 +603,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThan0003', 0, async function (done) { console.log(TAG + "************* testGreaterThan0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.greaterThan("integerValue", 1); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.greaterThan("integerValue", 1); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThan0003 end *************"); }) @@ -606,13 +622,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThan0004', 0, async function (done) { console.log(TAG + "************* testGreaterThan0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.greaterThan("longValue", 1); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.greaterThan("longValue", 1); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThan0004 end *************"); }) @@ -624,13 +641,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThan0005', 0, async function (done) { console.log(TAG + "************* testGreaterThan0005 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.greaterThan("stringValue", "ZZZ"); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.greaterThan("stringValue", "ZZZ"); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThan0005 end *************"); }) @@ -642,13 +660,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThan0006', 0, async function (done) { console.log(TAG + "************* testGreaterThan0006 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.greaterThan("doubleValue", 999.0); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.greaterThan("doubleValue", 999.0); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThan0006 end *************"); }) @@ -660,13 +679,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThan0007', 0, async function (done) { console.log(TAG + "************* testGreaterThan0007 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.greaterThan("integerValue", -999); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.greaterThan("integerValue", -999); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThan0007 end *************"); }) @@ -678,13 +698,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThan0008', 0, async function (done) { console.log(TAG + "************* testGreaterThan0008 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.greaterThan("longValue", -999); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.greaterThan("longValue", -999); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThan0008 end *************"); }) @@ -696,13 +717,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThanOrEqualTo0001', 0, async function (done) { console.log(TAG + "************* testGreaterThanOrEqualTo0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.greaterThanOrEqualTo("stringValue", "ABC"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.greaterThanOrEqualTo("stringValue", "ABC"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThanOrEqualTo0001 end *************"); }) @@ -714,13 +736,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThanOrEqualTo0002', 0, async function (done) { console.log(TAG + "************* testGreaterThanOrEqualTo0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.greaterThanOrEqualTo("doubleValue", 0.0); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.greaterThanOrEqualTo("doubleValue", 0.0); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThanOrEqualTo0002 end *************"); }) @@ -732,13 +755,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThanOrEqualTo0003', 0, async function (done) { console.log(TAG + "************* testGreaterThanOrEqualTo0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.greaterThanOrEqualTo("integerValue", 1); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.greaterThanOrEqualTo("integerValue", 1); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThanOrEqualTo0003 end *************"); }) @@ -750,13 +774,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThanOrEqualTo0004', 0, async function (done) { console.log(TAG + "************* testGreaterThanOrEqualTo0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.greaterThanOrEqualTo("longValue", 1); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.greaterThanOrEqualTo("longValue", 1); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThanOrEqualTo0004 end *************"); }) @@ -768,13 +793,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThan0001', 0, async function (done) { console.log(TAG + "************* testLessThan0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.lessThan("stringValue", "ABD"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.lessThan("stringValue", "ABD"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThan0001 end *************"); }) @@ -786,13 +812,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThan0002', 0, async function (done) { console.log(TAG + "************* testLessThan0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.lessThan("doubleValue", 0.0); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.lessThan("doubleValue", 0.0); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThan0002 end *************"); }) @@ -804,13 +831,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThan0003', 0, async function (done) { console.log(TAG + "************* testLessThan0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.lessThan("integerValue", 1); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.lessThan("integerValue", 1); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThan0003 end *************"); }) @@ -822,13 +850,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThan0004', 0, async function (done) { console.log(TAG + "************* testLessThan0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.lessThan("longValue", 1); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.lessThan("longValue", 1); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThan0004 end *************"); }) @@ -840,13 +869,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThan0005', 0, async function (done) { console.log(TAG + "************* testLessThan0005 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.lessThan("stringValue", "ABD"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.lessThan("stringValue", "ABD"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThan0005 end *************"); }) @@ -858,13 +888,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThan0006', 0, async function (done) { console.log(TAG + "************* testLessThan0006 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.lessThan("doubleValue", 1.0); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.lessThan("doubleValue", 1.0); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThan0006 end *************"); }) @@ -876,13 +907,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThan0007', 0, async function (done) { console.log(TAG + "************* testLessThan0007 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.lessThan("integerValue", -2147483648); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.lessThan("integerValue", -2147483648); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThan0007 end *************"); }) @@ -894,13 +926,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThan0008', 0, async function (done) { console.log(TAG + "************* testLessThan0008 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.lessThan("longValue", -9223372036854775808); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.lessThan("longValue", -9223372036854775808); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThan0008 end *************"); }) @@ -912,13 +945,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThanOrEqualTo0001', 0, async function (done) { console.log(TAG + "************* testLessThanOrEqualTo0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.lessThanOrEqualTo("stringValue", "ABD"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.lessThanOrEqualTo("stringValue", "ABD"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThanOrEqualTo0001 end *************"); }) @@ -930,13 +964,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThanOrEqualTo0002', 0, async function (done) { console.log(TAG + "************* testLessThanOrEqualTo0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.lessThanOrEqualTo("doubleValue", 0.0); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.lessThanOrEqualTo("doubleValue", 0.0); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThanOrEqualTo0002 end *************"); }) @@ -948,13 +983,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThanOrEqualTo0003', 0, async function (done) { console.log(TAG + "************* testLessThanOrEqualTo0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.lessThanOrEqualTo("integerValue", 1); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.lessThanOrEqualTo("integerValue", 1); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThanOrEqualTo0003 end *************"); }) @@ -966,13 +1002,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThanOrEqualTo0004', 0, async function (done) { console.log(TAG + "************* testLessThanOrEqualTo0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.lessThanOrEqualTo("longValue", 1); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.lessThanOrEqualTo("longValue", 1); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThanOrEqualTo0004 end *************"); }) @@ -984,13 +1021,14 @@ describe('rdbPredicatesTest', function () { */ it('testBetween0001', 0, async function (done) { console.log(TAG + "************* testBetween0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.between("stringValue", "ABB", "ABD"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.between("stringValue", "ABB", "ABD"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBetween0001 end *************"); }) @@ -1002,13 +1040,14 @@ describe('rdbPredicatesTest', function () { */ it('testBetween0002', 0, async function (done) { console.log(TAG + "************* testBetween0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.between("doubleValue", 0.0, DOUBLE_MAX); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.between("doubleValue", 0.0, DOUBLE_MAX); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBetween0002 end *************"); }) @@ -1020,13 +1059,14 @@ describe('rdbPredicatesTest', function () { */ it('testBetween0003', 0, async function (done) { console.log(TAG + "************* testBetween0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.between("integerValue", 0, 1); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.between("integerValue", 0, 1); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBetween0003 end *************"); }) @@ -1038,13 +1078,14 @@ describe('rdbPredicatesTest', function () { */ it('testBetween0004', 0, async function (done) { console.log(TAG + "************* testBetween0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.between("longValue", 0, 2); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.between("longValue", 0, 2); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBetween0004 end *************"); }) @@ -1056,13 +1097,14 @@ describe('rdbPredicatesTest', function () { */ it('testBetween0005', 0, async function (done) { console.log(TAG + "************* testBetween0005 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.between("stringValue", "ABB", "ABB"); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.between("stringValue", "ABB", "ABB"); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBetween0005 end *************"); }) @@ -1074,13 +1116,14 @@ describe('rdbPredicatesTest', function () { */ it('testBetween0006', 0, async function (done) { console.log(TAG + "************* testBetween0006 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.between("doubleValue", DOUBLE_MAX, DOUBLE_MAX); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.between("doubleValue", DOUBLE_MAX, DOUBLE_MAX); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBetween0006 end *************"); }) @@ -1092,13 +1135,14 @@ describe('rdbPredicatesTest', function () { */ it('testBetween0007', 0, async function (done) { console.log(TAG + "************* testBetween0007 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.between("integerValue", 1, 0); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.between("integerValue", 1, 0); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBetween0007 end *************"); }) @@ -1110,13 +1154,14 @@ describe('rdbPredicatesTest', function () { */ it('testBetween0008', 0, async function (done) { console.log(TAG + "************* testBetween0008 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.between("longValue", 2, -1); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.between("longValue", 2, -1); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBetween0008 end *************"); }) @@ -1128,14 +1173,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotBetween0001', 0, async function (done) { console.log(TAG + "************* testNotBetween0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.notBetween("stringValue", "ABB", "ABD"); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.notBetween("stringValue", "ABB", "ABD"); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testNotBetween0001 end *************"); }) @@ -1147,14 +1192,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotBetween0002', 0, async function (done) { console.log(TAG + "************* testNotBetween0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.notBetween("doubleValue", 0.0, DOUBLE_MAX); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.notBetween("doubleValue", 0.0, DOUBLE_MAX); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testNotBetween0002 end *************"); }) @@ -1166,14 +1211,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotBetween0003', 0, async function (done) { console.log(TAG + "************* testNotBetween0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.notBetween("integerValue", 0, 1); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.notBetween("integerValue", 0, 1); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testNotBetween0003 end *************"); }) @@ -1185,14 +1230,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotBetween0004', 0, async function (done) { console.log(TAG + "************* testNotBetween0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.notBetween("longValue", 0, 2); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.notBetween("longValue", 0, 2); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testNotBetween0004 end *************"); }) @@ -1204,14 +1249,14 @@ describe('rdbPredicatesTest', function () { */ it('testGlob0001', 0, async function (done) { console.log(TAG + "************* testGlob0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.glob("stringValue", "ABC*"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.glob("stringValue", "ABC*"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testGlob0001 end *************"); }) @@ -1223,14 +1268,14 @@ describe('rdbPredicatesTest', function () { */ it('testGlob0002', 0, async function (done) { console.log(TAG + "************* testGlob0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.glob("stringValue", "*LMN"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.glob("stringValue", "*LMN"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testGlob0002 end *************"); }) @@ -1242,14 +1287,14 @@ describe('rdbPredicatesTest', function () { */ it('testGlob0003', 0, async function (done) { console.log(TAG + "************* testGlob0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.glob("stringValue", "ABCDEFGHIJKLM?"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.glob("stringValue", "ABCDEFGHIJKLM?"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testGlob0003 end *************"); }) @@ -1261,14 +1306,14 @@ describe('rdbPredicatesTest', function () { */ it('testGlob0004', 0, async function (done) { console.log(TAG + "************* testGlob0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.glob("stringValue", "?BCDEFGHIJKLMN"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.glob("stringValue", "?BCDEFGHIJKLMN"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testGlob0004 end *************"); }) @@ -1280,14 +1325,14 @@ describe('rdbPredicatesTest', function () { */ it('testGlob0005', 0, async function (done) { console.log(TAG + "************* testGlob0005 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.glob("stringValue", "*FGHI*"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.glob("stringValue", "*FGHI*"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testGlob0005 end *************"); }) @@ -1299,14 +1344,14 @@ describe('rdbPredicatesTest', function () { */ it('testGlob0006', 0, async function (done) { console.log(TAG + "************* testGlob0006 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.glob("stringValue", "?BCDEFGHIJKLM?"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.glob("stringValue", "?BCDEFGHIJKLM?"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testGlob0006 end *************"); }) @@ -1318,10 +1363,11 @@ describe('rdbPredicatesTest', function () { */ it('testContains0001', 0, async function (done) { console.log(TAG + "************* testContains0001 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.contains("stringValue", "DEF"); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testContains0001 end *************"); @@ -1334,10 +1380,11 @@ describe('rdbPredicatesTest', function () { */ it('testContains0002', 0, async function (done) { console.log(TAG + "************* testContains0002 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.contains("stringValue", "DEFX"); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testContains0002 end *************"); @@ -1350,10 +1397,11 @@ describe('rdbPredicatesTest', function () { */ it('testContains0003', 0, async function (done) { console.log(TAG + "************* testContains0003 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.contains("characterValue", "中"); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testContains0003 end *************"); @@ -1366,10 +1414,11 @@ describe('rdbPredicatesTest', function () { */ it('testContains0004', 0, async function (done) { console.log(TAG + "************* testContains0004 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.contains("characterValue", "#"); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testContains0004 end *************"); @@ -1382,10 +1431,11 @@ describe('rdbPredicatesTest', function () { */ it('testBeginsWith0001', 0, async function (done) { console.log(TAG + "************* testBeginsWith0001 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.beginsWith("stringValue", "ABC"); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testBeginsWith0001 end *************"); @@ -1398,10 +1448,11 @@ describe('rdbPredicatesTest', function () { */ it('testBeginsWith0002', 0, async function (done) { console.log(TAG + "************* testBeginsWith0002 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.beginsWith("stringValue", "ABCX"); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testBeginsWith0002 end *************"); @@ -1414,10 +1465,11 @@ describe('rdbPredicatesTest', function () { */ it('testBeginsWith0003', 0, async function (done) { console.log(TAG + "************* testBeginsWith0003 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.beginsWith("characterValue", "中"); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testBeginsWith0003 end *************"); @@ -1430,10 +1482,11 @@ describe('rdbPredicatesTest', function () { */ it('testBeginsWith0004', 0, async function (done) { console.log(TAG + "************* testBeginsWith0004 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.beginsWith("characterValue", "#"); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testBeginsWith0004 end *************"); @@ -1446,10 +1499,11 @@ describe('rdbPredicatesTest', function () { */ it('testEndsWith0001', 0, async function (done) { console.log(TAG + "************* testEndsWith0001 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.endsWith("stringValue", "LMN"); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testEndsWith0001 end *************"); @@ -1462,10 +1516,11 @@ describe('rdbPredicatesTest', function () { */ it('testEndsWith0002', 0, async function (done) { console.log(TAG + "************* testEndsWith0002 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.endsWith("stringValue", "LMNX"); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testEndsWith0002 end *************"); @@ -1478,10 +1533,11 @@ describe('rdbPredicatesTest', function () { */ it('testEndsWith0003', 0, async function (done) { console.log(TAG + "************* testEndsWith0003 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.endsWith("characterValue", "中"); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testEndsWith0003 end *************"); @@ -1494,10 +1550,11 @@ describe('rdbPredicatesTest', function () { */ it('testEndsWith0004', 0, async function (done) { console.log(TAG + "************* testEndsWith0004 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.endsWith("characterValue", "#"); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testEndsWith0004 end *************"); @@ -1510,10 +1567,11 @@ describe('rdbPredicatesTest', function () { */ it('testLike0001', 0, async function (done) { console.log(TAG + "************* testLike0001 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.like("stringValue", "%LMN%"); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLike0001 end *************"); @@ -1526,10 +1584,11 @@ describe('rdbPredicatesTest', function () { */ it('testLike0002', 0, async function (done) { console.log(TAG + "************* testLike0002 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.like("stringValue", "%LMNX%"); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLike0002 end *************"); @@ -1542,10 +1601,11 @@ describe('rdbPredicatesTest', function () { */ it('testLike0003', 0, async function (done) { console.log(TAG + "************* testLike0003 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.like("characterValue", "%中%"); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLike0003 end *************"); @@ -1558,10 +1618,11 @@ describe('rdbPredicatesTest', function () { */ it('testLike0004', 0, async function (done) { console.log(TAG + "************* testLike0004 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.like("characterValue", "%#%"); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLike0004 end *************"); @@ -1574,18 +1635,19 @@ describe('rdbPredicatesTest', function () { */ it('testBeginWrap0001', 0, async function (done) { console.log(TAG + "************* testBeginWrap0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") - .beginWrap() - .equalTo("integerValue", 1) - .or() - .equalTo("integerValue", 2147483647) - .endWrap(); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") + .beginWrap() + .equalTo("integerValue", 1) + .or() + .equalTo("integerValue", 2147483647) + .endWrap(); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBeginWrap0001 end *************"); }) @@ -1597,16 +1659,17 @@ describe('rdbPredicatesTest', function () { */ it('testBeginWrap0002', 0, async function (done) { console.log(TAG + "************* testBeginWrap0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") - .beginWrap() - .equalTo("characterValue", ' ') - .endWrap(); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") + .beginWrap() + .equalTo("characterValue", ' ') + .endWrap(); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBeginWrap0002 end *************"); }) @@ -1618,16 +1681,16 @@ describe('rdbPredicatesTest', function () { */ it('testBeginWrap0003', 0, async function (done) { console.log(TAG + "************* testBeginWrap0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") - .beginWrap() - .equalTo("characterValue", '中') - .endWrap(); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") + .beginWrap() + .equalTo("characterValue", '中') + .endWrap(); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result = null + done(); console.log(TAG + "************* testBeginWrap0003 end *************"); }) @@ -1639,15 +1702,16 @@ describe('rdbPredicatesTest', function () { */ it('testBeginWrap0004', 0, async function (done) { console.log(TAG + "************* testBeginWrap0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") - .equalTo("characterValue", '中') - .endWrap(); - let result = await rdbStore.query(predicates); - expect(-1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") + .equalTo("characterValue", '中') + .endWrap(); + let result = await rdbStore.query(predicates); + expect(-1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBeginWrap0004 end *************"); }) @@ -1660,12 +1724,13 @@ describe('rdbPredicatesTest', function () { it('testBeginWrap0005', 0, async function (done) { console.log(TAG + "************* testBeginWrap0005 start *************"); { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") .beginWrap() .equalTo("characterValue", '中'); let result = await rdbStore.query(predicates); expect(-1).assertEqual(result.rowCount); + result.close() result = null } done(); @@ -1679,15 +1744,16 @@ describe('rdbPredicatesTest', function () { */ it('testAnd0001', 0, async function (done) { console.log(TAG + "************* testAnd0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") - .and() - .equalTo("integerValue", 1); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") + .and() + .equalTo("integerValue", 1); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testAnd0001 end *************"); }) @@ -1699,18 +1765,19 @@ describe('rdbPredicatesTest', function () { */ it('testAnd0002', 0, async function (done) { console.log(TAG + "************* testAnd0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") - .beginWrap() - .equalTo("integerValue", 1) - .or() - .equalTo("integerValue", 2147483647) - .endWrap(); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") + .beginWrap() + .equalTo("integerValue", 1) + .or() + .equalTo("integerValue", 2147483647) + .endWrap(); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testAnd0002 end *************"); }) @@ -1722,11 +1789,11 @@ describe('rdbPredicatesTest', function () { */ it('testAnd0003', 0, async function (done) { console.log(TAG + "************* testAnd0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").or().and().equalTo("integerValue", 1); - console.log(TAG + "you should not start a request" + " with \"and\" or use or() before this function"); - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").or().and().equalTo("integerValue", 1); + console.log(TAG + "you should not start a request" + " with \"and\" or use or() before this function"); + done(); console.log(TAG + "************* testAnd0003 end *************"); }) @@ -1738,12 +1805,12 @@ describe('rdbPredicatesTest', function () { */ it('testAnd0004', 0, async function (done) { console.log(TAG + "************* testAnd0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").or().or().equalTo("integerValue", 1); - console.log(TAG + "you are starting a sql request with predicate or or," + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").or().or().equalTo("integerValue", 1); + console.log(TAG + "you are starting a sql request with predicate or or," + "using function or() immediately after another or(). that is ridiculous."); - } + done(); console.log(TAG + "************* testAnd0004 end *************"); }) @@ -1755,19 +1822,20 @@ describe('rdbPredicatesTest', function () { */ it('testOrder0001', 0, async function (done) { console.log(TAG + "************* testOrder0001 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").orderByAsc("integerValue").distinct(); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - expect(true).assertEqual(result.goToFirstRow()) - expect(3).assertEqual(result.getLong(0)); - expect(true).assertEqual(result.goToNextRow()) - expect(2).assertEqual(result.getLong(0)); - expect(true).assertEqual(result.goToNextRow()) - expect(1).assertEqual(result.getLong(0)); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").orderByAsc("integerValue").distinct(); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + expect(true).assertEqual(result.goToFirstRow()) + expect(3).assertEqual(result.getLong(0)); + expect(true).assertEqual(result.goToNextRow()) + expect(2).assertEqual(result.getLong(0)); + expect(true).assertEqual(result.goToNextRow()) + expect(1).assertEqual(result.getLong(0)); + result.close() + result = null + done(); console.log(TAG + "************* testOrder0001 end *************"); }) @@ -1779,19 +1847,20 @@ describe('rdbPredicatesTest', function () { */ it('testOrder0002', 0, async function (done) { console.log(TAG + "************* testOrder0002 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").orderByDesc("integerValue").distinct(); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - expect(true).assertEqual(result.goToFirstRow()) - expect(1).assertEqual(result.getLong(0)); - expect(true).assertEqual(result.goToNextRow()) - expect(2).assertEqual(result.getLong(0)); - expect(true).assertEqual(result.goToNextRow()) - expect(3).assertEqual(result.getLong(0)); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").orderByDesc("integerValue").distinct(); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + expect(true).assertEqual(result.goToFirstRow()) + expect(1).assertEqual(result.getLong(0)); + expect(true).assertEqual(result.goToNextRow()) + expect(2).assertEqual(result.getLong(0)); + expect(true).assertEqual(result.goToNextRow()) + expect(3).assertEqual(result.getLong(0)); + result.close() + result = null + done(); console.log(TAG + "************* testOrder0002 end *************"); }) @@ -1803,13 +1872,14 @@ describe('rdbPredicatesTest', function () { */ it('testOrder0003', 0, async function (done) { console.log(TAG + "************* testOrder0003 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").orderByDesc("integerValueX").distinct(); - let result = await rdbStore.query(predicates); - expect(-1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").orderByDesc("integerValueX").distinct(); + let result = await rdbStore.query(predicates); + expect(-1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testOrder0003 end *************"); }) @@ -1821,13 +1891,14 @@ describe('rdbPredicatesTest', function () { */ it('testOrder0004', 0, async function (done) { console.log(TAG + "************* testOrder0004 start *************"); - { - let predicates = await new dataRdb.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").orderByAsc("integerValueX").distinct(); - let result = await rdbStore.query(predicates); - expect(-1).assertEqual(result.rowCount); - result = null - } + + let predicates = new dataRdb.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").orderByAsc("integerValueX").distinct(); + let result = await rdbStore.query(predicates); + expect(-1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testOrder0004 end *************"); }) @@ -1839,10 +1910,11 @@ describe('rdbPredicatesTest', function () { */ it('testLimit0001', 0, async function (done) { console.log(TAG + "************* testLimit0001 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(1); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLimit0001 end *************"); @@ -1855,10 +1927,11 @@ describe('rdbPredicatesTest', function () { */ it('testLimit0002', 0, async function (done) { console.log(TAG + "************* testLimit0002 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(3); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLimit0002 end *************"); @@ -1871,10 +1944,11 @@ describe('rdbPredicatesTest', function () { */ it('testLimit0003', 0, async function (done) { console.log(TAG + "************* testLimit0003 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(100); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLimit0003 end *************"); @@ -1887,10 +1961,11 @@ describe('rdbPredicatesTest', function () { */ it('testLimit0004', 0, async function (done) { console.log(TAG + "************* testLimit0004 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.like("stringValue", "中").limitAs(1); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLimit0004 end *************"); @@ -1903,10 +1978,11 @@ describe('rdbPredicatesTest', function () { */ it('testLimit0005', 0, async function (done) { console.log(TAG + "************* testLimit0005 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(0); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLimit0005 end *************"); @@ -1919,10 +1995,11 @@ describe('rdbPredicatesTest', function () { */ it('testLimit0006', 0, async function (done) { console.log(TAG + "************* testLimit0006 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(-1); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLimit0006 end *************"); @@ -1935,10 +2012,11 @@ describe('rdbPredicatesTest', function () { */ it('testOffset0001', 0, async function (done) { console.log(TAG + "************* testOffset0001 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(3).offsetAs(1); let result = await rdbStore.query(predicates); expect(2).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testOffset0001 end *************"); @@ -1951,10 +2029,11 @@ describe('rdbPredicatesTest', function () { */ it('testOffset0002', 0, async function (done) { console.log(TAG + "************* testOffset0002 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(3).offsetAs(0); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testOffset0002 end *************"); @@ -1967,10 +2046,11 @@ describe('rdbPredicatesTest', function () { */ it('testOffset0003', 0, async function (done) { console.log(TAG + "************* testOffset0003 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(3).offsetAs(5); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testOffset0003 end *************"); @@ -1983,10 +2063,11 @@ describe('rdbPredicatesTest', function () { */ it('testOffset0004', 0, async function (done) { console.log(TAG + "************* testOffset0004 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(3).offsetAs(-1); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testOffset0004 end *************"); @@ -2000,10 +2081,11 @@ describe('rdbPredicatesTest', function () { it('testIn0001', 0, async function (done) { console.log(TAG + "************* testIn0001 start *************"); var values = [Number.MIN_VALUE.toString()]; - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.in("doubleValue", values); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() done(); console.log(TAG + "************* testIn0001 end *************"); }) @@ -2016,10 +2098,11 @@ describe('rdbPredicatesTest', function () { it('testIn0002', 0, async function (done) { console.log(TAG + "************* testIn0002 start *************"); var values = ["1.0"]; - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.in("doubleValue", values); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() done(); console.log(TAG + "************* testIn0002 end *************"); }) @@ -2032,10 +2115,11 @@ describe('rdbPredicatesTest', function () { it('testIn0003', 0, async function (done) { console.log(TAG + "************* testIn0003 start *************"); var values = [DOUBLE_MAX.toString()]; - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.in("doubleValue", values); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() done(); console.log(TAG + "************* testIn0003 end *************"); }) @@ -2048,10 +2132,11 @@ describe('rdbPredicatesTest', function () { it('testIn0004', 0, async function (done) { console.log(TAG + "************* testIn0004 start *************"); var values = [Number.MIN_VALUE.toString(), "1.0", DOUBLE_MAX.toString()]; - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.in("doubleValue", values); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() done(); console.log(TAG + "************* testIn0004 end *************"); }) @@ -2064,7 +2149,7 @@ describe('rdbPredicatesTest', function () { it('testNotIn0001', 0, async function (done) { console.log(TAG + "************* testNotIn0001 start *************"); var values = [1, -2147483648]; - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.notIn("integerValue", values); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); @@ -2081,7 +2166,7 @@ describe('rdbPredicatesTest', function () { it('testNotIn0002', 0, async function (done) { console.log(TAG + "************* testNotIn0002 start *************"); let values = [1, 2147483647]; - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.notIn("integerValue", values); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); @@ -2098,7 +2183,7 @@ describe('rdbPredicatesTest', function () { it('testNotIn0003', 0, async function (done) { console.log(TAG + "************* testNotIn0003 start *************"); var values = [-2147483648, 2147483647]; - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.notIn("integerValue", values); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); @@ -2114,9 +2199,10 @@ describe('rdbPredicatesTest', function () { */ it('testCreate0001', 0, async function (done) { console.log(TAG + "************* testCreate0001 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() done(); console.log(TAG + "************* testCreate0001 end *************"); }) @@ -2128,9 +2214,10 @@ describe('rdbPredicatesTest', function () { */ it('testCreate0002', 0, async function (done) { console.log(TAG + "************* testCreate0002 start *************"); - let predicates = await new dataRdb.RdbPredicates("test"); + let predicates = new dataRdb.RdbPredicates("test"); let result = await rdbStore.query(predicates); expect(-1).assertEqual(result.rowCount); + result.close() done(); console.log(TAG + "************* testCreate0002 end *************"); }) @@ -2142,10 +2229,11 @@ describe('rdbPredicatesTest', function () { */ it('testGroupBy0001', 0, async function (done) { console.log(TAG + "************* testGroupBy0001 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").groupBy(["characterValue"]); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testGroupBy0001 end *************"); @@ -2158,10 +2246,11 @@ describe('rdbPredicatesTest', function () { */ it('testGroupBy0002', 0, async function (done) { console.log(TAG + "************* testGroupBy0002 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").groupBy(["characterValueX"]); let result = await rdbStore.query(predicates); expect(-1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testGroupBy0002 end *************"); @@ -2174,11 +2263,12 @@ describe('rdbPredicatesTest', function () { */ it('testIndexedBy0001', 0, async function (done) { console.log(TAG + "************* testIndexedBy0001 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").indexedBy("characterValue"); let result = await rdbStore.query(predicates); //test table have no indexe column, so return -1 expect(-1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIndexedBy0001 end *************"); @@ -2191,11 +2281,12 @@ describe('rdbPredicatesTest', function () { */ it('testIndexedBy0002', 0, async function (done) { console.log(TAG + "************* testIndexedBy0002 start *************"); - let predicates = await new dataRdb.RdbPredicates("AllDataType"); + let predicates = new dataRdb.RdbPredicates("AllDataType"); try { predicates.like("stringValue", "ABCDEFGHIJKLMN").indexedBy(["characterValueX"]); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null } catch (err) { console.log("catch err: failed, err: code=" + err.code + " message=" + err.message) diff --git a/relational_store/test/js/rdb/unittest/src/RdbstoreRdbstoreJsunit.test.js b/relational_store/test/js/rdb/unittest/src/RdbstoreRdbstoreJsunit.test.js index 56f23303..0bcaaf3e 100644 --- a/relational_store/test/js/rdb/unittest/src/RdbstoreRdbstoreJsunit.test.js +++ b/relational_store/test/js/rdb/unittest/src/RdbstoreRdbstoreJsunit.test.js @@ -15,11 +15,10 @@ import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index' import dataRdb from '@ohos.data.rdb'; -import ability_featureAbility from '@ohos.ability.featureAbility' -var context const TAG = "[RDB_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; const STORE_CONFIG = { name: "rdbstore.db", @@ -33,8 +32,9 @@ describe('rdbStoreTest', function () { console.info(TAG + 'beforeEach') }) - afterEach(function () { + afterEach(async function () { console.info(TAG + 'afterEach') + await dataRdb.deleteRdbStore("rdbstore.db"); }) afterAll(async function () { @@ -57,12 +57,12 @@ describe('rdbStoreTest', function () { } catch (e) { expect(null).assertFail(); } + store = null }).catch((err) => { expect(null).assertFail(); }) await storePromise storePromise = null - await dataRdb.deleteRdbStore("rdbstore.db"); done(); console.log(TAG + "************* testRdbStore0001 end *************"); }) @@ -82,12 +82,12 @@ describe('rdbStoreTest', function () { } catch (e) { expect(null).assertFail(); } + store = null }).catch((err) => { expect(null).assertFail(); }) await storePromise storePromise = null - await dataRdb.deleteRdbStore("rdbstore.db"); done(); console.log(TAG + "************* testRdbStore0002 end *************"); }) @@ -135,12 +135,12 @@ describe('rdbStoreTest', function () { console.log(TAG + "create table error"); expect(null).assertFail(); } + store = null }).catch((err) => { expect(null).assertFail(); }) await storePromise storePromise = null - await dataRdb.deleteRdbStore("rdbstore.db"); done(); console.log(TAG + "************* testRdbStore0004 end *************"); }) @@ -169,6 +169,7 @@ describe('rdbStoreTest', function () { expect(-1000).assertEqual(store.getVersion()) store.setVersion(-2147483648100) expect(-100).assertEqual(store.getVersion()) + store = null } catch (e) { expect(null).assertFail(); } diff --git a/relational_store/test/js/rdb/unittest/src/RdbstoreStoreExcuteSqlJsunit.test.js b/relational_store/test/js/rdb/unittest/src/RdbstoreStoreExcuteSqlJsunit.test.js index ca6376a0..09b9b044 100644 --- a/relational_store/test/js/rdb/unittest/src/RdbstoreStoreExcuteSqlJsunit.test.js +++ b/relational_store/test/js/rdb/unittest/src/RdbstoreStoreExcuteSqlJsunit.test.js @@ -16,7 +16,8 @@ import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from ' import dataRdb from '@ohos.data.rdb'; const TAG = "[RDB_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; const STORE_CONFIG = { name: "ExcuteSqlTest.db", @@ -27,16 +28,16 @@ describe('rdbStoreInsertTest', function () { beforeAll(async function () { console.info(TAG + 'beforeAll') rdbStore = await dataRdb.getRdbStore(STORE_CONFIG, 1); - await rdbStore.executeSql(CREATE_TABLE_TEST, null); }) beforeEach(async function () { - await rdbStore.executeSql("DELETE FROM test"); + await rdbStore.executeSql(CREATE_TABLE_TEST, null); console.info(TAG + 'beforeEach') }) - afterEach(function () { + afterEach(async function () { console.info(TAG + 'afterEach') + await rdbStore.executeSql("DROP TABLE IF EXISTS test") }) afterAll(async function () { @@ -60,14 +61,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(1).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(1).assertEqual(ret); } { const valueBucket = { @@ -76,14 +71,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(2).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(2).assertEqual(ret); } { const valueBucket = { @@ -92,34 +81,20 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(3).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise - } - { - let executeSqlPromise = rdbStore.executeSql("DELETE FROM test WHERE age = ? OR age = ?", ["18", "20"]) - executeSqlPromise.then(async (resultSet) => { - await console.log(TAG + "executeSql done: " + resultSet); - }).catch((err) => { - expect(null).assertFail(); - }) - await executeSqlPromise - } - { - let querySqlPromise = rdbStore.querySql("SELECT * FROM test") - querySqlPromise.then(async (resultSet) => { - await expect(0).assertEqual(resultSet.rowCount) - }).catch((err) => { - expect(null).assertFail(); - }) - await querySqlPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(3).assertEqual(ret); } - done(); + await rdbStore.executeSql("DELETE FROM test WHERE age = ? OR age = ?", ["18", "20"]) + + let querySqlPromise = rdbStore.querySql("SELECT * FROM test") + querySqlPromise.then(async (resultSet) => { + await expect(0).assertEqual(resultSet.rowCount) + resultSet.close() + done(); + }).catch((err) => { + expect(null).assertFail(); + }) + await querySqlPromise console.log(TAG + "************* ExcuteSqlTest0001 end *************"); }) @@ -138,14 +113,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(4).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(1).assertEqual(ret); } { const valueBucket = { @@ -154,14 +123,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(5).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(2).assertEqual(ret); } { const valueBucket = { @@ -170,34 +133,19 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(6).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise - } - { - let executeSqlPromise = rdbStore.executeSql("DELETE FROM test WHERE name = 'lisi'") - executeSqlPromise.then(async () => { - await console.log(TAG + "executeSql done"); - }).catch((err) => { - expect(null).assertFail(); - }) - await executeSqlPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(3).assertEqual(ret); } - { - let querySqlPromise = rdbStore.querySql("SELECT * FROM test") - querySqlPromise.then(async (resultSet) => { - await expect(1).assertEqual(resultSet.rowCount) - }).catch((err) => { - expect(null).assertFail(); - }) - await querySqlPromise - } - done(); + await rdbStore.executeSql("DELETE FROM test WHERE name = 'lisi'") + let querySqlPromise = rdbStore.querySql("SELECT * FROM test") + querySqlPromise.then(async (resultSet) => { + await expect(1).assertEqual(resultSet.rowCount) + resultSet.close() + done(); + }).catch((err) => { + expect(null).assertFail(); + }) + await querySqlPromise console.log(TAG + "************* ExcuteSqlTest0002 end *************"); }) @@ -217,14 +165,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(7).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(1).assertEqual(ret); } { const valueBucket = { @@ -233,14 +175,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(8).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(2).assertEqual(ret); } { const valueBucket = { @@ -249,14 +185,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(9).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(3).assertEqual(ret); } { let predicates = await new dataRdb.RdbPredicates("test") @@ -264,6 +194,7 @@ describe('rdbStoreInsertTest', function () { let querySqlPromise = rdbStore.query(predicates) querySqlPromise.then(async (resultSet) => { await expect(2).assertEqual(resultSet.rowCount) + resultSet.close() }).catch((err) => { expect(null).assertFail(); }) @@ -292,12 +223,13 @@ describe('rdbStoreInsertTest', function () { expect(28).assertEqual(age) expect(100.5).assertEqual(salary) expect(3).assertEqual(blobType[0]) + resultSet.close(); + done(); }).catch((err) => { expect(null).assertFail(); }) await querySqlPromise } - done(); console.log(TAG + "************* ExcuteSqlTest0003 end *************"); }) @@ -316,14 +248,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(10).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(1).assertEqual(ret); } { const valueBucket = { @@ -332,14 +258,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(11).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(2).assertEqual(ret); } { const valueBucket = { @@ -348,28 +268,13 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(12).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise - } - { - let QuerySqlPromise = rdbStore.executeSql("DROP TABLE IF EXISTS test") - QuerySqlPromise.then(async (resultSet) => { - await console.log(TAG + "executeSql done: " + resultSet); - }).catch((err) => { - expect(null).assertFail(); - }) - await QuerySqlPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(3).assertEqual(ret); } + await rdbStore.executeSql("DROP TABLE IF EXISTS test") done(); console.log(TAG + "************* ExcuteSqlTest0004 end *************"); }) - console.log(TAG + "*************Unit Test End*************"); }) \ No newline at end of file diff --git a/relational_store/test/js/rdb/unittest/src/RdbstoreTransactionJsunit.test.js b/relational_store/test/js/rdb/unittest/src/RdbstoreTransactionJsunit.test.js index 7ea9ec19..3e4e4c8b 100644 --- a/relational_store/test/js/rdb/unittest/src/RdbstoreTransactionJsunit.test.js +++ b/relational_store/test/js/rdb/unittest/src/RdbstoreTransactionJsunit.test.js @@ -17,7 +17,8 @@ import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from ' import dataRdb from '@ohos.data.rdb'; const TAG = "[RDB_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY, " + + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; const STORE_CONFIG = { name: "TransactionInsertTest.db", @@ -216,108 +217,6 @@ describe('rdbStoreInsertTest', function () { console.log(TAG + "************* testRdbTransactionRollBack0001 end *************"); }) - /** - * @tc.name rdb insert test - * @tc.number SUB_DDM_AppDataFWK_JSRDB_Insert_0010 - * @tc.desc the classical transaction scenario, when we insert or commit the value, - * db returns an exception, we need to catch exception and rollback. - */ - it('testRdbTransactionMulti0001', 0, async function (done) { - console.log(TAG + "************* testRdbTransactionMulti0001 start *************"); - var u8 = new Uint8Array([1, 2, 3]) - try { - rdbStore.beginTransaction() - const valueBucket = { - "id": 1, - "name": "lisi", - "age": 18, - "salary": 100.5, - "blobType": u8, - } - await rdbStore.insert("test", valueBucket) - - rdbStore.beginTransaction() - const valueBucket1 = { - "name": "zhangsan", - "age": 20, - "salary": 220.5, - "blobType": u8, - } - let num = rdbStore.insert("test", valueBucket1) - num.then(async (ret) => { - console.log(TAG + "testRdbTransactionMulti0001 * insert result " + ret); - expect(2).assertEqual(ret) - }) - - rdbStore.commit() - - let predicates = new dataRdb.RdbPredicates("test"); - num = rdbStore.query(predicates) - num.then(async (ret) => { - expect(2).assertEqual(ret.rowCount) - ret.close() - }) - } catch (e) { - console.log(TAG + "testRdbTransactionMulti0001 fail ***** "); - } - done() - console.log(TAG + "************* testRdbTransactionMulti0001 end *************"); - }) - - /** - * @tc.name rdb insert test - * @tc.number SUB_DDM_AppDataFWK_JSRDB_Insert_0010 - * @tc.desc the classical transaction scenario, when we insert or commit the value, - * db returns an exception, we need to catch exception and rollback. - */ - it('testRdbTransactionMulti0002', 0, async function (done) { - console.log(TAG + "************* testRdbTransactionMulti0002 start *************"); - var u8 = new Uint8Array([1, 2, 3]) - try { - rdbStore.beginTransaction() - const valueBucket = { - "id": 1, - "name": "lisi", - "age": 18, - "salary": 100.5, - "blobType": u8, - } - await rdbStore.insert("test", valueBucket, function (err, ret){ - - }); - - rdbStore.beginTransaction() - const valueBucket1 = { - "name": "zhangsan", - "age": 20, - "salary": 220.5, - "blobType": u8, - } - let num = rdbStore.insert("test", valueBucket1) - num.then(async (ret) => { - console.log(TAG + "testRdbTransactionMulti0002 * insert result " + ret); - expect(2).assertEqual(ret) - ret.close() - }) - - rdbStore.rollBack() - - rdbStore.commit() - - let predicates = new dataRdb.RdbPredicates("test"); - num = rdbStore.query(predicates) - num.then(async (ret) => { - console.log(TAG + "testRdbTransactionMulti0002 * final query " + ret.rowCount); - expect(1).assertEqual(ret.rowCount) - ret.close() - }) - } catch (e) { - console.log(TAG + "testRdbTransactionMulti0002 fail ***** "); - } - done() - console.log(TAG + "************* testRdbTransactionMulti0002 end *************"); - }) - /** * @tc.name rdb insert test * @tc.number SUB_DDM_AppDataFWK_JSRDB_Insert_0010 @@ -336,9 +235,7 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - await rdbStore.insert("test", valueBucket, function (err, ret){ - - }); + await rdbStore.insert("test", valueBucket); rdbStore.beginTransaction() const valueBucket1 = { @@ -347,7 +244,7 @@ describe('rdbStoreInsertTest', function () { "salary": 220.5, "blobType": u8, } - let num = await rdbStore.insert("test", valueBucket1) + await rdbStore.insert("test", valueBucket1) rdbStore.rollBack() @@ -355,12 +252,9 @@ describe('rdbStoreInsertTest', function () { rdbStore.commit() let predicates = new dataRdb.RdbPredicates("test"); - num = rdbStore.query(predicates) - num.then(async (ret) => { - console.log(TAG + "testRdbTransactionMulti0003 * final query " + ret.rowCount); - expect(1).assertEqual(ret.rowCount) - ret.close() - }) + let ret = await rdbStore.query(predicates) + expect(1).assertEqual(ret.rowCount) + ret.close() } catch (e) { rdbStore.rollBack() console.log(TAG + "testRdbTransactionMulti0003 rollback ***** "); diff --git a/relational_store/test/js/rdb/unittest/src/RdbstoreUpdateJsunit.test.js b/relational_store/test/js/rdb/unittest/src/RdbstoreUpdateJsunit.test.js index d3049d82..c120b4bc 100644 --- a/relational_store/test/js/rdb/unittest/src/RdbstoreUpdateJsunit.test.js +++ b/relational_store/test/js/rdb/unittest/src/RdbstoreUpdateJsunit.test.js @@ -16,7 +16,8 @@ import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from ' import dataRdb from '@ohos.data.rdb'; const TAG = "[RDB_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT UNIQUE, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "name TEXT UNIQUE, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; const STORE_CONFIG = { name: "UpdataTest.db", } @@ -59,14 +60,8 @@ describe('rdbStoreUpdateTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(1).assertEqual(ret); - await console.log(TAG + "update done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(1).assertEqual(ret); } { var u8 = new Uint8Array([4, 5, 6]) @@ -100,8 +95,8 @@ describe('rdbStoreUpdateTest', function () { await expect(4).assertEqual(blobType[0]); await expect(5).assertEqual(blobType[1]); await expect(6).assertEqual(blobType[2]); - console.log(TAG + "{id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + ", blobType=" + blobType); await expect(false).assertEqual(resultSet.goToNextRow()) + resultSet.close() resultSet = null } @@ -307,7 +302,7 @@ describe('rdbStoreUpdateTest', function () { expect(true).assertEqual(resultSet.goToFirstRow()) const name = await resultSet.getString(resultSet.getColumnIndex("name")) await expect(nameStr).assertEqual(name); - console.log(TAG + "{id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + ", blobType=" + blobType); + resultSet.close() resultSet = null } @@ -360,7 +355,7 @@ describe('rdbStoreUpdateTest', function () { expect(true).assertEqual(resultSet.goToFirstRow()) const name = await resultSet.getString(resultSet.getColumnIndex("name")) await expect(nameStr).assertEqual(name); - console.log(TAG + "{id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + ", blobType=" + blobType); + resultSet.close() resultSet = null } @@ -413,7 +408,7 @@ describe('rdbStoreUpdateTest', function () { expect(true).assertEqual(resultSet.goToFirstRow()) const name = await resultSet.getString(resultSet.getColumnIndex("name")) await expect(nameStr).assertEqual(name); - console.log(TAG + "{id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + ", blobType=" + blobType); + resultSet.close() resultSet = null } diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbStoreDataShareJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbStoreDataShareJsunit.test.js index a67ef6b9..5b6c3235 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbStoreDataShareJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbStoreDataShareJsunit.test.js @@ -98,6 +98,7 @@ describe('rdbStoreDataSharePredicatesTest', function () { } catch (err) { expect(false).assertTrue() } + resultSet.close() resultSet = null done() @@ -132,36 +133,8 @@ describe('rdbStoreDataSharePredicatesTest', function () { let predicates = new data_dataSharePredicates.DataSharePredicates() predicates.equalTo("name", "zhangsan") try { - let promiseUpdate = rdbStore.update("test", valueBucket, predicates) - promiseUpdate.then(async (ret) => { - expect(1).assertEqual(ret) - console.log(TAG + "Update done: " + ret) - }).catch((err) => { - console.log(TAG + "Update err: " + err) - expect(false).assertTrue() - }) - await promiseUpdate - - let rdbPredicates = await new data_relationalStore.RdbPredicates("test") - rdbPredicates.equalTo("name", "lisi") - let resultSet = await rdbStore.query(rdbPredicates) - expect(true).assertEqual(resultSet.goToFirstRow()) - const id = resultSet.getLong(resultSet.getColumnIndex("id")) - const name = resultSet.getString(resultSet.getColumnIndex("name")) - const age = resultSet.getLong(resultSet.getColumnIndex("age")) - const salary = resultSet.getDouble(resultSet.getColumnIndex("salary")) - const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType")) - - expect("lisi").assertEqual(name) - expect(28).assertEqual(age) - expect(200.5).assertEqual(salary) - expect(4).assertEqual(blobType[0]) - expect(5).assertEqual(blobType[1]) - expect(6).assertEqual(blobType[2]) - - console.log(TAG + "dataShare update: {id=" + id + ", name=" + name + ", " + - "age=" + age + ", salary=" + salary + ", blobType=" + blobType) - resultSet = null + await rdbStore.update("test", valueBucket, predicates) + expect(false).assertTrue() } catch(e) { console.log("catch err: failed, err: code=" + e.code + " message=" + e.message) expect("202").assertEqual(e.code) @@ -197,33 +170,8 @@ describe('rdbStoreDataSharePredicatesTest', function () { let predicates = new data_dataSharePredicates.DataSharePredicates() predicates.equalTo("name", "zhangsan") try { - await rdbStore.update("test", valueBucket, predicates, async function (err, ret) { - if (err) { - console.info("Update err: " + err) - expect(false).assertTrue() - } - expect(1).assertEqual(ret) - console.log("Update done: " + ret) - let rdbPredicates = await new data_relationalStore.RdbPredicates("test") - rdbPredicates.equalTo("name", "lisi") - let resultSet = await rdbStore.query(rdbPredicates) - expect(1).assertEqual(resultSet.rowCount) - expect(true).assertEqual(resultSet.goToFirstRow()) - const id = resultSet.getLong(resultSet.getColumnIndex("id")) - const name = resultSet.getString(resultSet.getColumnIndex("name")) - const age = resultSet.getLong(resultSet.getColumnIndex("age")) - const salary = resultSet.getDouble(resultSet.getColumnIndex("salary")) - const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType")) - - expect("lisi").assertEqual(name) - expect(28).assertEqual(age) - expect(200.5).assertEqual(salary) - expect(4).assertEqual(blobType[0]) - expect(5).assertEqual(blobType[1]) - expect(6).assertEqual(blobType[2]) - console.log(TAG + "dataShare update: {id=" + id + ", name=" + name + ", " + - "age=" + age + ", salary=" + salary + ", blobType=" + blobType) - resultSet = null + rdbStore.update("test", valueBucket, predicates, async function (err, ret) { + expect(false).assertTrue() }) } catch(e) { console.log("catch err: failed, err: code=" + e.code + " message=" + e.message) @@ -253,27 +201,8 @@ describe('rdbStoreDataSharePredicatesTest', function () { let predicates = new data_dataSharePredicates.DataSharePredicates() predicates.equalTo("name", "zhangsan") try { - let queryPromise = rdbStore.query("test", predicates) - queryPromise.then((resultSet) => { - console.log(TAG + "DataShare Query done: ") - expect(true).assertEqual(resultSet.goToFirstRow()) - const name = resultSet.getString(resultSet.getColumnIndex("name")) - const age = resultSet.getLong(resultSet.getColumnIndex("age")) - const salary = resultSet.getDouble(resultSet.getColumnIndex("salary")) - const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType")) - - expect("zhangsan").assertEqual(name) - expect(18).assertEqual(age) - expect(100.5).assertEqual(salary) - expect(4).assertEqual(blobType[0]) - expect(5).assertEqual(blobType[1]) - expect(6).assertEqual(blobType[2]) - - }).catch((err) => { - console.log(TAG + "Query err: " + err) - expect(false).assertTrue() - }) - await queryPromise + await rdbStore.query("test", predicates) + expect(false).assertTrue() } catch(e) { console.log("catch err: failed, err: code=" + e.code + " message=" + e.message) expect("202").assertEqual(e.code) @@ -301,24 +230,10 @@ describe('rdbStoreDataSharePredicatesTest', function () { let predicates = new data_dataSharePredicates.DataSharePredicates() predicates.equalTo("name", "zhangsan") try { - await rdbStore.query("test", predicates, ["ID", "NAME", "AGE", "SALARY", "blobType"], + rdbStore.query("test", predicates, ["ID", "NAME", "AGE", "SALARY", "blobType"], function (err, resultSet) { - if (err) { - console.info("Query err: " + err) - expect(false).assertTrue() - } - expect(true).assertEqual(resultSet.goToFirstRow()) - const name = resultSet.getString(resultSet.getColumnIndex("name")) - const age = resultSet.getLong(resultSet.getColumnIndex("age")) - const salary = resultSet.getDouble(resultSet.getColumnIndex("salary")) - const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType")) + expect(false).assertTrue() - expect("zhangsan").assertEqual(name) - expect(18).assertEqual(age) - expect(100.5).assertEqual(salary) - expect(4).assertEqual(blobType[0]) - expect(5).assertEqual(blobType[1]) - expect(6).assertEqual(blobType[2]) }) } catch(e) { console.log("catch err: failed, err: code=" + e.code + " message=" + e.message) @@ -347,21 +262,8 @@ describe('rdbStoreDataSharePredicatesTest', function () { let predicates = new data_dataSharePredicates.DataSharePredicates() predicates.equalTo("name", "zhangsan") try { - let deletePromise = rdbStore.delete("test", predicates) - deletePromise.then(async (ret) => { - expect(1).assertEqual(ret) - console.log(TAG + "Delete done: " + ret) - }).catch((err) => { - console.log(TAG + "Delete err: " + err) - expect(false).assertTrue() - }) - await deletePromise - - let rdbPredicates = await new data_relationalStore.RdbPredicates("test") - rdbPredicates.equalTo("name", "zhangsan") - let resultSet = await rdbStore.query(rdbPredicates) - expect(false).assertEqual(resultSet.goToFirstRow()) - resultSet = null + await rdbStore.delete("test", predicates) + expect(false).assertTrue() } catch(e) { console.log("catch err: failed, err: code=" + e.code + " message=" + e.message) expect("202").assertEqual(e.code) @@ -389,18 +291,8 @@ describe('rdbStoreDataSharePredicatesTest', function () { let predicates = new data_dataSharePredicates.DataSharePredicates() predicates.equalTo("name", "zhangsan") try { - await rdbStore.delete("test", predicates, async function (err, ret) { - if (err) { - console.info("Delete err: " + err) - expect(false).assertTrue() - } - expect(1).assertEqual(ret) - console.log("Delete done: " + ret) - let rdbPredicates = await new data_relationalStore.RdbPredicates("test") - rdbPredicates.equalTo("name", "zhangsan") - let resultSet = await rdbStore.query(rdbPredicates) - expect(false).assertEqual(resultSet.goToFirstRow()) - resultSet = null + rdbStore.delete("test", predicates, async function (err, ret) { + expect(false).assertTrue() }) } catch(e) { console.log("catch err: failed, err: code=" + e.code + " message=" + e.message) diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbStoreDistributedJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbStoreDistributedJsunit.test.js index 0fb0d9d4..d4957a29 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbStoreDistributedJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbStoreDistributedJsunit.test.js @@ -23,32 +23,8 @@ var rdbStore = undefined; var context = ability_featureAbility.getContext() describe('rdbStoreDistributedTest', function () { - beforeAll(async function () { + beforeAll(async function (done) { console.info(TAG + 'beforeAll') - }) - - beforeEach(async function () { - console.info(TAG + 'beforeEach') - }) - - afterEach(async function () { - console.info(TAG + 'afterEach') - }) - - afterAll(async function () { - console.info(TAG + 'afterAll') - await data_relationalStore.deleteRdbStore(context, STORE_NAME); - }) - - console.log(TAG + "*************Unit Test Begin*************"); - - /** - * @tc.name rdb open test - * @tc.number SUB_DDM_AppDataFWK_JSRDB_Distributed_001 - * @tc.desc rdb open test - */ - it('testRdbStoreDistributed0001', 0, async function (done) { - console.log(TAG + "************* testRdbStoreDistributed001 start *************"); const config = { "name": STORE_NAME, securityLevel: data_relationalStore.SecurityLevel.S1, @@ -88,9 +64,24 @@ describe('rdbStoreDistributedTest', function () { expect(null).assertFail() } done() - console.log(TAG + "************* testRdbStoreDistributed001 end *************"); }) + beforeEach(async function () { + console.info(TAG + 'beforeEach') + }) + + afterEach(async function () { + console.info(TAG + 'afterEach') + }) + + afterAll(async function () { + console.info(TAG + 'afterAll') + rdbStore = null + await data_relationalStore.deleteRdbStore(context, STORE_NAME); + }) + + console.log(TAG + "*************Unit Test Begin*************"); + /** * @tc.name set_distributed_table_none_table * @tc.number SUB_DDM_AppDataFWK_JSRDB_Distributed_002 diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbStoreResultSetJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbStoreResultSetJsunit.test.js index 53688ba7..fb02dbec 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbStoreResultSetJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbStoreResultSetJsunit.test.js @@ -15,10 +15,12 @@ import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index' import data_relationalStore from '@ohos.data.relationalStore' import ability_featureAbility from '@ohos.ability.featureAbility' + var context = ability_featureAbility.getContext() const TAG = "[RELATIONAL_STORE_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "data1 text," + "data2 long, " + "data3 double," + "data4 blob)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "data1 text," + "data2 long, " + "data3 double," + "data4 blob)"; const STORE_CONFIG = { name: "Resultset.db", @@ -47,6 +49,7 @@ describe('rdbResultSetTest', function () { rdbStore = null await data_relationalStore.deleteRdbStore(context, "Resultset.db"); }) + // insert data async function createTest() { console.log(TAG + "createTest data start"); @@ -83,10 +86,6 @@ describe('rdbResultSetTest', function () { console.log(TAG + "createTest data end"); } - function random(min, max) { - return Math.floor(Math.random() * (max - min)) + min; - } - function createUint8Array(length) { let i = 0 let index = 0 @@ -132,15 +131,14 @@ describe('rdbResultSetTest', function () { let predicates = await new data_relationalStore.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) try { - { - expect(true).assertEqual(resultSet.goToFirstRow()) - const id = resultSet.getLong(resultSet.getColumnIndex("id")) - const data4 = resultSet.getBlob(resultSet.getColumnIndex("data4")) - console.log(TAG + "id=" + id + ", data4=" + data4); - expect(1).assertEqual(data4[0]); - expect(2).assertEqual(data4[1]); - expect(3).assertEqual(data4[2]); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + const id = resultSet.getLong(resultSet.getColumnIndex("id")) + const data4 = resultSet.getBlob(resultSet.getColumnIndex("data4")) + console.log(TAG + "id=" + id + ", data4=" + data4); + expect(1).assertEqual(data4[0]); + expect(2).assertEqual(data4[1]); + expect(3).assertEqual(data4[2]); + resultSet.close(); expect(true).assertEqual(resultSet.isClosed) } catch (e) { @@ -161,16 +159,14 @@ describe('rdbResultSetTest', function () { let predicates = await new data_relationalStore.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) try { - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - const id = resultSet.getLong(resultSet.getColumnIndex("id")) - const data4 = resultSet.getBlob(resultSet.getColumnIndex("data4")) - console.log(TAG + "id=" + id + ", data4=" + data4); - expect(3).assertEqual(data4[0]); - expect(4).assertEqual(data4[1]); - expect(5).assertEqual(data4[2]); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + const id = resultSet.getLong(resultSet.getColumnIndex("id")) + const data4 = resultSet.getBlob(resultSet.getColumnIndex("data4")) + console.log(TAG + "id=" + id + ", data4=" + data4); + expect(3).assertEqual(data4[0]); + expect(4).assertEqual(data4[1]); + resultSet.close(); expect(true).assertEqual(resultSet.isClosed) } catch (e) { @@ -191,15 +187,13 @@ describe('rdbResultSetTest', function () { let predicates = await new data_relationalStore.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) try { - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - const id = resultSet.getLong(resultSet.getColumnIndex("id")) - const data4 = resultSet.getBlob(resultSet.getColumnIndex("data4")) - console.log(TAG + "id=" + id + ", data4=" + data4); - expect("").assertEqual("" + data4); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + const id = resultSet.getLong(resultSet.getColumnIndex("id")) + const data4 = resultSet.getBlob(resultSet.getColumnIndex("data4")) + console.log(TAG + "id=" + id + ", data4=" + data4); + resultSet.close(); expect(true).assertEqual(resultSet.isClosed) } catch (e) { @@ -224,6 +218,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsStarted0001 end *************"); @@ -244,6 +239,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsStarted0002 end *************"); @@ -266,6 +262,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsStarted0003 end *************"); @@ -287,6 +284,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsStarted0004 end *************"); @@ -308,6 +306,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsEnded0001 end *************"); @@ -328,6 +327,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsEnded0002 end *************"); @@ -348,6 +348,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsEnded0003 end *************"); @@ -369,6 +370,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsEnded0004 end *************"); @@ -388,6 +390,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testRowCount0001 end *************"); @@ -408,6 +411,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testRowCount0002 end *************"); @@ -428,6 +432,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testRowCount0003 end *************"); @@ -449,6 +454,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testRowCount0003 end *************"); @@ -464,13 +470,12 @@ describe('rdbResultSetTest', function () { let predicates = await new data_relationalStore.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) try { - { - expect(true).assertEqual(resultSet.goToFirstRow()) - const id = resultSet.getLong(resultSet.getColumnIndex("id")) - const data2 = resultSet.getLong(resultSet.getColumnIndex("data2")) - console.log(TAG + "id=" + id + ", data2=" + data2); - expect(10).assertEqual(data2); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + const id = resultSet.getLong(resultSet.getColumnIndex("id")) + const data2 = resultSet.getLong(resultSet.getColumnIndex("data2")) + console.log(TAG + "id=" + id + ", data2=" + data2); + expect(10).assertEqual(data2); + resultSet.close(); expect(true).assertEqual(resultSet.isClosed) } catch (e) { @@ -491,12 +496,11 @@ describe('rdbResultSetTest', function () { let predicates = await new data_relationalStore.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) try { - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - const data1 = resultSet.getLong(resultSet.getColumnIndex("data1")) - expect(2).assertEqual(data1); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + const data1 = resultSet.getLong(resultSet.getColumnIndex("data1")) + expect(2).assertEqual(data1); + resultSet.close(); expect(true).assertEqual(resultSet.isClosed) } catch (e) { @@ -517,12 +521,11 @@ describe('rdbResultSetTest', function () { let predicates = await new data_relationalStore.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) try { - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - const data2 = resultSet.getLong(resultSet.getColumnIndex("data2")) - expect(-5).assertEqual(data2); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + const data2 = resultSet.getLong(resultSet.getColumnIndex("data2")) + expect(-5).assertEqual(data2); + resultSet.close(); expect(true).assertEqual(resultSet.isClosed) } catch (e) { @@ -542,11 +545,11 @@ describe('rdbResultSetTest', function () { console.log(TAG + "************* testGetString0001 start *************"); let predicates = await new data_relationalStore.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - const data1 = resultSet.getString(resultSet.getColumnIndex("data1")) - expect("hello").assertEqual(data1); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + const data1 = resultSet.getString(resultSet.getColumnIndex("data1")) + expect("hello").assertEqual(data1); + + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testGetString0001 end *************"); @@ -561,11 +564,11 @@ describe('rdbResultSetTest', function () { console.log(TAG + "************* testGetString0002 start *************"); let predicates = await new data_relationalStore.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - const data2 = resultSet.getString(resultSet.getColumnIndex("data2")) - expect("10").assertEqual(data2); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + const data2 = resultSet.getString(resultSet.getColumnIndex("data2")) + expect("10").assertEqual(data2); + + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testGetString0002 end *************"); @@ -580,12 +583,12 @@ describe('rdbResultSetTest', function () { console.log(TAG + "************* testGetString0003 start *************"); let predicates = await new data_relationalStore.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - const data3 = resultSet.getString(resultSet.getColumnIndex("data3")) - expect("2.5").assertEqual(data3); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + const data3 = resultSet.getString(resultSet.getColumnIndex("data3")) + expect("2.5").assertEqual(data3); + + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testGetString0003 end *************"); @@ -600,17 +603,17 @@ describe('rdbResultSetTest', function () { console.log(TAG + "************* testGetString0004 start *************"); let predicates = await new data_relationalStore.RdbPredicates("test") let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - const data1 = resultSet.getString(resultSet.getColumnIndex("data1")) - const data2 = resultSet.getString(resultSet.getColumnIndex("data2")) - const data3 = resultSet.getString(resultSet.getColumnIndex("data3")) - expect("hello world").assertEqual(data1); - expect("3").assertEqual(data2); - expect("1.8").assertEqual(data3); - } + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + const data1 = resultSet.getString(resultSet.getColumnIndex("data1")) + const data2 = resultSet.getString(resultSet.getColumnIndex("data2")) + const data3 = resultSet.getString(resultSet.getColumnIndex("data3")) + expect("hello world").assertEqual(data1); + expect("3").assertEqual(data2); + expect("1.8").assertEqual(data3); + + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testGetString0004 end *************"); @@ -630,6 +633,7 @@ describe('rdbResultSetTest', function () { resultSet.close(); expect(true).assertEqual(resultSet.isClosed) + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsClosed0001 end *************"); @@ -646,6 +650,7 @@ describe('rdbResultSetTest', function () { let resultSet = await rdbStore.query(predicates) expect(false).assertEqual(resultSet.isClosed) + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsClosed0002 end *************"); @@ -663,6 +668,7 @@ describe('rdbResultSetTest', function () { let resultSet = await rdbStore.query(predicates) expect(false).assertEqual(resultSet.isClosed) + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testIsClosed0003 end *************"); @@ -675,14 +681,13 @@ describe('rdbResultSetTest', function () { */ it('testColumnCount0001', 0, async function (done) { console.log(TAG + "************* testColumnCount0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - expect(5).assertEqual(resultSet.columnCount); - resultSet = null; - done(); - console.log(TAG + "************* testColumnCount0001 end *************"); - } + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + expect(5).assertEqual(resultSet.columnCount); + resultSet.close(); + resultSet = null; + done(); + console.log(TAG + "************* testColumnCount0001 end *************"); }) /** @@ -692,15 +697,14 @@ describe('rdbResultSetTest', function () { */ it('testColumnCount0002', 0, async function (done) { console.log(TAG + "************* testColumnCount0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - expect(0).assertEqual(resultSet.columnCount); - resultSet = null; - done(); - console.log(TAG + "************* testColumnCount0002 end *************"); - } + let predicates = await new data_relationalStore.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + expect(0).assertEqual(resultSet.columnCount); + resultSet.close(); + resultSet = null; + done(); + console.log(TAG + "************* testColumnCount0002 end *************"); }) /** @@ -710,18 +714,15 @@ describe('rdbResultSetTest', function () { */ it('testRowIndex0001', 0, async function (done) { console.log(TAG + "************* testRowIndex0001 *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(0).assertEqual(resultSet.rowIndex) - } + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(0).assertEqual(resultSet.rowIndex) - resultSet = null; - done(); - console.log(TAG + "************* testRowIndex0001 end *************"); - } + resultSet.close(); + resultSet = null; + done(); + console.log(TAG + "************* testRowIndex0001 end *************"); }) /** @@ -731,18 +732,15 @@ describe('rdbResultSetTest', function () { */ it('testRowIndex0002', 0, async function (done) { console.log(TAG + "************* testRowIndex0002 *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - expect(2).assertEqual(resultSet.rowIndex) - } + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + expect(true).assertEqual(resultSet.goToLastRow()) + expect(2).assertEqual(resultSet.rowIndex) - resultSet = null; - done(); - console.log(TAG + "************* testRowIndex0002 end *************"); - } + resultSet.close(); + resultSet = null; + done(); + console.log(TAG + "************* testRowIndex0002 end *************"); }) /** @@ -757,10 +755,10 @@ describe('rdbResultSetTest', function () { let resultSet = await rdbStore.query(predicates) try { expect(true).assertEqual(resultSet.goToFirstRow()) - resultSet.close(); } catch (e) { expect(null).assertFail(); } + resultSet.close(); resultSet = null done(); console.log(TAG + "************* testGoToFirstRow0001 end *************"); @@ -782,6 +780,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close() resultSet = null done(); console.log(TAG + "************* testGoToFirstRow0002 end *************"); @@ -804,6 +803,7 @@ describe('rdbResultSetTest', function () { } catch (e) { expect(null).assertFail(); } + resultSet.close() resultSet = null done(); console.log(TAG + "************* testGoToFirstRow0003 end *************"); @@ -816,16 +816,15 @@ describe('rdbResultSetTest', function () { */ it('testGoToLastRow0001', 0, async function (done) { console.log(TAG + "************* testGoToLastRow0001 start *************"); + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToLastRow0001 end *************"); + expect(true).assertEqual(resultSet.goToLastRow()) } + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToLastRow0001 end *************"); }) /** @@ -835,17 +834,14 @@ describe('rdbResultSetTest', function () { */ it('testGoToLastRow0002', 0, async function (done) { console.log(TAG + "************* testGoToLastRow0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - { - expect(false).assertEqual(resultSet.goToLastRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToLastRow0002 end *************"); - } + let predicates = await new data_relationalStore.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + expect(false).assertEqual(resultSet.goToLastRow()) + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToLastRow0002 end *************"); }) /** @@ -855,18 +851,19 @@ describe('rdbResultSetTest', function () { */ it('testGoToLastRow0003', 0, async function (done) { console.log(TAG + "************* testGoToLastRow0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - expect(true).assertEqual(resultSet.goToPreviousRow()) - expect(true).assertEqual(resultSet.goToLastRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToLastRow0003 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToLastRow()) + expect(true).assertEqual(resultSet.goToPreviousRow()) + expect(true).assertEqual(resultSet.goToLastRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToLastRow0003 end *************"); + }) /** @@ -876,16 +873,17 @@ describe('rdbResultSetTest', function () { */ it('testGoToNextRow0001', 0, async function (done) { console.log(TAG + "************* testGoToNextRow0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToNextRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToNextRow0001 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToNextRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToNextRow0001 end *************"); + }) /** @@ -895,17 +893,18 @@ describe('rdbResultSetTest', function () { */ it('testGoToNextRow0002', 0, async function (done) { console.log(TAG + "************* testGoToNextRow0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - { - expect(false).assertEqual(resultSet.goToNextRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToNextRow0002 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + + expect(false).assertEqual(resultSet.goToNextRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToNextRow0002 end *************"); + }) /** @@ -915,19 +914,20 @@ describe('rdbResultSetTest', function () { */ it('testGoToNextRow0003', 0, async function (done) { console.log(TAG + "************* testGoToNextRow0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(true).assertEqual(resultSet.goToPreviousRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToNextRow0003 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(true).assertEqual(resultSet.goToPreviousRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToNextRow0003 end *************"); + }) /** @@ -937,17 +937,18 @@ describe('rdbResultSetTest', function () { */ it('testGoToNextRow0004', 0, async function (done) { console.log(TAG + "************* testGoToNextRow0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - expect(false).assertEqual(resultSet.goToNextRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToNextRow0004 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToLastRow()) + expect(false).assertEqual(resultSet.goToNextRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToNextRow0004 end *************"); + }) /** @@ -957,16 +958,17 @@ describe('rdbResultSetTest', function () { */ it('testGoToPreviousRow0001', 0, async function (done) { console.log(TAG + "************* testGoToPreviousRow0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(false).assertEqual(resultSet.goToPreviousRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToPreviousRow0001 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(false).assertEqual(resultSet.goToPreviousRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToPreviousRow0001 end *************"); + }) /** @@ -976,17 +978,18 @@ describe('rdbResultSetTest', function () { */ it('testGoToPreviousRow0002', 0, async function (done) { console.log(TAG + "************* testGoToPreviousRow0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - { - expect(false).assertEqual(resultSet.goToPreviousRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToPreviousRow0002 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + + expect(false).assertEqual(resultSet.goToPreviousRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToPreviousRow0002 end *************"); + }) /** @@ -996,18 +999,19 @@ describe('rdbResultSetTest', function () { */ it('testGoToPreviousRow0003', 0, async function (done) { console.log(TAG + "************* testGoToPreviousRow0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(true).assertEqual(resultSet.goToPreviousRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToPreviousRow0003 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(true).assertEqual(resultSet.goToPreviousRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToPreviousRow0003 end *************"); + }) /** @@ -1017,17 +1021,18 @@ describe('rdbResultSetTest', function () { */ it('testGoToPreviousRow0004', 0, async function (done) { console.log(TAG + "************* testGoToPreviousRow0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - expect(true).assertEqual(resultSet.goToPreviousRow()) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToPreviousRow0004 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToLastRow()) + expect(true).assertEqual(resultSet.goToPreviousRow()) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToPreviousRow0004 end *************"); + }) /** @@ -1037,18 +1042,19 @@ describe('rdbResultSetTest', function () { */ it('testGoTo0001', 0, async function (done) { console.log(TAG + "************* testGoTo0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - resultSet.goTo(1) - expect(1).assertEqual(resultSet.rowIndex) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoTo0001 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + resultSet.goTo(1) + expect(1).assertEqual(resultSet.rowIndex) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoTo0001 end *************"); + }) /** @@ -1058,18 +1064,19 @@ describe('rdbResultSetTest', function () { */ it('testGoTo0002', 0, async function (done) { console.log(TAG + "************* testGoTo0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - { - resultSet.goTo(1) - expect(-1).assertEqual(resultSet.rowIndex) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoTo0002 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + + resultSet.goTo(1) + expect(-1).assertEqual(resultSet.rowIndex) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoTo0002 end *************"); + }) /** @@ -1079,19 +1086,20 @@ describe('rdbResultSetTest', function () { */ it('testGoTo0003', 0, async function (done) { console.log(TAG + "************* testGoTo0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - resultSet.goTo(1) - expect(2).assertEqual(resultSet.rowIndex) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoTo0003 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + resultSet.goTo(1) + expect(2).assertEqual(resultSet.rowIndex) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoTo0003 end *************"); + }) /** @@ -1101,18 +1109,19 @@ describe('rdbResultSetTest', function () { */ it('testGoTo0004', 0, async function (done) { console.log(TAG + "************* testGoTo0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - resultSet.goTo(5) - expect(3).assertEqual(resultSet.rowIndex) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoTo0004 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToLastRow()) + resultSet.goTo(5) + expect(3).assertEqual(resultSet.rowIndex) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoTo0004 end *************"); + }) /** @@ -1122,18 +1131,19 @@ describe('rdbResultSetTest', function () { */ it('testGoToRow0001', 0, async function (done) { console.log(TAG + "************* testGoToRow0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - resultSet.goToRow(1) - expect(1).assertEqual(resultSet.rowIndex) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToRow0001 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + resultSet.goToRow(1) + expect(1).assertEqual(resultSet.rowIndex) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToRow0001 end *************"); + }) /** @@ -1143,41 +1153,43 @@ describe('rdbResultSetTest', function () { */ it('testGoToRow0002', 0, async function (done) { console.log(TAG + "************* testGoToRow0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - { - resultSet.goToRow(1) - expect(-1).assertEqual(resultSet.rowIndex) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToRow0002 end *************"); - } - }) - /** - * @tc.name resultSet goToRow test - * @tc.number SUB_DDM_AppDataFWK_JSRDB_ResultSet_0152 + let predicates = await new data_relationalStore.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + + resultSet.goToRow(1) + expect(-1).assertEqual(resultSet.rowIndex) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToRow0002 end *************"); + + }) + + /** + * @tc.name resultSet goToRow test + * @tc.number SUB_DDM_AppDataFWK_JSRDB_ResultSet_0152 * @tc.desc resultSet goToRow test */ it('testGoToRow0003', 0, async function (done) { console.log(TAG + "************* testGoToRow0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - resultSet.goToRow(1) - expect(1).assertEqual(resultSet.rowIndex) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToRow0003 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + resultSet.goToRow(1) + expect(1).assertEqual(resultSet.rowIndex) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToRow0003 end *************"); + }) /** @@ -1187,18 +1199,19 @@ describe('rdbResultSetTest', function () { */ it('testGoToRow0004', 0, async function (done) { console.log(TAG + "************* testGoToRow0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - resultSet.goToRow(5) - expect(3).assertEqual(resultSet.rowIndex) - } - resultSet = null; - done(); - console.log(TAG + "************* testGoToRow0004 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToLastRow()) + resultSet.goToRow(5) + expect(3).assertEqual(resultSet.rowIndex) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGoToRow0004 end *************"); + }) /** @@ -1208,17 +1221,18 @@ describe('rdbResultSetTest', function () { */ it('testIsAtFirstRow0001', 0, async function (done) { console.log(TAG + "************* testIsAtFirstRow0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.isAtFirstRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtFirstRow0001 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.isAtFirstRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtFirstRow0001 end *************"); + }) /** @@ -1228,17 +1242,18 @@ describe('rdbResultSetTest', function () { */ it('testIsAtFirstRow0002', 0, async function (done) { console.log(TAG + "************* testIsAtFirstRow0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - { - expect(false).assertEqual(resultSet.isAtFirstRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtFirstRow0002 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + + expect(false).assertEqual(resultSet.isAtFirstRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtFirstRow0002 end *************"); + }) /** @@ -1248,18 +1263,19 @@ describe('rdbResultSetTest', function () { */ it('testIsAtFirstRow0003', 0, async function (done) { console.log(TAG + "************* testIsAtFirstRow0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(false).assertEqual(resultSet.isAtFirstRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtFirstRow0003 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(false).assertEqual(resultSet.isAtFirstRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtFirstRow0003 end *************"); + }) /** @@ -1269,17 +1285,18 @@ describe('rdbResultSetTest', function () { */ it('testIsAtFirstRow0004', 0, async function (done) { console.log(TAG + "************* testIsAtFirstRow0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - expect(false).assertEqual(resultSet.isAtFirstRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtFirstRow0004 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToLastRow()) + expect(false).assertEqual(resultSet.isAtFirstRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtFirstRow0004 end *************"); + }) /** @@ -1289,18 +1306,19 @@ describe('rdbResultSetTest', function () { */ it('testIsAtFirstRow0005', 0, async function (done) { console.log(TAG + "************* testIsAtFirstRow0005 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - resultSet.goTo(1) - resultSet.goTo(0) - expect(true).assertEqual(resultSet.isAtFirstRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtFirstRow0005 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + resultSet.goTo(1) + resultSet.goTo(0) + expect(true).assertEqual(resultSet.isAtFirstRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtFirstRow0005 end *************"); + }) /** @@ -1310,18 +1328,19 @@ describe('rdbResultSetTest', function () { */ it('testIsAtFirstRow0006', 0, async function (done) { console.log(TAG + "************* testIsAtFirstRow0006 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - resultSet.goTo(1) - expect(true).assertEqual(resultSet.isAtFirstRow) - expect(true).assertEqual(resultSet.isAtFirstRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtFirstRow0006 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + resultSet.goTo(1) + expect(true).assertEqual(resultSet.isAtFirstRow) + expect(true).assertEqual(resultSet.isAtFirstRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtFirstRow0006 end *************"); + }) /** @@ -1331,17 +1350,18 @@ describe('rdbResultSetTest', function () { */ it('testIsAtLastRow0001', 0, async function (done) { console.log(TAG + "************* testIsAtLastRow0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(false).assertEqual(resultSet.isAtLastRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtLastRow0001 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(false).assertEqual(resultSet.isAtLastRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtLastRow0001 end *************"); + }) /** @@ -1351,17 +1371,18 @@ describe('rdbResultSetTest', function () { */ it('testIsAtLastRow0002', 0, async function (done) { console.log(TAG + "************* testIsAtLastRow0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - { - expect(false).assertEqual(resultSet.isAtLastRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtLastRow0002 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + + expect(false).assertEqual(resultSet.isAtLastRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtLastRow0002 end *************"); + }) /** @@ -1371,18 +1392,19 @@ describe('rdbResultSetTest', function () { */ it('testIsAtLastRow0003', 0, async function (done) { console.log(TAG + "************* testIsAtLastRow0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(false).assertEqual(resultSet.isAtLastRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtLastRow0003 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(false).assertEqual(resultSet.isAtLastRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtLastRow0003 end *************"); + }) /** @@ -1392,17 +1414,18 @@ describe('rdbResultSetTest', function () { */ it('testIsAtLastRow0004', 0, async function (done) { console.log(TAG + "************* testIsAtLastRow0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToLastRow()) - expect(true).assertEqual(resultSet.isAtLastRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtLastRow0004 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToLastRow()) + expect(true).assertEqual(resultSet.isAtLastRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtLastRow0004 end *************"); + }) /** @@ -1412,18 +1435,19 @@ describe('rdbResultSetTest', function () { */ it('testIsAtLastRow0005', 0, async function (done) { console.log(TAG + "************* testIsAtLastRow0005 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - resultSet.goToRow(2) - expect(true).assertEqual(resultSet.isAtLastRow) - expect(true).assertEqual(resultSet.isAtLastRow) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsAtLastRow0005 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + resultSet.goToRow(2) + expect(true).assertEqual(resultSet.isAtLastRow) + expect(true).assertEqual(resultSet.isAtLastRow) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsAtLastRow0005 end *************"); + }) /** @@ -1433,18 +1457,19 @@ describe('rdbResultSetTest', function () { */ it('testGetDouble0001', 0, async function (done) { console.log(TAG + "************* testGetDouble0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - resultSet.goTo(1) - const data3 = resultSet.getDouble(resultSet.getColumnIndex("data3")) - expect(1.0).assertEqual(data3) - } - resultSet = null; - done(); - console.log(TAG + "************* testGetDouble0001 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + resultSet.goTo(1) + const data3 = resultSet.getDouble(resultSet.getColumnIndex("data3")) + expect(1.0).assertEqual(data3) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetDouble0001 end *************"); + }) /** @@ -1454,18 +1479,19 @@ describe('rdbResultSetTest', function () { */ it('testGetDouble0002', 0, async function (done) { console.log(TAG + "************* testGetDouble0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - resultSet.goTo(2) - const data3 = resultSet.getDouble(resultSet.getColumnIndex("data3")) - expect(2.5).assertEqual(data3) - } - resultSet = null; - done(); - console.log(TAG + "************* testGetDouble0002 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + resultSet.goTo(2) + const data3 = resultSet.getDouble(resultSet.getColumnIndex("data3")) + expect(2.5).assertEqual(data3) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetDouble0002 end *************"); + }) /** @@ -1475,18 +1501,19 @@ describe('rdbResultSetTest', function () { */ it('testGetDouble0003', 0, async function (done) { console.log(TAG + "************* testGetDouble0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - resultSet.goTo(3) - const data3 = resultSet.getDouble(resultSet.getColumnIndex("data3")) - expect(1.8).assertEqual(data3) - } - resultSet = null; - done(); - console.log(TAG + "************* testGetDouble0003 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + resultSet.goTo(3) + const data3 = resultSet.getDouble(resultSet.getColumnIndex("data3")) + expect(1.8).assertEqual(data3) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetDouble0003 end *************"); + }) /** @@ -1496,18 +1523,19 @@ describe('rdbResultSetTest', function () { */ it('testGetDouble0004', 0, async function (done) { console.log(TAG + "************* testGetDouble0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - resultSet.goTo(1) - const data2 = resultSet.getDouble(resultSet.getColumnIndex("data2")) - expect(10).assertEqual(data2) - } - resultSet = null; - done(); - console.log(TAG + "************* testGetDouble0004 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + resultSet.goTo(1) + const data2 = resultSet.getDouble(resultSet.getColumnIndex("data2")) + expect(10).assertEqual(data2) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetDouble0004 end *************"); + }) /** @@ -1517,20 +1545,21 @@ describe('rdbResultSetTest', function () { */ it('testIsColumnNull0001', 0, async function (done) { console.log(TAG + "************* testIsColumnNull0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - const isColumnNull1 = resultSet.isColumnNull(resultSet.getColumnIndex("data1")) - expect(false).assertEqual(isColumnNull1) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsColumnNull0001 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + const isColumnNull1 = resultSet.isColumnNull(resultSet.getColumnIndex("data1")) + expect(false).assertEqual(isColumnNull1) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsColumnNull0001 end *************"); + }) /** @@ -1540,20 +1569,21 @@ describe('rdbResultSetTest', function () { */ it('testIsColumnNull0002', 0, async function (done) { console.log(TAG + "************* testIsColumnNull0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - expect(true).assertEqual(resultSet.goToNextRow()) - const isColumnNull4 = resultSet.isColumnNull(resultSet.getColumnIndex("data4")) - expect(true).assertEqual(isColumnNull4) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsColumnNull0002 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + expect(true).assertEqual(resultSet.goToNextRow()) + const isColumnNull4 = resultSet.isColumnNull(resultSet.getColumnIndex("data4")) + expect(true).assertEqual(isColumnNull4) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsColumnNull0002 end *************"); + }) /** @@ -1563,19 +1593,20 @@ describe('rdbResultSetTest', function () { */ it('testIsColumnNull0003', 0, async function (done) { console.log(TAG + "************* testIsColumnNull0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - resultSet.goToRow(5) - try { - expect(false).assertEqual(resultSet.isColumnNull(1)); - } catch(e) { - expect(e.code).assertEqual("14800013"); - } - resultSet = null; - done(); - console.log(TAG + "************* testIsColumnNull0003 end *************"); + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + resultSet.goToRow(5) + try { + expect(false).assertEqual(resultSet.isColumnNull(1)); + } catch (e) { + expect(e.code).assertEqual("14800013"); } + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsColumnNull0003 end *************"); + }) /** * @tc.name resultSet isColumnNull test @@ -1584,18 +1615,19 @@ describe('rdbResultSetTest', function () { */ it('testIsColumnNull0004', 0, async function (done) { console.log(TAG + "************* testIsColumnNull0004 start *************"); + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - { - resultSet.goToRow(2) - expect(false).assertEqual(resultSet.isColumnNull(1)) - expect(true).assertEqual(resultSet.isColumnNull(4)) - } - resultSet = null; - done(); - console.log(TAG + "************* testIsColumnNull0004 end *************"); + resultSet.goToRow(2) + expect(false).assertEqual(resultSet.isColumnNull(1)) + expect(true).assertEqual(resultSet.isColumnNull(4)) } + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testIsColumnNull0004 end *************"); + }) /** @@ -1605,16 +1637,17 @@ describe('rdbResultSetTest', function () { */ it('testGetColumnIndex0001', 0, async function (done) { console.log(TAG + "************* testGetColumnIndex0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - expect(true).assertEqual(resultSet.goToFirstRow()) - expect(1).assertEqual(resultSet.getColumnIndex("data1")) - resultSet = null; - done(); - console.log(TAG + "************* testGetColumnIndex0001 end *************"); - } + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + expect(true).assertEqual(resultSet.goToFirstRow()) + expect(1).assertEqual(resultSet.getColumnIndex("data1")) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetColumnIndex0001 end *************"); + }) /** @@ -1624,16 +1657,17 @@ describe('rdbResultSetTest', function () { */ it('testGetColumnIndex0002', 0, async function (done) { console.log(TAG + "************* testGetColumnIndex0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - expect(-1).assertEqual(resultSet.getColumnIndex("data1")) - - resultSet = null; - done(); - console.log(TAG + "************* testGetColumnIndex0002 end *************"); - } + + let predicates = await new data_relationalStore.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + expect(-1).assertEqual(resultSet.getColumnIndex("data1")) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetColumnIndex0002 end *************"); + }) /** @@ -1643,15 +1677,16 @@ describe('rdbResultSetTest', function () { */ it('testGetColumnIndex0003', 0, async function (done) { console.log(TAG + "************* testGetColumnIndex0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - expect(-1).assertEqual(resultSet.getColumnIndex("dataX")) - resultSet = null; - done(); - console.log(TAG + "************* testGetColumnIndex0003 end *************"); - } + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + expect(-1).assertEqual(resultSet.getColumnIndex("dataX")) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetColumnIndex0003 end *************"); + }) /** @@ -1661,18 +1696,19 @@ describe('rdbResultSetTest', function () { */ it('testGetColumnIndex0004', 0, async function (done) { console.log(TAG + "************* testGetColumnIndex0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - try { - expect(-1).assertEqual(resultSet.getColumnIndex("")) - } catch(err) { - expect("401").assertEqual(err.code) - } - resultSet = null - done() - console.log(TAG + "************* testGetColumnIndex0004 end *************"); + + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + try { + expect(-1).assertEqual(resultSet.getColumnIndex("")) + } catch (err) { + expect("401").assertEqual(err.code) } + resultSet.close() + resultSet = null + done() + console.log(TAG + "************* testGetColumnIndex0004 end *************"); + }) /** @@ -1682,17 +1718,18 @@ describe('rdbResultSetTest', function () { */ it('testGetColumnName0001', 0, async function (done) { console.log(TAG + "************* testGetColumnIndex0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - expect("data1").assertEqual(resultSet.getColumnName(1)) - expect("data4").assertEqual(resultSet.getColumnName(4)) + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect("data1").assertEqual(resultSet.getColumnName(1)) + expect("data4").assertEqual(resultSet.getColumnName(4)) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetColumnName0001 end *************"); - resultSet = null; - done(); - console.log(TAG + "************* testGetColumnName0001 end *************"); - } }) /** @@ -1702,18 +1739,19 @@ describe('rdbResultSetTest', function () { */ it('testGetColumnName0002', 0, async function (done) { console.log(TAG + "************* testGetColumnName0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - expect("").assertEqual(resultSet.getColumnName(1)) - expect("").assertEqual(resultSet.getColumnName(4)) + let predicates = await new data_relationalStore.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + + expect("").assertEqual(resultSet.getColumnName(1)) + expect("").assertEqual(resultSet.getColumnName(4)) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetColumnName0002 end *************"); - resultSet = null; - done(); - console.log(TAG + "************* testGetColumnName0002 end *************"); - } }) /** @@ -1723,16 +1761,17 @@ describe('rdbResultSetTest', function () { */ it('testGetColumnName0003', 0, async function (done) { console.log(TAG + "************* testGetColumnName0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - expect("").assertEqual(resultSet.getColumnName(10)) + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + + expect("").assertEqual(resultSet.getColumnName(10)) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetColumnName0003 end *************"); - resultSet = null; - done(); - console.log(TAG + "************* testGetColumnName0003 end *************"); - } }) /** @@ -1742,17 +1781,18 @@ describe('rdbResultSetTest', function () { */ it('testGetColumnName0004', 0, async function (done) { console.log(TAG + "************* testGetColumnName0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - expect("").assertEqual(resultSet.getColumnName(10)) + let predicates = await new data_relationalStore.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + + expect("").assertEqual(resultSet.getColumnName(10)) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testGetColumnName0004 end *************"); - resultSet = null; - done(); - console.log(TAG + "************* testGetColumnName0004 end *************"); - } }) /** @@ -1762,17 +1802,18 @@ describe('rdbResultSetTest', function () { */ it('testClose0001', 0, async function (done) { console.log(TAG + "************* testClose0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - let resultSet = await rdbStore.query(predicates) - resultSet.goToRow(1) - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testClose0001 end *************"); - } + let predicates = await new data_relationalStore.RdbPredicates("test") + let resultSet = await rdbStore.query(predicates) + resultSet.goToRow(1) + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testClose0001 end *************"); + }) /** @@ -1782,17 +1823,18 @@ describe('rdbResultSetTest', function () { */ it('testClose0002', 0, async function (done) { console.log(TAG + "************* testClose0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("test") - predicates.equalTo("name", "wangwu"); - let resultSet = await rdbStore.query(predicates) - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testClose0002 end *************"); - } + let predicates = await new data_relationalStore.RdbPredicates("test") + predicates.equalTo("name", "wangwu"); + let resultSet = await rdbStore.query(predicates) + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + + resultSet.close() + resultSet = null; + done(); + console.log(TAG + "************* testClose0002 end *************"); + }) /** @@ -1802,25 +1844,25 @@ describe('rdbResultSetTest', function () { */ it('testBigData0001', 0, async function (done) { console.log(TAG + "************* testBigData0001 start *************"); - { - await createBigData(500); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(500).assertEqual(count); - - resultSet.goToFirstRow(); - let i = 0; - while (resultSet.isEnded == false) { - expect("test" + i++).assertEqual(resultSet.getString(1)) - resultSet.goToNextRow(); - } - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0001 end *************"); + await createBigData(500); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(500).assertEqual(count); + + resultSet.goToFirstRow(); + let i = 0; + while (resultSet.isEnded == false) { + expect("test" + i++).assertEqual(resultSet.getString(1)) + resultSet.goToNextRow(); } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0001 end *************"); + }) /** @@ -1830,25 +1872,25 @@ describe('rdbResultSetTest', function () { */ it('testBigData0002', 0, async function (done) { console.log(TAG + "************* testBigData0002 start *************"); - { - await createBigData(500); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(500).assertEqual(count); - - resultSet.goToLastRow(); - let i = resultSet.rowCount; - while (i >= 1) { - expect("test" + --i).assertEqual(resultSet.getString(1)) - resultSet.goToPreviousRow(); - } - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0002 end *************"); + await createBigData(500); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(500).assertEqual(count); + + resultSet.goToLastRow(); + let i = resultSet.rowCount; + while (i >= 1) { + expect("test" + --i).assertEqual(resultSet.getString(1)) + resultSet.goToPreviousRow(); } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0002 end *************"); + }) /** @@ -1858,24 +1900,24 @@ describe('rdbResultSetTest', function () { */ it('testBigData0003', 0, async function (done) { console.log(TAG + "************* testBigData0003 start *************"); - { - await createBigData(500); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(500).assertEqual(count); - let rows = [62, 80, 59, 121, 45, 99, 42, 104, 41, 105, 499, 248]; - for (const i of rows) { - resultSet.goToRow(i); - expect("test" + i).assertEqual(resultSet.getString(1)) - } + await createBigData(500); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(500).assertEqual(count); - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0003 end *************"); + let rows = [62, 80, 59, 121, 45, 99, 42, 104, 41, 105, 499, 248]; + for (const i of rows) { + resultSet.goToRow(i); + expect("test" + i).assertEqual(resultSet.getString(1)) } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0003 end *************"); + }) /** @@ -1885,27 +1927,27 @@ describe('rdbResultSetTest', function () { */ it('testBigData0004', 0, async function (done) { console.log(TAG + "************* testBigData0004 start *************"); - { - await createBigData(0); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(0).assertEqual(count); - resultSet.goToFirstRow(); - expect(false).assertEqual(resultSet.isStarted); + await createBigData(0); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(0).assertEqual(count); - let rows = [1, 2, 0, -1, -2]; - for (const i of rows) { - resultSet.goToRow(i); - expect(false).assertEqual(resultSet.isStarted); - } + resultSet.goToFirstRow(); + expect(false).assertEqual(resultSet.isStarted); - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0004 end *************"); + let rows = [1, 2, 0, -1, -2]; + for (const i of rows) { + resultSet.goToRow(i); + expect(false).assertEqual(resultSet.isStarted); } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0004 end *************"); + }) /** @@ -1915,31 +1957,31 @@ describe('rdbResultSetTest', function () { */ it('testBigData0005', 0, async function (done) { console.log(TAG + "************* testBigData0005 start *************"); - { - await createBigData(1); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(1).assertEqual(count); - resultSet.goToFirstRow(); - expect(true).assertEqual(resultSet.isStarted); - expect("test0").assertEqual(resultSet.getString(1)) - try { - let rows = [1, 2, -1, -2]; - for (const i of rows) { - resultSet.goToRow(i) - expect(true).assertEqual(resultSet.isStarted) - expect("").assertEqual(resultSet.getString(1)) - } - } catch(e) { - expect(e.code).assertEqual("14800013"); + await createBigData(1); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(1).assertEqual(count); + + resultSet.goToFirstRow(); + expect(true).assertEqual(resultSet.isStarted); + expect("test0").assertEqual(resultSet.getString(1)) + try { + let rows = [1, 2, -1, -2]; + for (const i of rows) { + resultSet.goToRow(i) + expect(true).assertEqual(resultSet.isStarted) + expect("").assertEqual(resultSet.getString(1)) } - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0005 end *************"); + } catch (e) { + expect(e.code).assertEqual("14800013"); } + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0005 end *************"); + }) /** @@ -1949,39 +1991,39 @@ describe('rdbResultSetTest', function () { */ it('testBigData0006', 0, async function (done) { console.log(TAG + "************* testBigData0006 start *************"); - { - await createBigData(2); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(2).assertEqual(count); - resultSet.goToFirstRow(); + await createBigData(2); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(2).assertEqual(count); + + resultSet.goToFirstRow(); + expect(true).assertEqual(resultSet.isStarted); + + let rows = [0, 1]; + for (const i of rows) { + resultSet.goToRow(i); expect(true).assertEqual(resultSet.isStarted); + expect("test" + i).assertEqual(resultSet.getString(1)) + } - let rows = [0, 1]; + try { + rows = [2, 3, 4, -1, -2]; for (const i of rows) { resultSet.goToRow(i); expect(true).assertEqual(resultSet.isStarted); - expect("test" + i).assertEqual(resultSet.getString(1)) + expect("").assertEqual(resultSet.getString(1)) } + } catch (e) { + expect(e.code).assertEqual("14800013"); + } - try { - rows = [2, 3, 4, -1, -2]; - for (const i of rows) { - resultSet.goToRow(i); - expect(true).assertEqual(resultSet.isStarted); - expect("").assertEqual(resultSet.getString(1)) - } - } catch(e) { - expect(e.code).assertEqual("14800013"); - } + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0006 end *************"); - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0006 end *************"); - } }) /** @@ -1991,28 +2033,28 @@ describe('rdbResultSetTest', function () { */ it('testBigData0007', 0, async function (done) { console.log(TAG + "************* testBigData0007 start *************"); - { - await createBigData(500); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(500).assertEqual(count); - let rows = [62, 80, 59, 121, 45, -1, 99, 42, 104, 41, 105, 499, 248]; - for (const i of rows) { - resultSet.goToRow(i); - if (i > 0 ) { - expect("test" + i).assertEqual(resultSet.getString(1)) - } else { - expect("test45").assertEqual(resultSet.getString(1)) - } - } + await createBigData(500); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(500).assertEqual(count); - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0007 end *************"); + let rows = [62, 80, 59, 121, 45, -1, 99, 42, 104, 41, 105, 499, 248]; + for (const i of rows) { + resultSet.goToRow(i); + if (i > 0) { + expect("test" + i).assertEqual(resultSet.getString(1)) + } else { + expect("test45").assertEqual(resultSet.getString(1)) + } } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0007 end *************"); + }) /** @@ -2022,23 +2064,23 @@ describe('rdbResultSetTest', function () { */ it('testBigData0008', 0, async function (done) { console.log(TAG + "************* testBigData0008 start *************"); - { - await createBigData(200); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(200).assertEqual(count); - - let i = 0; - while (resultSet.goToNextRow() == 0) { - expect("test" + i++).assertEqual(resultSet.getString(1)) - } - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0008 end *************"); + await createBigData(200); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(200).assertEqual(count); + + let i = 0; + while (resultSet.goToNextRow() == 0) { + expect("test" + i++).assertEqual(resultSet.getString(1)) } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0008 end *************"); + }) /** @@ -2048,25 +2090,25 @@ describe('rdbResultSetTest', function () { */ it('testBigData0009', 0, async function (done) { console.log(TAG + "************* testBigData0009 start *************"); - { - await createBigData(200); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(200).assertEqual(count); - let i = 0; - while (i < 200) { - resultSet.goToRow(i); - expect("test" + i).assertEqual(resultSet.getString(1)) - i++; - } + await createBigData(200); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(200).assertEqual(count); - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0009 end *************"); + let i = 0; + while (i < 200) { + resultSet.goToRow(i); + expect("test" + i).assertEqual(resultSet.getString(1)) + i++; } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0009 end *************"); + }) /** @@ -2076,32 +2118,32 @@ describe('rdbResultSetTest', function () { */ it('testBigData0010', 0, async function (done) { console.log(TAG + "************* testBigData0010 start *************"); - { - await createBigData(200); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(200).assertEqual(count); - - resultSet.goToFirstRow(); - let i = 0; - while (resultSet.isEnded == false) { - expect("test" + i++).assertEqual(resultSet.getString(1)) - resultSet.goToNextRow(); - } - i = 0; - while (i < 200) { - resultSet.goToRow(i); - expect("test" + i).assertEqual(resultSet.getString(1)) - i++; - } + await createBigData(200); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(200).assertEqual(count); - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0010 end *************"); + resultSet.goToFirstRow(); + let i = 0; + while (resultSet.isEnded == false) { + expect("test" + i++).assertEqual(resultSet.getString(1)) + resultSet.goToNextRow(); + } + + i = 0; + while (i < 200) { + resultSet.goToRow(i); + expect("test" + i).assertEqual(resultSet.getString(1)) + i++; } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0010 end *************"); + }) /** @@ -2111,32 +2153,32 @@ describe('rdbResultSetTest', function () { */ it('testBigData0011', 0, async function (done) { console.log(TAG + "************* testBigData0011 start *************"); - { - await createBigData(200); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(200).assertEqual(count); - let i = 0; - while (i < 200) { - resultSet.goToRow(i); - expect("test" + i).assertEqual(resultSet.getString(1)) - i++; - } + await createBigData(200); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(200).assertEqual(count); - resultSet.goToFirstRow(); - i = 0; - while (resultSet.isEnded == false) { - expect("test" + i++).assertEqual(resultSet.getString(1)) - resultSet.goToNextRow(); - } + let i = 0; + while (i < 200) { + resultSet.goToRow(i); + expect("test" + i).assertEqual(resultSet.getString(1)) + i++; + } - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0011 end *************"); + resultSet.goToFirstRow(); + i = 0; + while (resultSet.isEnded == false) { + expect("test" + i++).assertEqual(resultSet.getString(1)) + resultSet.goToNextRow(); } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0011 end *************"); + }) /** @@ -2146,22 +2188,22 @@ describe('rdbResultSetTest', function () { */ it('testBigData0012', 0, async function (done) { console.log(TAG + "************* testBigData0012 start *************"); - { - await createBigData(1); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(1).assertEqual(count); - let i = 0; - resultSet.goToNextRow(); - expect("test0").assertEqual(resultSet.getString(1)) + await createBigData(1); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(1).assertEqual(count); + + let i = 0; + resultSet.goToNextRow(); + expect("test0").assertEqual(resultSet.getString(1)) + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0012 end *************"); - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0012 end *************"); - } }) /** @@ -2171,31 +2213,31 @@ describe('rdbResultSetTest', function () { */ it('testBigData0013', 0, async function (done) { console.log(TAG + "************* testBigData0013 start *************"); - { - await createBigData(200); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(200).assertEqual(count); - - resultSet.goToFirstRow(); - let i = 0; - while (resultSet.isEnded == false) { - expect("test" + i++).assertEqual(resultSet.getString(1)) - resultSet.goToNextRow(); - } - - resultSet.goToRow(1); - expect("test1").assertEqual(resultSet.getString(1)) - resultSet.goToRow(5); - expect("test5").assertEqual(resultSet.getString(1)) + await createBigData(200); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(200).assertEqual(count); - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0013 end *************"); + resultSet.goToFirstRow(); + let i = 0; + while (resultSet.isEnded == false) { + expect("test" + i++).assertEqual(resultSet.getString(1)) + resultSet.goToNextRow(); } + + resultSet.goToRow(1); + expect("test1").assertEqual(resultSet.getString(1)) + + resultSet.goToRow(5); + expect("test5").assertEqual(resultSet.getString(1)) + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0013 end *************"); + }) /** @@ -2205,32 +2247,32 @@ describe('rdbResultSetTest', function () { */ it('testBigData0014', 0, async function (done) { console.log(TAG + "************* testBigData0014 start *************"); - { - await createBigData(5); - let resultSet = await rdbStore.querySql("SELECT * FROM test"); - let count = resultSet.rowCount; - expect(5).assertEqual(count); - - resultSet.goToFirstRow(); - let i = 0; - while (resultSet.isEnded == false) { - expect("test" + i++).assertEqual(resultSet.getString(1)) - resultSet.goToNextRow(); - } - i = 0; - while (i < 5) { - resultSet.goToRow(i); - expect("test" + i).assertEqual(resultSet.getString(1)) - i++; - } + await createBigData(5); + let resultSet = await rdbStore.querySql("SELECT * FROM test"); + let count = resultSet.rowCount; + expect(5).assertEqual(count); - resultSet.close() - expect(true).assertEqual(resultSet.isClosed) - resultSet = null; - done(); - console.log(TAG + "************* testBigData0014 end *************"); + resultSet.goToFirstRow(); + let i = 0; + while (resultSet.isEnded == false) { + expect("test" + i++).assertEqual(resultSet.getString(1)) + resultSet.goToNextRow(); } + + i = 0; + while (i < 5) { + resultSet.goToRow(i); + expect("test" + i).assertEqual(resultSet.getString(1)) + i++; + } + + resultSet.close() + expect(true).assertEqual(resultSet.isClosed) + resultSet = null; + done(); + console.log(TAG + "************* testBigData0014 end *************"); + }) console.log(TAG + "*************Unit Test End*************"); }) \ No newline at end of file diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbstoreBackupRestoreWithFAContextJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbstoreBackupRestoreWithFAContextJsunit.test.js index f05c770d..4e44db55 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbstoreBackupRestoreWithFAContextJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbstoreBackupRestoreWithFAContextJsunit.test.js @@ -107,6 +107,7 @@ describe('rdbStoreBackupRestoreWithFAContextTest', function () { afterEach(async function () { console.info(TAG + 'afterEach') + rdbStore = null await data_relationalStore.deleteRdbStore(context, STORE_CONFIG.name) await data_relationalStore.deleteRdbStore(context, DATABASE_BACKUP_NAME) }) @@ -176,8 +177,8 @@ describe('rdbStoreBackupRestoreWithFAContextTest', function () { } catch (err) { expect(false).assertTrue() } + resultSet.close() resultSet = null - rdbStore = null done() await console.log(TAG + "************* RdbBackupRestoreTest_0010 end *************") }) diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbstoreCallBackJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbstoreCallBackJsunit.test.js index 7ecc14e4..c47d5155 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbstoreCallBackJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbstoreCallBackJsunit.test.js @@ -17,7 +17,8 @@ import data_relationalStore from '@ohos.data.relationalStore'; import ability_featureAbility from '@ohos.ability.featureAbility'; const TAG = "[RELATIONAL_STORE_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; const STORE_CONFIG = { name: "RDBCallbackTest.db", @@ -43,7 +44,7 @@ describe('rdbStoreCallBackTest', async function () { }) console.log(TAG + "*************Unit Test Begin*************"); - + /** * @tc.name rdb callback test * @tc.number testRdbStoreCallBackTest0001 @@ -69,7 +70,7 @@ describe('rdbStoreCallBackTest', async function () { console.log("Insert is successful, rowId = " + rowId) let predicates = new data_relationalStore.RdbPredicates("test") predicates.equalTo("name", "zhangsan") - let resultSet = await rdbStore.query(predicates,[]) + let resultSet = await rdbStore.query(predicates, []) expect(1).assertEqual(resultSet.rowCount) expect(true).assertEqual(resultSet.goToFirstRow()) const id = resultSet.getLong(resultSet.getColumnIndex("id")) @@ -77,7 +78,6 @@ describe('rdbStoreCallBackTest', async function () { const age = resultSet.getLong(resultSet.getColumnIndex("age")) const salary = resultSet.getDouble(resultSet.getColumnIndex("salary")) const blobType = resultSet.getBlob(resultSet.getColumnIndex("blobType")) - console.log(TAG + "id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + ", blobType=" + blobType); expect(1).assertEqual(id); expect("zhangsan").assertEqual(name); expect(18).assertEqual(age); @@ -93,16 +93,15 @@ describe('rdbStoreCallBackTest', async function () { console.log("Delete RdbStore is failed, err: code=" + err.code + " message=" + err.message) expect(false).assertTrue() } - console.log("Delete RdbStore successfully.") done() console.log(TAG + "************* testRdbStoreCallBackTest0001 end *************") }); + resultSet.close() + rdbStore = null }) - } catch(e) { + } catch (e) { console.log("catch err: Get RdbStore failed, err: code=" + e.code + " message=" + e.message) expect(false).assertTrue() - done() - console.log(TAG + "************* testRdbStoreCallBackTest0001 end *************") } }) @@ -114,17 +113,17 @@ describe('rdbStoreCallBackTest', async function () { it('testRdbStoreCallBackTest0002', 0, function (done) { console.log(TAG + "************* testRdbStoreCallBackTest0002 start *************") try { - data_relationalStore.getRdbStore(context, {dbname: "RDBCallbackTest.db", securityLevel: data_relationalStore.SecurityLevel.S1,}, (err, rdbStore) => { - if (err) { - console.log("Get RdbStore failed, err: code=" + err.code + " message=" + err.message) + data_relationalStore.getRdbStore(context, + {dbname: "RDBCallbackTest.db", securityLevel: data_relationalStore.SecurityLevel.S1,}, + (err, rdbStore) => { + if (err) { + console.log("Get RdbStore failed, err: code=" + err.code + " message=" + err.message) + expect(false).assertTrue() + } + console.log("Get RdbStore successfully.") expect(false).assertTrue() - } - console.log("Get RdbStore successfully.") - expect(false).assertTrue() - done() - console.log(TAG + "************* testRdbStoreCallBackTest0002 end *************") - }) - } catch(e) { + }) + } catch (e) { console.log("catch err: Get RdbStore failed, err: code=" + e.code + " message=" + e.message) expect("401").assertEqual(e.code) done() @@ -137,27 +136,28 @@ describe('rdbStoreCallBackTest', async function () { * @tc.number testRdbStoreCallBackTest0003 * @tc.desc rdb callback test getRdbStore err params */ - it('testRdbStoreCallBackTest0003', 0, function (done) { + it('testRdbStoreCallBackTest0003', 0, function (done) { console.log(TAG + "************* testRdbStoreCallBackTest0003 start *************") try { - data_relationalStore.getRdbStore(null, {name: "RDBCallbackTest.db",securityLevel: data_relationalStore.SecurityLevel.S1}, (err, rdbStore) => { + data_relationalStore.getRdbStore(null, { + name: "RDBCallbackTest.db", + securityLevel: data_relationalStore.SecurityLevel.S1 + }, (err, rdbStore) => { if (err) { console.log("Get RdbStore failed, err: code=" + err.code + " message=" + err.message) expect(false).assertTrue() } console.log("Get RdbStore successfully.") expect(false).assertTrue() - done() - console.log(TAG + "************* testRdbStoreCallBackTest0003 end *************") }) - } catch(e) { + } catch (e) { console.log("catch err: Get RdbStore failed, err: code=" + e.code + " message=" + e.message) expect("401").assertEqual(e.code) done() console.log(TAG + "************* testRdbStoreCallBackTest0003 end *************") } }) - + /** * @tc.name rdb callback test getRdbStore ok params * @tc.number testRdbStoreCallBackTest0004 @@ -171,15 +171,13 @@ describe('rdbStoreCallBackTest', async function () { console.log("Get RdbStore failed, err: code=" + err.code + " message=" + err.message) expect(false).assertTrue() } - console.log("Get RdbStore successfully.") + rdbStore = null done() console.log(TAG + "************* testRdbStoreCallBackTest0004 end *************") }) - } catch(e) { + } catch (e) { console.log("catch err: Get RdbStore failed, err: code=" + e.code + " message=" + e.message) expect(false).assertTrue() - done() - console.log(TAG + "************* testRdbStoreCallBackTest0004 end *************") } }) @@ -190,21 +188,18 @@ describe('rdbStoreCallBackTest', async function () { */ it('testRdbStoreCallBackTest0005', 0, async function (done) { console.log(TAG + "************* testRdbStoreCallBackTest0005 start *************"); - data_relationalStore.getRdbStore(context, STORE_CONFIG).then((rdbStore)=>{ + data_relationalStore.getRdbStore(context, STORE_CONFIG).then((rdbStore) => { try { + rdbStore = null data_relationalStore.deleteRdbStore(context, 12345, (err) => { if (err) { console.log("Delete RdbStore is failed, err: code=" + err.code + " message=" + err.message) expect(false).assertTrue() - done() - console.log(TAG + "************* testRdbStoreCallBackTest0005 end *************"); } console.log("Delete RdbStore successfully.") expect(false).assertTrue() - done() - console.log(TAG + "************* testRdbStoreCallBackTest0005 end *************"); }); - } catch(e) { + } catch (e) { console.log("catch err: Delete RdbStore failed, err: code=" + e.code + " message=" + e.message) expect("401").assertEqual(e.code) done() @@ -213,11 +208,9 @@ describe('rdbStoreCallBackTest', async function () { }).catch((err2) => { console.info("Get RdbStore failed, err: code=" + err2.code + " message=" + err2.message) expect(false).assertTrue() - done() - console.log(TAG + "************* testRdbStoreCallBackTest0005 end *************"); }) }) - + /** * @tc.name rdb callback test deleteRdbStore OK params * @tc.number testRdbStoreCallBackTest0006 @@ -225,30 +218,24 @@ describe('rdbStoreCallBackTest', async function () { */ it('testRdbStoreCallBackTest0006', 0, async function (done) { console.log(TAG + "************* testRdbStoreCallBackTest0006 start *************") - data_relationalStore.getRdbStore(context, STORE_CONFIG).then((rdbStore)=>{ + data_relationalStore.getRdbStore(context, STORE_CONFIG).then((rdbStore) => { try { + rdbStore = null data_relationalStore.deleteRdbStore(context, "RDBCallbackTest.db", (err) => { if (err) { console.log("Delete RdbStore is failed, err: code=" + err.code + " message=" + err.message) expect(false).assertTrue() - done() - console.log(TAG + "************* testRdbStoreCallBackTest0006 end *************"); } console.log("Delete RdbStore successfully.") done() console.log(TAG + "************* testRdbStoreCallBackTest0006 end *************") }); - } catch(err) { - console.log("222catch err: Delete RdbStore failed, err: code=" + err.code + " message=" + err.message) + } catch (err) { expect(false).assertTrue() - done() - console.log(TAG + "************* testRdbStoreCallBackTest0006 end *************"); } }).catch((err) => { console.info("Get RdbStore failed, err: code=" + err.code + " message=" + err.message) expect(false).assertTrue() - done() - console.log(TAG + "************* testRdbStoreCallBackTest0006 end *************"); }) }) diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbstoreCreateDeleteWithFAContextJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbstoreCreateDeleteWithFAContextJsunit.test.js index cd7bebd5..6f44b562 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbstoreCreateDeleteWithFAContextJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbstoreCreateDeleteWithFAContextJsunit.test.js @@ -17,7 +17,8 @@ import data_relationalStore from '@ohos.data.relationalStore'; import ability_featureAbility from '@ohos.ability.featureAbility'; const TAG = "[RELATIONAL_STORE_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; const STORE_CONFIG = { name: "CreateDeleteWithFAContextTest.db", @@ -36,6 +37,7 @@ describe('rdbStoreCreateDeleteWithFAContextTest', function () { afterEach(async function () { console.info(TAG + 'afterEach') + await data_relationalStore.deleteRdbStore(context, "CreateDeleteWithFAContextTest.db"); }) afterAll(async function () { @@ -154,6 +156,7 @@ describe('rdbStoreCreateDeleteWithFAContextTest', function () { } console.log("Delete rows: " + rows) expect(1).assertEqual(rows) + rdbStore = null data_relationalStore.deleteRdbStore(context, "CreateDeleteWithFAContextTest.db", (err) => { if (err) { console.info("Delete RdbStore failed, err: " + err) @@ -193,6 +196,7 @@ describe('rdbStoreCreateDeleteWithFAContextTest', function () { rdbStore.delete(predicates).then((rows) => { console.log("Delete rows: " + rows) expect(1).assertEqual(rows) + rdbStore = null data_relationalStore.deleteRdbStore(context, "CreateDeleteWithFAContextTest.db").then(() => { console.log("Delete RdbStore successfully.") done() diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbstoreDeleteJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbstoreDeleteJsunit.test.js index 68b17eed..c61deed0 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbstoreDeleteJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbstoreDeleteJsunit.test.js @@ -18,7 +18,8 @@ import ability_featureAbility from '@ohos.ability.featureAbility' import dataSharePredicates from '@ohos.data.dataSharePredicates'; const TAG = "[RELATIONAL_STORE_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; const STORE_CONFIG = { name: "Delete.db", @@ -40,7 +41,6 @@ describe('rdbStoreDeleteTest', function () { afterEach(async function () { console.info(TAG + 'afterEach') - await rdbStore.executeSql("DELETE FROM test"); rdbStore = null await data_relationalStore.deleteRdbStore(context, "Delete.db"); }) @@ -182,6 +182,7 @@ describe('rdbStoreDeleteTest', function () { predicates.equalTo("age", 28) let resultSet = await rdbStore.query(predicates) expect(1).assertEqual(resultSet.rowCount) + resultSet.close() } { let predicates = await new data_relationalStore.RdbPredicates("test") @@ -200,6 +201,7 @@ describe('rdbStoreDeleteTest', function () { predicates.equalTo("age", 28) let resultSet = await rdbStore.query(predicates) expect(0).assertEqual(resultSet.rowCount) + resultSet.close() } done() console.log(TAG + "************* testRdbStoreDelete0003 end *************"); diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbstoreEncryptionJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbstoreEncryptionJsunit.test.js index 99404e15..34b16f14 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbstoreEncryptionJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbstoreEncryptionJsunit.test.js @@ -21,7 +21,6 @@ const TAG = "[RELATIONAL_STORE_JSKITS_TEST]" const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)" -var rdbStore var context = ability_featureAbility.getContext() const STORE_CONFIG_ENCRYPT = { name: "Encrypt.db", @@ -89,7 +88,6 @@ describe('rdbEncryptTest', function () { await data_relationalStore.deleteRdbStore(context, STORE_CONFIG_ENCRYPT.name) await data_relationalStore.deleteRdbStore(context, STORE_CONFIG_UNENCRYPT.name) await data_relationalStore.deleteRdbStore(context, STORE_CONFIG_WRONG.name) - rdbStore = null }) afterAll(async function () { @@ -112,6 +110,7 @@ describe('rdbEncryptTest', function () { } catch (err) { expect(null).assertFail(); } + store = null }).catch((err) => { expect(null).assertFail(); }) @@ -136,6 +135,7 @@ describe('rdbEncryptTest', function () { } catch (err) { expect(null).assertFail(); } + store = null }).catch((err) => { expect(null).assertFail(); }) @@ -154,7 +154,7 @@ describe('rdbEncryptTest', function () { */ it('RdbEncryptTest_0030', 0, async function (done) { await console.log(TAG + "************* RdbEncryptTest_0030 start *************") - rdbStore = await CreatRdbStore(context, STORE_CONFIG_ENCRYPT) + let rdbStore = await CreatRdbStore(context, STORE_CONFIG_ENCRYPT) let predicates = new data_relationalStore.RdbPredicates("test") predicates.equalTo("name", "zhangsan") let resultSet = await rdbStore.query(predicates) @@ -170,6 +170,7 @@ describe('rdbEncryptTest', function () { } catch (err) { expect(false).assertTrue() } + resultSet.close() resultSet = null rdbStore = null done() @@ -183,7 +184,7 @@ describe('rdbEncryptTest', function () { */ it('RdbEncryptTest_0040', 0, async function (done) { await console.log(TAG + "************* RdbEncryptTest_0040 start *************") - rdbStore = await CreatRdbStore(context, STORE_CONFIG_ENCRYPT) + let rdbStore = await CreatRdbStore(context, STORE_CONFIG_ENCRYPT) rdbStore = null rdbStore = await CreatRdbStore(context, STORE_CONFIG_WRONG) expect(rdbStore).assertNull diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbstoreInsertJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbstoreInsertJsunit.test.js index 13904f08..9eb34db8 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbstoreInsertJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbstoreInsertJsunit.test.js @@ -18,7 +18,8 @@ import data_relationalStore from '@ohos.data.relationalStore'; import ability_featureAbility from '@ohos.ability.featureAbility' const TAG = "[RELATIONAL_STORE_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; const STORE_CONFIG = { name: "InsertTest.db", @@ -111,6 +112,7 @@ describe('rdbStoreInsertTest', function () { } catch (e) { console.log("insert1 error " + e); } + resultSet.close() resultSet = null done() console.log(TAG + "************* testRdbStoreInsert0001 end *************"); @@ -207,6 +209,7 @@ describe('rdbStoreInsertTest', function () { } catch (e) { console.log("insert error " + e); } + resultSet.close() resultSet = null done() console.log(TAG + "************* testRdbStoreInsert0004 end *************"); @@ -240,6 +243,7 @@ describe('rdbStoreInsertTest', function () { } catch (e) { console.log("insert error " + e); } + resultSet.close() resultSet = null done() console.log(TAG + "************* testRdbStoreInsert0005 end *************"); @@ -273,6 +277,7 @@ describe('rdbStoreInsertTest', function () { } catch (e) { console.log("insert error " + e); } + resultSet.close() resultSet = null done() console.log(TAG + "************* testRdbStoreInsert0006 end *************"); @@ -414,6 +419,7 @@ describe('rdbStoreInsertTest', function () { console.log("insert error" + err); } + resultSet.close() resultSet = null done() console.log(TAG + "************* InsertWithConflictResolution_0003 end *************"); @@ -449,6 +455,7 @@ describe('rdbStoreInsertTest', function () { } catch (err) { console.log("insert error" + err); } + resultSet.close() { var u8 = new Uint8Array([4, 5, 6]) @@ -483,6 +490,7 @@ describe('rdbStoreInsertTest', function () { console.log("resultSet query error " + err); } + resultSet.close() resultSet = null done() console.log(TAG + "************* InsertWithConflictResolution_0004 end *************"); @@ -541,6 +549,7 @@ describe('rdbStoreInsertTest', function () { let resultSet = await rdbStore.querySql("SELECT * FROM test"); let count = resultSet.rowCount; expect(100).assertEqual(count); + resultSet.close() console.log(TAG + "************* testRdbStorebatchInsert001 end *************"); }) diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbstorePredicatesComplexFiledJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbstorePredicatesComplexFiledJsunit.test.js index a5a92d01..68a4cac9 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbstorePredicatesComplexFiledJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbstorePredicatesComplexFiledJsunit.test.js @@ -17,7 +17,8 @@ import data_relationalStore from '@ohos.data.relationalStore' import ability_featureAbility from '@ohos.ability.featureAbility' const TAG = "[RELATIONAL_STORE_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT, " + "age INTEGER, " + "salary REAL, " + "adddate DATE)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "name TEXT, " + "age INTEGER, " + "salary REAL, " + "adddate DATE)"; const STORE_CONFIG = { name: "PredicatesComplexFiledJsunit.db", securityLevel: data_relationalStore.SecurityLevel.S1, @@ -84,6 +85,7 @@ describe('rdbStorePredicatesComplexFiledTest', function () { expect(3).assertEqual(count); await expect("2022-09-02").assertEqual(birthday) expect(false).assertEqual(resultSet.goToNextRow()) + resultSet.close() done(); console.log(TAG + "************* testRdbPredicatesComplexFiled0001 end *************"); }) @@ -110,6 +112,7 @@ describe('rdbStorePredicatesComplexFiledTest', function () { expect(2).assertEqual(count); await expect("2022-09-01").assertEqual(birthday) expect(false).assertEqual(resultSet.goToNextRow()) + resultSet.close() done(); console.log(TAG + "************* testRdbPredicatesComplexFiled0002 end *************"); }) diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbstorePredicatesJoinBJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbstorePredicatesJoinBJsunit.test.js index fd79f44b..3080fd1c 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbstorePredicatesJoinBJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbstorePredicatesJoinBJsunit.test.js @@ -37,7 +37,7 @@ const STORE_CONFIG = { securityLevel: data_relationalStore.SecurityLevel.S1, } -const TAG = 'RDB_TEST' +const TAG = 'RDB_TEST ' var rdbStore = undefined var context = ability_featureAbility.getContext() @@ -60,8 +60,8 @@ describe('rdbStorePredicatesJoinBTest', function () { afterEach(async function () { console.info(TAG + 'afterEach'); - await data_relationalStore.deleteRdbStore(context, "RdbJoinBTest.db"); rdbStore = null; + await data_relationalStore.deleteRdbStore(context, "RdbJoinBTest.db"); console.info(TAG + 'afterEach end'); }) @@ -81,7 +81,7 @@ describe('rdbStorePredicatesJoinBTest', function () { {id:40, dName:"CaiWuBu", loc:"ShenZhen"}, ]; - rdbStore.batchInsert("dept", depts); + await rdbStore.batchInsert("dept", depts); console.info(TAG + 'generateDeptTable end'); } @@ -96,7 +96,7 @@ describe('rdbStorePredicatesJoinBTest', function () { {id:4, jName:"Clerk", description:"UseOfficeSoftware"}, ] - rdbStore.batchInsert("job", jobs); + await rdbStore.batchInsert("job", jobs); console.info(TAG + 'generateJobTable end') } @@ -121,7 +121,7 @@ describe('rdbStorePredicatesJoinBTest', function () { {id:1014, eName:"GuanYu", jobId:4, mgr:1007, joinDate:"2002-01-23", salary:13000.00, bonus:null, deptId:10}, ]; - rdbStore.batchInsert("emp", emps); + await rdbStore.batchInsert("emp", emps); console.info(TAG + 'generateEmpTable end'); } @@ -138,7 +138,7 @@ describe('rdbStorePredicatesJoinBTest', function () { {grade:5, loSalary:30010, hiSalary:99990}, ]; - rdbStore.batchInsert("salarygrade", salarygrades); + await rdbStore.batchInsert("salarygrade", salarygrades); console.info(TAG + 'generateSalarygradeTable end') } @@ -167,6 +167,7 @@ describe('rdbStorePredicatesJoinBTest', function () { expect(20).assertEqual(resultSet.getInt(8)); expect("XueGongBu").assertEqual(resultSet.getString(9)); expect("ShangHai").assertEqual(resultSet.getString(10)); + resultSet.close(); done(); }) @@ -178,8 +179,8 @@ describe('rdbStorePredicatesJoinBTest', function () { */ it('testRdbJoinB002', 0, async function (done) { console.log(TAG + "testRdbJoinB002 begin."); - let resultSet = await rdbStore.querySql( - "SELECT t1.id, t1.eName, t1.salary, t2.jName, t2.description FROM emp t1 INNER JOIN job t2 ON t1.`jobId` = t2.`id` WHERE t1.eName = 'SunWuKong'") + let resultSet = await rdbStore.querySql("SELECT t1.id, t1.eName, t1.salary, t2.jName, t2.description" + + " FROM emp t1 INNER JOIN job t2 ON t1.`jobId` = t2.`id` WHERE t1.eName = 'SunWuKong'") expect(1).assertEqual(resultSet.rowCount); expect(true).assertEqual(resultSet.goToFirstRow()); @@ -188,6 +189,7 @@ describe('rdbStorePredicatesJoinBTest', function () { expect(8000.00).assertEqual(resultSet.getDouble(2)); expect("Clerk").assertEqual(resultSet.getString(3)); expect("UseOfficeSoftware").assertEqual(resultSet.getString(4)); + resultSet.close(); done(); }) @@ -200,8 +202,8 @@ describe('rdbStorePredicatesJoinBTest', function () { */ it('testRdbJoinB003', 0, async function (done) { console.log(TAG + "testRdbJoinB003 begin."); - let resultSet = await rdbStore.querySql( - "SELECT t1.eName, t1.salary, t2.* FROM emp t1 INNER JOIN salarygrade t2 WHERE t1.salary BETWEEN t2.losalary AND t2.hisalary") + let resultSet = await rdbStore.querySql("SELECT t1.eName, t1.salary, t2.* " + + "FROM emp t1 INNER JOIN salarygrade t2 WHERE t1.salary BETWEEN t2.losalary AND t2.hisalary") expect(14).assertEqual(resultSet.rowCount); expect(true).assertEqual(resultSet.goToFirstRow()); @@ -210,6 +212,7 @@ describe('rdbStorePredicatesJoinBTest', function () { expect(1).assertEqual(resultSet.getInt(2)); expect(7000).assertEqual(resultSet.getInt(3)); expect(12000).assertEqual(resultSet.getInt(4)); + resultSet.close(); done(); }) @@ -221,9 +224,9 @@ describe('rdbStorePredicatesJoinBTest', function () { */ it('testRdbJoinB004', 0, async function (done) { console.log(TAG + "testRdbJoinB004 begin."); - let resultSet = await rdbStore.querySql( - "SELECT t1.eName, t1.salary, t2.jName, t2.description, t3.dName, t3.loc, t4.grade FROM emp t1 INNER JOIN job t2 INNER JOIN dept t3 " - + "INNER JOIN salarygrade t4 ON t1.jobId = t2.id AND t1.deptId = t3.id AND t1.salary BETWEEN t4.loSalary AND t4.hiSalary"); + let resultSet = await rdbStore.querySql("SELECT t1.eName, t1.salary, t2.jName, t2.description, t3.dName, " + + "t3.loc, t4.grade FROM emp t1 INNER JOIN job t2 INNER JOIN dept t3 INNER JOIN salarygrade t4 " + + "ON t1.jobId = t2.id AND t1.deptId = t3.id AND t1.salary BETWEEN t4.loSalary AND t4.hiSalary"); expect(14).assertEqual(resultSet.rowCount); expect(true).assertEqual(resultSet.goToFirstRow()); @@ -234,6 +237,7 @@ describe('rdbStorePredicatesJoinBTest', function () { expect("XueGongBu").assertEqual(resultSet.getString(4)); expect("ShangHai").assertEqual(resultSet.getString(5)); expect(1).assertEqual(resultSet.getInt(6)); + resultSet.close(); done(); }) @@ -254,6 +258,7 @@ describe('rdbStorePredicatesJoinBTest', function () { expect(1004).assertEqual(resultSet.getInt(1)); expect(1004).assertEqual(resultSet.getInt(2)); expect("TangCeng").assertEqual(resultSet.getString(3)); + resultSet.close(); done(); }) diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbstorePredicatesJoinJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbstorePredicatesJoinJsunit.test.js index 08deb7bc..d493fe99 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbstorePredicatesJoinJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbstorePredicatesJoinJsunit.test.js @@ -37,7 +37,7 @@ const STORE_CONFIG = { securityLevel: data_relationalStore.SecurityLevel.S1, } -const TAG = 'RDB_TEST'; +const TAG = 'RDB_TEST '; var rdbStore = undefined var context = ability_featureAbility.getContext() @@ -136,6 +136,7 @@ describe('rdbStorePredicatesJoinTest', function () { expect(1).assertEqual(resultSet.getInt(5)); expect("SanGuo").assertEqual(resultSet.getString(6)); expect(1).assertEqual(resultSet.getInt(7)); + resultSet.close(); done(); }) @@ -160,6 +161,7 @@ describe('rdbStorePredicatesJoinTest', function () { expect(1).assertEqual(resultSet.getInt(5)); expect("SanGuo").assertEqual(resultSet.getString(6)); expect(1).assertEqual(resultSet.getInt(7)); + resultSet.close(); done(); }) @@ -175,6 +177,7 @@ describe('rdbStorePredicatesJoinTest', function () { "SELECT * FROM user LEFT OUTER JOIN book ON user.userId = book.userId"); expect(5).assertEqual(resultSet.rowCount); + resultSet.close(); done(); }) @@ -199,6 +202,7 @@ describe('rdbStorePredicatesJoinTest', function () { expect(100.51).assertEqual(resultSet.getDouble(4)); expect(1).assertEqual(resultSet.getInt(5)); expect("SanGuo").assertEqual(resultSet.getString(6)); + resultSet.close(); done(); }) diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbstorePredicatesJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbstorePredicatesJsunit.test.js index 2e2124ef..bfcd076b 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbstorePredicatesJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbstorePredicatesJsunit.test.js @@ -19,13 +19,13 @@ import dataSharePredicates from '@ohos.data.dataSharePredicates'; const TAG = "[RELATIONAL_STORE_JSKITS_TEST]" const CREATE_TABLE_ALL_DATA_TYPE_SQL = "CREATE TABLE IF NOT EXISTS AllDataType " -+ "(id INTEGER PRIMARY KEY AUTOINCREMENT, " -+ "integerValue INTEGER , longValue INTEGER , shortValue INTEGER , booleanValue INTEGER , " -+ "doubleValue REAL , floatValue REAL , stringValue TEXT , blobValue BLOB , clobValue TEXT , " -+ "byteValue INTEGER , dateValue INTEGER , timeValue INTEGER , timestampValue INTEGER , " -+ "calendarValue INTEGER , characterValue TEXT , primIntValue INTEGER , primLongValue INTEGER , " -+ "primShortValue INTEGER , primFloatValue REAL , primDoubleValue REAL , " -+ "primBooleanValue INTEGER , primByteValue INTEGER , primCharValue TEXT, `order` INTEGER);"; + + "(id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "integerValue INTEGER , longValue INTEGER , shortValue INTEGER , booleanValue INTEGER , " + + "doubleValue REAL , floatValue REAL , stringValue TEXT , blobValue BLOB , clobValue TEXT , " + + "byteValue INTEGER , dateValue INTEGER , timeValue INTEGER , timestampValue INTEGER , " + + "calendarValue INTEGER , characterValue TEXT , primIntValue INTEGER , primLongValue INTEGER , " + + "primShortValue INTEGER , primFloatValue REAL , primDoubleValue REAL , " + + "primBooleanValue INTEGER , primByteValue INTEGER , primCharValue TEXT, `order` INTEGER);"; const STORE_CONFIG = { name: "Predicates.db", @@ -58,17 +58,6 @@ describe('rdbPredicatesTest', function () { await data_relationalStore.deleteRdbStore(context, "Predicates.db"); }) - function resultSize(resultSet) { - if (!resultSet.goToFirstRow()) { - return 0; - } - let count = 1; - while (resultSet.goToNextRow()) { - count++; - } - return count; - } - async function buildAllDataType1() { console.log(TAG + "buildAllDataType1 start"); { @@ -138,13 +127,14 @@ describe('rdbPredicatesTest', function () { */ it('testEqualTo0001', 0, async function (done) { console.log(TAG + "************* testEqualTo0001 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - { - predicates.equalTo("booleanValue", true); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + + predicates.equalTo("booleanValue", true); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testEqualTo0001 end *************"); }) @@ -156,13 +146,14 @@ describe('rdbPredicatesTest', function () { */ it('testEqualTo0002', 0, async function (done) { console.log(TAG + "************* testEqualTo0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("byteValue", -128).or().equalTo("byteValue", 1); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("byteValue", -128).or().equalTo("byteValue", 1); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testEqualTo0002 end *************"); }) @@ -174,13 +165,14 @@ describe('rdbPredicatesTest', function () { */ it('testEqualTo0003', 0, async function (done) { console.log(TAG + "************* testEqualTo0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testEqualTo0003 end *************"); }) @@ -192,13 +184,14 @@ describe('rdbPredicatesTest', function () { */ it('testEqualTo0004', 0, async function (done) { console.log(TAG + "************* testEqualTo0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("doubleValue", DOUBLE_MAX); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("doubleValue", DOUBLE_MAX); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testEqualTo0004 end *************"); }) @@ -210,13 +203,14 @@ describe('rdbPredicatesTest', function () { */ it('testEqualTo0005', 0, async function (done) { console.log(TAG + "************* testEqualTo0005 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("shortValue", -32768.0); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("shortValue", -32768.0); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testEqualTo0005 end *************"); }) @@ -228,13 +222,14 @@ describe('rdbPredicatesTest', function () { */ it('testEqualTo0006', 0, async function (done) { console.log(TAG + "************* testEqualTo0006 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("integerValue", 1); - let result = await rdbStore.query(predicates); - expect(true).assertEqual(result.goToFirstRow()); - expect(2).assertEqual(result.getLong(0)); - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("integerValue", 1); + let result = await rdbStore.query(predicates); + expect(true).assertEqual(result.goToFirstRow()); + expect(2).assertEqual(result.getLong(0)); + result.close() + done(); console.log(TAG + "************* testEqualTo0006 end *************"); }) @@ -246,13 +241,14 @@ describe('rdbPredicatesTest', function () { */ it('testEqualTo0007', 0, async function (done) { console.log(TAG + "************* testEqualTo0007 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("longValue", 1); - let result = await rdbStore.query(predicates); - expect(true).assertEqual(result.goToFirstRow()); - expect(2).assertEqual(result.getLong(0)) - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("longValue", 1); + let result = await rdbStore.query(predicates); + expect(true).assertEqual(result.goToFirstRow()); + expect(2).assertEqual(result.getLong(0)) + result.close() + done(); console.log(TAG + "************* testEqualTo0007 end *************"); }) @@ -264,14 +260,15 @@ describe('rdbPredicatesTest', function () { */ it('testEqualTo0008', 0, async function (done) { console.log(TAG + "************* testEqualTo0008 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("floatValue", -0.123); - let result = await rdbStore.query(predicates); - expect(true).assertEqual(result.goToFirstRow()); - expect(1).assertEqual(result.getLong(0)) - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("floatValue", -0.123); + let result = await rdbStore.query(predicates); + expect(true).assertEqual(result.goToFirstRow()); + expect(1).assertEqual(result.getLong(0)) + result.close() + result = null + done(); console.log(TAG + "************* testEqualTo0008 end *************"); }) @@ -283,13 +280,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotEqualTo0001', 0, async function (done) { console.log(TAG + "************* testNotEqualTo0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.notEqualTo("booleanValue", true); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.notEqualTo("booleanValue", true); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testNotEqualTo0001 end *************"); }) @@ -301,14 +299,15 @@ describe('rdbPredicatesTest', function () { */ it('testNotEqualTo0002', 0, async function (done) { console.log(TAG + "************* testNotEqualTo0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.notEqualTo("byteValue", -128); - predicates.notEqualTo("byteValue", 1); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.notEqualTo("byteValue", -128); + predicates.notEqualTo("byteValue", 1); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testNotEqualTo0002 end *************"); }) @@ -320,13 +319,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotEqualTo0003', 0, async function (done) { console.log(TAG + "************* testNotEqualTo0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.notEqualTo("stringValue", "ABCDEFGHIJKLMN"); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.notEqualTo("stringValue", "ABCDEFGHIJKLMN"); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testNotEqualTo0003 end *************"); }) @@ -338,13 +338,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotEqualTo0004', 0, async function (done) { console.log(TAG + "************* testNotEqualTo0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.notEqualTo("doubleValue", DOUBLE_MAX); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.notEqualTo("doubleValue", DOUBLE_MAX); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testNotEqualTo0004 end *************"); }) @@ -356,13 +357,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotEqualTo0005', 0, async function (done) { console.log(TAG + "************* testNotEqualTo0005 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.notEqualTo("shortValue", -32768); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.notEqualTo("shortValue", -32768); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testNotEqualTo0005 end *************"); }) @@ -374,13 +376,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotEqualTo0006', 0, async function (done) { console.log(TAG + "************* testNotEqualTo0006 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.notEqualTo("integerValue", 1); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.notEqualTo("integerValue", 1); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testNotEqualTo0006 end *************"); }) @@ -392,13 +395,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotEqualTo0007', 0, async function (done) { console.log(TAG + "************* testNotEqualTo0007 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.notEqualTo("longValue", 1); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.notEqualTo("longValue", 1); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testNotEqualTo0007 end *************"); }) @@ -410,13 +414,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotEqualTo0008', 0, async function (done) { console.log(TAG + "************* testNotEqualTo0008 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.notEqualTo("floatValue", -0.123); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.notEqualTo("floatValue", -0.123); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testNotEqualTo0008 end *************"); }) @@ -428,10 +433,11 @@ describe('rdbPredicatesTest', function () { */ it('testIsNull0001', 0, async function (done) { console.log(TAG + "************* testIsNull001 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.isNull("primLongValue"); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIsNull0001 end *************"); @@ -444,10 +450,11 @@ describe('rdbPredicatesTest', function () { */ it('testIsNull0002', 0, async function (done) { console.log(TAG + "************* testIsNull0002 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.isNull("longValue"); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIsNull0002 end *************"); @@ -460,10 +467,11 @@ describe('rdbPredicatesTest', function () { */ it('testIsNull0003', 0, async function (done) { console.log(TAG + "************* testIsNull0003 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.isNull("stringValue"); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIsNull0003 end *************"); @@ -476,10 +484,11 @@ describe('rdbPredicatesTest', function () { */ it('testIsNull0004', 0, async function (done) { console.log(TAG + "************* testIsNull0004 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.isNull("stringValueX"); let result = await rdbStore.query(predicates); expect(-1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIsNull0004 end *************"); @@ -492,10 +501,11 @@ describe('rdbPredicatesTest', function () { */ it('testIsNotNull0001', 0, async function (done) { console.log(TAG + "************* testIsNotNull0001 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.isNotNull("primLongValue"); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIsNotNull0001 end *************"); @@ -508,10 +518,11 @@ describe('rdbPredicatesTest', function () { */ it('testIsNotNull0002', 0, async function (done) { console.log(TAG + "************* testIsNotNull0002 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.isNotNull("longValue"); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIsNotNull0002 end *************"); @@ -524,10 +535,11 @@ describe('rdbPredicatesTest', function () { */ it('testIsNotNull0003', 0, async function (done) { console.log(TAG + "************* testIsNotNull0003 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.isNotNull("stringValue"); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIsNotNull0003 end *************"); @@ -540,10 +552,11 @@ describe('rdbPredicatesTest', function () { */ it('testIsNotNull0004', 0, async function (done) { console.log(TAG + "************* testIsNotNull0004 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.isNotNull("stringValueX"); let result = await rdbStore.query(predicates); expect(-1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIsNotNull0004 end *************"); @@ -556,13 +569,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThan0001', 0, async function (done) { console.log(TAG + "************* testGreaterThan0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.greaterThan("stringValue", "ABC"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.greaterThan("stringValue", "ABC"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThan0001 end *************"); }) @@ -574,13 +588,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThan0002', 0, async function (done) { console.log(TAG + "************* testGreaterThan0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.greaterThan("doubleValue", 0.0); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.greaterThan("doubleValue", 0.0); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThan0002 end *************"); }) @@ -592,13 +607,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThan0003', 0, async function (done) { console.log(TAG + "************* testGreaterThan0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.greaterThan("integerValue", 1); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.greaterThan("integerValue", 1); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThan0003 end *************"); }) @@ -610,13 +626,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThan0004', 0, async function (done) { console.log(TAG + "************* testGreaterThan0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.greaterThan("longValue", 1); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.greaterThan("longValue", 1); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThan0004 end *************"); }) @@ -628,13 +645,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThan0005', 0, async function (done) { console.log(TAG + "************* testGreaterThan0005 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.greaterThan("stringValue", "ZZZ"); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.greaterThan("stringValue", "ZZZ"); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThan0005 end *************"); }) @@ -646,13 +664,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThan0006', 0, async function (done) { console.log(TAG + "************* testGreaterThan0006 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.greaterThan("doubleValue", 999.0); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.greaterThan("doubleValue", 999.0); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThan0006 end *************"); }) @@ -664,13 +683,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThan0007', 0, async function (done) { console.log(TAG + "************* testGreaterThan0007 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.greaterThan("integerValue", -999); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.greaterThan("integerValue", -999); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThan0007 end *************"); }) @@ -682,13 +702,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThan0008', 0, async function (done) { console.log(TAG + "************* testGreaterThan0008 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.greaterThan("longValue", -999); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.greaterThan("longValue", -999); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThan0008 end *************"); }) @@ -700,13 +721,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThanOrEqualTo0001', 0, async function (done) { console.log(TAG + "************* testGreaterThanOrEqualTo0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.greaterThanOrEqualTo("stringValue", "ABC"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.greaterThanOrEqualTo("stringValue", "ABC"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThanOrEqualTo0001 end *************"); }) @@ -718,13 +740,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThanOrEqualTo0002', 0, async function (done) { console.log(TAG + "************* testGreaterThanOrEqualTo0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.greaterThanOrEqualTo("doubleValue", 0.0); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.greaterThanOrEqualTo("doubleValue", 0.0); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThanOrEqualTo0002 end *************"); }) @@ -736,13 +759,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThanOrEqualTo0003', 0, async function (done) { console.log(TAG + "************* testGreaterThanOrEqualTo0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.greaterThanOrEqualTo("integerValue", 1); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.greaterThanOrEqualTo("integerValue", 1); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThanOrEqualTo0003 end *************"); }) @@ -754,13 +778,14 @@ describe('rdbPredicatesTest', function () { */ it('testGreaterThanOrEqualTo0004', 0, async function (done) { console.log(TAG + "************* testGreaterThanOrEqualTo0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.greaterThanOrEqualTo("longValue", 1); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.greaterThanOrEqualTo("longValue", 1); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testGreaterThanOrEqualTo0004 end *************"); }) @@ -772,13 +797,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThan0001', 0, async function (done) { console.log(TAG + "************* testLessThan0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.lessThan("stringValue", "ABD"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.lessThan("stringValue", "ABD"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThan0001 end *************"); }) @@ -790,13 +816,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThan0002', 0, async function (done) { console.log(TAG + "************* testLessThan0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.lessThan("doubleValue", 0.0); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.lessThan("doubleValue", 0.0); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThan0002 end *************"); }) @@ -808,13 +835,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThan0003', 0, async function (done) { console.log(TAG + "************* testLessThan0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.lessThan("integerValue", 1); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.lessThan("integerValue", 1); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThan0003 end *************"); }) @@ -826,13 +854,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThan0004', 0, async function (done) { console.log(TAG + "************* testLessThan0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.lessThan("longValue", 1); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.lessThan("longValue", 1); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThan0004 end *************"); }) @@ -844,13 +873,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThan0005', 0, async function (done) { console.log(TAG + "************* testLessThan0005 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.lessThan("stringValue", "ABD"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.lessThan("stringValue", "ABD"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThan0005 end *************"); }) @@ -862,13 +892,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThan0006', 0, async function (done) { console.log(TAG + "************* testLessThan0006 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.lessThan("doubleValue", 1.0); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.lessThan("doubleValue", 1.0); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThan0006 end *************"); }) @@ -880,13 +911,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThan0007', 0, async function (done) { console.log(TAG + "************* testLessThan0007 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.lessThan("integerValue", -2147483648); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.lessThan("integerValue", -2147483648); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThan0007 end *************"); }) @@ -898,13 +930,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThan0008', 0, async function (done) { console.log(TAG + "************* testLessThan0008 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.lessThan("longValue", -9223372036854775808); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.lessThan("longValue", -9223372036854775808); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThan0008 end *************"); }) @@ -916,13 +949,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThanOrEqualTo0001', 0, async function (done) { console.log(TAG + "************* testLessThanOrEqualTo0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.lessThanOrEqualTo("stringValue", "ABD"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.lessThanOrEqualTo("stringValue", "ABD"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThanOrEqualTo0001 end *************"); }) @@ -934,13 +968,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThanOrEqualTo0002', 0, async function (done) { console.log(TAG + "************* testLessThanOrEqualTo0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.lessThanOrEqualTo("doubleValue", 0.0); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.lessThanOrEqualTo("doubleValue", 0.0); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThanOrEqualTo0002 end *************"); }) @@ -952,13 +987,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThanOrEqualTo0003', 0, async function (done) { console.log(TAG + "************* testLessThanOrEqualTo0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.lessThanOrEqualTo("integerValue", 1); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.lessThanOrEqualTo("integerValue", 1); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThanOrEqualTo0003 end *************"); }) @@ -970,13 +1006,14 @@ describe('rdbPredicatesTest', function () { */ it('testLessThanOrEqualTo0004', 0, async function (done) { console.log(TAG + "************* testLessThanOrEqualTo0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.lessThanOrEqualTo("longValue", 1); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.lessThanOrEqualTo("longValue", 1); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testLessThanOrEqualTo0004 end *************"); }) @@ -988,13 +1025,14 @@ describe('rdbPredicatesTest', function () { */ it('testBetween0001', 0, async function (done) { console.log(TAG + "************* testBetween0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.between("stringValue", "ABB", "ABD"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.between("stringValue", "ABB", "ABD"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBetween0001 end *************"); }) @@ -1006,13 +1044,14 @@ describe('rdbPredicatesTest', function () { */ it('testBetween0002', 0, async function (done) { console.log(TAG + "************* testBetween0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.between("doubleValue", 0.0, DOUBLE_MAX); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.between("doubleValue", 0.0, DOUBLE_MAX); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBetween0002 end *************"); }) @@ -1024,13 +1063,14 @@ describe('rdbPredicatesTest', function () { */ it('testBetween0003', 0, async function (done) { console.log(TAG + "************* testBetween0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.between("integerValue", 0, 1); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.between("integerValue", 0, 1); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBetween0003 end *************"); }) @@ -1042,13 +1082,14 @@ describe('rdbPredicatesTest', function () { */ it('testBetween0004', 0, async function (done) { console.log(TAG + "************* testBetween0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.between("longValue", 0, 2); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.between("longValue", 0, 2); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBetween0004 end *************"); }) @@ -1060,13 +1101,14 @@ describe('rdbPredicatesTest', function () { */ it('testBetween0005', 0, async function (done) { console.log(TAG + "************* testBetween0005 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.between("stringValue", "ABB", "ABB"); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.between("stringValue", "ABB", "ABB"); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBetween0005 end *************"); }) @@ -1078,13 +1120,14 @@ describe('rdbPredicatesTest', function () { */ it('testBetween0006', 0, async function (done) { console.log(TAG + "************* testBetween0006 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.between("doubleValue", DOUBLE_MAX, DOUBLE_MAX); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.between("doubleValue", DOUBLE_MAX, DOUBLE_MAX); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBetween0006 end *************"); }) @@ -1096,13 +1139,14 @@ describe('rdbPredicatesTest', function () { */ it('testBetween0007', 0, async function (done) { console.log(TAG + "************* testBetween0007 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.between("integerValue", 1, 0); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.between("integerValue", 1, 0); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBetween0007 end *************"); }) @@ -1114,13 +1158,14 @@ describe('rdbPredicatesTest', function () { */ it('testBetween0008', 0, async function (done) { console.log(TAG + "************* testBetween0008 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.between("longValue", 2, -1); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.between("longValue", 2, -1); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBetween0008 end *************"); }) @@ -1132,14 +1177,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotBetween0001', 0, async function (done) { console.log(TAG + "************* testNotBetween0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.notBetween("stringValue", "ABB", "ABD"); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.notBetween("stringValue", "ABB", "ABD"); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testNotBetween0001 end *************"); }) @@ -1151,14 +1196,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotBetween0002', 0, async function (done) { console.log(TAG + "************* testNotBetween0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.notBetween("doubleValue", 0.0, DOUBLE_MAX); - let result = await rdbStore.query(predicates); - expect(0).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.notBetween("doubleValue", 0.0, DOUBLE_MAX); + let result = await rdbStore.query(predicates); + expect(0).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testNotBetween0002 end *************"); }) @@ -1170,14 +1215,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotBetween0003', 0, async function (done) { console.log(TAG + "************* testNotBetween0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.notBetween("integerValue", 0, 1); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.notBetween("integerValue", 0, 1); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testNotBetween0003 end *************"); }) @@ -1189,14 +1234,14 @@ describe('rdbPredicatesTest', function () { */ it('testNotBetween0004', 0, async function (done) { console.log(TAG + "************* testNotBetween0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.notBetween("longValue", 0, 2); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.notBetween("longValue", 0, 2); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testNotBetween0004 end *************"); }) @@ -1208,14 +1253,14 @@ describe('rdbPredicatesTest', function () { */ it('testGlob0001', 0, async function (done) { console.log(TAG + "************* testGlob0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.glob("stringValue", "ABC*"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.glob("stringValue", "ABC*"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testGlob0001 end *************"); }) @@ -1227,14 +1272,14 @@ describe('rdbPredicatesTest', function () { */ it('testGlob0002', 0, async function (done) { console.log(TAG + "************* testGlob0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.glob("stringValue", "*LMN"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.glob("stringValue", "*LMN"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testGlob0002 end *************"); }) @@ -1246,14 +1291,14 @@ describe('rdbPredicatesTest', function () { */ it('testGlob0003', 0, async function (done) { console.log(TAG + "************* testGlob0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.glob("stringValue", "ABCDEFGHIJKLM?"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.glob("stringValue", "ABCDEFGHIJKLM?"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testGlob0003 end *************"); }) @@ -1265,14 +1310,14 @@ describe('rdbPredicatesTest', function () { */ it('testGlob0004', 0, async function (done) { console.log(TAG + "************* testGlob0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.glob("stringValue", "?BCDEFGHIJKLMN"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.glob("stringValue", "?BCDEFGHIJKLMN"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testGlob0004 end *************"); }) @@ -1284,14 +1329,14 @@ describe('rdbPredicatesTest', function () { */ it('testGlob0005', 0, async function (done) { console.log(TAG + "************* testGlob0005 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.glob("stringValue", "*FGHI*"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.glob("stringValue", "*FGHI*"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testGlob0005 end *************"); }) @@ -1303,14 +1348,14 @@ describe('rdbPredicatesTest', function () { */ it('testGlob0006', 0, async function (done) { console.log(TAG + "************* testGlob0006 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.glob("stringValue", "?BCDEFGHIJKLM?"); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - result.close(); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.glob("stringValue", "?BCDEFGHIJKLM?"); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + result.close(); + result = null + done(); console.log(TAG + "************* testGlob0006 end *************"); }) @@ -1322,10 +1367,11 @@ describe('rdbPredicatesTest', function () { */ it('testContains0001', 0, async function (done) { console.log(TAG + "************* testContains0001 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.contains("stringValue", "DEF"); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testContains0001 end *************"); @@ -1338,10 +1384,11 @@ describe('rdbPredicatesTest', function () { */ it('testContains0002', 0, async function (done) { console.log(TAG + "************* testContains0002 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.contains("stringValue", "DEFX"); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testContains0002 end *************"); @@ -1354,10 +1401,11 @@ describe('rdbPredicatesTest', function () { */ it('testContains0003', 0, async function (done) { console.log(TAG + "************* testContains0003 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.contains("characterValue", "中"); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testContains0003 end *************"); @@ -1370,10 +1418,11 @@ describe('rdbPredicatesTest', function () { */ it('testContains0004', 0, async function (done) { console.log(TAG + "************* testContains0004 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.contains("characterValue", "#"); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testContains0004 end *************"); @@ -1386,10 +1435,11 @@ describe('rdbPredicatesTest', function () { */ it('testBeginsWith0001', 0, async function (done) { console.log(TAG + "************* testBeginsWith0001 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.beginsWith("stringValue", "ABC"); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testBeginsWith0001 end *************"); @@ -1402,10 +1452,11 @@ describe('rdbPredicatesTest', function () { */ it('testBeginsWith0002', 0, async function (done) { console.log(TAG + "************* testBeginsWith0002 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.beginsWith("stringValue", "ABCX"); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testBeginsWith0002 end *************"); @@ -1418,10 +1469,11 @@ describe('rdbPredicatesTest', function () { */ it('testBeginsWith0003', 0, async function (done) { console.log(TAG + "************* testBeginsWith0003 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.beginsWith("characterValue", "中"); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testBeginsWith0003 end *************"); @@ -1434,10 +1486,11 @@ describe('rdbPredicatesTest', function () { */ it('testBeginsWith0004', 0, async function (done) { console.log(TAG + "************* testBeginsWith0004 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.beginsWith("characterValue", "#"); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testBeginsWith0004 end *************"); @@ -1450,10 +1503,11 @@ describe('rdbPredicatesTest', function () { */ it('testEndsWith0001', 0, async function (done) { console.log(TAG + "************* testEndsWith0001 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.endsWith("stringValue", "LMN"); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testEndsWith0001 end *************"); @@ -1466,10 +1520,11 @@ describe('rdbPredicatesTest', function () { */ it('testEndsWith0002', 0, async function (done) { console.log(TAG + "************* testEndsWith0002 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.endsWith("stringValue", "LMNX"); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testEndsWith0002 end *************"); @@ -1482,10 +1537,11 @@ describe('rdbPredicatesTest', function () { */ it('testEndsWith0003', 0, async function (done) { console.log(TAG + "************* testEndsWith0003 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.endsWith("characterValue", "中"); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testEndsWith0003 end *************"); @@ -1498,10 +1554,11 @@ describe('rdbPredicatesTest', function () { */ it('testEndsWith0004', 0, async function (done) { console.log(TAG + "************* testEndsWith0004 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.endsWith("characterValue", "#"); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testEndsWith0004 end *************"); @@ -1514,10 +1571,11 @@ describe('rdbPredicatesTest', function () { */ it('testLike0001', 0, async function (done) { console.log(TAG + "************* testLike0001 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.like("stringValue", "%LMN%"); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLike0001 end *************"); @@ -1530,10 +1588,11 @@ describe('rdbPredicatesTest', function () { */ it('testLike0002', 0, async function (done) { console.log(TAG + "************* testLike0002 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.like("stringValue", "%LMNX%"); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLike0002 end *************"); @@ -1546,10 +1605,11 @@ describe('rdbPredicatesTest', function () { */ it('testLike0003', 0, async function (done) { console.log(TAG + "************* testLike0003 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.like("characterValue", "%中%"); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLike0003 end *************"); @@ -1562,10 +1622,11 @@ describe('rdbPredicatesTest', function () { */ it('testLike0004', 0, async function (done) { console.log(TAG + "************* testLike0004 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.like("characterValue", "%#%"); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLike0004 end *************"); @@ -1578,18 +1639,19 @@ describe('rdbPredicatesTest', function () { */ it('testBeginWrap0001', 0, async function (done) { console.log(TAG + "************* testBeginWrap0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") - .beginWrap() - .equalTo("integerValue", 1) - .or() - .equalTo("integerValue", 2147483647) - .endWrap(); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") + .beginWrap() + .equalTo("integerValue", 1) + .or() + .equalTo("integerValue", 2147483647) + .endWrap(); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBeginWrap0001 end *************"); }) @@ -1601,16 +1663,17 @@ describe('rdbPredicatesTest', function () { */ it('testBeginWrap0002', 0, async function (done) { console.log(TAG + "************* testBeginWrap0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") - .beginWrap() - .equalTo("characterValue", ' ') - .endWrap(); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") + .beginWrap() + .equalTo("characterValue", ' ') + .endWrap(); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBeginWrap0002 end *************"); }) @@ -1622,16 +1685,16 @@ describe('rdbPredicatesTest', function () { */ it('testBeginWrap0003', 0, async function (done) { console.log(TAG + "************* testBeginWrap0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") - .beginWrap() - .equalTo("characterValue", '中') - .endWrap(); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") + .beginWrap() + .equalTo("characterValue", '中') + .endWrap(); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result = null + done(); console.log(TAG + "************* testBeginWrap0003 end *************"); }) @@ -1643,15 +1706,16 @@ describe('rdbPredicatesTest', function () { */ it('testBeginWrap0004', 0, async function (done) { console.log(TAG + "************* testBeginWrap0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") - .equalTo("characterValue", '中') - .endWrap(); - let result = await rdbStore.query(predicates); - expect(-1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") + .equalTo("characterValue", '中') + .endWrap(); + let result = await rdbStore.query(predicates); + expect(-1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testBeginWrap0004 end *************"); }) @@ -1664,12 +1728,13 @@ describe('rdbPredicatesTest', function () { it('testBeginWrap0005', 0, async function (done) { console.log(TAG + "************* testBeginWrap0005 start *************"); { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") .beginWrap() .equalTo("characterValue", '中'); let result = await rdbStore.query(predicates); expect(-1).assertEqual(result.rowCount); + result.close() result = null } done(); @@ -1683,15 +1748,16 @@ describe('rdbPredicatesTest', function () { */ it('testAnd0001', 0, async function (done) { console.log(TAG + "************* testAnd0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") - .and() - .equalTo("integerValue", 1); - let result = await rdbStore.query(predicates); - expect(1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") + .and() + .equalTo("integerValue", 1); + let result = await rdbStore.query(predicates); + expect(1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testAnd0001 end *************"); }) @@ -1703,18 +1769,19 @@ describe('rdbPredicatesTest', function () { */ it('testAnd0002', 0, async function (done) { console.log(TAG + "************* testAnd0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") - .beginWrap() - .equalTo("integerValue", 1) - .or() - .equalTo("integerValue", 2147483647) - .endWrap(); - let result = await rdbStore.query(predicates); - expect(2).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN") + .beginWrap() + .equalTo("integerValue", 1) + .or() + .equalTo("integerValue", 2147483647) + .endWrap(); + let result = await rdbStore.query(predicates); + expect(2).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testAnd0002 end *************"); }) @@ -1726,11 +1793,11 @@ describe('rdbPredicatesTest', function () { */ it('testAnd0003', 0, async function (done) { console.log(TAG + "************* testAnd0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").or().and().equalTo("integerValue", 1); - console.log(TAG + "you should not start a request" + " with \"and\" or use or() before this function"); - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").or().and().equalTo("integerValue", 1); + console.log(TAG + "you should not start a request" + " with \"and\" or use or() before this function"); + done(); console.log(TAG + "************* testAnd0003 end *************"); }) @@ -1742,12 +1809,12 @@ describe('rdbPredicatesTest', function () { */ it('testAnd0004', 0, async function (done) { console.log(TAG + "************* testAnd0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").or().or().equalTo("integerValue", 1); - console.log(TAG + "you are starting a sql request with predicate or or," + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").or().or().equalTo("integerValue", 1); + console.log(TAG + "you are starting a sql request with predicate or or," + "using function or() immediately after another or(). that is ridiculous."); - } + done(); console.log(TAG + "************* testAnd0004 end *************"); }) @@ -1759,19 +1826,20 @@ describe('rdbPredicatesTest', function () { */ it('testOrder0001', 0, async function (done) { console.log(TAG + "************* testOrder0001 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").orderByAsc("integerValue").distinct(); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - expect(true).assertEqual(result.goToFirstRow()) - expect(3).assertEqual(result.getLong(0)); - expect(true).assertEqual(result.goToNextRow()) - expect(2).assertEqual(result.getLong(0)); - expect(true).assertEqual(result.goToNextRow()) - expect(1).assertEqual(result.getLong(0)); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").orderByAsc("integerValue").distinct(); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + expect(true).assertEqual(result.goToFirstRow()) + expect(3).assertEqual(result.getLong(0)); + expect(true).assertEqual(result.goToNextRow()) + expect(2).assertEqual(result.getLong(0)); + expect(true).assertEqual(result.goToNextRow()) + expect(1).assertEqual(result.getLong(0)); + result.close() + result = null + done(); console.log(TAG + "************* testOrder0001 end *************"); }) @@ -1783,19 +1851,20 @@ describe('rdbPredicatesTest', function () { */ it('testOrder0002', 0, async function (done) { console.log(TAG + "************* testOrder0002 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").orderByDesc("integerValue").distinct(); - let result = await rdbStore.query(predicates); - expect(3).assertEqual(result.rowCount); - expect(true).assertEqual(result.goToFirstRow()) - expect(1).assertEqual(result.getLong(0)); - expect(true).assertEqual(result.goToNextRow()) - expect(2).assertEqual(result.getLong(0)); - expect(true).assertEqual(result.goToNextRow()) - expect(3).assertEqual(result.getLong(0)); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").orderByDesc("integerValue").distinct(); + let result = await rdbStore.query(predicates); + expect(3).assertEqual(result.rowCount); + expect(true).assertEqual(result.goToFirstRow()) + expect(1).assertEqual(result.getLong(0)); + expect(true).assertEqual(result.goToNextRow()) + expect(2).assertEqual(result.getLong(0)); + expect(true).assertEqual(result.goToNextRow()) + expect(3).assertEqual(result.getLong(0)); + result.close() + result = null + done(); console.log(TAG + "************* testOrder0002 end *************"); }) @@ -1807,13 +1876,14 @@ describe('rdbPredicatesTest', function () { */ it('testOrder0003', 0, async function (done) { console.log(TAG + "************* testOrder0003 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").orderByDesc("integerValueX").distinct(); - let result = await rdbStore.query(predicates); - expect(-1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").orderByDesc("integerValueX").distinct(); + let result = await rdbStore.query(predicates); + expect(-1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testOrder0003 end *************"); }) @@ -1825,13 +1895,14 @@ describe('rdbPredicatesTest', function () { */ it('testOrder0004', 0, async function (done) { console.log(TAG + "************* testOrder0004 start *************"); - { - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); - predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").orderByAsc("integerValueX").distinct(); - let result = await rdbStore.query(predicates); - expect(-1).assertEqual(result.rowCount); - result = null - } + + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); + predicates.equalTo("stringValue", "ABCDEFGHIJKLMN").orderByAsc("integerValueX").distinct(); + let result = await rdbStore.query(predicates); + expect(-1).assertEqual(result.rowCount); + result.close() + result = null + done(); console.log(TAG + "************* testOrder0004 end *************"); }) @@ -1843,10 +1914,11 @@ describe('rdbPredicatesTest', function () { */ it('testLimit0001', 0, async function (done) { console.log(TAG + "************* testLimit0001 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(1); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLimit0001 end *************"); @@ -1859,10 +1931,11 @@ describe('rdbPredicatesTest', function () { */ it('testLimit0002', 0, async function (done) { console.log(TAG + "************* testLimit0002 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(3); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLimit0002 end *************"); @@ -1875,10 +1948,11 @@ describe('rdbPredicatesTest', function () { */ it('testLimit0003', 0, async function (done) { console.log(TAG + "************* testLimit0003 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(100); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLimit0003 end *************"); @@ -1891,10 +1965,11 @@ describe('rdbPredicatesTest', function () { */ it('testLimit0004', 0, async function (done) { console.log(TAG + "************* testLimit0004 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.like("stringValue", "中").limitAs(1); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLimit0004 end *************"); @@ -1907,10 +1982,11 @@ describe('rdbPredicatesTest', function () { */ it('testLimit0005', 0, async function (done) { console.log(TAG + "************* testLimit0005 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(0); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLimit0005 end *************"); @@ -1923,10 +1999,11 @@ describe('rdbPredicatesTest', function () { */ it('testLimit0006', 0, async function (done) { console.log(TAG + "************* testLimit0006 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(-1); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testLimit0006 end *************"); @@ -1939,10 +2016,11 @@ describe('rdbPredicatesTest', function () { */ it('testOffset0001', 0, async function (done) { console.log(TAG + "************* testOffset0001 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(3).offsetAs(1); let result = await rdbStore.query(predicates); expect(2).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testOffset0001 end *************"); @@ -1955,10 +2033,11 @@ describe('rdbPredicatesTest', function () { */ it('testOffset0002', 0, async function (done) { console.log(TAG + "************* testOffset0002 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(3).offsetAs(0); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testOffset0002 end *************"); @@ -1971,10 +2050,11 @@ describe('rdbPredicatesTest', function () { */ it('testOffset0003', 0, async function (done) { console.log(TAG + "************* testOffset0003 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(3).offsetAs(5); let result = await rdbStore.query(predicates); expect(0).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testOffset0003 end *************"); @@ -1987,10 +2067,11 @@ describe('rdbPredicatesTest', function () { */ it('testOffset0004', 0, async function (done) { console.log(TAG + "************* testOffset0004 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").limitAs(3).offsetAs(-1); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testOffset0004 end *************"); @@ -2004,10 +2085,11 @@ describe('rdbPredicatesTest', function () { it('testIn0001', 0, async function (done) { console.log(TAG + "************* testIn0001 start *************"); var values = [Number.MIN_VALUE.toString()]; - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.in("doubleValue", values); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() done(); console.log(TAG + "************* testIn0001 end *************"); }) @@ -2020,10 +2102,11 @@ describe('rdbPredicatesTest', function () { it('testIn0002', 0, async function (done) { console.log(TAG + "************* testIn0002 start *************"); var values = ["1.0"]; - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.in("doubleValue", values); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() done(); console.log(TAG + "************* testIn0002 end *************"); }) @@ -2036,10 +2119,11 @@ describe('rdbPredicatesTest', function () { it('testIn0003', 0, async function (done) { console.log(TAG + "************* testIn0003 start *************"); var values = [DOUBLE_MAX.toString()]; - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.in("doubleValue", values); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); + result.close() done(); console.log(TAG + "************* testIn0003 end *************"); }) @@ -2052,10 +2136,11 @@ describe('rdbPredicatesTest', function () { it('testIn0004', 0, async function (done) { console.log(TAG + "************* testIn0004 start *************"); var values = [Number.MIN_VALUE.toString(), "1.0", DOUBLE_MAX.toString()]; - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.in("doubleValue", values); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() done(); console.log(TAG + "************* testIn0004 end *************"); }) @@ -2068,7 +2153,7 @@ describe('rdbPredicatesTest', function () { it('testNotIn0001', 0, async function (done) { console.log(TAG + "************* testNotIn0001 start *************"); var values = [1, -2147483648]; - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.notIn("integerValue", values); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); @@ -2085,7 +2170,7 @@ describe('rdbPredicatesTest', function () { it('testNotIn0002', 0, async function (done) { console.log(TAG + "************* testNotIn0002 start *************"); let values = [1, 2147483647]; - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.notIn("integerValue", values); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); @@ -2102,7 +2187,7 @@ describe('rdbPredicatesTest', function () { it('testNotIn0003', 0, async function (done) { console.log(TAG + "************* testNotIn0003 start *************"); var values = [-2147483648, 2147483647]; - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.notIn("integerValue", values); let result = await rdbStore.query(predicates); expect(1).assertEqual(result.rowCount); @@ -2118,9 +2203,10 @@ describe('rdbPredicatesTest', function () { */ it('testCreate0001', 0, async function (done) { console.log(TAG + "************* testCreate0001 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() done(); console.log(TAG + "************* testCreate0001 end *************"); }) @@ -2132,9 +2218,10 @@ describe('rdbPredicatesTest', function () { */ it('testCreate0002', 0, async function (done) { console.log(TAG + "************* testCreate0002 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("test"); + let predicates = new data_relationalStore.RdbPredicates("test"); let result = await rdbStore.query(predicates); expect(-1).assertEqual(result.rowCount); + result.close() done(); console.log(TAG + "************* testCreate0002 end *************"); }) @@ -2146,10 +2233,11 @@ describe('rdbPredicatesTest', function () { */ it('testGroupBy0001', 0, async function (done) { console.log(TAG + "************* testGroupBy0001 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").groupBy(["characterValue"]); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testGroupBy0001 end *************"); @@ -2162,10 +2250,11 @@ describe('rdbPredicatesTest', function () { */ it('testGroupBy0002', 0, async function (done) { console.log(TAG + "************* testGroupBy0002 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").groupBy(["characterValueX"]); let result = await rdbStore.query(predicates); expect(-1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testGroupBy0002 end *************"); @@ -2178,11 +2267,12 @@ describe('rdbPredicatesTest', function () { */ it('testIndexedBy0001', 0, async function (done) { console.log(TAG + "************* testIndexedBy0001 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); predicates.like("stringValue", "ABCDEFGHIJKLMN").indexedBy("characterValue"); let result = await rdbStore.query(predicates); //test table have no indexe column, so return -1 expect(-1).assertEqual(result.rowCount); + result.close() result = null done(); console.log(TAG + "************* testIndexedBy0001 end *************"); @@ -2195,11 +2285,12 @@ describe('rdbPredicatesTest', function () { */ it('testIndexedBy0002', 0, async function (done) { console.log(TAG + "************* testIndexedBy0002 start *************"); - let predicates = await new data_relationalStore.RdbPredicates("AllDataType"); + let predicates = new data_relationalStore.RdbPredicates("AllDataType"); try { predicates.like("stringValue", "ABCDEFGHIJKLMN").indexedBy(["characterValueX"]); let result = await rdbStore.query(predicates); expect(3).assertEqual(result.rowCount); + result.close() result = null } catch (err) { console.log("catch err: failed, err: code=" + err.code + " message=" + err.message) diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbstorePromiseJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbstorePromiseJsunit.test.js index f6099ec9..78212677 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbstorePromiseJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbstorePromiseJsunit.test.js @@ -17,7 +17,8 @@ import data_relationalStore from '@ohos.data.relationalStore'; import ability_featureAbility from '@ohos.ability.featureAbility'; const TAG = "[RELATIONAL_STORE_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; const STORE_CONFIG = { name: "RDBPromiseTest.db", @@ -81,6 +82,7 @@ describe('rdbStorePromiseTest', function () { expect(2).assertEqual(blobType[1]); expect(3).assertEqual(blobType[2]); expect(false).assertEqual(resultSet.goToNextRow()) + resultSet.close(); rdbStore.delete(predicates).then((rows) => { console.log("Delete rows: " + rows) expect(1).assertEqual(rows) @@ -134,6 +136,7 @@ describe('rdbStorePromiseTest', function () { try { data_relationalStore.getRdbStore(context, STORE_CONFIG).then((rdbStore) => { console.log("Get RdbStore successfully.") + rdbStore = null done() }).catch((err) => { console.info("Get RdbStore failed, err: code=" + err.code + " message=" + err.message) @@ -158,6 +161,7 @@ describe('rdbStorePromiseTest', function () { try { data_relationalStore.deleteRdbStore(context, 123454345).then((rdbStore) => { console.log("Delete RdbStore successfully.") + rdbStore = null expect(false).assertTrue() }).catch((err) => { console.info("Delete RdbStore failed, err: code=" + err.code + " message=" + err.message) diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbstoreRdbstoreJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbstoreRdbstoreJsunit.test.js index 4954c3ca..529513cc 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbstoreRdbstoreJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbstoreRdbstoreJsunit.test.js @@ -19,7 +19,8 @@ import ability_featureAbility from '@ohos.ability.featureAbility' var context = ability_featureAbility.getContext() const TAG = "[RELATIONAL_STORE_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; const STORE_CONFIG = { name: "rdbstore.db", @@ -59,12 +60,12 @@ describe('rdbStoreTest', function () { } catch (e) { expect(null).assertFail(); } + store = null }).catch((err) => { expect(null).assertFail(); }) await storePromise storePromise = null - await data_relationalStore.deleteRdbStore(context,"rdbstore.db"); done(); console.log(TAG + "************* testRdbStore0001 end *************"); }) @@ -84,12 +85,12 @@ describe('rdbStoreTest', function () { } catch (e) { expect(null).assertFail(); } + store = null }).catch((err) => { expect(null).assertFail(); }) await storePromise storePromise = null - await data_relationalStore.deleteRdbStore(context, "rdbstore.db"); done(); console.log(TAG + "************* testRdbStore0002 end *************"); }) @@ -136,12 +137,12 @@ describe('rdbStoreTest', function () { console.log(TAG + "create table error"); expect(null).assertFail(); } + store = null }).catch((err) => { expect(null).assertFail(); }) await storePromise storePromise = null - await data_relationalStore.deleteRdbStore(context, "rdbstore.db"); done(); console.log(TAG + "************* testRdbStore0004 end *************"); }) @@ -160,6 +161,7 @@ describe('rdbStoreTest', function () { expect(5).assertEqual(store.version) store.version = 2147483647 expect(2147483647).assertEqual(store.version) + store = null } catch (e) { expect(null).assertFail(); } @@ -217,6 +219,7 @@ describe('rdbStoreTest', function () { storePromise.then(async (store) => { try { await store.executeSql(CREATE_TABLE_TEST); + store = null } catch (e) { expect(null).assertFail(); } diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbstoreStoreExcuteSqlJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbstoreStoreExcuteSqlJsunit.test.js index 3f8f373e..aa28d45e 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbstoreStoreExcuteSqlJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbstoreStoreExcuteSqlJsunit.test.js @@ -18,7 +18,8 @@ import ability_featureAbility from '@ohos.ability.featureAbility' var context = ability_featureAbility.getContext() const TAG = "[RELATIONAL_STORE_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; const STORE_CONFIG = { name: "ExcuteSqlTest.db", @@ -30,16 +31,16 @@ describe('rdbStoreInsertTest', function () { beforeAll(async function () { console.info(TAG + 'beforeAll') rdbStore = await data_relationalStore.getRdbStore(context, STORE_CONFIG); - await rdbStore.executeSql(CREATE_TABLE_TEST, null); }) beforeEach(async function () { - await rdbStore.executeSql("DELETE FROM test"); + await rdbStore.executeSql(CREATE_TABLE_TEST, null); console.info(TAG + 'beforeEach') }) - afterEach(function () { + afterEach(async function () { console.info(TAG + 'afterEach') + await rdbStore.executeSql("DROP TABLE IF EXISTS test") }) afterAll(async function () { @@ -63,14 +64,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(1).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(1).assertEqual(ret); } { const valueBucket = { @@ -79,14 +74,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(2).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(2).assertEqual(ret); } { const valueBucket = { @@ -95,34 +84,20 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(3).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise - } - { - let executeSqlPromise = rdbStore.executeSql("DELETE FROM test WHERE age = ? OR age = ?", ["18", "20"]) - executeSqlPromise.then(async (resultSet) => { - await console.log(TAG + "executeSql done: " + resultSet); - }).catch((err) => { - expect(null).assertFail(); - }) - await executeSqlPromise - } - { - let querySqlPromise = rdbStore.querySql("SELECT * FROM test") - querySqlPromise.then(async (resultSet) => { - await expect(0).assertEqual(resultSet.rowCount) - }).catch((err) => { - expect(null).assertFail(); - }) - await querySqlPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(3).assertEqual(ret); } - done(); + await rdbStore.executeSql("DELETE FROM test WHERE age = ? OR age = ?", ["18", "20"]) + + let querySqlPromise = rdbStore.querySql("SELECT * FROM test") + querySqlPromise.then(async (resultSet) => { + await expect(0).assertEqual(resultSet.rowCount) + resultSet.close() + done(); + }).catch((err) => { + expect(null).assertFail(); + }) + await querySqlPromise console.log(TAG + "************* ExcuteSqlTest0001 end *************"); }) @@ -141,14 +116,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(4).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(1).assertEqual(ret); } { const valueBucket = { @@ -157,14 +126,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(5).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(2).assertEqual(ret); } { const valueBucket = { @@ -173,34 +136,19 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(6).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise - } - { - let executeSqlPromise = rdbStore.executeSql("DELETE FROM test WHERE name = 'lisi'") - executeSqlPromise.then(async () => { - await console.log(TAG + "executeSql done"); - }).catch((err) => { - expect(null).assertFail(); - }) - await executeSqlPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(3).assertEqual(ret); } - { - let querySqlPromise = rdbStore.querySql("SELECT * FROM test") - querySqlPromise.then(async (resultSet) => { - await expect(1).assertEqual(resultSet.rowCount) - }).catch((err) => { - expect(null).assertFail(); - }) - await querySqlPromise - } - done(); + await rdbStore.executeSql("DELETE FROM test WHERE name = 'lisi'") + let querySqlPromise = rdbStore.querySql("SELECT * FROM test") + querySqlPromise.then(async (resultSet) => { + await expect(1).assertEqual(resultSet.rowCount) + resultSet.close() + done(); + }).catch((err) => { + expect(null).assertFail(); + }) + await querySqlPromise console.log(TAG + "************* ExcuteSqlTest0002 end *************"); }) @@ -220,14 +168,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(7).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(1).assertEqual(ret); } { const valueBucket = { @@ -236,14 +178,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(8).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(2).assertEqual(ret); } { const valueBucket = { @@ -252,14 +188,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(9).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(3).assertEqual(ret); } { let predicates = await new data_relationalStore.RdbPredicates("test") @@ -267,6 +197,7 @@ describe('rdbStoreInsertTest', function () { let querySqlPromise = rdbStore.query(predicates) querySqlPromise.then(async (resultSet) => { await expect(2).assertEqual(resultSet.rowCount) + resultSet.close() }).catch((err) => { expect(null).assertFail(); }) @@ -295,12 +226,13 @@ describe('rdbStoreInsertTest', function () { expect(28).assertEqual(age) expect(100.5).assertEqual(salary) expect(3).assertEqual(blobType[0]) + resultSet.close(); + done(); }).catch((err) => { expect(null).assertFail(); }) await querySqlPromise } - done(); console.log(TAG + "************* ExcuteSqlTest0003 end *************"); }) @@ -319,14 +251,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(10).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(1).assertEqual(ret); } { const valueBucket = { @@ -335,14 +261,8 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(11).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(2).assertEqual(ret); } { const valueBucket = { @@ -351,28 +271,13 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(12).assertEqual(ret); - await console.log(TAG + "insert done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise - } - { - let QuerySqlPromise = rdbStore.executeSql("DROP TABLE IF EXISTS test") - QuerySqlPromise.then(async (resultSet) => { - await console.log(TAG + "executeSql done: " + resultSet); - }).catch((err) => { - expect(null).assertFail(); - }) - await QuerySqlPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(3).assertEqual(ret); } + await rdbStore.executeSql("DROP TABLE IF EXISTS test") done(); console.log(TAG + "************* ExcuteSqlTest0004 end *************"); }) - console.log(TAG + "*************Unit Test End*************"); }) \ No newline at end of file diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbstoreTransactionJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbstoreTransactionJsunit.test.js index e708b7a8..96b97fc0 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbstoreTransactionJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbstoreTransactionJsunit.test.js @@ -19,7 +19,8 @@ import ability_featureAbility from '@ohos.ability.featureAbility' var context = ability_featureAbility.getContext() const TAG = "[RELATIONAL_STORE_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY, " + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY, " + + "name TEXT NOT NULL, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; const STORE_CONFIG = { name: "TransactionInsertTest.db", @@ -219,108 +220,6 @@ describe('rdbStoreInsertTest', function () { console.log(TAG + "************* testRdbTransactionRollBack0001 end *************"); }) - /** - * @tc.name rdb insert test - * @tc.number SUB_DDM_AppDataFWK_JSRDB_Insert_0010 - * @tc.desc the classical transaction scenario, when we insert or commit the value, - * db returns an exception, we need to catch exception and rollback. - */ - it('testRdbTransactionMulti0001', 0, async function (done) { - console.log(TAG + "************* testRdbTransactionMulti0001 start *************"); - var u8 = new Uint8Array([1, 2, 3]) - try { - rdbStore.beginTransaction() - const valueBucket = { - "id": 1, - "name": "lisi", - "age": 18, - "salary": 100.5, - "blobType": u8, - } - await rdbStore.insert("test", valueBucket) - - rdbStore.beginTransaction() - const valueBucket1 = { - "name": "zhangsan", - "age": 20, - "salary": 220.5, - "blobType": u8, - } - let num = rdbStore.insert("test", valueBucket1) - num.then(async (ret) => { - console.log(TAG + "testRdbTransactionMulti0001 * insert result " + ret); - expect(2).assertEqual(ret) - }) - - rdbStore.commit() - - let predicates = new data_relationalStore.RdbPredicates("test"); - num = rdbStore.query(predicates) - num.then(async (ret) => { - expect(2).assertEqual(ret.rowCount) - ret.close() - }) - } catch (e) { - console.log(TAG + "testRdbTransactionMulti0001 fail ***** "); - } - done() - console.log(TAG + "************* testRdbTransactionMulti0001 end *************"); - }) - - /** - * @tc.name rdb insert test - * @tc.number SUB_DDM_AppDataFWK_JSRDB_Insert_0010 - * @tc.desc the classical transaction scenario, when we insert or commit the value, - * db returns an exception, we need to catch exception and rollback. - */ - it('testRdbTransactionMulti0002', 0, async function (done) { - console.log(TAG + "************* testRdbTransactionMulti0002 start *************"); - var u8 = new Uint8Array([1, 2, 3]) - try { - rdbStore.beginTransaction() - const valueBucket = { - "id": 1, - "name": "lisi", - "age": 18, - "salary": 100.5, - "blobType": u8, - } - await rdbStore.insert("test", valueBucket, function (err, ret){ - - }); - - rdbStore.beginTransaction() - const valueBucket1 = { - "name": "zhangsan", - "age": 20, - "salary": 220.5, - "blobType": u8, - } - let num = rdbStore.insert("test", valueBucket1) - num.then(async (ret) => { - console.log(TAG + "testRdbTransactionMulti0002 * insert result " + ret); - expect(2).assertEqual(ret) - ret.close() - }) - - rdbStore.rollBack() - - rdbStore.commit() - - let predicates = new data_relationalStore.RdbPredicates("test"); - num = rdbStore.query(predicates) - num.then(async (ret) => { - console.log(TAG + "testRdbTransactionMulti0002 * final query " + ret.rowCount); - expect(1).assertEqual(ret.rowCount) - ret.close() - }) - } catch (e) { - console.log(TAG + "testRdbTransactionMulti0002 fail ***** "); - } - done() - console.log(TAG + "************* testRdbTransactionMulti0002 end *************"); - }) - /** * @tc.name rdb insert test * @tc.number SUB_DDM_AppDataFWK_JSRDB_Insert_0010 @@ -339,9 +238,7 @@ describe('rdbStoreInsertTest', function () { "salary": 100.5, "blobType": u8, } - await rdbStore.insert("test", valueBucket, function (err, ret){ - - }); + await rdbStore.insert("test", valueBucket); rdbStore.beginTransaction() const valueBucket1 = { @@ -350,7 +247,7 @@ describe('rdbStoreInsertTest', function () { "salary": 220.5, "blobType": u8, } - let num = await rdbStore.insert("test", valueBucket1) + await rdbStore.insert("test", valueBucket1) rdbStore.rollBack() @@ -358,12 +255,9 @@ describe('rdbStoreInsertTest', function () { rdbStore.commit() let predicates = new data_relationalStore.RdbPredicates("test"); - num = rdbStore.query(predicates) - num.then(async (ret) => { - console.log(TAG + "testRdbTransactionMulti0003 * final query " + ret.rowCount); - expect(1).assertEqual(ret.rowCount) - ret.close() - }) + let ret = await rdbStore.query(predicates) + expect(1).assertEqual(ret.rowCount) + ret.close() } catch (e) { rdbStore.rollBack() console.log(TAG + "testRdbTransactionMulti0003 rollback ***** "); diff --git a/relational_store/test/js/relationalstore/unittest/src/RdbstoreUpdateJsunit.test.js b/relational_store/test/js/relationalstore/unittest/src/RdbstoreUpdateJsunit.test.js index 39f1f2c3..f8cdfe32 100644 --- a/relational_store/test/js/relationalstore/unittest/src/RdbstoreUpdateJsunit.test.js +++ b/relational_store/test/js/relationalstore/unittest/src/RdbstoreUpdateJsunit.test.js @@ -19,7 +19,8 @@ import dataSharePredicates from '@ohos.data.dataSharePredicates'; var context = ability_featureAbility.getContext() const TAG = "[RELATIONAL_STORE_JSKITS_TEST]" -const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + "name TEXT UNIQUE, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; +const CREATE_TABLE_TEST = "CREATE TABLE IF NOT EXISTS test (" + "id INTEGER PRIMARY KEY AUTOINCREMENT, " + + "name TEXT UNIQUE, " + "age INTEGER, " + "salary REAL, " + "blobType BLOB)"; const STORE_CONFIG = { name: "UpdataTest.db", securityLevel: data_relationalStore.SecurityLevel.S1, @@ -63,14 +64,8 @@ describe('rdbStoreUpdateTest', function () { "salary": 100.5, "blobType": u8, } - let insertPromise = rdbStore.insert("test", valueBucket) - insertPromise.then(async (ret) => { - expect(1).assertEqual(ret); - await console.log(TAG + "update done: " + ret); - }).catch((err) => { - expect(null).assertFail(); - }) - await insertPromise + let ret = await rdbStore.insert("test", valueBucket) + expect(1).assertEqual(ret); } { var u8 = new Uint8Array([4, 5, 6]) @@ -104,8 +99,8 @@ describe('rdbStoreUpdateTest', function () { await expect(4).assertEqual(blobType[0]); await expect(5).assertEqual(blobType[1]); await expect(6).assertEqual(blobType[2]); - console.log(TAG + "{id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + ", blobType=" + blobType); await expect(false).assertEqual(resultSet.goToNextRow()) + resultSet.close() resultSet = null } @@ -311,7 +306,7 @@ describe('rdbStoreUpdateTest', function () { expect(true).assertEqual(resultSet.goToFirstRow()) const name = await resultSet.getString(resultSet.getColumnIndex("name")) await expect(nameStr).assertEqual(name); - console.log(TAG + "{id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + ", blobType=" + blobType); + resultSet.close() resultSet = null } @@ -364,7 +359,7 @@ describe('rdbStoreUpdateTest', function () { expect(true).assertEqual(resultSet.goToFirstRow()) const name = await resultSet.getString(resultSet.getColumnIndex("name")) await expect(nameStr).assertEqual(name); - console.log(TAG + "{id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + ", blobType=" + blobType); + resultSet.close() resultSet = null } @@ -417,7 +412,7 @@ describe('rdbStoreUpdateTest', function () { expect(true).assertEqual(resultSet.goToFirstRow()) const name = await resultSet.getString(resultSet.getColumnIndex("name")) await expect(nameStr).assertEqual(name); - console.log(TAG + "{id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + ", blobType=" + blobType); + resultSet.close() resultSet = null } @@ -539,7 +534,7 @@ describe('rdbStoreUpdateTest', function () { console.log(TAG + "{id=" + id_1 + ", name=" + name_1 + ", age=" + age_1 + ", salary=" + salary_1 + ", blobType=" + blobType_1); await expect(false).assertEqual(resultSet.goToNextRow()) - + resultSet.close() resultSet = null done(); console.log(TAG + "************* testRdbStoreUpdateWithConflictResolution0001 end *************"); @@ -641,7 +636,7 @@ describe('rdbStoreUpdateTest', function () { console.log(TAG + "{id=" + id_1 + ", name=" + name_1 + ", age=" + age_1 + ", salary=" + salary_1 + ", blobType=" + blobType_1); await expect(false).assertEqual(resultSet.goToNextRow()) - + resultSet.close() resultSet = null done() console.log(TAG + "************* testRdbStoreUpdateWithConflictResolution0002 end *************"); @@ -731,6 +726,7 @@ describe('rdbStoreUpdateTest', function () { + salary_1 + ", blobType=" + blobType_1); await expect(false).assertEqual(resultSet.goToNextRow()) + resultSet.close() resultSet = null done(); console.log(TAG + "************* testRdbStoreUpdateWithConflictResolution0003 end *************"); @@ -834,6 +830,7 @@ describe('rdbStoreUpdateTest', function () { + salary_1 + ", blobType=" + blobType_1); await expect(false).assertEqual(resultSet.goToNextRow()) + resultSet.close() resultSet = null done() console.log(TAG + "************* testRdbStoreUpdateWithConflictResolution0004 end *************"); @@ -923,6 +920,7 @@ describe('rdbStoreUpdateTest', function () { + salary_1 + ", blobType=" + blobType_1); await expect(false).assertEqual(resultSet.goToNextRow()) + resultSet.close() resultSet = null done() console.log(TAG + "************* testRdbStoreUpdateWithConflictResolution0005 end *************"); @@ -995,6 +993,7 @@ describe('rdbStoreUpdateTest', function () { + salary + ", blobType=" + blobType); await expect(false).assertEqual(resultSet.goToNextRow()) + resultSet.close() resultSet = null done() console.log(TAG + "************* testRdbStoreUpdateWithConflictResolution0006 end *************"); -- Gitee From 9d2316369bb969b4cf71d5e051e0e7c242238c92 Mon Sep 17 00:00:00 2001 From: htt1997 Date: Tue, 14 Feb 2023 14:23:08 +0800 Subject: [PATCH 2/2] update json Signed-off-by: htt1997 --- mock/nlohmann/adl_serializer.hpp | 2 +- mock/nlohmann/byte_container_with_subtype.hpp | 166 ++ .../nlohmann/detail/conversions/from_json.hpp | 110 +- mock/nlohmann/detail/conversions/to_chars.hpp | 119 +- mock/nlohmann/detail/conversions/to_json.hpp | 75 +- mock/nlohmann/detail/exceptions.hpp | 3 +- mock/nlohmann/detail/hash.hpp | 117 ++ mock/nlohmann/detail/input/binary_reader.hpp | 940 +++++++++--- mock/nlohmann/detail/input/input_adapters.hpp | 408 ++--- mock/nlohmann/detail/input/json_sax.hpp | 136 +- mock/nlohmann/detail/input/lexer.hpp | 283 ++-- mock/nlohmann/detail/input/parser.hpp | 109 +- mock/nlohmann/detail/iterators/iter_impl.hpp | 43 +- .../detail/iterators/iteration_proxy.hpp | 16 +- .../detail/iterators/iterator_traits.hpp | 10 +- mock/nlohmann/detail/json_pointer.hpp | 198 +-- mock/nlohmann/detail/json_ref.hpp | 19 +- mock/nlohmann/detail/macro_scope.hpp | 181 ++- mock/nlohmann/detail/macro_unscope.hpp | 2 + mock/nlohmann/detail/meta/cpp_future.hpp | 1 - mock/nlohmann/detail/meta/detected.hpp | 24 +- mock/nlohmann/detail/meta/is_sax.hpp | 47 +- mock/nlohmann/detail/meta/type_traits.hpp | 194 +-- mock/nlohmann/detail/meta/void_t.hpp | 4 +- mock/nlohmann/detail/output/binary_writer.hpp | 364 ++++- mock/nlohmann/detail/output/serializer.hpp | 161 +- mock/nlohmann/detail/value_t.hpp | 16 +- mock/nlohmann/json.hpp | 1352 ++++++++++++----- mock/nlohmann/json_fwd.hpp | 16 +- mock/nlohmann/ordered_map.hpp | 172 +++ mock/nlohmann/thirdparty/hedley/hedley.hpp | 678 ++++++--- .../thirdparty/hedley/hedley_undef.hpp | 23 +- 32 files changed, 4279 insertions(+), 1710 deletions(-) create mode 100644 mock/nlohmann/byte_container_with_subtype.hpp create mode 100644 mock/nlohmann/detail/hash.hpp create mode 100644 mock/nlohmann/ordered_map.hpp diff --git a/mock/nlohmann/adl_serializer.hpp b/mock/nlohmann/adl_serializer.hpp index eeaa1425..4af1c4bb 100644 --- a/mock/nlohmann/adl_serializer.hpp +++ b/mock/nlohmann/adl_serializer.hpp @@ -37,7 +37,7 @@ struct adl_serializer @param[in,out] j JSON value to write to @param[in] val value to read from */ - template + template static auto to_json(BasicJsonType& j, ValueType&& val) noexcept( noexcept(::nlohmann::to_json(j, std::forward(val)))) -> decltype(::nlohmann::to_json(j, std::forward(val)), void()) diff --git a/mock/nlohmann/byte_container_with_subtype.hpp b/mock/nlohmann/byte_container_with_subtype.hpp new file mode 100644 index 00000000..69f9feb2 --- /dev/null +++ b/mock/nlohmann/byte_container_with_subtype.hpp @@ -0,0 +1,166 @@ +#pragma once + +#include // uint8_t +#include // tie +#include // move + +namespace nlohmann +{ + +/*! +@brief an internal type for a backed binary type + +This type extends the template parameter @a BinaryType provided to `basic_json` +with a subtype used by BSON and MessagePack. This type exists so that the user +does not have to specify a type themselves with a specific naming scheme in +order to override the binary type. + +@tparam BinaryType container to store bytes (`std::vector` by + default) + +@since version 3.8.0 +*/ +template +class byte_container_with_subtype : public BinaryType +{ + public: + /// the type of the underlying container + using container_type = BinaryType; + + byte_container_with_subtype() noexcept(noexcept(container_type())) + : container_type() + {} + + byte_container_with_subtype(const container_type& b) noexcept(noexcept(container_type(b))) + : container_type(b) + {} + + byte_container_with_subtype(container_type&& b) noexcept(noexcept(container_type(std::move(b)))) + : container_type(std::move(b)) + {} + + byte_container_with_subtype(const container_type& b, std::uint8_t subtype) noexcept(noexcept(container_type(b))) + : container_type(b) + , m_subtype(subtype) + , m_has_subtype(true) + {} + + byte_container_with_subtype(container_type&& b, std::uint8_t subtype) noexcept(noexcept(container_type(std::move(b)))) + : container_type(std::move(b)) + , m_subtype(subtype) + , m_has_subtype(true) + {} + + bool operator==(const byte_container_with_subtype& rhs) const + { + return std::tie(static_cast(*this), m_subtype, m_has_subtype) == + std::tie(static_cast(rhs), rhs.m_subtype, rhs.m_has_subtype); + } + + bool operator!=(const byte_container_with_subtype& rhs) const + { + return !(rhs == *this); + } + + /*! + @brief sets the binary subtype + + Sets the binary subtype of the value, also flags a binary JSON value as + having a subtype, which has implications for serialization. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @sa @ref subtype() -- return the binary subtype + @sa @ref clear_subtype() -- clears the binary subtype + @sa @ref has_subtype() -- returns whether or not the binary value has a + subtype + + @since version 3.8.0 + */ + void set_subtype(std::uint8_t subtype) noexcept + { + m_subtype = subtype; + m_has_subtype = true; + } + + /*! + @brief return the binary subtype + + Returns the numerical subtype of the value if it has a subtype. If it does + not have a subtype, this function will return size_t(-1) as a sentinel + value. + + @return the numerical subtype of the binary value + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @sa @ref set_subtype() -- sets the binary subtype + @sa @ref clear_subtype() -- clears the binary subtype + @sa @ref has_subtype() -- returns whether or not the binary value has a + subtype + + @since version 3.8.0 + */ + constexpr std::uint8_t subtype() const noexcept + { + return m_subtype; + } + + /*! + @brief return whether the value has a subtype + + @return whether the value has a subtype + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @sa @ref subtype() -- return the binary subtype + @sa @ref set_subtype() -- sets the binary subtype + @sa @ref clear_subtype() -- clears the binary subtype + + @since version 3.8.0 + */ + constexpr bool has_subtype() const noexcept + { + return m_has_subtype; + } + + /*! + @brief clears the binary subtype + + Clears the binary subtype and flags the value as not having a subtype, which + has implications for serialization; for instance MessagePack will prefer the + bin family over the ext family. + + @complexity Constant. + + @exceptionsafety No-throw guarantee: this member function never throws + exceptions. + + @sa @ref subtype() -- return the binary subtype + @sa @ref set_subtype() -- sets the binary subtype + @sa @ref has_subtype() -- returns whether or not the binary value has a + subtype + + @since version 3.8.0 + */ + void clear_subtype() noexcept + { + m_subtype = 0; + m_has_subtype = false; + } + + private: + std::uint8_t m_subtype = 0; + bool m_has_subtype = false; +}; + +} // namespace nlohmann diff --git a/mock/nlohmann/detail/conversions/from_json.hpp b/mock/nlohmann/detail/conversions/from_json.hpp index c389dca7..438b84a2 100644 --- a/mock/nlohmann/detail/conversions/from_json.hpp +++ b/mock/nlohmann/detail/conversions/from_json.hpp @@ -2,7 +2,6 @@ #include // transform #include // array -#include // and, not #include // forward_list #include // inserter, front_inserter, end #include // map @@ -26,7 +25,7 @@ namespace detail template void from_json(const BasicJsonType& j, typename std::nullptr_t& n) { - if (JSON_HEDLEY_UNLIKELY(not j.is_null())) + if (JSON_HEDLEY_UNLIKELY(!j.is_null())) { JSON_THROW(type_error::create(302, "type must be null, but is " + std::string(j.type_name()))); } @@ -34,10 +33,10 @@ void from_json(const BasicJsonType& j, typename std::nullptr_t& n) } // overloads for basic_json template parameters -template::value and - not std::is_same::value, - int> = 0> +template < typename BasicJsonType, typename ArithmeticType, + enable_if_t < std::is_arithmetic::value&& + !std::is_same::value, + int > = 0 > void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) { switch (static_cast(j)) @@ -66,7 +65,7 @@ void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val) template void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) { - if (JSON_HEDLEY_UNLIKELY(not j.is_boolean())) + if (JSON_HEDLEY_UNLIKELY(!j.is_boolean())) { JSON_THROW(type_error::create(302, "type must be boolean, but is " + std::string(j.type_name()))); } @@ -76,7 +75,7 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::boolean_t& b) template void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) { - if (JSON_HEDLEY_UNLIKELY(not j.is_string())) + if (JSON_HEDLEY_UNLIKELY(!j.is_string())) { JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()))); } @@ -86,13 +85,13 @@ void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s) template < typename BasicJsonType, typename ConstructibleStringType, enable_if_t < - is_constructible_string_type::value and - not std::is_same::value, + is_constructible_string_type::value&& + !std::is_same::value, int > = 0 > void from_json(const BasicJsonType& j, ConstructibleStringType& s) { - if (JSON_HEDLEY_UNLIKELY(not j.is_string())) + if (JSON_HEDLEY_UNLIKELY(!j.is_string())) { JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()))); } @@ -129,10 +128,10 @@ void from_json(const BasicJsonType& j, EnumType& e) // forward_list doesn't have an insert method template::value, int> = 0> + enable_if_t::value, int> = 0> void from_json(const BasicJsonType& j, std::forward_list& l) { - if (JSON_HEDLEY_UNLIKELY(not j.is_array())) + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) { JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); } @@ -146,18 +145,22 @@ void from_json(const BasicJsonType& j, std::forward_list& l) // valarray doesn't have an insert method template::value, int> = 0> + enable_if_t::value, int> = 0> void from_json(const BasicJsonType& j, std::valarray& l) { - if (JSON_HEDLEY_UNLIKELY(not j.is_array())) + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) { JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); } l.resize(j.size()); - std::copy(j.begin(), j.end(), std::begin(l)); + std::transform(j.begin(), j.end(), std::begin(l), + [](const BasicJsonType & elem) + { + return elem.template get(); + }); } -template +template auto from_json(const BasicJsonType& j, T (&arr)[N]) -> decltype(j.template get(), void()) { @@ -173,7 +176,7 @@ void from_json_array_impl(const BasicJsonType& j, typename BasicJsonType::array_ arr = *j.template get_ptr(); } -template +template auto from_json_array_impl(const BasicJsonType& j, std::array& arr, priority_tag<2> /*unused*/) -> decltype(j.template get(), void()) @@ -205,7 +208,7 @@ auto from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, p arr = std::move(ret); } -template +template void from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, priority_tag<0> /*unused*/) { @@ -223,20 +226,20 @@ void from_json_array_impl(const BasicJsonType& j, ConstructibleArrayType& arr, arr = std::move(ret); } -template ::value and - not is_constructible_object_type::value and - not is_constructible_string_type::value and - not is_basic_json::value, - int > = 0 > - +template < typename BasicJsonType, typename ConstructibleArrayType, + enable_if_t < + is_constructible_array_type::value&& + !is_constructible_object_type::value&& + !is_constructible_string_type::value&& + !std::is_same::value&& + !is_basic_json::value, + int > = 0 > auto from_json(const BasicJsonType& j, ConstructibleArrayType& arr) -> decltype(from_json_array_impl(j, arr, priority_tag<3> {}), j.template get(), void()) { - if (JSON_HEDLEY_UNLIKELY(not j.is_array())) + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) { JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); @@ -245,11 +248,22 @@ void()) from_json_array_impl(j, arr, priority_tag<3> {}); } +template +void from_json(const BasicJsonType& j, typename BasicJsonType::binary_t& bin) +{ + if (JSON_HEDLEY_UNLIKELY(!j.is_binary())) + { + JSON_THROW(type_error::create(302, "type must be binary, but is " + std::string(j.type_name()))); + } + + bin = *j.template get_ptr(); +} + template::value, int> = 0> void from_json(const BasicJsonType& j, ConstructibleObjectType& obj) { - if (JSON_HEDLEY_UNLIKELY(not j.is_object())) + if (JSON_HEDLEY_UNLIKELY(!j.is_object())) { JSON_THROW(type_error::create(302, "type must be object, but is " + std::string(j.type_name()))); } @@ -271,14 +285,14 @@ void from_json(const BasicJsonType& j, ConstructibleObjectType& obj) // (BooleanType, etc..); note: Is it really necessary to provide explicit // overloads for boolean_t etc. in case of a custom BooleanType which is not // an arithmetic type? -template::value and - not std::is_same::value and - not std::is_same::value and - not std::is_same::value and - not std::is_same::value, - int> = 0> +template < typename BasicJsonType, typename ArithmeticType, + enable_if_t < + std::is_arithmetic::value&& + !std::is_same::value&& + !std::is_same::value&& + !std::is_same::value&& + !std::is_same::value, + int > = 0 > void from_json(const BasicJsonType& j, ArithmeticType& val) { switch (static_cast(j)) @@ -327,19 +341,19 @@ void from_json(const BasicJsonType& j, std::tuple& t) from_json_tuple_impl(j, t, index_sequence_for {}); } -template ::value>> +template < typename BasicJsonType, typename Key, typename Value, typename Compare, typename Allocator, + typename = enable_if_t < !std::is_constructible < + typename BasicJsonType::string_t, Key >::value >> void from_json(const BasicJsonType& j, std::map& m) { - if (JSON_HEDLEY_UNLIKELY(not j.is_array())) + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) { JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); } m.clear(); for (const auto& p : j) { - if (JSON_HEDLEY_UNLIKELY(not p.is_array())) + if (JSON_HEDLEY_UNLIKELY(!p.is_array())) { JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name()))); } @@ -347,19 +361,19 @@ void from_json(const BasicJsonType& j, std::map& } } -template ::value>> +template < typename BasicJsonType, typename Key, typename Value, typename Hash, typename KeyEqual, typename Allocator, + typename = enable_if_t < !std::is_constructible < + typename BasicJsonType::string_t, Key >::value >> void from_json(const BasicJsonType& j, std::unordered_map& m) { - if (JSON_HEDLEY_UNLIKELY(not j.is_array())) + if (JSON_HEDLEY_UNLIKELY(!j.is_array())) { JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(j.type_name()))); } m.clear(); for (const auto& p : j) { - if (JSON_HEDLEY_UNLIKELY(not p.is_array())) + if (JSON_HEDLEY_UNLIKELY(!p.is_array())) { JSON_THROW(type_error::create(302, "type must be array, but is " + std::string(p.type_name()))); } diff --git a/mock/nlohmann/detail/conversions/to_chars.hpp b/mock/nlohmann/detail/conversions/to_chars.hpp index d99703a5..c632ff2b 100644 --- a/mock/nlohmann/detail/conversions/to_chars.hpp +++ b/mock/nlohmann/detail/conversions/to_chars.hpp @@ -1,13 +1,12 @@ #pragma once #include // array -#include // assert -#include // or, and, not #include // signbit, isfinite #include // intN_t, uintN_t #include // memcpy, memmove #include // numeric_limits #include // conditional + #include namespace nlohmann @@ -37,7 +36,7 @@ For a detailed description of the algorithm see: namespace dtoa_impl { -template +template Target reinterpret_bits(const Source source) { static_assert(sizeof(Target) == sizeof(Source), "size mismatch"); @@ -62,8 +61,8 @@ struct diyfp // f * 2^e */ static diyfp sub(const diyfp& x, const diyfp& y) noexcept { - assert(x.e == y.e); - assert(x.f >= y.f); + JSON_ASSERT(x.e == y.e); + JSON_ASSERT(x.f >= y.f); return {x.f - y.f, x.e}; } @@ -139,7 +138,7 @@ struct diyfp // f * 2^e */ static diyfp normalize(diyfp x) noexcept { - assert(x.f != 0); + JSON_ASSERT(x.f != 0); while ((x.f >> 63u) == 0) { @@ -158,8 +157,8 @@ struct diyfp // f * 2^e { const int delta = x.e - target_exponent; - assert(delta >= 0); - assert(((x.f << delta) >> delta) == x.f); + JSON_ASSERT(delta >= 0); + JSON_ASSERT(((x.f << delta) >> delta) == x.f); return {x.f << delta, target_exponent}; } @@ -178,11 +177,11 @@ boundaries. @pre value must be finite and positive */ -template +template boundaries compute_boundaries(FloatType value) { - assert(std::isfinite(value)); - assert(value > 0); + JSON_ASSERT(std::isfinite(value)); + JSON_ASSERT(value > 0); // Convert the IEEE representation into a diyfp. // @@ -231,7 +230,7 @@ boundaries compute_boundaries(FloatType value) // -----------------+------+------+-------------+-------------+--- (B) // v- m- v m+ v+ - const bool lower_boundary_is_closer = F == 0 and E > 1; + const bool lower_boundary_is_closer = F == 0 && E > 1; const diyfp m_plus = diyfp(2 * v.f + 1, v.e - 1); const diyfp m_minus = lower_boundary_is_closer ? diyfp(4 * v.f - 1, v.e - 2) // (B) @@ -462,18 +461,18 @@ inline cached_power get_cached_power_for_binary_exponent(int e) // k = ceil((kAlpha - e - 1) * 0.30102999566398114) // for |e| <= 1500, but doesn't require floating-point operations. // NB: log_10(2) ~= 78913 / 2^18 - assert(e >= -1500); - assert(e <= 1500); + JSON_ASSERT(e >= -1500); + JSON_ASSERT(e <= 1500); const int f = kAlpha - e - 1; const int k = (f * 78913) / (1 << 18) + static_cast(f > 0); const int index = (-kCachedPowersMinDecExp + k + (kCachedPowersDecStep - 1)) / kCachedPowersDecStep; - assert(index >= 0); - assert(static_cast(index) < kCachedPowers.size()); + JSON_ASSERT(index >= 0); + JSON_ASSERT(static_cast(index) < kCachedPowers.size()); const cached_power cached = kCachedPowers[static_cast(index)]; - assert(kAlpha <= cached.e + e + 64); - assert(kGamma >= cached.e + e + 64); + JSON_ASSERT(kAlpha <= cached.e + e + 64); + JSON_ASSERT(kGamma >= cached.e + e + 64); return cached; } @@ -541,10 +540,10 @@ inline int find_largest_pow10(const std::uint32_t n, std::uint32_t& pow10) inline void grisu2_round(char* buf, int len, std::uint64_t dist, std::uint64_t delta, std::uint64_t rest, std::uint64_t ten_k) { - assert(len >= 1); - assert(dist <= delta); - assert(rest <= delta); - assert(ten_k > 0); + JSON_ASSERT(len >= 1); + JSON_ASSERT(dist <= delta); + JSON_ASSERT(rest <= delta); + JSON_ASSERT(ten_k > 0); // <--------------------------- delta ----> // <---- dist ---------> @@ -566,10 +565,10 @@ inline void grisu2_round(char* buf, int len, std::uint64_t dist, std::uint64_t d // integer arithmetic. while (rest < dist - and delta - rest >= ten_k - and (rest + ten_k < dist or dist - rest > rest + ten_k - dist)) + && delta - rest >= ten_k + && (rest + ten_k < dist || dist - rest > rest + ten_k - dist)) { - assert(buf[len - 1] != '0'); + JSON_ASSERT(buf[len - 1] != '0'); buf[len - 1]--; rest += ten_k; } @@ -597,8 +596,8 @@ inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, // Grisu2 generates the digits of M+ from left to right and stops as soon as // V is in [M-,M+]. - assert(M_plus.e >= kAlpha); - assert(M_plus.e <= kGamma); + JSON_ASSERT(M_plus.e >= kAlpha); + JSON_ASSERT(M_plus.e <= kGamma); std::uint64_t delta = diyfp::sub(M_plus, M_minus).f; // (significand of (M+ - M-), implicit exponent is e) std::uint64_t dist = diyfp::sub(M_plus, w ).f; // (significand of (M+ - w ), implicit exponent is e) @@ -619,7 +618,7 @@ inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, // // Generate the digits of the integral part p1 = d[n-1]...d[1]d[0] - assert(p1 > 0); + JSON_ASSERT(p1 > 0); std::uint32_t pow10; const int k = find_largest_pow10(p1, pow10); @@ -655,7 +654,7 @@ inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, // M+ = buffer * 10^n + (d * 10^(n-1) + r) + p2 * 2^e // = (buffer * 10 + d) * 10^(n-1) + (r + p2 * 2^e) // - assert(d <= 9); + JSON_ASSERT(d <= 9); buffer[length++] = static_cast('0' + d); // buffer := buffer * 10 + d // // M+ = buffer * 10^(n-1) + (r + p2 * 2^e) @@ -742,7 +741,7 @@ inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, // // and stop as soon as 10^-m * r * 2^e <= delta * 2^e - assert(p2 > delta); + JSON_ASSERT(p2 > delta); int m = 0; for (;;) @@ -753,7 +752,7 @@ inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, // = buffer * 10^-m + 10^-m * (1/10 * (10 * p2) ) * 2^e // = buffer * 10^-m + 10^-m * (1/10 * ((10*p2 div 2^-e) * 2^-e + (10*p2 mod 2^-e)) * 2^e // - assert(p2 <= (std::numeric_limits::max)() / 10); + JSON_ASSERT(p2 <= (std::numeric_limits::max)() / 10); p2 *= 10; const std::uint64_t d = p2 >> -one.e; // d = (10 * p2) div 2^-e const std::uint64_t r = p2 & (one.f - 1); // r = (10 * p2) mod 2^-e @@ -762,7 +761,7 @@ inline void grisu2_digit_gen(char* buffer, int& length, int& decimal_exponent, // = buffer * 10^-m + 10^-m * (1/10 * (d + r * 2^e)) // = (buffer * 10 + d) * 10^(-m-1) + 10^(-m-1) * r * 2^e // - assert(d <= 9); + JSON_ASSERT(d <= 9); buffer[length++] = static_cast('0' + d); // buffer := buffer * 10 + d // // M+ = buffer * 10^(-m-1) + 10^(-m-1) * r * 2^e @@ -823,8 +822,8 @@ JSON_HEDLEY_NON_NULL(1) inline void grisu2(char* buf, int& len, int& decimal_exponent, diyfp m_minus, diyfp v, diyfp m_plus) { - assert(m_plus.e == m_minus.e); - assert(m_plus.e == v.e); + JSON_ASSERT(m_plus.e == m_minus.e); + JSON_ASSERT(m_plus.e == v.e); // --------(-----------------------+-----------------------)-------- (A) // m- v m+ @@ -878,15 +877,15 @@ v = buf * 10^decimal_exponent len is the length of the buffer (number of decimal digits) The buffer must be large enough, i.e. >= max_digits10. */ -template +template JSON_HEDLEY_NON_NULL(1) void grisu2(char* buf, int& len, int& decimal_exponent, FloatType value) { static_assert(diyfp::kPrecision >= std::numeric_limits::digits + 3, "internal error: not enough precision"); - assert(std::isfinite(value)); - assert(value > 0); + JSON_ASSERT(std::isfinite(value)); + JSON_ASSERT(value > 0); // If the neighbors (and boundaries) of 'value' are always computed for double-precision // numbers, all float's can be recovered using strtod (and strtof). However, the resulting @@ -922,8 +921,8 @@ JSON_HEDLEY_NON_NULL(1) JSON_HEDLEY_RETURNS_NON_NULL inline char* append_exponent(char* buf, int e) { - assert(e > -1000); - assert(e < 1000); + JSON_ASSERT(e > -1000); + JSON_ASSERT(e < 1000); if (e < 0) { @@ -975,8 +974,8 @@ JSON_HEDLEY_RETURNS_NON_NULL inline char* format_buffer(char* buf, int len, int decimal_exponent, int min_exp, int max_exp) { - assert(min_exp < 0); - assert(max_exp > 0); + JSON_ASSERT(min_exp < 0); + JSON_ASSERT(max_exp > 0); const int k = len; const int n = len + decimal_exponent; @@ -985,40 +984,40 @@ inline char* format_buffer(char* buf, int len, int decimal_exponent, // k is the length of the buffer (number of decimal digits) // n is the position of the decimal point relative to the start of the buffer. - if (k <= n and n <= max_exp) + if (k <= n && n <= max_exp) { // digits[000] // len <= max_exp + 2 - std::memset(buf + k, '0', static_cast(n - k)); + std::memset(buf + k, '0', static_cast(n) - static_cast(k)); // Make it look like a floating-point number (#362, #378) buf[n + 0] = '.'; buf[n + 1] = '0'; - return buf + (n + 2); + return buf + (static_cast(n) + 2); } - if (0 < n and n <= max_exp) + if (0 < n && n <= max_exp) { // dig.its // len <= max_digits10 + 1 - assert(k > n); + JSON_ASSERT(k > n); - std::memmove(buf + (n + 1), buf + n, static_cast(k - n)); + std::memmove(buf + (static_cast(n) + 1), buf + n, static_cast(k) - static_cast(n)); buf[n] = '.'; - return buf + (k + 1); + return buf + (static_cast(k) + 1U); } - if (min_exp < n and n <= 0) + if (min_exp < n && n <= 0) { // 0.[000]digits // len <= 2 + (-min_exp - 1) + max_digits10 - std::memmove(buf + (2 + -n), buf, static_cast(k)); + std::memmove(buf + (2 + static_cast(-n)), buf, static_cast(k)); buf[0] = '0'; buf[1] = '.'; std::memset(buf + 2, '0', static_cast(-n)); - return buf + (2 + (-n) + k); + return buf + (2U + static_cast(-n) + static_cast(k)); } if (k == 1) @@ -1033,9 +1032,9 @@ inline char* format_buffer(char* buf, int len, int decimal_exponent, // d.igitsE+123 // len <= max_digits10 + 1 + 5 - std::memmove(buf + 2, buf + 1, static_cast(k - 1)); + std::memmove(buf + 2, buf + 1, static_cast(k) - 1); buf[1] = '.'; - buf += 1 + k; + buf += 1 + static_cast(k); } *buf++ = 'e'; @@ -1054,13 +1053,13 @@ format. Returns an iterator pointing past-the-end of the decimal representation. @note The buffer must be large enough. @note The result is NOT null-terminated. */ -template +template JSON_HEDLEY_NON_NULL(1, 2) JSON_HEDLEY_RETURNS_NON_NULL char* to_chars(char* first, const char* last, FloatType value) { static_cast(last); // maybe unused - fix warning - assert(std::isfinite(value)); + JSON_ASSERT(std::isfinite(value)); // Use signbit(value) instead of (value < 0) since signbit works for -0. if (std::signbit(value)) @@ -1078,7 +1077,7 @@ char* to_chars(char* first, const char* last, FloatType value) return first; } - assert(last - first >= std::numeric_limits::max_digits10); + JSON_ASSERT(last - first >= std::numeric_limits::max_digits10); // Compute v = buffer * 10^decimal_exponent. // The decimal digits are stored in the buffer, which needs to be interpreted @@ -1088,16 +1087,16 @@ char* to_chars(char* first, const char* last, FloatType value) int decimal_exponent = 0; dtoa_impl::grisu2(first, len, decimal_exponent, value); - assert(len <= std::numeric_limits::max_digits10); + JSON_ASSERT(len <= std::numeric_limits::max_digits10); // Format the buffer like printf("%.*g", prec, value) constexpr int kMinExp = -4; // Use digits10 here to increase compatibility with version 2. constexpr int kMaxExp = std::numeric_limits::digits10; - assert(last - first >= kMaxExp + 2); - assert(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits::max_digits10); - assert(last - first >= std::numeric_limits::max_digits10 + 6); + JSON_ASSERT(last - first >= kMaxExp + 2); + JSON_ASSERT(last - first >= 2 + (-kMinExp - 1) + std::numeric_limits::max_digits10); + JSON_ASSERT(last - first >= std::numeric_limits::max_digits10 + 6); return dtoa_impl::format_buffer(first, len, decimal_exponent, kMinExp, kMaxExp); } diff --git a/mock/nlohmann/detail/conversions/to_json.hpp b/mock/nlohmann/detail/conversions/to_json.hpp index a1def699..b45004fd 100644 --- a/mock/nlohmann/detail/conversions/to_json.hpp +++ b/mock/nlohmann/detail/conversions/to_json.hpp @@ -1,7 +1,6 @@ #pragma once #include // copy -#include // or, and, not #include // begin, end #include // string #include // tuple, get @@ -56,9 +55,9 @@ struct external_constructor j.assert_invariant(); } - template::value, - int> = 0> + template < typename BasicJsonType, typename CompatibleStringType, + enable_if_t < !std::is_same::value, + int > = 0 > static void construct(BasicJsonType& j, const CompatibleStringType& str) { j.m_type = value_t::string; @@ -67,6 +66,28 @@ struct external_constructor } }; +template<> +struct external_constructor +{ + template + static void construct(BasicJsonType& j, const typename BasicJsonType::binary_t& b) + { + j.m_type = value_t::binary; + typename BasicJsonType::binary_t value{b}; + j.m_value = value; + j.assert_invariant(); + } + + template + static void construct(BasicJsonType& j, typename BasicJsonType::binary_t&& b) + { + j.m_type = value_t::binary; + typename BasicJsonType::binary_t value{std::move(b)}; + j.m_value = value; + j.assert_invariant(); + } +}; + template<> struct external_constructor { @@ -122,9 +143,9 @@ struct external_constructor j.assert_invariant(); } - template::value, - int> = 0> + template < typename BasicJsonType, typename CompatibleArrayType, + enable_if_t < !std::is_same::value, + int > = 0 > static void construct(BasicJsonType& j, const CompatibleArrayType& arr) { using std::begin; @@ -181,8 +202,8 @@ struct external_constructor j.assert_invariant(); } - template::value, int> = 0> + template < typename BasicJsonType, typename CompatibleObjectType, + enable_if_t < !std::is_same::value, int > = 0 > static void construct(BasicJsonType& j, const CompatibleObjectType& obj) { using std::begin; @@ -253,19 +274,25 @@ void to_json(BasicJsonType& j, const std::vector& e) external_constructor::construct(j, e); } -template ::value and - not is_compatible_object_type< - BasicJsonType, CompatibleArrayType>::value and - not is_compatible_string_type::value and - not is_basic_json::value, - int> = 0> +template < typename BasicJsonType, typename CompatibleArrayType, + enable_if_t < is_compatible_array_type::value&& + !is_compatible_object_type::value&& + !is_compatible_string_type::value&& + !std::is_same::value&& + !is_basic_json::value, + int > = 0 > void to_json(BasicJsonType& j, const CompatibleArrayType& arr) { external_constructor::construct(j, arr); } +template +void to_json(BasicJsonType& j, const typename BasicJsonType::binary_t& bin) +{ + external_constructor::construct(j, bin); +} + template::value, int> = 0> void to_json(BasicJsonType& j, const std::valarray& arr) @@ -279,8 +306,8 @@ void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr) external_constructor::construct(j, std::move(arr)); } -template::value and not is_basic_json::value, int> = 0> +template < typename BasicJsonType, typename CompatibleObjectType, + enable_if_t < is_compatible_object_type::value&& !is_basic_json::value, int > = 0 > void to_json(BasicJsonType& j, const CompatibleObjectType& obj) { external_constructor::construct(j, obj); @@ -294,9 +321,9 @@ void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj) template < typename BasicJsonType, typename T, std::size_t N, - enable_if_t::value, - int> = 0 > + enable_if_t < !std::is_constructible::value, + int > = 0 > void to_json(BasicJsonType& j, const T(&arr)[N]) { external_constructor::construct(j, arr); @@ -309,8 +336,8 @@ void to_json(BasicJsonType& j, const std::pair& p) } // for https://github.com/nlohmann/json/pull/1134 -template < typename BasicJsonType, typename T, - enable_if_t>::value, int> = 0> +template>::value, int> = 0> void to_json(BasicJsonType& j, const T& b) { j = { {b.key(), b.value()} }; diff --git a/mock/nlohmann/detail/exceptions.hpp b/mock/nlohmann/detail/exceptions.hpp index ed836188..dd92897d 100644 --- a/mock/nlohmann/detail/exceptions.hpp +++ b/mock/nlohmann/detail/exceptions.hpp @@ -97,6 +97,7 @@ json.exception.parse_error.110 | parse error at 1: cannot read 2 bytes from vect json.exception.parse_error.112 | parse error at 1: error reading CBOR; last byte: 0xF8 | Not all types of CBOR or MessagePack are supported. This exception occurs if an unsupported byte was read. json.exception.parse_error.113 | parse error at 2: expected a CBOR string; last byte: 0x98 | While parsing a map key, a value that is not a string has been read. json.exception.parse_error.114 | parse error: Unsupported BSON record type 0x0F | The parsing of the corresponding BSON record type is not implemented (yet). +json.exception.parse_error.115 | parse error at byte 5: syntax error while parsing UBJSON high-precision number: invalid number text: 1A | A UBJSON high-precision number could not be parsed. @note For an input with n bytes, 1 is the index of the first character and n+1 is the index of the terminating null byte or the end of file. This also @@ -285,7 +286,7 @@ json.exception.out_of_range.403 | key 'foo' not found | The provided key was not json.exception.out_of_range.404 | unresolved reference token 'foo' | A reference token in a JSON Pointer could not be resolved. json.exception.out_of_range.405 | JSON pointer has no parent | The JSON Patch operations 'remove' and 'add' can not be applied to the root element of the JSON value. json.exception.out_of_range.406 | number overflow parsing '10E1000' | A parsed number could not be stored as without changing it to NaN or INF. -json.exception.out_of_range.407 | number overflow serializing '9223372036854775808' | UBJSON and BSON only support integer numbers up to 9223372036854775807. | +json.exception.out_of_range.407 | number overflow serializing '9223372036854775808' | UBJSON and BSON only support integer numbers up to 9223372036854775807. (until version 3.8.0) | json.exception.out_of_range.408 | excessive array size: 8658170730974374167 | The size (following `#`) of an UBJSON array or object exceeds the maximal capacity. | json.exception.out_of_range.409 | BSON key cannot contain code point U+0000 (at byte 2) | Key identifiers to be serialized to BSON cannot contain code point U+0000, since the key is stored as zero-terminated c-string | diff --git a/mock/nlohmann/detail/hash.hpp b/mock/nlohmann/detail/hash.hpp new file mode 100644 index 00000000..4094cc94 --- /dev/null +++ b/mock/nlohmann/detail/hash.hpp @@ -0,0 +1,117 @@ +#pragma once + +#include // size_t, uint8_t +#include // hash + +namespace nlohmann +{ +namespace detail +{ + +// boost::hash_combine +inline std::size_t combine(std::size_t seed, std::size_t h) noexcept +{ + seed ^= h + 0x9e3779b9 + (seed << 6U) + (seed >> 2U); + return seed; +} + +/*! +@brief hash a JSON value + +The hash function tries to rely on std::hash where possible. Furthermore, the +type of the JSON value is taken into account to have different hash values for +null, 0, 0U, and false, etc. + +@tparam BasicJsonType basic_json specialization +@param j JSON value to hash +@return hash value of j +*/ +template +std::size_t hash(const BasicJsonType& j) +{ + using string_t = typename BasicJsonType::string_t; + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + + const auto type = static_cast(j.type()); + switch (j.type()) + { + case BasicJsonType::value_t::null: + case BasicJsonType::value_t::discarded: + { + return combine(type, 0); + } + + case BasicJsonType::value_t::object: + { + auto seed = combine(type, j.size()); + for (const auto& element : j.items()) + { + const auto h = std::hash {}(element.key()); + seed = combine(seed, h); + seed = combine(seed, hash(element.value())); + } + return seed; + } + + case BasicJsonType::value_t::array: + { + auto seed = combine(type, j.size()); + for (const auto& element : j) + { + seed = combine(seed, hash(element)); + } + return seed; + } + + case BasicJsonType::value_t::string: + { + const auto h = std::hash {}(j.template get_ref()); + return combine(type, h); + } + + case BasicJsonType::value_t::boolean: + { + const auto h = std::hash {}(j.template get()); + return combine(type, h); + } + + case BasicJsonType::value_t::number_integer: + { + const auto h = std::hash {}(j.template get()); + return combine(type, h); + } + + case nlohmann::detail::value_t::number_unsigned: + { + const auto h = std::hash {}(j.template get()); + return combine(type, h); + } + + case nlohmann::detail::value_t::number_float: + { + const auto h = std::hash {}(j.template get()); + return combine(type, h); + } + + case nlohmann::detail::value_t::binary: + { + auto seed = combine(type, j.get_binary().size()); + const auto h = std::hash {}(j.get_binary().has_subtype()); + seed = combine(seed, h); + seed = combine(seed, j.get_binary().subtype()); + for (const auto byte : j.get_binary()) + { + seed = combine(seed, std::hash {}(byte)); + } + return seed; + } + + default: // LCOV_EXCL_LINE + JSON_ASSERT(false); // LCOV_EXCL_LINE + } +} + +} // namespace detail +} // namespace nlohmann diff --git a/mock/nlohmann/detail/input/binary_reader.hpp b/mock/nlohmann/detail/input/binary_reader.hpp index 1b6e0f9b..4c94d1cc 100644 --- a/mock/nlohmann/detail/input/binary_reader.hpp +++ b/mock/nlohmann/detail/input/binary_reader.hpp @@ -2,7 +2,6 @@ #include // generate_n #include // array -#include // assert #include // ldexp #include // size_t #include // uint8_t, uint16_t, uint32_t, uint64_t @@ -16,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -24,6 +24,27 @@ namespace nlohmann { namespace detail { + +/// how to treat CBOR tags +enum class cbor_tag_handler_t +{ + error, ///< throw a parse_error exception in case of a tag + ignore ///< ignore tags +}; + +/*! +@brief determine system byte order + +@return true if and only if system's byte order is little endian + +@note from https://stackoverflow.com/a/1001328/266378 +*/ +static inline bool little_endianess(int num = 1) noexcept +{ + return *reinterpret_cast(&num) == 1; +} + + /////////////////// // binary reader // /////////////////// @@ -31,14 +52,17 @@ namespace detail /*! @brief deserialization of CBOR, MessagePack, and UBJSON values */ -template> +template> class binary_reader { using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; using number_float_t = typename BasicJsonType::number_float_t; using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; using json_sax_t = SAX; + using char_type = typename InputAdapterType::char_type; + using char_int_type = typename std::char_traits::int_type; public: /*! @@ -46,10 +70,9 @@ class binary_reader @param[in] adapter input adapter to read from */ - explicit binary_reader(input_adapter_t adapter) : ia(std::move(adapter)) + explicit binary_reader(InputAdapterType&& adapter) : ia(std::move(adapter)) { (void)detail::is_sax_static_asserts {}; - assert(ia); } // make class move-only @@ -63,13 +86,15 @@ class binary_reader @param[in] format the binary format to parse @param[in] sax_ a SAX event processor @param[in] strict whether to expect the input to be consumed completed + @param[in] tag_handler how to treat CBOR tags @return */ JSON_HEDLEY_NON_NULL(3) bool sax_parse(const input_format_t format, json_sax_t* sax_, - const bool strict = true) + const bool strict = true, + const cbor_tag_handler_t tag_handler = cbor_tag_handler_t::error) { sax = sax_; bool result = false; @@ -81,7 +106,7 @@ class binary_reader break; case input_format_t::cbor: - result = parse_cbor_internal(); + result = parse_cbor_internal(true, tag_handler); break; case input_format_t::msgpack: @@ -93,11 +118,11 @@ class binary_reader break; default: // LCOV_EXCL_LINE - assert(false); // LCOV_EXCL_LINE + JSON_ASSERT(false); // LCOV_EXCL_LINE } // strict mode: next byte must be EOF - if (result and strict) + if (result && strict) { if (format == input_format_t::ubjson) { @@ -108,7 +133,7 @@ class binary_reader get(); } - if (JSON_HEDLEY_UNLIKELY(current != std::char_traits::eof())) + if (JSON_HEDLEY_UNLIKELY(current != std::char_traits::eof())) { return sax->parse_error(chars_read, get_token_string(), parse_error::create(110, chars_read, exception_message(format, "expected end of input; last byte: 0x" + get_token_string(), "value"))); @@ -118,18 +143,6 @@ class binary_reader return result; } - /*! - @brief determine system byte order - - @return true if and only if system's byte order is little endian - - @note from http://stackoverflow.com/a/1001328/266378 - */ - static constexpr bool little_endianess(int num = 1) noexcept - { - return *reinterpret_cast(&num) == 1; - } - private: ////////// // BSON // @@ -141,15 +154,15 @@ class binary_reader */ bool parse_bson_internal() { - std::int32_t document_size; + std::int32_t document_size{}; get_number(input_format_t::bson, document_size); - if (JSON_HEDLEY_UNLIKELY(not sax->start_object(std::size_t(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(std::size_t(-1)))) { return false; } - if (JSON_HEDLEY_UNLIKELY(not parse_bson_element_list(/*is_array*/false))) + if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_list(/*is_array*/false))) { return false; } @@ -170,7 +183,7 @@ class binary_reader while (true) { get(); - if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::bson, "cstring"))) + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::bson, "cstring"))) { return false; } @@ -178,10 +191,8 @@ class binary_reader { return true; } - *out++ = static_cast(current); + *out++ = static_cast(current); } - - return true; } /*! @@ -204,7 +215,33 @@ class binary_reader return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, "string length must be at least 1, is " + std::to_string(len), "string"))); } - return get_string(input_format_t::bson, len - static_cast(1), result) and get() != std::char_traits::eof(); + return get_string(input_format_t::bson, len - static_cast(1), result) && get() != std::char_traits::eof(); + } + + /*! + @brief Parses a byte array input of length @a len from the BSON input. + @param[in] len The length of the byte array to be read. + @param[in, out] result A reference to the binary variable where the read + array is to be stored. + @tparam NumberType The type of the length @a len + @pre len >= 0 + @return `true` if the byte array was successfully parsed + */ + template + bool get_bson_binary(const NumberType len, binary_t& result) + { + if (JSON_HEDLEY_UNLIKELY(len < 0)) + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::bson, "byte array length cannot be negative, is " + std::to_string(len), "binary"))); + } + + // All BSON binary values have a subtype + std::uint8_t subtype{}; + get_number(input_format_t::bson, subtype); + result.set_subtype(subtype); + + return get_binary(input_format_t::bson, len, result); } /*! @@ -217,22 +254,22 @@ class binary_reader Unsupported BSON record type 0x... @return whether a valid BSON-object/array was passed to the SAX parser */ - bool parse_bson_element_internal(const int element_type, + bool parse_bson_element_internal(const char_int_type element_type, const std::size_t element_type_parse_position) { switch (element_type) { case 0x01: // double { - double number; - return get_number(input_format_t::bson, number) and sax->number_float(static_cast(number), ""); + double number{}; + return get_number(input_format_t::bson, number) && sax->number_float(static_cast(number), ""); } case 0x02: // string { - std::int32_t len; + std::int32_t len{}; string_t value; - return get_number(input_format_t::bson, len) and get_bson_string(len, value) and sax->string(value); + return get_number(input_format_t::bson, len) && get_bson_string(len, value) && sax->string(value); } case 0x03: // object @@ -245,6 +282,13 @@ class binary_reader return parse_bson_array(); } + case 0x05: // binary + { + std::int32_t len{}; + binary_t value; + return get_number(input_format_t::bson, len) && get_bson_binary(len, value) && sax->binary(value); + } + case 0x08: // boolean { return sax->boolean(get() != 0); @@ -257,14 +301,14 @@ class binary_reader case 0x10: // int32 { - std::int32_t value; - return get_number(input_format_t::bson, value) and sax->number_integer(value); + std::int32_t value{}; + return get_number(input_format_t::bson, value) && sax->number_integer(value); } case 0x12: // int64 { - std::int64_t value; - return get_number(input_format_t::bson, value) and sax->number_integer(value); + std::int64_t value{}; + return get_number(input_format_t::bson, value) && sax->number_integer(value); } default: // anything else not supported (yet) @@ -291,25 +335,26 @@ class binary_reader bool parse_bson_element_list(const bool is_array) { string_t key; - while (int element_type = get()) + + while (auto element_type = get()) { - if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::bson, "element list"))) + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::bson, "element list"))) { return false; } const std::size_t element_type_parse_position = chars_read; - if (JSON_HEDLEY_UNLIKELY(not get_bson_cstr(key))) + if (JSON_HEDLEY_UNLIKELY(!get_bson_cstr(key))) { return false; } - if (not is_array and not sax->key(key)) + if (!is_array && !sax->key(key)) { return false; } - if (JSON_HEDLEY_UNLIKELY(not parse_bson_element_internal(element_type, element_type_parse_position))) + if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_internal(element_type, element_type_parse_position))) { return false; } @@ -327,15 +372,15 @@ class binary_reader */ bool parse_bson_array() { - std::int32_t document_size; + std::int32_t document_size{}; get_number(input_format_t::bson, document_size); - if (JSON_HEDLEY_UNLIKELY(not sax->start_array(std::size_t(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(std::size_t(-1)))) { return false; } - if (JSON_HEDLEY_UNLIKELY(not parse_bson_element_list(/*is_array*/true))) + if (JSON_HEDLEY_UNLIKELY(!parse_bson_element_list(/*is_array*/true))) { return false; } @@ -349,17 +394,19 @@ class binary_reader /*! @param[in] get_char whether a new character should be retrieved from the - input (true, default) or whether the last read - character should be considered instead + input (true) or whether the last read character should + be considered instead (false) + @param[in] tag_handler how CBOR tags should be treated @return whether a valid CBOR value was passed to the SAX parser */ - bool parse_cbor_internal(const bool get_char = true) + bool parse_cbor_internal(const bool get_char, + const cbor_tag_handler_t tag_handler) { switch (get_char ? get() : current) { // EOF - case std::char_traits::eof(): + case std::char_traits::eof(): return unexpect_eof(input_format_t::cbor, "value"); // Integer 0x00..0x17 (0..23) @@ -391,26 +438,26 @@ class binary_reader case 0x18: // Unsigned integer (one-byte uint8_t follows) { - std::uint8_t number; - return get_number(input_format_t::cbor, number) and sax->number_unsigned(number); + std::uint8_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); } case 0x19: // Unsigned integer (two-byte uint16_t follows) { - std::uint16_t number; - return get_number(input_format_t::cbor, number) and sax->number_unsigned(number); + std::uint16_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); } case 0x1A: // Unsigned integer (four-byte uint32_t follows) { - std::uint32_t number; - return get_number(input_format_t::cbor, number) and sax->number_unsigned(number); + std::uint32_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); } case 0x1B: // Unsigned integer (eight-byte uint64_t follows) { - std::uint64_t number; - return get_number(input_format_t::cbor, number) and sax->number_unsigned(number); + std::uint64_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_unsigned(number); } // Negative integer -1-0x00..-1-0x17 (-1..-24) @@ -442,29 +489,64 @@ class binary_reader case 0x38: // Negative integer (one-byte uint8_t follows) { - std::uint8_t number; - return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast(-1) - number); + std::uint8_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - number); } case 0x39: // Negative integer -1-n (two-byte uint16_t follows) { - std::uint16_t number; - return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast(-1) - number); + std::uint16_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - number); } case 0x3A: // Negative integer -1-n (four-byte uint32_t follows) { - std::uint32_t number; - return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast(-1) - number); + std::uint32_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - number); } case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows) { - std::uint64_t number; - return get_number(input_format_t::cbor, number) and sax->number_integer(static_cast(-1) + std::uint64_t number{}; + return get_number(input_format_t::cbor, number) && sax->number_integer(static_cast(-1) - static_cast(number)); } + // Binary data (0x00..0x17 bytes follow) + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + case 0x58: // Binary data (one-byte uint8_t for n follows) + case 0x59: // Binary data (two-byte uint16_t for n follow) + case 0x5A: // Binary data (four-byte uint32_t for n follow) + case 0x5B: // Binary data (eight-byte uint64_t for n follow) + case 0x5F: // Binary data (indefinite length) + { + binary_t b; + return get_cbor_binary(b) && sax->binary(b); + } + // UTF-8 string (0x00..0x17 bytes follow) case 0x60: case 0x61: @@ -497,7 +579,7 @@ class binary_reader case 0x7F: // UTF-8 string (indefinite length) { string_t s; - return get_cbor_string(s) and sax->string(s); + return get_cbor_string(s) && sax->string(s); } // array (0x00..0x17 data items follow) @@ -525,34 +607,34 @@ class binary_reader case 0x95: case 0x96: case 0x97: - return get_cbor_array(static_cast(static_cast(current) & 0x1Fu)); + return get_cbor_array(static_cast(static_cast(current) & 0x1Fu), tag_handler); case 0x98: // array (one-byte uint8_t for n follows) { - std::uint8_t len; - return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast(len)); + std::uint8_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast(len), tag_handler); } case 0x99: // array (two-byte uint16_t for n follow) { - std::uint16_t len; - return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast(len)); + std::uint16_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast(len), tag_handler); } case 0x9A: // array (four-byte uint32_t for n follow) { - std::uint32_t len; - return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast(len)); + std::uint32_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast(len), tag_handler); } case 0x9B: // array (eight-byte uint64_t for n follow) { - std::uint64_t len; - return get_number(input_format_t::cbor, len) and get_cbor_array(static_cast(len)); + std::uint64_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_array(static_cast(len), tag_handler); } case 0x9F: // array (indefinite length) - return get_cbor_array(std::size_t(-1)); + return get_cbor_array(std::size_t(-1), tag_handler); // map (0x00..0x17 pairs of data items follow) case 0xA0: @@ -579,34 +661,101 @@ class binary_reader case 0xB5: case 0xB6: case 0xB7: - return get_cbor_object(static_cast(static_cast(current) & 0x1Fu)); + return get_cbor_object(static_cast(static_cast(current) & 0x1Fu), tag_handler); case 0xB8: // map (one-byte uint8_t for n follows) { - std::uint8_t len; - return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast(len)); + std::uint8_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast(len), tag_handler); } case 0xB9: // map (two-byte uint16_t for n follow) { - std::uint16_t len; - return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast(len)); + std::uint16_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast(len), tag_handler); } case 0xBA: // map (four-byte uint32_t for n follow) { - std::uint32_t len; - return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast(len)); + std::uint32_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast(len), tag_handler); } case 0xBB: // map (eight-byte uint64_t for n follow) { - std::uint64_t len; - return get_number(input_format_t::cbor, len) and get_cbor_object(static_cast(len)); + std::uint64_t len{}; + return get_number(input_format_t::cbor, len) && get_cbor_object(static_cast(len), tag_handler); } case 0xBF: // map (indefinite length) - return get_cbor_object(std::size_t(-1)); + return get_cbor_object(std::size_t(-1), tag_handler); + + case 0xC6: // tagged item + case 0xC7: + case 0xC8: + case 0xC9: + case 0xCA: + case 0xCB: + case 0xCC: + case 0xCD: + case 0xCE: + case 0xCF: + case 0xD0: + case 0xD1: + case 0xD2: + case 0xD3: + case 0xD4: + case 0xD8: // tagged item (1 bytes follow) + case 0xD9: // tagged item (2 bytes follow) + case 0xDA: // tagged item (4 bytes follow) + case 0xDB: // tagged item (8 bytes follow) + { + switch (tag_handler) + { + case cbor_tag_handler_t::error: + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(112, chars_read, exception_message(input_format_t::cbor, "invalid byte: 0x" + last_token, "value"))); + } + + case cbor_tag_handler_t::ignore: + { + switch (current) + { + case 0xD8: + { + std::uint8_t len{}; + get_number(input_format_t::cbor, len); + break; + } + case 0xD9: + { + std::uint16_t len{}; + get_number(input_format_t::cbor, len); + break; + } + case 0xDA: + { + std::uint32_t len{}; + get_number(input_format_t::cbor, len); + break; + } + case 0xDB: + { + std::uint64_t len{}; + get_number(input_format_t::cbor, len); + break; + } + default: + break; + } + return parse_cbor_internal(true, tag_handler); + } + + default: // LCOV_EXCL_LINE + JSON_ASSERT(false); // LCOV_EXCL_LINE + } + } case 0xF4: // false return sax->boolean(false); @@ -619,13 +768,13 @@ class binary_reader case 0xF9: // Half-Precision Float (two-byte IEEE 754) { - const int byte1_raw = get(); - if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::cbor, "number"))) + const auto byte1_raw = get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "number"))) { return false; } - const int byte2_raw = get(); - if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::cbor, "number"))) + const auto byte2_raw = get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "number"))) { return false; } @@ -646,8 +795,8 @@ class binary_reader { const int exp = (half >> 10u) & 0x1Fu; const unsigned int mant = half & 0x3FFu; - assert(0 <= exp and exp <= 32); - assert(mant <= 1024); + JSON_ASSERT(0 <= exp&& exp <= 32); + JSON_ASSERT(mant <= 1024); switch (exp) { case 0: @@ -667,14 +816,14 @@ class binary_reader case 0xFA: // Single-Precision Float (four-byte IEEE 754) { - float number; - return get_number(input_format_t::cbor, number) and sax->number_float(static_cast(number), ""); + float number{}; + return get_number(input_format_t::cbor, number) && sax->number_float(static_cast(number), ""); } case 0xFB: // Double-Precision Float (eight-byte IEEE 754) { - double number; - return get_number(input_format_t::cbor, number) and sax->number_float(static_cast(number), ""); + double number{}; + return get_number(input_format_t::cbor, number) && sax->number_float(static_cast(number), ""); } default: // anything else (0xFF is handled inside the other types) @@ -698,7 +847,7 @@ class binary_reader */ bool get_cbor_string(string_t& result) { - if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::cbor, "string"))) + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "string"))) { return false; } @@ -736,26 +885,26 @@ class binary_reader case 0x78: // UTF-8 string (one-byte uint8_t for n follows) { - std::uint8_t len; - return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result); + std::uint8_t len{}; + return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); } case 0x79: // UTF-8 string (two-byte uint16_t for n follow) { - std::uint16_t len; - return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result); + std::uint16_t len{}; + return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); } case 0x7A: // UTF-8 string (four-byte uint32_t for n follow) { - std::uint32_t len; - return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result); + std::uint32_t len{}; + return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); } case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow) { - std::uint64_t len; - return get_number(input_format_t::cbor, len) and get_string(input_format_t::cbor, len, result); + std::uint64_t len{}; + return get_number(input_format_t::cbor, len) && get_string(input_format_t::cbor, len, result); } case 0x7F: // UTF-8 string (indefinite length) @@ -763,7 +912,7 @@ class binary_reader while (get() != 0xFF) { string_t chunk; - if (not get_cbor_string(chunk)) + if (!get_cbor_string(chunk)) { return false; } @@ -780,14 +929,115 @@ class binary_reader } } + /*! + @brief reads a CBOR byte array + + This function first reads starting bytes to determine the expected + byte array length and then copies this number of bytes into the byte array. + Additionally, CBOR's byte arrays with indefinite lengths are supported. + + @param[out] result created byte array + + @return whether byte array creation completed + */ + bool get_cbor_binary(binary_t& result) + { + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::cbor, "binary"))) + { + return false; + } + + switch (current) + { + // Binary data (0x00..0x17 bytes follow) + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x50: + case 0x51: + case 0x52: + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + { + return get_binary(input_format_t::cbor, static_cast(current) & 0x1Fu, result); + } + + case 0x58: // Binary data (one-byte uint8_t for n follows) + { + std::uint8_t len{}; + return get_number(input_format_t::cbor, len) && + get_binary(input_format_t::cbor, len, result); + } + + case 0x59: // Binary data (two-byte uint16_t for n follow) + { + std::uint16_t len{}; + return get_number(input_format_t::cbor, len) && + get_binary(input_format_t::cbor, len, result); + } + + case 0x5A: // Binary data (four-byte uint32_t for n follow) + { + std::uint32_t len{}; + return get_number(input_format_t::cbor, len) && + get_binary(input_format_t::cbor, len, result); + } + + case 0x5B: // Binary data (eight-byte uint64_t for n follow) + { + std::uint64_t len{}; + return get_number(input_format_t::cbor, len) && + get_binary(input_format_t::cbor, len, result); + } + + case 0x5F: // Binary data (indefinite length) + { + while (get() != 0xFF) + { + binary_t chunk; + if (!get_cbor_binary(chunk)) + { + return false; + } + result.insert(result.end(), chunk.begin(), chunk.end()); + } + return true; + } + + default: + { + auto last_token = get_token_string(); + return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::cbor, "expected length specification (0x40-0x5B) or indefinite binary array type (0x5F); last byte: 0x" + last_token, "binary"))); + } + } + } + /*! @param[in] len the length of the array or std::size_t(-1) for an array of indefinite size + @param[in] tag_handler how CBOR tags should be treated @return whether array creation completed */ - bool get_cbor_array(const std::size_t len) + bool get_cbor_array(const std::size_t len, + const cbor_tag_handler_t tag_handler) { - if (JSON_HEDLEY_UNLIKELY(not sax->start_array(len))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(len))) { return false; } @@ -796,7 +1046,7 @@ class binary_reader { for (std::size_t i = 0; i < len; ++i) { - if (JSON_HEDLEY_UNLIKELY(not parse_cbor_internal())) + if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler))) { return false; } @@ -806,7 +1056,7 @@ class binary_reader { while (get() != 0xFF) { - if (JSON_HEDLEY_UNLIKELY(not parse_cbor_internal(false))) + if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(false, tag_handler))) { return false; } @@ -819,11 +1069,13 @@ class binary_reader /*! @param[in] len the length of the object or std::size_t(-1) for an object of indefinite size + @param[in] tag_handler how CBOR tags should be treated @return whether object creation completed */ - bool get_cbor_object(const std::size_t len) + bool get_cbor_object(const std::size_t len, + const cbor_tag_handler_t tag_handler) { - if (JSON_HEDLEY_UNLIKELY(not sax->start_object(len))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(len))) { return false; } @@ -834,12 +1086,12 @@ class binary_reader for (std::size_t i = 0; i < len; ++i) { get(); - if (JSON_HEDLEY_UNLIKELY(not get_cbor_string(key) or not sax->key(key))) + if (JSON_HEDLEY_UNLIKELY(!get_cbor_string(key) || !sax->key(key))) { return false; } - if (JSON_HEDLEY_UNLIKELY(not parse_cbor_internal())) + if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler))) { return false; } @@ -850,12 +1102,12 @@ class binary_reader { while (get() != 0xFF) { - if (JSON_HEDLEY_UNLIKELY(not get_cbor_string(key) or not sax->key(key))) + if (JSON_HEDLEY_UNLIKELY(!get_cbor_string(key) || !sax->key(key))) { return false; } - if (JSON_HEDLEY_UNLIKELY(not parse_cbor_internal())) + if (JSON_HEDLEY_UNLIKELY(!parse_cbor_internal(true, tag_handler))) { return false; } @@ -878,7 +1130,7 @@ class binary_reader switch (get()) { // EOF - case std::char_traits::eof(): + case std::char_traits::eof(): return unexpect_eof(input_format_t::msgpack, "value"); // positive fixint @@ -1088,7 +1340,7 @@ class binary_reader case 0xDB: // str 32 { string_t s; - return get_msgpack_string(s) and sax->string(s); + return get_msgpack_string(s) && sax->string(s); } case 0xC0: // nil @@ -1100,88 +1352,104 @@ class binary_reader case 0xC3: // true return sax->boolean(true); + case 0xC4: // bin 8 + case 0xC5: // bin 16 + case 0xC6: // bin 32 + case 0xC7: // ext 8 + case 0xC8: // ext 16 + case 0xC9: // ext 32 + case 0xD4: // fixext 1 + case 0xD5: // fixext 2 + case 0xD6: // fixext 4 + case 0xD7: // fixext 8 + case 0xD8: // fixext 16 + { + binary_t b; + return get_msgpack_binary(b) && sax->binary(b); + } + case 0xCA: // float 32 { - float number; - return get_number(input_format_t::msgpack, number) and sax->number_float(static_cast(number), ""); + float number{}; + return get_number(input_format_t::msgpack, number) && sax->number_float(static_cast(number), ""); } case 0xCB: // float 64 { - double number; - return get_number(input_format_t::msgpack, number) and sax->number_float(static_cast(number), ""); + double number{}; + return get_number(input_format_t::msgpack, number) && sax->number_float(static_cast(number), ""); } case 0xCC: // uint 8 { - std::uint8_t number; - return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number); + std::uint8_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); } case 0xCD: // uint 16 { - std::uint16_t number; - return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number); + std::uint16_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); } case 0xCE: // uint 32 { - std::uint32_t number; - return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number); + std::uint32_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); } case 0xCF: // uint 64 { - std::uint64_t number; - return get_number(input_format_t::msgpack, number) and sax->number_unsigned(number); + std::uint64_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_unsigned(number); } case 0xD0: // int 8 { - std::int8_t number; - return get_number(input_format_t::msgpack, number) and sax->number_integer(number); + std::int8_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_integer(number); } case 0xD1: // int 16 { - std::int16_t number; - return get_number(input_format_t::msgpack, number) and sax->number_integer(number); + std::int16_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_integer(number); } case 0xD2: // int 32 { - std::int32_t number; - return get_number(input_format_t::msgpack, number) and sax->number_integer(number); + std::int32_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_integer(number); } case 0xD3: // int 64 { - std::int64_t number; - return get_number(input_format_t::msgpack, number) and sax->number_integer(number); + std::int64_t number{}; + return get_number(input_format_t::msgpack, number) && sax->number_integer(number); } case 0xDC: // array 16 { - std::uint16_t len; - return get_number(input_format_t::msgpack, len) and get_msgpack_array(static_cast(len)); + std::uint16_t len{}; + return get_number(input_format_t::msgpack, len) && get_msgpack_array(static_cast(len)); } case 0xDD: // array 32 { - std::uint32_t len; - return get_number(input_format_t::msgpack, len) and get_msgpack_array(static_cast(len)); + std::uint32_t len{}; + return get_number(input_format_t::msgpack, len) && get_msgpack_array(static_cast(len)); } case 0xDE: // map 16 { - std::uint16_t len; - return get_number(input_format_t::msgpack, len) and get_msgpack_object(static_cast(len)); + std::uint16_t len{}; + return get_number(input_format_t::msgpack, len) && get_msgpack_object(static_cast(len)); } case 0xDF: // map 32 { - std::uint32_t len; - return get_number(input_format_t::msgpack, len) and get_msgpack_object(static_cast(len)); + std::uint32_t len{}; + return get_number(input_format_t::msgpack, len) && get_msgpack_object(static_cast(len)); } // negative fixint @@ -1239,7 +1507,7 @@ class binary_reader */ bool get_msgpack_string(string_t& result) { - if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::msgpack, "string"))) + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::msgpack, "string"))) { return false; } @@ -1285,20 +1553,20 @@ class binary_reader case 0xD9: // str 8 { - std::uint8_t len; - return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result); + std::uint8_t len{}; + return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result); } case 0xDA: // str 16 { - std::uint16_t len; - return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result); + std::uint16_t len{}; + return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result); } case 0xDB: // str 32 { - std::uint32_t len; - return get_number(input_format_t::msgpack, len) and get_string(input_format_t::msgpack, len, result); + std::uint32_t len{}; + return get_number(input_format_t::msgpack, len) && get_string(input_format_t::msgpack, len, result); } default: @@ -1309,20 +1577,137 @@ class binary_reader } } + /*! + @brief reads a MessagePack byte array + + This function first reads starting bytes to determine the expected + byte array length and then copies this number of bytes into a byte array. + + @param[out] result created byte array + + @return whether byte array creation completed + */ + bool get_msgpack_binary(binary_t& result) + { + // helper function to set the subtype + auto assign_and_return_true = [&result](std::int8_t subtype) + { + result.set_subtype(static_cast(subtype)); + return true; + }; + + switch (current) + { + case 0xC4: // bin 8 + { + std::uint8_t len{}; + return get_number(input_format_t::msgpack, len) && + get_binary(input_format_t::msgpack, len, result); + } + + case 0xC5: // bin 16 + { + std::uint16_t len{}; + return get_number(input_format_t::msgpack, len) && + get_binary(input_format_t::msgpack, len, result); + } + + case 0xC6: // bin 32 + { + std::uint32_t len{}; + return get_number(input_format_t::msgpack, len) && + get_binary(input_format_t::msgpack, len, result); + } + + case 0xC7: // ext 8 + { + std::uint8_t len{}; + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, len) && + get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, len, result) && + assign_and_return_true(subtype); + } + + case 0xC8: // ext 16 + { + std::uint16_t len{}; + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, len) && + get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, len, result) && + assign_and_return_true(subtype); + } + + case 0xC9: // ext 32 + { + std::uint32_t len{}; + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, len) && + get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, len, result) && + assign_and_return_true(subtype); + } + + case 0xD4: // fixext 1 + { + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, 1, result) && + assign_and_return_true(subtype); + } + + case 0xD5: // fixext 2 + { + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, 2, result) && + assign_and_return_true(subtype); + } + + case 0xD6: // fixext 4 + { + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, 4, result) && + assign_and_return_true(subtype); + } + + case 0xD7: // fixext 8 + { + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, 8, result) && + assign_and_return_true(subtype); + } + + case 0xD8: // fixext 16 + { + std::int8_t subtype{}; + return get_number(input_format_t::msgpack, subtype) && + get_binary(input_format_t::msgpack, 16, result) && + assign_and_return_true(subtype); + } + + default: // LCOV_EXCL_LINE + return false; // LCOV_EXCL_LINE + } + } + /*! @param[in] len the length of the array @return whether array creation completed */ bool get_msgpack_array(const std::size_t len) { - if (JSON_HEDLEY_UNLIKELY(not sax->start_array(len))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(len))) { return false; } for (std::size_t i = 0; i < len; ++i) { - if (JSON_HEDLEY_UNLIKELY(not parse_msgpack_internal())) + if (JSON_HEDLEY_UNLIKELY(!parse_msgpack_internal())) { return false; } @@ -1337,7 +1722,7 @@ class binary_reader */ bool get_msgpack_object(const std::size_t len) { - if (JSON_HEDLEY_UNLIKELY(not sax->start_object(len))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(len))) { return false; } @@ -1346,12 +1731,12 @@ class binary_reader for (std::size_t i = 0; i < len; ++i) { get(); - if (JSON_HEDLEY_UNLIKELY(not get_msgpack_string(key) or not sax->key(key))) + if (JSON_HEDLEY_UNLIKELY(!get_msgpack_string(key) || !sax->key(key))) { return false; } - if (JSON_HEDLEY_UNLIKELY(not parse_msgpack_internal())) + if (JSON_HEDLEY_UNLIKELY(!parse_msgpack_internal())) { return false; } @@ -1398,7 +1783,7 @@ class binary_reader get(); // TODO(niels): may we ignore N here? } - if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "value"))) + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "value"))) { return false; } @@ -1407,32 +1792,32 @@ class binary_reader { case 'U': { - std::uint8_t len; - return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result); + std::uint8_t len{}; + return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result); } case 'i': { - std::int8_t len; - return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result); + std::int8_t len{}; + return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result); } case 'I': { - std::int16_t len; - return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result); + std::int16_t len{}; + return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result); } case 'l': { - std::int32_t len; - return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result); + std::int32_t len{}; + return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result); } case 'L': { - std::int64_t len; - return get_number(input_format_t::ubjson, len) and get_string(input_format_t::ubjson, len, result); + std::int64_t len{}; + return get_number(input_format_t::ubjson, len) && get_string(input_format_t::ubjson, len, result); } default: @@ -1451,8 +1836,8 @@ class binary_reader { case 'U': { - std::uint8_t number; - if (JSON_HEDLEY_UNLIKELY(not get_number(input_format_t::ubjson, number))) + std::uint8_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number))) { return false; } @@ -1462,8 +1847,8 @@ class binary_reader case 'i': { - std::int8_t number; - if (JSON_HEDLEY_UNLIKELY(not get_number(input_format_t::ubjson, number))) + std::int8_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number))) { return false; } @@ -1473,8 +1858,8 @@ class binary_reader case 'I': { - std::int16_t number; - if (JSON_HEDLEY_UNLIKELY(not get_number(input_format_t::ubjson, number))) + std::int16_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number))) { return false; } @@ -1484,8 +1869,8 @@ class binary_reader case 'l': { - std::int32_t number; - if (JSON_HEDLEY_UNLIKELY(not get_number(input_format_t::ubjson, number))) + std::int32_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number))) { return false; } @@ -1495,8 +1880,8 @@ class binary_reader case 'L': { - std::int64_t number; - if (JSON_HEDLEY_UNLIKELY(not get_number(input_format_t::ubjson, number))) + std::int64_t number{}; + if (JSON_HEDLEY_UNLIKELY(!get_number(input_format_t::ubjson, number))) { return false; } @@ -1522,7 +1907,7 @@ class binary_reader @return whether pair creation completed */ - bool get_ubjson_size_type(std::pair& result) + bool get_ubjson_size_type(std::pair& result) { result.first = string_t::npos; // size result.second = 0; // type @@ -1532,7 +1917,7 @@ class binary_reader if (current == '$') { result.second = get(); // must not ignore 'N', because 'N' maybe the type - if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "type"))) + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "type"))) { return false; } @@ -1540,7 +1925,7 @@ class binary_reader get_ignore_noop(); if (JSON_HEDLEY_UNLIKELY(current != '#')) { - if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "value"))) + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "value"))) { return false; } @@ -1563,11 +1948,11 @@ class binary_reader @param prefix the previously read or set type prefix @return whether value creation completed */ - bool get_ubjson_value(const int prefix) + bool get_ubjson_value(const char_int_type prefix) { switch (prefix) { - case std::char_traits::eof(): // EOF + case std::char_traits::eof(): // EOF return unexpect_eof(input_format_t::ubjson, "value"); case 'T': // true @@ -1580,50 +1965,55 @@ class binary_reader case 'U': { - std::uint8_t number; - return get_number(input_format_t::ubjson, number) and sax->number_unsigned(number); + std::uint8_t number{}; + return get_number(input_format_t::ubjson, number) && sax->number_unsigned(number); } case 'i': { - std::int8_t number; - return get_number(input_format_t::ubjson, number) and sax->number_integer(number); + std::int8_t number{}; + return get_number(input_format_t::ubjson, number) && sax->number_integer(number); } case 'I': { - std::int16_t number; - return get_number(input_format_t::ubjson, number) and sax->number_integer(number); + std::int16_t number{}; + return get_number(input_format_t::ubjson, number) && sax->number_integer(number); } case 'l': { - std::int32_t number; - return get_number(input_format_t::ubjson, number) and sax->number_integer(number); + std::int32_t number{}; + return get_number(input_format_t::ubjson, number) && sax->number_integer(number); } case 'L': { - std::int64_t number; - return get_number(input_format_t::ubjson, number) and sax->number_integer(number); + std::int64_t number{}; + return get_number(input_format_t::ubjson, number) && sax->number_integer(number); } case 'd': { - float number; - return get_number(input_format_t::ubjson, number) and sax->number_float(static_cast(number), ""); + float number{}; + return get_number(input_format_t::ubjson, number) && sax->number_float(static_cast(number), ""); } case 'D': { - double number; - return get_number(input_format_t::ubjson, number) and sax->number_float(static_cast(number), ""); + double number{}; + return get_number(input_format_t::ubjson, number) && sax->number_float(static_cast(number), ""); + } + + case 'H': + { + return get_ubjson_high_precision_number(); } case 'C': // char { get(); - if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(input_format_t::ubjson, "char"))) + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "char"))) { return false; } @@ -1632,14 +2022,14 @@ class binary_reader auto last_token = get_token_string(); return sax->parse_error(chars_read, last_token, parse_error::create(113, chars_read, exception_message(input_format_t::ubjson, "byte after 'C' must be in range 0x00..0x7F; last byte: 0x" + last_token, "char"))); } - string_t s(1, static_cast(current)); + string_t s(1, static_cast(current)); return sax->string(s); } case 'S': // string { string_t s; - return get_ubjson_string(s) and sax->string(s); + return get_ubjson_string(s) && sax->string(s); } case '[': // array @@ -1661,15 +2051,15 @@ class binary_reader */ bool get_ubjson_array() { - std::pair size_and_type; - if (JSON_HEDLEY_UNLIKELY(not get_ubjson_size_type(size_and_type))) + std::pair size_and_type; + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_type(size_and_type))) { return false; } if (size_and_type.first != string_t::npos) { - if (JSON_HEDLEY_UNLIKELY(not sax->start_array(size_and_type.first))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(size_and_type.first))) { return false; } @@ -1680,7 +2070,7 @@ class binary_reader { for (std::size_t i = 0; i < size_and_type.first; ++i) { - if (JSON_HEDLEY_UNLIKELY(not get_ubjson_value(size_and_type.second))) + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_value(size_and_type.second))) { return false; } @@ -1691,7 +2081,7 @@ class binary_reader { for (std::size_t i = 0; i < size_and_type.first; ++i) { - if (JSON_HEDLEY_UNLIKELY(not parse_ubjson_internal())) + if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal())) { return false; } @@ -1700,14 +2090,14 @@ class binary_reader } else { - if (JSON_HEDLEY_UNLIKELY(not sax->start_array(std::size_t(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(std::size_t(-1)))) { return false; } while (current != ']') { - if (JSON_HEDLEY_UNLIKELY(not parse_ubjson_internal(false))) + if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal(false))) { return false; } @@ -1723,8 +2113,8 @@ class binary_reader */ bool get_ubjson_object() { - std::pair size_and_type; - if (JSON_HEDLEY_UNLIKELY(not get_ubjson_size_type(size_and_type))) + std::pair size_and_type; + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_size_type(size_and_type))) { return false; } @@ -1732,7 +2122,7 @@ class binary_reader string_t key; if (size_and_type.first != string_t::npos) { - if (JSON_HEDLEY_UNLIKELY(not sax->start_object(size_and_type.first))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(size_and_type.first))) { return false; } @@ -1741,11 +2131,11 @@ class binary_reader { for (std::size_t i = 0; i < size_and_type.first; ++i) { - if (JSON_HEDLEY_UNLIKELY(not get_ubjson_string(key) or not sax->key(key))) + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key) || !sax->key(key))) { return false; } - if (JSON_HEDLEY_UNLIKELY(not get_ubjson_value(size_and_type.second))) + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_value(size_and_type.second))) { return false; } @@ -1756,11 +2146,11 @@ class binary_reader { for (std::size_t i = 0; i < size_and_type.first; ++i) { - if (JSON_HEDLEY_UNLIKELY(not get_ubjson_string(key) or not sax->key(key))) + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key) || !sax->key(key))) { return false; } - if (JSON_HEDLEY_UNLIKELY(not parse_ubjson_internal())) + if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal())) { return false; } @@ -1770,18 +2160,18 @@ class binary_reader } else { - if (JSON_HEDLEY_UNLIKELY(not sax->start_object(std::size_t(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(std::size_t(-1)))) { return false; } while (current != '}') { - if (JSON_HEDLEY_UNLIKELY(not get_ubjson_string(key, false) or not sax->key(key))) + if (JSON_HEDLEY_UNLIKELY(!get_ubjson_string(key, false) || !sax->key(key))) { return false; } - if (JSON_HEDLEY_UNLIKELY(not parse_ubjson_internal())) + if (JSON_HEDLEY_UNLIKELY(!parse_ubjson_internal())) { return false; } @@ -1793,6 +2183,58 @@ class binary_reader return sax->end_object(); } + // Note, no reader for UBJSON binary types is implemented because they do + // not exist + + bool get_ubjson_high_precision_number() + { + // get size of following number string + std::size_t size{}; + auto res = get_ubjson_size_value(size); + if (JSON_HEDLEY_UNLIKELY(!res)) + { + return res; + } + + // get number string + std::vector number_vector; + for (std::size_t i = 0; i < size; ++i) + { + get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(input_format_t::ubjson, "number"))) + { + return false; + } + number_vector.push_back(static_cast(current)); + } + + // parse number string + auto number_ia = detail::input_adapter(std::forward(number_vector)); + auto number_lexer = detail::lexer(std::move(number_ia), false); + const auto result_number = number_lexer.scan(); + const auto number_string = number_lexer.get_token_string(); + const auto result_remainder = number_lexer.scan(); + + using token_type = typename detail::lexer_base::token_type; + + if (JSON_HEDLEY_UNLIKELY(result_remainder != token_type::end_of_input)) + { + return sax->parse_error(chars_read, number_string, parse_error::create(115, chars_read, exception_message(input_format_t::ubjson, "invalid number text: " + number_lexer.get_token_string(), "high-precision number"))); + } + + switch (result_number) + { + case token_type::value_integer: + return sax->number_integer(number_lexer.get_number_integer()); + case token_type::value_unsigned: + return sax->number_unsigned(number_lexer.get_number_unsigned()); + case token_type::value_float: + return sax->number_float(number_lexer.get_number_float(), std::move(number_string)); + default: + return sax->parse_error(chars_read, number_string, parse_error::create(115, chars_read, exception_message(input_format_t::ubjson, "invalid number text: " + number_lexer.get_token_string(), "high-precision number"))); + } + } + /////////////////////// // Utility functions // /////////////////////// @@ -1802,20 +2244,20 @@ class binary_reader This function provides the interface to the used input adapter. It does not throw in case the input reached EOF, but returns a -'ve valued - `std::char_traits::eof()` in that case. + `std::char_traits::eof()` in that case. @return character read from the input */ - int get() + char_int_type get() { ++chars_read; - return current = ia->get_character(); + return current = ia.get_character(); } /*! @return character read from the input after ignoring all 'N' entries */ - int get_ignore_noop() + char_int_type get_ignore_noop() { do { @@ -1847,7 +2289,7 @@ class binary_reader for (std::size_t i = 0; i < sizeof(NumberType); ++i) { get(); - if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(format, "number"))) + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "number"))) { return false; } @@ -1888,15 +2330,49 @@ class binary_reader string_t& result) { bool success = true; - std::generate_n(std::back_inserter(result), len, [this, &success, &format]() + for (NumberType i = 0; i < len; i++) + { + get(); + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "string"))) + { + success = false; + break; + } + result.push_back(static_cast(current)); + }; + return success; + } + + /*! + @brief create a byte array by reading bytes from the input + + @tparam NumberType the type of the number + @param[in] format the current format (for diagnostics) + @param[in] len number of bytes to read + @param[out] result byte array created by reading @a len bytes + + @return whether byte array creation completed + + @note We can not reserve @a len bytes for the result, because @a len + may be too large. Usually, @ref unexpect_eof() detects the end of + the input before we run out of memory. + */ + template + bool get_binary(const input_format_t format, + const NumberType len, + binary_t& result) + { + bool success = true; + for (NumberType i = 0; i < len; i++) { get(); - if (JSON_HEDLEY_UNLIKELY(not unexpect_eof(format, "string"))) + if (JSON_HEDLEY_UNLIKELY(!unexpect_eof(format, "binary"))) { success = false; + break; } - return static_cast(current); - }); + result.push_back(static_cast(current)); + } return success; } @@ -1908,7 +2384,7 @@ class binary_reader JSON_HEDLEY_NON_NULL(3) bool unexpect_eof(const input_format_t format, const char* context) const { - if (JSON_HEDLEY_UNLIKELY(current == std::char_traits::eof())) + if (JSON_HEDLEY_UNLIKELY(current == std::char_traits::eof())) { return sax->parse_error(chars_read, "", parse_error::create(110, chars_read, exception_message(format, "unexpected end of input", context))); @@ -1957,7 +2433,7 @@ class binary_reader break; default: // LCOV_EXCL_LINE - assert(false); // LCOV_EXCL_LINE + JSON_ASSERT(false); // LCOV_EXCL_LINE } return error_msg + " " + context + ": " + detail; @@ -1965,10 +2441,10 @@ class binary_reader private: /// input adapter - input_adapter_t ia = nullptr; + InputAdapterType ia; /// the current character - int current = std::char_traits::eof(); + char_int_type current = std::char_traits::eof(); /// the number of characters read std::size_t chars_read = 0; diff --git a/mock/nlohmann/detail/input/input_adapters.hpp b/mock/nlohmann/detail/input/input_adapters.hpp index 9512a771..63921ca5 100644 --- a/mock/nlohmann/detail/input/input_adapters.hpp +++ b/mock/nlohmann/detail/input/input_adapters.hpp @@ -1,7 +1,6 @@ #pragma once #include // array -#include // assert #include // size_t #include //FILE * #include // strlen @@ -27,36 +26,17 @@ enum class input_format_t { json, cbor, msgpack, ubjson, bson }; // input adapters // //////////////////// -/*! -@brief abstract input adapter interface - -Produces a stream of std::char_traits::int_type characters from a -std::istream, a buffer, or some other input type. Accepts the return of -exactly one non-EOF character for future input. The int_type characters -returned consist of all valid char values as positive values (typically -unsigned char), plus an EOF value outside that range, specified by the value -of the function std::char_traits::eof(). This value is typically -1, but -could be any arbitrary value which is not a valid char value. -*/ -struct input_adapter_protocol -{ - /// get a character [0,255] or std::char_traits::eof(). - virtual std::char_traits::int_type get_character() = 0; - virtual ~input_adapter_protocol() = default; -}; - -/// a type to simplify interfaces -using input_adapter_t = std::shared_ptr; - /*! Input adapter for stdio file access. This adapter read only 1 byte and do not use any buffer. This adapter is a very low level adapter. */ -class file_input_adapter : public input_adapter_protocol +class file_input_adapter { public: + using char_type = char; + JSON_HEDLEY_NON_NULL(2) - explicit file_input_adapter(std::FILE* f) noexcept + explicit file_input_adapter(std::FILE* f) noexcept : m_file(f) {} @@ -64,10 +44,9 @@ class file_input_adapter : public input_adapter_protocol file_input_adapter(const file_input_adapter&) = delete; file_input_adapter(file_input_adapter&&) = default; file_input_adapter& operator=(const file_input_adapter&) = delete; - file_input_adapter& operator=(file_input_adapter&&) = default; - ~file_input_adapter() override = default; + file_input_adapter& operator=(file_input_adapter&&) = delete; - std::char_traits::int_type get_character() noexcept override + std::char_traits::int_type get_character() noexcept { return std::fgetc(m_file); } @@ -87,92 +66,111 @@ characters following those used in parsing the JSON input. Clears the std::istream flags; any input errors (e.g., EOF) will be detected by the first subsequent call for input from the std::istream. */ -class input_stream_adapter : public input_adapter_protocol +class input_stream_adapter { public: - ~input_stream_adapter() override + using char_type = char; + + ~input_stream_adapter() { // clear stream flags; we use underlying streambuf I/O, do not // maintain ifstream flags, except eof - is.clear(is.rdstate() & std::ios::eofbit); + if (is != nullptr) + { + is->clear(is->rdstate() & std::ios::eofbit); + } } explicit input_stream_adapter(std::istream& i) - : is(i), sb(*i.rdbuf()) + : is(&i), sb(i.rdbuf()) {} // delete because of pointer members input_stream_adapter(const input_stream_adapter&) = delete; input_stream_adapter& operator=(input_stream_adapter&) = delete; - input_stream_adapter(input_stream_adapter&&) = delete; - input_stream_adapter& operator=(input_stream_adapter&&) = delete; + input_stream_adapter& operator=(input_stream_adapter&& rhs) = delete; + + input_stream_adapter(input_stream_adapter&& rhs) noexcept : is(rhs.is), sb(rhs.sb) + { + rhs.is = nullptr; + rhs.sb = nullptr; + } // std::istream/std::streambuf use std::char_traits::to_int_type, to // ensure that std::char_traits::eof() and the character 0xFF do not // end up as the same value, eg. 0xFFFFFFFF. - std::char_traits::int_type get_character() override + std::char_traits::int_type get_character() { - auto res = sb.sbumpc(); + auto res = sb->sbumpc(); // set eof manually, as we don't use the istream interface. - if (res == EOF) + if (JSON_HEDLEY_UNLIKELY(res == EOF)) { - is.clear(is.rdstate() | std::ios::eofbit); + is->clear(is->rdstate() | std::ios::eofbit); } return res; } private: /// the associated input stream - std::istream& is; - std::streambuf& sb; + std::istream* is = nullptr; + std::streambuf* sb = nullptr; }; -/// input adapter for buffer input -class input_buffer_adapter : public input_adapter_protocol +// General-purpose iterator-based adapter. It might not be as fast as +// theoretically possible for some containers, but it is extremely versatile. +template +class iterator_input_adapter { public: - input_buffer_adapter(const char* b, const std::size_t l) noexcept - : cursor(b), limit(b == nullptr ? nullptr : (b + l)) - {} + using char_type = typename std::iterator_traits::value_type; - // delete because of pointer members - input_buffer_adapter(const input_buffer_adapter&) = delete; - input_buffer_adapter& operator=(input_buffer_adapter&) = delete; - input_buffer_adapter(input_buffer_adapter&&) = delete; - input_buffer_adapter& operator=(input_buffer_adapter&&) = delete; - ~input_buffer_adapter() override = default; + iterator_input_adapter(IteratorType first, IteratorType last) + : current(std::move(first)), end(std::move(last)) {} - std::char_traits::int_type get_character() noexcept override + typename std::char_traits::int_type get_character() { - if (JSON_HEDLEY_LIKELY(cursor < limit)) + if (JSON_HEDLEY_LIKELY(current != end)) { - assert(cursor != nullptr and limit != nullptr); - return std::char_traits::to_int_type(*(cursor++)); + auto result = std::char_traits::to_int_type(*current); + std::advance(current, 1); + return result; + } + else + { + return std::char_traits::eof(); } - - return std::char_traits::eof(); } private: - /// pointer to the current character - const char* cursor; - /// pointer past the last character - const char* const limit; + IteratorType current; + IteratorType end; + + template + friend struct wide_string_input_helper; + + bool empty() const + { + return current == end; + } + }; -template -struct wide_string_input_helper + +template +struct wide_string_input_helper; + +template +struct wide_string_input_helper { // UTF-32 - static void fill_buffer(const WideStringType& str, - size_t& current_wchar, + static void fill_buffer(BaseInputAdapter& input, std::array::int_type, 4>& utf8_bytes, size_t& utf8_bytes_index, size_t& utf8_bytes_filled) { utf8_bytes_index = 0; - if (current_wchar == str.size()) + if (JSON_HEDLEY_UNLIKELY(input.empty())) { utf8_bytes[0] = std::char_traits::eof(); utf8_bytes_filled = 1; @@ -180,7 +178,7 @@ struct wide_string_input_helper else { // get the current character - const auto wc = static_cast(str[current_wchar++]); + const auto wc = input.get_character(); // UTF-32 to UTF-8 encoding if (wc < 0x80) @@ -190,23 +188,23 @@ struct wide_string_input_helper } else if (wc <= 0x7FF) { - utf8_bytes[0] = static_cast::int_type>(0xC0u | ((wc >> 6u) & 0x1Fu)); - utf8_bytes[1] = static_cast::int_type>(0x80u | (wc & 0x3Fu)); + utf8_bytes[0] = static_cast::int_type>(0xC0u | ((static_cast(wc) >> 6u) & 0x1Fu)); + utf8_bytes[1] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); utf8_bytes_filled = 2; } else if (wc <= 0xFFFF) { - utf8_bytes[0] = static_cast::int_type>(0xE0u | ((wc >> 12u) & 0x0Fu)); - utf8_bytes[1] = static_cast::int_type>(0x80u | ((wc >> 6u) & 0x3Fu)); - utf8_bytes[2] = static_cast::int_type>(0x80u | (wc & 0x3Fu)); + utf8_bytes[0] = static_cast::int_type>(0xE0u | ((static_cast(wc) >> 12u) & 0x0Fu)); + utf8_bytes[1] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 6u) & 0x3Fu)); + utf8_bytes[2] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); utf8_bytes_filled = 3; } else if (wc <= 0x10FFFF) { - utf8_bytes[0] = static_cast::int_type>(0xF0u | ((wc >> 18u) & 0x07u)); - utf8_bytes[1] = static_cast::int_type>(0x80u | ((wc >> 12u) & 0x3Fu)); - utf8_bytes[2] = static_cast::int_type>(0x80u | ((wc >> 6u) & 0x3Fu)); - utf8_bytes[3] = static_cast::int_type>(0x80u | (wc & 0x3Fu)); + utf8_bytes[0] = static_cast::int_type>(0xF0u | ((static_cast(wc) >> 18u) & 0x07u)); + utf8_bytes[1] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 12u) & 0x3Fu)); + utf8_bytes[2] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 6u) & 0x3Fu)); + utf8_bytes[3] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); utf8_bytes_filled = 4; } else @@ -219,19 +217,18 @@ struct wide_string_input_helper } }; -template -struct wide_string_input_helper +template +struct wide_string_input_helper { // UTF-16 - static void fill_buffer(const WideStringType& str, - size_t& current_wchar, + static void fill_buffer(BaseInputAdapter& input, std::array::int_type, 4>& utf8_bytes, size_t& utf8_bytes_index, size_t& utf8_bytes_filled) { utf8_bytes_index = 0; - if (current_wchar == str.size()) + if (JSON_HEDLEY_UNLIKELY(input.empty())) { utf8_bytes[0] = std::char_traits::eof(); utf8_bytes_filled = 1; @@ -239,7 +236,7 @@ struct wide_string_input_helper else { // get the current character - const auto wc = static_cast(str[current_wchar++]); + const auto wc = input.get_character(); // UTF-16 to UTF-8 encoding if (wc < 0x80) @@ -249,23 +246,23 @@ struct wide_string_input_helper } else if (wc <= 0x7FF) { - utf8_bytes[0] = static_cast::int_type>(0xC0u | ((wc >> 6u))); - utf8_bytes[1] = static_cast::int_type>(0x80u | (wc & 0x3Fu)); + utf8_bytes[0] = static_cast::int_type>(0xC0u | ((static_cast(wc) >> 6u))); + utf8_bytes[1] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); utf8_bytes_filled = 2; } - else if (0xD800 > wc or wc >= 0xE000) + else if (0xD800 > wc || wc >= 0xE000) { - utf8_bytes[0] = static_cast::int_type>(0xE0u | ((wc >> 12u))); - utf8_bytes[1] = static_cast::int_type>(0x80u | ((wc >> 6u) & 0x3Fu)); - utf8_bytes[2] = static_cast::int_type>(0x80u | (wc & 0x3Fu)); + utf8_bytes[0] = static_cast::int_type>(0xE0u | ((static_cast(wc) >> 12u))); + utf8_bytes[1] = static_cast::int_type>(0x80u | ((static_cast(wc) >> 6u) & 0x3Fu)); + utf8_bytes[2] = static_cast::int_type>(0x80u | (static_cast(wc) & 0x3Fu)); utf8_bytes_filled = 3; } else { - if (current_wchar < str.size()) + if (JSON_HEDLEY_UNLIKELY(!input.empty())) { - const auto wc2 = static_cast(str[current_wchar++]); - const auto charcode = 0x10000u + (((wc & 0x3FFu) << 10u) | (wc2 & 0x3FFu)); + const auto wc2 = static_cast(input.get_character()); + const auto charcode = 0x10000u + (((static_cast(wc) & 0x3FFu) << 10u) | (wc2 & 0x3FFu)); utf8_bytes[0] = static_cast::int_type>(0xF0u | (charcode >> 18u)); utf8_bytes[1] = static_cast::int_type>(0x80u | ((charcode >> 12u) & 0x3Fu)); utf8_bytes[2] = static_cast::int_type>(0x80u | ((charcode >> 6u) & 0x3Fu)); @@ -274,8 +271,6 @@ struct wide_string_input_helper } else { - // unknown character - ++current_wchar; utf8_bytes[0] = static_cast::int_type>(wc); utf8_bytes_filled = 1; } @@ -284,44 +279,42 @@ struct wide_string_input_helper } }; -template -class wide_string_input_adapter : public input_adapter_protocol +// Wraps another input apdater to convert wide character types into individual bytes. +template +class wide_string_input_adapter { public: - explicit wide_string_input_adapter(const WideStringType& w) noexcept - : str(w) - {} + using char_type = char; - std::char_traits::int_type get_character() noexcept override + wide_string_input_adapter(BaseInputAdapter base) + : base_adapter(base) {} + + typename std::char_traits::int_type get_character() noexcept { // check if buffer needs to be filled if (utf8_bytes_index == utf8_bytes_filled) { - fill_buffer(); + fill_buffer(); - assert(utf8_bytes_filled > 0); - assert(utf8_bytes_index == 0); + JSON_ASSERT(utf8_bytes_filled > 0); + JSON_ASSERT(utf8_bytes_index == 0); } // use buffer - assert(utf8_bytes_filled > 0); - assert(utf8_bytes_index < utf8_bytes_filled); + JSON_ASSERT(utf8_bytes_filled > 0); + JSON_ASSERT(utf8_bytes_index < utf8_bytes_filled); return utf8_bytes[utf8_bytes_index++]; } private: + BaseInputAdapter base_adapter; + template void fill_buffer() { - wide_string_input_helper::fill_buffer(str, current_wchar, utf8_bytes, utf8_bytes_index, utf8_bytes_filled); + wide_string_input_helper::fill_buffer(base_adapter, utf8_bytes, utf8_bytes_index, utf8_bytes_filled); } - /// the wstring to process - const WideStringType& str; - - /// index of the current wchar in str - std::size_t current_wchar = 0; - /// a buffer for UTF-8 bytes std::array::int_type, 4> utf8_bytes = {{0, 0, 0, 0}}; @@ -331,112 +324,131 @@ class wide_string_input_adapter : public input_adapter_protocol std::size_t utf8_bytes_filled = 0; }; -class input_adapter + +template +struct iterator_input_adapter_factory { - public: - // native support - JSON_HEDLEY_NON_NULL(2) - input_adapter(std::FILE* file) - : ia(std::make_shared(file)) {} - /// input adapter for input stream - input_adapter(std::istream& i) - : ia(std::make_shared(i)) {} + using iterator_type = IteratorType; + using char_type = typename std::iterator_traits::value_type; + using adapter_type = iterator_input_adapter; + + static adapter_type create(IteratorType first, IteratorType last) + { + return adapter_type(std::move(first), std::move(last)); + } +}; - /// input adapter for input stream - input_adapter(std::istream&& i) - : ia(std::make_shared(i)) {} +template +struct is_iterator_of_multibyte +{ + using value_type = typename std::iterator_traits::value_type; + enum + { + value = sizeof(value_type) > 1 + }; +}; - input_adapter(const std::wstring& ws) - : ia(std::make_shared>(ws)) {} +template +struct iterator_input_adapter_factory::value>> +{ + using iterator_type = IteratorType; + using char_type = typename std::iterator_traits::value_type; + using base_adapter_type = iterator_input_adapter; + using adapter_type = wide_string_input_adapter; + + static adapter_type create(IteratorType first, IteratorType last) + { + return adapter_type(base_adapter_type(std::move(first), std::move(last))); + } +}; - input_adapter(const std::u16string& ws) - : ia(std::make_shared>(ws)) {} +// General purpose iterator-based input +template +typename iterator_input_adapter_factory::adapter_type input_adapter(IteratorType first, IteratorType last) +{ + using factory_type = iterator_input_adapter_factory; + return factory_type::create(first, last); +} - input_adapter(const std::u32string& ws) - : ia(std::make_shared>(ws)) {} +// Convenience shorthand from container to iterator +template +auto input_adapter(const ContainerType& container) -> decltype(input_adapter(begin(container), end(container))) +{ + // Enable ADL + using std::begin; + using std::end; - /// input adapter for buffer - template::value and - std::is_integral::type>::value and - sizeof(typename std::remove_pointer::type) == 1, - int>::type = 0> - input_adapter(CharT b, std::size_t l) - : ia(std::make_shared(reinterpret_cast(b), l)) {} + return input_adapter(begin(container), end(container)); +} - // derived support +// Special cases with fast paths +inline file_input_adapter input_adapter(std::FILE* file) +{ + return file_input_adapter(file); +} - /// input adapter for string literal - template::value and - std::is_integral::type>::value and - sizeof(typename std::remove_pointer::type) == 1, - int>::type = 0> - input_adapter(CharT b) - : input_adapter(reinterpret_cast(b), - std::strlen(reinterpret_cast(b))) {} +inline input_stream_adapter input_adapter(std::istream& stream) +{ + return input_stream_adapter(stream); +} + +inline input_stream_adapter input_adapter(std::istream&& stream) +{ + return input_stream_adapter(stream); +} + +using contiguous_bytes_input_adapter = decltype(input_adapter(std::declval(), std::declval())); + +// Null-delimited strings, and the like. +template < typename CharT, + typename std::enable_if < + std::is_pointer::value&& + !std::is_array::value&& + std::is_integral::type>::value&& + sizeof(typename std::remove_pointer::type) == 1, + int >::type = 0 > +contiguous_bytes_input_adapter input_adapter(CharT b) +{ + auto length = std::strlen(reinterpret_cast(b)); + const auto* ptr = reinterpret_cast(b); + return input_adapter(ptr, ptr + length); +} + +template +auto input_adapter(T (&array)[N]) -> decltype(input_adapter(array, array + N)) +{ + return input_adapter(array, array + N); +} + +// This class only handles inputs of input_buffer_adapter type. +// It's required so that expressions like {ptr, len} can be implicitely casted +// to the correct adapter. +class span_input_adapter +{ + public: + template < typename CharT, + typename std::enable_if < + std::is_pointer::value&& + std::is_integral::type>::value&& + sizeof(typename std::remove_pointer::type) == 1, + int >::type = 0 > + span_input_adapter(CharT b, std::size_t l) + : ia(reinterpret_cast(b), reinterpret_cast(b) + l) {} - /// input adapter for iterator range with contiguous storage template::iterator_category, std::random_access_iterator_tag>::value, int>::type = 0> - input_adapter(IteratorType first, IteratorType last) - { -#ifndef NDEBUG - // assertion to check that the iterator range is indeed contiguous, - // see http://stackoverflow.com/a/35008842/266378 for more discussion - const auto is_contiguous = std::accumulate( - first, last, std::pair(true, 0), - [&first](std::pair res, decltype(*first) val) - { - res.first &= (val == *(std::next(std::addressof(*first), res.second++))); - return res; - }).first; - assert(is_contiguous); -#endif - - // assertion to check that each element is 1 byte long - static_assert( - sizeof(typename iterator_traits::value_type) == 1, - "each element in the iterator range must have the size of 1 byte"); - - const auto len = static_cast(std::distance(first, last)); - if (JSON_HEDLEY_LIKELY(len > 0)) - { - // there is at least one element: use the address of first - ia = std::make_shared(reinterpret_cast(&(*first)), len); - } - else - { - // the address of first cannot be used: use nullptr - ia = std::make_shared(nullptr, len); - } - } - - /// input adapter for array - template - input_adapter(T (&array)[N]) - : input_adapter(std::begin(array), std::end(array)) {} - - /// input adapter for contiguous container - template::value and - std::is_base_of()))>::iterator_category>::value, - int>::type = 0> - input_adapter(const ContiguousContainer& c) - : input_adapter(std::begin(c), std::end(c)) {} + span_input_adapter(IteratorType first, IteratorType last) + : ia(input_adapter(first, last)) {} - operator input_adapter_t() + contiguous_bytes_input_adapter&& get() { - return ia; + return std::move(ia); } private: - /// the actual adapter - input_adapter_t ia = nullptr; + contiguous_bytes_input_adapter ia; }; } // namespace detail } // namespace nlohmann diff --git a/mock/nlohmann/detail/input/json_sax.hpp b/mock/nlohmann/detail/input/json_sax.hpp index 606b7862..223acd60 100644 --- a/mock/nlohmann/detail/input/json_sax.hpp +++ b/mock/nlohmann/detail/input/json_sax.hpp @@ -1,6 +1,5 @@ #pragma once -#include // assert #include #include // string #include // move @@ -23,14 +22,11 @@ input. template struct json_sax { - /// type for (signed) integers using number_integer_t = typename BasicJsonType::number_integer_t; - /// type for unsigned integers using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - /// type for floating-point numbers using number_float_t = typename BasicJsonType::number_float_t; - /// type for strings using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; /*! @brief a null value was read @@ -75,6 +71,14 @@ struct json_sax */ virtual bool string(string_t& val) = 0; + /*! + @brief a binary string was read + @param[in] val binary value + @return whether parsing should proceed + @note It is safe to move the passed binary. + */ + virtual bool binary(binary_t& val) = 0; + /*! @brief the beginning of an object was read @param[in] elements number of object elements or -1 if unknown @@ -149,6 +153,7 @@ class json_sax_dom_parser using number_unsigned_t = typename BasicJsonType::number_unsigned_t; using number_float_t = typename BasicJsonType::number_float_t; using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; /*! @param[in, out] r reference to a JSON value that is manipulated while @@ -202,11 +207,17 @@ class json_sax_dom_parser return true; } + bool binary(binary_t& val) + { + handle_value(std::move(val)); + return true; + } + bool start_object(std::size_t len) { ref_stack.push_back(handle_value(BasicJsonType::value_t::object)); - if (JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size())) + if (JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) && len > ref_stack.back()->max_size())) { JSON_THROW(out_of_range::create(408, "excessive object size: " + std::to_string(len))); @@ -232,7 +243,7 @@ class json_sax_dom_parser { ref_stack.push_back(handle_value(BasicJsonType::value_t::array)); - if (JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size())) + if (JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) && len > ref_stack.back()->max_size())) { JSON_THROW(out_of_range::create(408, "excessive array size: " + std::to_string(len))); @@ -247,30 +258,15 @@ class json_sax_dom_parser return true; } + template bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, - const detail::exception& ex) + const Exception& ex) { errored = true; + static_cast(ex); if (allow_exceptions) { - // determine the proper exception type from the id - switch ((ex.id / 100) % 100) - { - case 1: - JSON_THROW(*static_cast(&ex)); - case 4: - JSON_THROW(*static_cast(&ex)); - // LCOV_EXCL_START - case 2: - JSON_THROW(*static_cast(&ex)); - case 3: - JSON_THROW(*static_cast(&ex)); - case 5: - JSON_THROW(*static_cast(&ex)); - default: - assert(false); - // LCOV_EXCL_STOP - } + JSON_THROW(ex); } return false; } @@ -297,7 +293,7 @@ class json_sax_dom_parser return &root; } - assert(ref_stack.back()->is_array() or ref_stack.back()->is_object()); + JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object()); if (ref_stack.back()->is_array()) { @@ -305,8 +301,8 @@ class json_sax_dom_parser return &(ref_stack.back()->m_value.array->back()); } - assert(ref_stack.back()->is_object()); - assert(object_element); + JSON_ASSERT(ref_stack.back()->is_object()); + JSON_ASSERT(object_element); *object_element = BasicJsonType(std::forward(v)); return object_element; } @@ -331,6 +327,7 @@ class json_sax_dom_callback_parser using number_unsigned_t = typename BasicJsonType::number_unsigned_t; using number_float_t = typename BasicJsonType::number_float_t; using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; using parser_callback_t = typename BasicJsonType::parser_callback_t; using parse_event_t = typename BasicJsonType::parse_event_t; @@ -385,6 +382,12 @@ class json_sax_dom_callback_parser return true; } + bool binary(binary_t& val) + { + handle_value(std::move(val)); + return true; + } + bool start_object(std::size_t len) { // check callback for object start @@ -395,7 +398,7 @@ class json_sax_dom_callback_parser ref_stack.push_back(val.second); // check object limit - if (ref_stack.back() and JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size())) + if (ref_stack.back() && JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) && len > ref_stack.back()->max_size())) { JSON_THROW(out_of_range::create(408, "excessive object size: " + std::to_string(len))); } @@ -412,7 +415,7 @@ class json_sax_dom_callback_parser key_keep_stack.push_back(keep); // add discarded value at given key and store the reference for later - if (keep and ref_stack.back()) + if (keep && ref_stack.back()) { object_element = &(ref_stack.back()->m_value.object->operator[](val) = discarded); } @@ -422,18 +425,18 @@ class json_sax_dom_callback_parser bool end_object() { - if (ref_stack.back() and not callback(static_cast(ref_stack.size()) - 1, parse_event_t::object_end, *ref_stack.back())) + if (ref_stack.back() && !callback(static_cast(ref_stack.size()) - 1, parse_event_t::object_end, *ref_stack.back())) { // discard object *ref_stack.back() = discarded; } - assert(not ref_stack.empty()); - assert(not keep_stack.empty()); + JSON_ASSERT(!ref_stack.empty()); + JSON_ASSERT(!keep_stack.empty()); ref_stack.pop_back(); keep_stack.pop_back(); - if (not ref_stack.empty() and ref_stack.back() and ref_stack.back()->is_object()) + if (!ref_stack.empty() && ref_stack.back() && ref_stack.back()->is_structured()) { // remove discarded value for (auto it = ref_stack.back()->begin(); it != ref_stack.back()->end(); ++it) @@ -458,7 +461,7 @@ class json_sax_dom_callback_parser ref_stack.push_back(val.second); // check array limit - if (ref_stack.back() and JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) and len > ref_stack.back()->max_size())) + if (ref_stack.back() && JSON_HEDLEY_UNLIKELY(len != std::size_t(-1) && len > ref_stack.back()->max_size())) { JSON_THROW(out_of_range::create(408, "excessive array size: " + std::to_string(len))); } @@ -473,20 +476,20 @@ class json_sax_dom_callback_parser if (ref_stack.back()) { keep = callback(static_cast(ref_stack.size()) - 1, parse_event_t::array_end, *ref_stack.back()); - if (not keep) + if (!keep) { // discard array *ref_stack.back() = discarded; } } - assert(not ref_stack.empty()); - assert(not keep_stack.empty()); + JSON_ASSERT(!ref_stack.empty()); + JSON_ASSERT(!keep_stack.empty()); ref_stack.pop_back(); keep_stack.pop_back(); // remove discarded value - if (not keep and not ref_stack.empty() and ref_stack.back()->is_array()) + if (!keep && !ref_stack.empty() && ref_stack.back()->is_array()) { ref_stack.back()->m_value.array->pop_back(); } @@ -494,30 +497,15 @@ class json_sax_dom_callback_parser return true; } + template bool parse_error(std::size_t /*unused*/, const std::string& /*unused*/, - const detail::exception& ex) + const Exception& ex) { errored = true; + static_cast(ex); if (allow_exceptions) { - // determine the proper exception type from the id - switch ((ex.id / 100) % 100) - { - case 1: - JSON_THROW(*static_cast(&ex)); - case 4: - JSON_THROW(*static_cast(&ex)); - // LCOV_EXCL_START - case 2: - JSON_THROW(*static_cast(&ex)); - case 3: - JSON_THROW(*static_cast(&ex)); - case 5: - JSON_THROW(*static_cast(&ex)); - default: - assert(false); - // LCOV_EXCL_STOP - } + JSON_THROW(ex); } return false; } @@ -546,11 +534,11 @@ class json_sax_dom_callback_parser template std::pair handle_value(Value&& v, const bool skip_callback = false) { - assert(not keep_stack.empty()); + JSON_ASSERT(!keep_stack.empty()); // do not handle this value if we know it would be added to a discarded // container - if (not keep_stack.back()) + if (!keep_stack.back()) { return {false, nullptr}; } @@ -559,10 +547,10 @@ class json_sax_dom_callback_parser auto value = BasicJsonType(std::forward(v)); // check callback - const bool keep = skip_callback or callback(static_cast(ref_stack.size()), parse_event_t::value, value); + const bool keep = skip_callback || callback(static_cast(ref_stack.size()), parse_event_t::value, value); // do not handle this value if we just learnt it shall be discarded - if (not keep) + if (!keep) { return {false, nullptr}; } @@ -575,13 +563,13 @@ class json_sax_dom_callback_parser // skip this value if we already decided to skip the parent // (https://github.com/nlohmann/json/issues/971#issuecomment-413678360) - if (not ref_stack.back()) + if (!ref_stack.back()) { return {false, nullptr}; } // we now only expect arrays and objects - assert(ref_stack.back()->is_array() or ref_stack.back()->is_object()); + JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object()); // array if (ref_stack.back()->is_array()) @@ -591,18 +579,18 @@ class json_sax_dom_callback_parser } // object - assert(ref_stack.back()->is_object()); + JSON_ASSERT(ref_stack.back()->is_object()); // check if we should store an element for the current key - assert(not key_keep_stack.empty()); + JSON_ASSERT(!key_keep_stack.empty()); const bool store_element = key_keep_stack.back(); key_keep_stack.pop_back(); - if (not store_element) + if (!store_element) { return {false, nullptr}; } - assert(object_element); + JSON_ASSERT(object_element); *object_element = std::move(value); return {true, object_element}; } @@ -635,6 +623,7 @@ class json_sax_acceptor using number_unsigned_t = typename BasicJsonType::number_unsigned_t; using number_float_t = typename BasicJsonType::number_float_t; using string_t = typename BasicJsonType::string_t; + using binary_t = typename BasicJsonType::binary_t; bool null() { @@ -666,7 +655,12 @@ class json_sax_acceptor return true; } - bool start_object(std::size_t /*unused*/ = std::size_t(-1)) + bool binary(binary_t& /*unused*/) + { + return true; + } + + bool start_object(std::size_t /*unused*/ = std::size_t(-1)) { return true; } @@ -681,7 +675,7 @@ class json_sax_acceptor return true; } - bool start_array(std::size_t /*unused*/ = std::size_t(-1)) + bool start_array(std::size_t /*unused*/ = std::size_t(-1)) { return true; } diff --git a/mock/nlohmann/detail/input/lexer.hpp b/mock/nlohmann/detail/input/lexer.hpp index 0843d749..0a960135 100644 --- a/mock/nlohmann/detail/input/lexer.hpp +++ b/mock/nlohmann/detail/input/lexer.hpp @@ -22,19 +22,9 @@ namespace detail // lexer // /////////// -/*! -@brief lexical analysis - -This class organizes the lexical analysis during JSON deserialization. -*/ template -class lexer +class lexer_base { - using number_integer_t = typename BasicJsonType::number_integer_t; - using number_unsigned_t = typename BasicJsonType::number_unsigned_t; - using number_float_t = typename BasicJsonType::number_float_t; - using string_t = typename BasicJsonType::string_t; - public: /// token types for the parser enum class token_type @@ -75,9 +65,9 @@ class lexer return "null literal"; case token_type::value_string: return "string literal"; - case lexer::token_type::value_unsigned: - case lexer::token_type::value_integer: - case lexer::token_type::value_float: + case token_type::value_unsigned: + case token_type::value_integer: + case token_type::value_float: return "number literal"; case token_type::begin_array: return "'['"; @@ -103,15 +93,36 @@ class lexer // LCOV_EXCL_STOP } } +}; +/*! +@brief lexical analysis - explicit lexer(detail::input_adapter_t&& adapter) - : ia(std::move(adapter)), decimal_point_char(get_decimal_point()) {} +This class organizes the lexical analysis during JSON deserialization. +*/ +template +class lexer : public lexer_base +{ + using number_integer_t = typename BasicJsonType::number_integer_t; + using number_unsigned_t = typename BasicJsonType::number_unsigned_t; + using number_float_t = typename BasicJsonType::number_float_t; + using string_t = typename BasicJsonType::string_t; + using char_type = typename InputAdapterType::char_type; + using char_int_type = typename std::char_traits::int_type; + + public: + using token_type = typename lexer_base::token_type; + + explicit lexer(InputAdapterType&& adapter, bool ignore_comments_ = false) + : ia(std::move(adapter)) + , ignore_comments(ignore_comments_) + , decimal_point_char(static_cast(get_decimal_point())) + {} // delete because of pointer members lexer(const lexer&) = delete; - lexer(lexer&&) = delete; + lexer(lexer&&) = default; lexer& operator=(lexer&) = delete; - lexer& operator=(lexer&&) = delete; + lexer& operator=(lexer&&) = default; ~lexer() = default; private: @@ -123,8 +134,8 @@ class lexer JSON_HEDLEY_PURE static char get_decimal_point() noexcept { - const auto loc = localeconv(); - assert(loc != nullptr); + const auto* loc = localeconv(); + JSON_ASSERT(loc != nullptr); return (loc->decimal_point == nullptr) ? '.' : *(loc->decimal_point); } @@ -150,7 +161,7 @@ class lexer int get_codepoint() { // this function only makes sense after reading `\u` - assert(current == 'u'); + JSON_ASSERT(current == 'u'); int codepoint = 0; const auto factors = { 12u, 8u, 4u, 0u }; @@ -158,15 +169,15 @@ class lexer { get(); - if (current >= '0' and current <= '9') + if (current >= '0' && current <= '9') { codepoint += static_cast((static_cast(current) - 0x30u) << factor); } - else if (current >= 'A' and current <= 'F') + else if (current >= 'A' && current <= 'F') { codepoint += static_cast((static_cast(current) - 0x37u) << factor); } - else if (current >= 'a' and current <= 'f') + else if (current >= 'a' && current <= 'f') { codepoint += static_cast((static_cast(current) - 0x57u) << factor); } @@ -176,7 +187,7 @@ class lexer } } - assert(0x0000 <= codepoint and codepoint <= 0xFFFF); + JSON_ASSERT(0x0000 <= codepoint && codepoint <= 0xFFFF); return codepoint; } @@ -195,15 +206,15 @@ class lexer @return true if and only if no range violation was detected */ - bool next_byte_in_range(std::initializer_list ranges) + bool next_byte_in_range(std::initializer_list ranges) { - assert(ranges.size() == 2 or ranges.size() == 4 or ranges.size() == 6); + JSON_ASSERT(ranges.size() == 2 || ranges.size() == 4 || ranges.size() == 6); add(current); for (auto range = ranges.begin(); range != ranges.end(); ++range) { get(); - if (JSON_HEDLEY_LIKELY(*range <= current and current <= *(++range))) + if (JSON_HEDLEY_LIKELY(*range <= current && current <= *(++range))) { add(current); } @@ -238,7 +249,7 @@ class lexer reset(); // we entered the function by reading an open quote - assert(current == '\"'); + JSON_ASSERT(current == '\"'); while (true) { @@ -246,7 +257,7 @@ class lexer switch (get()) { // end of file while parsing string - case std::char_traits::eof(): + case std::char_traits::eof(): { error_message = "invalid string: missing closing quote"; return token_type::parse_error; @@ -309,10 +320,10 @@ class lexer } // check if code point is a high surrogate - if (0xD800 <= codepoint1 and codepoint1 <= 0xDBFF) + if (0xD800 <= codepoint1 && codepoint1 <= 0xDBFF) { // expect next \uxxxx entry - if (JSON_HEDLEY_LIKELY(get() == '\\' and get() == 'u')) + if (JSON_HEDLEY_LIKELY(get() == '\\' && get() == 'u')) { const int codepoint2 = get_codepoint(); @@ -323,7 +334,7 @@ class lexer } // check if codepoint2 is a low surrogate - if (JSON_HEDLEY_LIKELY(0xDC00 <= codepoint2 and codepoint2 <= 0xDFFF)) + if (JSON_HEDLEY_LIKELY(0xDC00 <= codepoint2 && codepoint2 <= 0xDFFF)) { // overwrite codepoint codepoint = static_cast( @@ -338,19 +349,19 @@ class lexer } else { - error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; + error_message = "invalid string: surrogate U+D800..U+DBFF must be followed by U+DC00..U+DFFF"; return token_type::parse_error; } } else { - error_message = "invalid string: surrogate U+DC00..U+DFFF must be followed by U+DC00..U+DFFF"; + error_message = "invalid string: surrogate U+D800..U+DBFF must be followed by U+DC00..U+DFFF"; return token_type::parse_error; } } else { - if (JSON_HEDLEY_UNLIKELY(0xDC00 <= codepoint1 and codepoint1 <= 0xDFFF)) + if (JSON_HEDLEY_UNLIKELY(0xDC00 <= codepoint1 && codepoint1 <= 0xDFFF)) { error_message = "invalid string: surrogate U+DC00..U+DFFF must follow U+D800..U+DBFF"; return token_type::parse_error; @@ -358,34 +369,34 @@ class lexer } // result of the above calculation yields a proper codepoint - assert(0x00 <= codepoint and codepoint <= 0x10FFFF); + JSON_ASSERT(0x00 <= codepoint && codepoint <= 0x10FFFF); // translate codepoint into bytes if (codepoint < 0x80) { // 1-byte characters: 0xxxxxxx (ASCII) - add(codepoint); + add(static_cast(codepoint)); } else if (codepoint <= 0x7FF) { // 2-byte characters: 110xxxxx 10xxxxxx - add(static_cast(0xC0u | (static_cast(codepoint) >> 6u))); - add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); + add(static_cast(0xC0u | (static_cast(codepoint) >> 6u))); + add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); } else if (codepoint <= 0xFFFF) { // 3-byte characters: 1110xxxx 10xxxxxx 10xxxxxx - add(static_cast(0xE0u | (static_cast(codepoint) >> 12u))); - add(static_cast(0x80u | ((static_cast(codepoint) >> 6u) & 0x3Fu))); - add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); + add(static_cast(0xE0u | (static_cast(codepoint) >> 12u))); + add(static_cast(0x80u | ((static_cast(codepoint) >> 6u) & 0x3Fu))); + add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); } else { // 4-byte characters: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx - add(static_cast(0xF0u | (static_cast(codepoint) >> 18u))); - add(static_cast(0x80u | ((static_cast(codepoint) >> 12u) & 0x3Fu))); - add(static_cast(0x80u | ((static_cast(codepoint) >> 6u) & 0x3Fu))); - add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); + add(static_cast(0xF0u | (static_cast(codepoint) >> 18u))); + add(static_cast(0x80u | ((static_cast(codepoint) >> 12u) & 0x3Fu))); + add(static_cast(0x80u | ((static_cast(codepoint) >> 6u) & 0x3Fu))); + add(static_cast(0x80u | (static_cast(codepoint) & 0x3Fu))); } break; @@ -725,7 +736,7 @@ class lexer case 0xDE: case 0xDF: { - if (JSON_HEDLEY_UNLIKELY(not next_byte_in_range({0x80, 0xBF}))) + if (JSON_HEDLEY_UNLIKELY(!next_byte_in_range({0x80, 0xBF}))) { return token_type::parse_error; } @@ -735,7 +746,7 @@ class lexer // U+0800..U+0FFF: bytes E0 A0..BF 80..BF case 0xE0: { - if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0xA0, 0xBF, 0x80, 0xBF})))) { return token_type::parse_error; } @@ -759,7 +770,7 @@ class lexer case 0xEE: case 0xEF: { - if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0xBF, 0x80, 0xBF})))) { return token_type::parse_error; } @@ -769,7 +780,7 @@ class lexer // U+D000..U+D7FF: bytes ED 80..9F 80..BF case 0xED: { - if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0x9F, 0x80, 0xBF})))) { return token_type::parse_error; } @@ -779,7 +790,7 @@ class lexer // U+10000..U+3FFFF F0 90..BF 80..BF 80..BF case 0xF0: { - if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x90, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) { return token_type::parse_error; } @@ -791,7 +802,7 @@ class lexer case 0xF2: case 0xF3: { - if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0xBF, 0x80, 0xBF, 0x80, 0xBF})))) { return token_type::parse_error; } @@ -801,7 +812,7 @@ class lexer // U+100000..U+10FFFF F4 80..8F 80..BF 80..BF case 0xF4: { - if (JSON_HEDLEY_UNLIKELY(not (next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) + if (JSON_HEDLEY_UNLIKELY(!(next_byte_in_range({0x80, 0x8F, 0x80, 0xBF, 0x80, 0xBF})))) { return token_type::parse_error; } @@ -818,6 +829,77 @@ class lexer } } + /*! + * @brief scan a comment + * @return whether comment could be scanned successfully + */ + bool scan_comment() + { + switch (get()) + { + // single-line comments skip input until a newline or EOF is read + case '/': + { + while (true) + { + switch (get()) + { + case '\n': + case '\r': + case std::char_traits::eof(): + case '\0': + return true; + + default: + break; + } + } + } + + // multi-line comments skip input until */ is read + case '*': + { + while (true) + { + switch (get()) + { + case std::char_traits::eof(): + case '\0': + { + error_message = "invalid comment; missing closing '*/'"; + return false; + } + + case '*': + { + switch (get()) + { + case '/': + return true; + + default: + { + unget(); + continue; + } + } + } + + default: + continue; + } + } + } + + // unexpected character after reading '/' + default: + { + error_message = "invalid comment; expecting '/' or '*' after '/'"; + return false; + } + } + } + JSON_HEDLEY_NON_NULL(2) static void strtof(float& f, const char* str, char** endptr) noexcept { @@ -853,7 +935,7 @@ class lexer minus | zero | any1 | [error] | [error] | [error] | [error] | [error] zero | done | done | exponent | done | done | decimal1 | done any1 | any1 | any1 | exponent | done | done | decimal1 | done - decimal1 | decimal2 | [error] | [error] | [error] | [error] | [error] | [error] + decimal1 | decimal2 | decimal2 | [error] | [error] | [error] | [error] | [error] decimal2 | decimal2 | decimal2 | exponent | done | done | done | done exponent | any2 | any2 | [error] | sign | sign | [error] | [error] sign | any2 | any2 | [error] | [error] | [error] | [error] | [error] @@ -916,7 +998,7 @@ class lexer // all other characters are rejected outside scan_number() default: // LCOV_EXCL_LINE - assert(false); // LCOV_EXCL_LINE + JSON_ASSERT(false); // LCOV_EXCL_LINE } scan_number_minus: @@ -1163,7 +1245,7 @@ scan_number_done: const auto x = std::strtoull(token_buffer.data(), &endptr, 10); // we checked the number format before - assert(endptr == token_buffer.data() + token_buffer.size()); + JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size()); if (errno == 0) { @@ -1179,7 +1261,7 @@ scan_number_done: const auto x = std::strtoll(token_buffer.data(), &endptr, 10); // we checked the number format before - assert(endptr == token_buffer.data() + token_buffer.size()); + JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size()); if (errno == 0) { @@ -1196,7 +1278,7 @@ scan_number_done: strtof(value_float, token_buffer.data(), &endptr); // we checked the number format before - assert(endptr == token_buffer.data() + token_buffer.size()); + JSON_ASSERT(endptr == token_buffer.data() + token_buffer.size()); return token_type::value_float; } @@ -1207,13 +1289,13 @@ scan_number_done: @param[in] return_type the token type to return on success */ JSON_HEDLEY_NON_NULL(2) - token_type scan_literal(const char* literal_text, const std::size_t length, + token_type scan_literal(const char_type* literal_text, const std::size_t length, token_type return_type) { - assert(current == literal_text[0]); + JSON_ASSERT(std::char_traits::to_char_type(current) == literal_text[0]); for (std::size_t i = 1; i < length; ++i) { - if (JSON_HEDLEY_UNLIKELY(get() != literal_text[i])) + if (JSON_HEDLEY_UNLIKELY(std::char_traits::to_char_type(get()) != literal_text[i])) { error_message = "invalid literal"; return token_type::parse_error; @@ -1231,7 +1313,7 @@ scan_number_done: { token_buffer.clear(); token_string.clear(); - token_string.push_back(std::char_traits::to_char_type(current)); + token_string.push_back(std::char_traits::to_char_type(current)); } /* @@ -1244,7 +1326,7 @@ scan_number_done: @return character read from the input */ - std::char_traits::int_type get() + char_int_type get() { ++position.chars_read_total; ++position.chars_read_current_line; @@ -1256,12 +1338,12 @@ scan_number_done: } else { - current = ia->get_character(); + current = ia.get_character(); } - if (JSON_HEDLEY_LIKELY(current != std::char_traits::eof())) + if (JSON_HEDLEY_LIKELY(current != std::char_traits::eof())) { - token_string.push_back(std::char_traits::to_char_type(current)); + token_string.push_back(std::char_traits::to_char_type(current)); } if (current == '\n') @@ -1300,17 +1382,17 @@ scan_number_done: --position.chars_read_current_line; } - if (JSON_HEDLEY_LIKELY(current != std::char_traits::eof())) + if (JSON_HEDLEY_LIKELY(current != std::char_traits::eof())) { - assert(not token_string.empty()); + JSON_ASSERT(!token_string.empty()); token_string.pop_back(); } } /// add a character to token_buffer - void add(int c) + void add(char_int_type c) { - token_buffer.push_back(std::char_traits::to_char_type(c)); + token_buffer.push_back(static_cast(c)); } public: @@ -1361,7 +1443,7 @@ scan_number_done: std::string result; for (const auto c : token_string) { - if ('\x00' <= c and c <= '\x1F') + if (static_cast(c) <= '\x1F') { // escape control characters std::array cs{{}}; @@ -1371,7 +1453,7 @@ scan_number_done: else { // add character as is - result.push_back(c); + result.push_back(static_cast(c)); } } @@ -1398,7 +1480,7 @@ scan_number_done: if (get() == 0xEF) { // check if we completely parse the BOM - return get() == 0xBB and get() == 0xBF; + return get() == 0xBB && get() == 0xBF; } // the first character is not the beginning of the BOM; unget it to @@ -1407,21 +1489,38 @@ scan_number_done: return true; } + void skip_whitespace() + { + do + { + get(); + } + while (current == ' ' || current == '\t' || current == '\n' || current == '\r'); + } + token_type scan() { // initially, skip the BOM - if (position.chars_read_total == 0 and not skip_bom()) + if (position.chars_read_total == 0 && !skip_bom()) { error_message = "invalid BOM; must be 0xEF 0xBB 0xBF if given"; return token_type::parse_error; } // read next character and ignore whitespace - do + skip_whitespace(); + + // ignore comments + while (ignore_comments && current == '/') { - get(); + if (!scan_comment()) + { + return token_type::parse_error; + } + + // skip following whitespace + skip_whitespace(); } - while (current == ' ' or current == '\t' or current == '\n' or current == '\r'); switch (current) { @@ -1441,11 +1540,20 @@ scan_number_done: // literals case 't': - return scan_literal("true", 4, token_type::literal_true); + { + std::array true_literal = {{'t', 'r', 'u', 'e'}}; + return scan_literal(true_literal.data(), true_literal.size(), token_type::literal_true); + } case 'f': - return scan_literal("false", 5, token_type::literal_false); + { + std::array false_literal = {{'f', 'a', 'l', 's', 'e'}}; + return scan_literal(false_literal.data(), false_literal.size(), token_type::literal_false); + } case 'n': - return scan_literal("null", 4, token_type::literal_null); + { + std::array null_literal = {{'n', 'u', 'l', 'l'}}; + return scan_literal(null_literal.data(), null_literal.size(), token_type::literal_null); + } // string case '\"': @@ -1468,7 +1576,7 @@ scan_number_done: // end of input (the null byte is needed when parsing from // string literals) case '\0': - case std::char_traits::eof(): + case std::char_traits::eof(): return token_type::end_of_input; // error @@ -1480,10 +1588,13 @@ scan_number_done: private: /// input adapter - detail::input_adapter_t ia = nullptr; + InputAdapterType ia; + + /// whether comments should be ignored (true) or signaled as errors (false) + const bool ignore_comments = false; /// the current character - std::char_traits::int_type current = std::char_traits::eof(); + char_int_type current = std::char_traits::eof(); /// whether the next get() call should just return current bool next_unget = false; @@ -1492,7 +1603,7 @@ scan_number_done: position_t position {}; /// raw input token string (for error messages) - std::vector token_string {}; + std::vector token_string {}; /// buffer for variable-length tokens (numbers, strings) string_t token_buffer {}; @@ -1506,7 +1617,7 @@ scan_number_done: number_float_t value_float = 0; /// the decimal point - const char decimal_point_char = '.'; + const char_int_type decimal_point_char = '.'; }; } // namespace detail } // namespace nlohmann diff --git a/mock/nlohmann/detail/input/parser.hpp b/mock/nlohmann/detail/input/parser.hpp index 8d4febcb..ffe483aa 100644 --- a/mock/nlohmann/detail/input/parser.hpp +++ b/mock/nlohmann/detail/input/parser.hpp @@ -1,6 +1,5 @@ #pragma once -#include // assert #include // isfinite #include // uint8_t #include // function @@ -24,46 +23,50 @@ namespace detail // parser // //////////// +enum class parse_event_t : uint8_t +{ + /// the parser read `{` and started to process a JSON object + object_start, + /// the parser read `}` and finished processing a JSON object + object_end, + /// the parser read `[` and started to process a JSON array + array_start, + /// the parser read `]` and finished processing a JSON array + array_end, + /// the parser read a key of a value in an object + key, + /// the parser finished reading a JSON value + value +}; + +template +using parser_callback_t = + std::function; + /*! @brief syntax analysis -This class implements a recursive decent parser. +This class implements a recursive descent parser. */ -template +template class parser { using number_integer_t = typename BasicJsonType::number_integer_t; using number_unsigned_t = typename BasicJsonType::number_unsigned_t; using number_float_t = typename BasicJsonType::number_float_t; using string_t = typename BasicJsonType::string_t; - using lexer_t = lexer; + using lexer_t = lexer; using token_type = typename lexer_t::token_type; public: - enum class parse_event_t : uint8_t - { - /// the parser read `{` and started to process a JSON object - object_start, - /// the parser read `}` and finished processing a JSON object - object_end, - /// the parser read `[` and started to process a JSON array - array_start, - /// the parser read `]` and finished processing a JSON array - array_end, - /// the parser read a key of a value in an object - key, - /// the parser finished reading a JSON value - value - }; - - using parser_callback_t = - std::function; - /// a parser reading from an input adapter - explicit parser(detail::input_adapter_t&& adapter, - const parser_callback_t cb = nullptr, - const bool allow_exceptions_ = true) - : callback(cb), m_lexer(std::move(adapter)), allow_exceptions(allow_exceptions_) + explicit parser(InputAdapterType&& adapter, + const parser_callback_t cb = nullptr, + const bool allow_exceptions_ = true, + const bool skip_comments = false) + : callback(cb) + , m_lexer(std::move(adapter), skip_comments) + , allow_exceptions(allow_exceptions_) { // read first token get_token(); @@ -88,7 +91,7 @@ class parser result.assert_invariant(); // in strict mode, input must be completely read - if (strict and (get_token() != token_type::end_of_input)) + if (strict && (get_token() != token_type::end_of_input)) { sdp.parse_error(m_lexer.get_position(), m_lexer.get_token_string(), @@ -117,7 +120,7 @@ class parser result.assert_invariant(); // in strict mode, input must be completely read - if (strict and (get_token() != token_type::end_of_input)) + if (strict && (get_token() != token_type::end_of_input)) { sdp.parse_error(m_lexer.get_position(), m_lexer.get_token_string(), @@ -146,7 +149,7 @@ class parser return sax_parse(&sax_acceptor, strict); } - template + template JSON_HEDLEY_NON_NULL(2) bool sax_parse(SAX* sax, const bool strict = true) { @@ -154,7 +157,7 @@ class parser const bool result = sax_parse_internal(sax); // strict mode: next byte must be EOF - if (result and strict and (get_token() != token_type::end_of_input)) + if (result && strict && (get_token() != token_type::end_of_input)) { return sax->parse_error(m_lexer.get_position(), m_lexer.get_token_string(), @@ -166,7 +169,7 @@ class parser } private: - template + template JSON_HEDLEY_NON_NULL(2) bool sax_parse_internal(SAX* sax) { @@ -178,14 +181,14 @@ class parser while (true) { - if (not skip_to_state_evaluation) + if (!skip_to_state_evaluation) { // invariant: get_token() was called before each iteration switch (last_token) { case token_type::begin_object: { - if (JSON_HEDLEY_UNLIKELY(not sax->start_object(std::size_t(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_object(std::size_t(-1)))) { return false; } @@ -193,7 +196,7 @@ class parser // closing } -> we are done if (get_token() == token_type::end_object) { - if (JSON_HEDLEY_UNLIKELY(not sax->end_object())) + if (JSON_HEDLEY_UNLIKELY(!sax->end_object())) { return false; } @@ -208,7 +211,7 @@ class parser parse_error::create(101, m_lexer.get_position(), exception_message(token_type::value_string, "object key"))); } - if (JSON_HEDLEY_UNLIKELY(not sax->key(m_lexer.get_string()))) + if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string()))) { return false; } @@ -232,7 +235,7 @@ class parser case token_type::begin_array: { - if (JSON_HEDLEY_UNLIKELY(not sax->start_array(std::size_t(-1)))) + if (JSON_HEDLEY_UNLIKELY(!sax->start_array(std::size_t(-1)))) { return false; } @@ -240,7 +243,7 @@ class parser // closing ] -> we are done if (get_token() == token_type::end_array) { - if (JSON_HEDLEY_UNLIKELY(not sax->end_array())) + if (JSON_HEDLEY_UNLIKELY(!sax->end_array())) { return false; } @@ -258,14 +261,14 @@ class parser { const auto res = m_lexer.get_number_float(); - if (JSON_HEDLEY_UNLIKELY(not std::isfinite(res))) + if (JSON_HEDLEY_UNLIKELY(!std::isfinite(res))) { return sax->parse_error(m_lexer.get_position(), m_lexer.get_token_string(), out_of_range::create(406, "number overflow parsing '" + m_lexer.get_token_string() + "'")); } - if (JSON_HEDLEY_UNLIKELY(not sax->number_float(res, m_lexer.get_string()))) + if (JSON_HEDLEY_UNLIKELY(!sax->number_float(res, m_lexer.get_string()))) { return false; } @@ -275,7 +278,7 @@ class parser case token_type::literal_false: { - if (JSON_HEDLEY_UNLIKELY(not sax->boolean(false))) + if (JSON_HEDLEY_UNLIKELY(!sax->boolean(false))) { return false; } @@ -284,7 +287,7 @@ class parser case token_type::literal_null: { - if (JSON_HEDLEY_UNLIKELY(not sax->null())) + if (JSON_HEDLEY_UNLIKELY(!sax->null())) { return false; } @@ -293,7 +296,7 @@ class parser case token_type::literal_true: { - if (JSON_HEDLEY_UNLIKELY(not sax->boolean(true))) + if (JSON_HEDLEY_UNLIKELY(!sax->boolean(true))) { return false; } @@ -302,7 +305,7 @@ class parser case token_type::value_integer: { - if (JSON_HEDLEY_UNLIKELY(not sax->number_integer(m_lexer.get_number_integer()))) + if (JSON_HEDLEY_UNLIKELY(!sax->number_integer(m_lexer.get_number_integer()))) { return false; } @@ -311,7 +314,7 @@ class parser case token_type::value_string: { - if (JSON_HEDLEY_UNLIKELY(not sax->string(m_lexer.get_string()))) + if (JSON_HEDLEY_UNLIKELY(!sax->string(m_lexer.get_string()))) { return false; } @@ -320,7 +323,7 @@ class parser case token_type::value_unsigned: { - if (JSON_HEDLEY_UNLIKELY(not sax->number_unsigned(m_lexer.get_number_unsigned()))) + if (JSON_HEDLEY_UNLIKELY(!sax->number_unsigned(m_lexer.get_number_unsigned()))) { return false; } @@ -370,7 +373,7 @@ class parser // closing ] if (JSON_HEDLEY_LIKELY(last_token == token_type::end_array)) { - if (JSON_HEDLEY_UNLIKELY(not sax->end_array())) + if (JSON_HEDLEY_UNLIKELY(!sax->end_array())) { return false; } @@ -379,7 +382,7 @@ class parser // new value, we need to evaluate the new state first. // By setting skip_to_state_evaluation to false, we // are effectively jumping to the beginning of this if. - assert(not states.empty()); + JSON_ASSERT(!states.empty()); states.pop_back(); skip_to_state_evaluation = true; continue; @@ -404,7 +407,7 @@ class parser exception_message(token_type::value_string, "object key"))); } - if (JSON_HEDLEY_UNLIKELY(not sax->key(m_lexer.get_string()))) + if (JSON_HEDLEY_UNLIKELY(!sax->key(m_lexer.get_string()))) { return false; } @@ -426,7 +429,7 @@ class parser // closing } if (JSON_HEDLEY_LIKELY(last_token == token_type::end_object)) { - if (JSON_HEDLEY_UNLIKELY(not sax->end_object())) + if (JSON_HEDLEY_UNLIKELY(!sax->end_object())) { return false; } @@ -435,7 +438,7 @@ class parser // new value, we need to evaluate the new state first. // By setting skip_to_state_evaluation to false, we // are effectively jumping to the beginning of this if. - assert(not states.empty()); + JSON_ASSERT(!states.empty()); states.pop_back(); skip_to_state_evaluation = true; continue; @@ -459,7 +462,7 @@ class parser { std::string error_msg = "syntax error "; - if (not context.empty()) + if (!context.empty()) { error_msg += "while parsing " + context + " "; } @@ -486,7 +489,7 @@ class parser private: /// callback function - const parser_callback_t callback = nullptr; + const parser_callback_t callback = nullptr; /// the type of the last read token token_type last_token = token_type::uninitialized; /// the lexer diff --git a/mock/nlohmann/detail/iterators/iter_impl.hpp b/mock/nlohmann/detail/iterators/iter_impl.hpp index 3a362971..e9a394d4 100644 --- a/mock/nlohmann/detail/iterators/iter_impl.hpp +++ b/mock/nlohmann/detail/iterators/iter_impl.hpp @@ -1,6 +1,5 @@ #pragma once -#include // not #include // iterator, random_access_iterator_tag, bidirectional_iterator_tag, advance, next #include // conditional, is_const, remove_const @@ -85,7 +84,7 @@ class iter_impl */ explicit iter_impl(pointer object) noexcept : m_object(object) { - assert(m_object != nullptr); + JSON_ASSERT(m_object != nullptr); switch (m_object->m_type) { @@ -171,7 +170,7 @@ class iter_impl */ void set_begin() noexcept { - assert(m_object != nullptr); + JSON_ASSERT(m_object != nullptr); switch (m_object->m_type) { @@ -208,7 +207,7 @@ class iter_impl */ void set_end() noexcept { - assert(m_object != nullptr); + JSON_ASSERT(m_object != nullptr); switch (m_object->m_type) { @@ -239,19 +238,19 @@ class iter_impl */ reference operator*() const { - assert(m_object != nullptr); + JSON_ASSERT(m_object != nullptr); switch (m_object->m_type) { case value_t::object: { - assert(m_it.object_iterator != m_object->m_value.object->end()); + JSON_ASSERT(m_it.object_iterator != m_object->m_value.object->end()); return m_it.object_iterator->second; } case value_t::array: { - assert(m_it.array_iterator != m_object->m_value.array->end()); + JSON_ASSERT(m_it.array_iterator != m_object->m_value.array->end()); return *m_it.array_iterator; } @@ -276,19 +275,19 @@ class iter_impl */ pointer operator->() const { - assert(m_object != nullptr); + JSON_ASSERT(m_object != nullptr); switch (m_object->m_type) { case value_t::object: { - assert(m_it.object_iterator != m_object->m_value.object->end()); + JSON_ASSERT(m_it.object_iterator != m_object->m_value.object->end()); return &(m_it.object_iterator->second); } case value_t::array: { - assert(m_it.array_iterator != m_object->m_value.array->end()); + JSON_ASSERT(m_it.array_iterator != m_object->m_value.array->end()); return &*m_it.array_iterator; } @@ -321,7 +320,7 @@ class iter_impl */ iter_impl& operator++() { - assert(m_object != nullptr); + JSON_ASSERT(m_object != nullptr); switch (m_object->m_type) { @@ -364,7 +363,7 @@ class iter_impl */ iter_impl& operator--() { - assert(m_object != nullptr); + JSON_ASSERT(m_object != nullptr); switch (m_object->m_type) { @@ -402,7 +401,7 @@ class iter_impl JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers")); } - assert(m_object != nullptr); + JSON_ASSERT(m_object != nullptr); switch (m_object->m_type) { @@ -423,7 +422,7 @@ class iter_impl */ bool operator!=(const iter_impl& other) const { - return not operator==(other); + return !operator==(other); } /*! @@ -438,7 +437,7 @@ class iter_impl JSON_THROW(invalid_iterator::create(212, "cannot compare iterators of different containers")); } - assert(m_object != nullptr); + JSON_ASSERT(m_object != nullptr); switch (m_object->m_type) { @@ -459,7 +458,7 @@ class iter_impl */ bool operator<=(const iter_impl& other) const { - return not other.operator < (*this); + return !other.operator < (*this); } /*! @@ -468,7 +467,7 @@ class iter_impl */ bool operator>(const iter_impl& other) const { - return not operator<=(other); + return !operator<=(other); } /*! @@ -477,7 +476,7 @@ class iter_impl */ bool operator>=(const iter_impl& other) const { - return not operator<(other); + return !operator<(other); } /*! @@ -486,7 +485,7 @@ class iter_impl */ iter_impl& operator+=(difference_type i) { - assert(m_object != nullptr); + JSON_ASSERT(m_object != nullptr); switch (m_object->m_type) { @@ -557,7 +556,7 @@ class iter_impl */ difference_type operator-(const iter_impl& other) const { - assert(m_object != nullptr); + JSON_ASSERT(m_object != nullptr); switch (m_object->m_type) { @@ -578,7 +577,7 @@ class iter_impl */ reference operator[](difference_type n) const { - assert(m_object != nullptr); + JSON_ASSERT(m_object != nullptr); switch (m_object->m_type) { @@ -609,7 +608,7 @@ class iter_impl */ const typename object_t::key_type& key() const { - assert(m_object != nullptr); + JSON_ASSERT(m_object != nullptr); if (JSON_HEDLEY_LIKELY(m_object->is_object())) { diff --git a/mock/nlohmann/detail/iterators/iteration_proxy.hpp b/mock/nlohmann/detail/iterators/iteration_proxy.hpp index c61d9629..74b4eb34 100644 --- a/mock/nlohmann/detail/iterators/iteration_proxy.hpp +++ b/mock/nlohmann/detail/iterators/iteration_proxy.hpp @@ -15,9 +15,11 @@ namespace detail template void int_to_string( string_type& target, std::size_t value ) { - target = std::to_string(value); + // For ADL + using std::to_string; + target = to_string(value); } -template class iteration_proxy_value +template class iteration_proxy_value { public: using difference_type = std::ptrdiff_t; @@ -72,7 +74,7 @@ template class iteration_proxy_value /// return key of the iterator const string_type& key() const { - assert(anchor.m_object != nullptr); + JSON_ASSERT(anchor.m_object != nullptr); switch (anchor.m_object->type()) { @@ -131,7 +133,7 @@ template class iteration_proxy // Structured Bindings Support // For further reference see https://blog.tartanllama.xyz/structured-bindings/ // And see https://github.com/nlohmann/json/pull/1391 -template = 0> +template = 0> auto get(const nlohmann::detail::iteration_proxy_value& i) -> decltype(i.key()) { return i.key(); @@ -139,7 +141,7 @@ auto get(const nlohmann::detail::iteration_proxy_value& i) -> decl // Structured Bindings Support // For further reference see https://blog.tartanllama.xyz/structured-bindings/ // And see https://github.com/nlohmann/json/pull/1391 -template = 0> +template = 0> auto get(const nlohmann::detail::iteration_proxy_value& i) -> decltype(i.value()) { return i.value(); @@ -158,11 +160,11 @@ namespace std #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wmismatched-tags" #endif -template +template class tuple_size<::nlohmann::detail::iteration_proxy_value> : public std::integral_constant {}; -template +template class tuple_element> { public: diff --git a/mock/nlohmann/detail/iterators/iterator_traits.hpp b/mock/nlohmann/detail/iterators/iterator_traits.hpp index 4cced80c..da563618 100644 --- a/mock/nlohmann/detail/iterators/iterator_traits.hpp +++ b/mock/nlohmann/detail/iterators/iterator_traits.hpp @@ -9,10 +9,10 @@ namespace nlohmann { namespace detail { -template +template struct iterator_types {}; -template +template struct iterator_types < It, void_t +template struct iterator_traits { }; -template +template struct iterator_traits < T, enable_if_t < !std::is_pointer::value >> : iterator_types { }; -template +template struct iterator_traits::value>> { using iterator_category = std::random_access_iterator_tag; diff --git a/mock/nlohmann/detail/json_pointer.hpp b/mock/nlohmann/detail/json_pointer.hpp index 87af3423..78bc3a3a 100644 --- a/mock/nlohmann/detail/json_pointer.hpp +++ b/mock/nlohmann/detail/json_pointer.hpp @@ -1,8 +1,8 @@ #pragma once #include // all_of -#include // assert #include // isdigit +#include // max #include // accumulate #include // string #include // move @@ -126,8 +126,8 @@ class json_pointer /*! @brief append an array index at the end of this JSON pointer - @param[in] array_index array index to append - @return JSON pointer with @a array_index appended + @param[in] array_idx array index to append + @return JSON pointer with @a array_idx appended @liveexample{The example shows the usage of `operator/=`.,json_pointer__operator_add} @@ -139,9 +139,9 @@ class json_pointer @since version 3.6.0 */ - json_pointer& operator/=(std::size_t array_index) + json_pointer& operator/=(std::size_t array_idx) { - return *this /= std::to_string(array_index); + return *this /= std::to_string(array_idx); } /*! @@ -189,8 +189,8 @@ class json_pointer @brief create a new JSON pointer by appending the array-index-token at the end of the JSON pointer @param[in] ptr JSON pointer - @param[in] array_index array index - @return a new JSON pointer with @a array_index appended to @a ptr + @param[in] array_idx array index + @return a new JSON pointer with @a array_idx appended to @a ptr @liveexample{The example shows the usage of `operator/`.,json_pointer__operator_add_binary} @@ -200,9 +200,9 @@ class json_pointer @since version 3.6.0 */ - friend json_pointer operator/(const json_pointer& ptr, std::size_t array_index) + friend json_pointer operator/(const json_pointer& ptr, std::size_t array_idx) { - return json_pointer(ptr) /= array_index; + return json_pointer(ptr) /= array_idx; } /*! @@ -325,12 +325,39 @@ class json_pointer @return integer representation of @a s + @throw parse_error.106 if an array index begins with '0' + @throw parse_error.109 if an array index begins not with a digit @throw out_of_range.404 if string @a s could not be converted to an integer + @throw out_of_range.410 if an array index exceeds size_type */ - static int array_index(const std::string& s) + static typename BasicJsonType::size_type array_index(const std::string& s) { + using size_type = typename BasicJsonType::size_type; + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_HEDLEY_UNLIKELY(s.size() > 1 && s[0] == '0')) + { + JSON_THROW(detail::parse_error::create(106, 0, + "array index '" + s + + "' must not begin with '0'")); + } + + // error condition (cf. RFC 6901, Sect. 4) + if (JSON_HEDLEY_UNLIKELY(s.size() > 1 && !(s[0] >= '1' && s[0] <= '9'))) + { + JSON_THROW(detail::parse_error::create(109, 0, "array index '" + s + "' is not a number")); + } + std::size_t processed_chars = 0; - const int res = std::stoi(s, &processed_chars); + unsigned long long res = 0; + JSON_TRY + { + res = std::stoull(s, &processed_chars); + } + JSON_CATCH(std::out_of_range&) + { + JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'")); + } // check if the string was completely read if (JSON_HEDLEY_UNLIKELY(processed_chars != s.size())) @@ -338,7 +365,14 @@ class json_pointer JSON_THROW(detail::out_of_range::create(404, "unresolved reference token '" + s + "'")); } - return res; + // only triggered on special platforms (like 32bit), see also + // https://github.com/nlohmann/json/pull/2203 + if (res >= static_cast((std::numeric_limits::max)())) + { + JSON_THROW(detail::out_of_range::create(410, "array index " + s + " exceeds size_type")); // LCOV_EXCL_LINE + } + + return static_cast(res); } json_pointer top() const @@ -363,7 +397,6 @@ class json_pointer */ BasicJsonType& get_and_create(BasicJsonType& j) const { - using size_type = typename BasicJsonType::size_type; auto result = &j; // in case no reference tokens exist, return a reference to the JSON value @@ -397,14 +430,7 @@ class json_pointer case detail::value_t::array: { // create an entry in the array - JSON_TRY - { - result = &result->operator[](static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } + result = &result->operator[](array_index(reference_token)); break; } @@ -443,7 +469,6 @@ class json_pointer */ BasicJsonType& get_unchecked(BasicJsonType* ptr) const { - using size_type = typename BasicJsonType::size_type; for (const auto& reference_token : reference_tokens) { // convert null values to arrays or objects before continuing @@ -458,7 +483,7 @@ class json_pointer }); // change value to array for numbers or "-" or to object otherwise - *ptr = (nums or reference_token == "-") + *ptr = (nums || reference_token == "-") ? detail::value_t::array : detail::value_t::object; } @@ -474,14 +499,6 @@ class json_pointer case detail::value_t::array: { - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - if (reference_token == "-") { // explicitly treat "-" as index beyond the end @@ -490,15 +507,7 @@ class json_pointer else { // convert array index to number; unchecked access - JSON_TRY - { - ptr = &ptr->operator[]( - static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } + ptr = &ptr->operator[](array_index(reference_token)); } break; } @@ -519,7 +528,6 @@ class json_pointer */ BasicJsonType& get_checked(BasicJsonType* ptr) const { - using size_type = typename BasicJsonType::size_type; for (const auto& reference_token : reference_tokens) { switch (ptr->type()) @@ -541,23 +549,8 @@ class json_pointer ") is out of range")); } - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - // note: at performs range check - JSON_TRY - { - ptr = &ptr->at(static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } + ptr = &ptr->at(array_index(reference_token)); break; } @@ -584,7 +577,6 @@ class json_pointer */ const BasicJsonType& get_unchecked(const BasicJsonType* ptr) const { - using size_type = typename BasicJsonType::size_type; for (const auto& reference_token : reference_tokens) { switch (ptr->type()) @@ -606,24 +598,8 @@ class json_pointer ") is out of range")); } - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - // use unchecked array access - JSON_TRY - { - ptr = &ptr->operator[]( - static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } + ptr = &ptr->operator[](array_index(reference_token)); break; } @@ -643,7 +619,6 @@ class json_pointer */ const BasicJsonType& get_checked(const BasicJsonType* ptr) const { - using size_type = typename BasicJsonType::size_type; for (const auto& reference_token : reference_tokens) { switch (ptr->type()) @@ -665,23 +640,8 @@ class json_pointer ") is out of range")); } - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) - { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); - } - // note: at performs range check - JSON_TRY - { - ptr = &ptr->at(static_cast(array_index(reference_token))); - } - JSON_CATCH(std::invalid_argument&) - { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); - } + ptr = &ptr->at(array_index(reference_token)); break; } @@ -699,14 +659,13 @@ class json_pointer */ bool contains(const BasicJsonType* ptr) const { - using size_type = typename BasicJsonType::size_type; for (const auto& reference_token : reference_tokens) { switch (ptr->type()) { case detail::value_t::object: { - if (not ptr->contains(reference_token)) + if (!ptr->contains(reference_token)) { // we did not find the key in the object return false; @@ -723,31 +682,36 @@ class json_pointer // "-" always fails the range check return false; } - - // error condition (cf. RFC 6901, Sect. 4) - if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1 and reference_token[0] == '0')) + if (JSON_HEDLEY_UNLIKELY(reference_token.size() == 1 && !("0" <= reference_token && reference_token <= "9"))) { - JSON_THROW(detail::parse_error::create(106, 0, - "array index '" + reference_token + - "' must not begin with '0'")); + // invalid char + return false; } - - JSON_TRY + if (JSON_HEDLEY_UNLIKELY(reference_token.size() > 1)) { - const auto idx = static_cast(array_index(reference_token)); - if (idx >= ptr->size()) + if (JSON_HEDLEY_UNLIKELY(!('1' <= reference_token[0] && reference_token[0] <= '9'))) { - // index out of range + // first char should be between '1' and '9' return false; } - - ptr = &ptr->operator[](idx); - break; + for (std::size_t i = 1; i < reference_token.size(); i++) + { + if (JSON_HEDLEY_UNLIKELY(!('0' <= reference_token[i] && reference_token[i] <= '9'))) + { + // other char should be between '0' and '9' + return false; + } + } } - JSON_CATCH(std::invalid_argument&) + + const auto idx = array_index(reference_token); + if (idx >= ptr->size()) { - JSON_THROW(detail::parse_error::create(109, 0, "array index '" + reference_token + "' is not a number")); + // index out of range + return false; } + + ptr = &ptr->operator[](idx); break; } @@ -816,11 +780,11 @@ class json_pointer pos != std::string::npos; pos = reference_token.find_first_of('~', pos + 1)) { - assert(reference_token[pos] == '~'); + JSON_ASSERT(reference_token[pos] == '~'); // ~ must be followed by 0 or 1 - if (JSON_HEDLEY_UNLIKELY(pos == reference_token.size() - 1 or - (reference_token[pos + 1] != '0' and + if (JSON_HEDLEY_UNLIKELY(pos == reference_token.size() - 1 || + (reference_token[pos + 1] != '0' && reference_token[pos + 1] != '1'))) { JSON_THROW(detail::parse_error::create(108, 0, "escape character '~' must be followed with '0' or '1'")); @@ -851,7 +815,7 @@ class json_pointer static void replace_substring(std::string& s, const std::string& f, const std::string& t) { - assert(not f.empty()); + JSON_ASSERT(!f.empty()); for (auto pos = s.find(f); // find first occurrence of f pos != std::string::npos; // make sure f was found s.replace(pos, f.size(), t), // replace with t, and @@ -946,7 +910,7 @@ class json_pointer static BasicJsonType unflatten(const BasicJsonType& value) { - if (JSON_HEDLEY_UNLIKELY(not value.is_object())) + if (JSON_HEDLEY_UNLIKELY(!value.is_object())) { JSON_THROW(detail::type_error::create(314, "only objects can be unflattened")); } @@ -956,7 +920,7 @@ class json_pointer // iterate the JSON object values for (const auto& element : *value.m_value.object) { - if (JSON_HEDLEY_UNLIKELY(not element.second.is_primitive())) + if (JSON_HEDLEY_UNLIKELY(!element.second.is_primitive())) { JSON_THROW(detail::type_error::create(315, "values in object must be primitive")); } @@ -1002,7 +966,7 @@ class json_pointer friend bool operator!=(json_pointer const& lhs, json_pointer const& rhs) noexcept { - return not (lhs == rhs); + return !(lhs == rhs); } /// the reference tokens diff --git a/mock/nlohmann/detail/json_ref.hpp b/mock/nlohmann/detail/json_ref.hpp index c8dec733..c9bf6cb2 100644 --- a/mock/nlohmann/detail/json_ref.hpp +++ b/mock/nlohmann/detail/json_ref.hpp @@ -16,23 +16,30 @@ class json_ref using value_type = BasicJsonType; json_ref(value_type&& value) - : owned_value(std::move(value)), value_ref(&owned_value), is_rvalue(true) + : owned_value(std::move(value)) + , value_ref(&owned_value) + , is_rvalue(true) {} json_ref(const value_type& value) - : value_ref(const_cast(&value)), is_rvalue(false) + : value_ref(const_cast(&value)) + , is_rvalue(false) {} json_ref(std::initializer_list init) - : owned_value(init), value_ref(&owned_value), is_rvalue(true) + : owned_value(init) + , value_ref(&owned_value) + , is_rvalue(true) {} template < class... Args, enable_if_t::value, int> = 0 > json_ref(Args && ... args) - : owned_value(std::forward(args)...), value_ref(&owned_value), - is_rvalue(true) {} + : owned_value(std::forward(args)...) + , value_ref(&owned_value) + , is_rvalue(true) + {} // class should be movable only json_ref(json_ref&&) = default; @@ -63,7 +70,7 @@ class json_ref private: mutable value_type owned_value = nullptr; value_type* value_ref = nullptr; - const bool is_rvalue; + const bool is_rvalue = true; }; } // namespace detail } // namespace nlohmann diff --git a/mock/nlohmann/detail/macro_scope.hpp b/mock/nlohmann/detail/macro_scope.hpp index 27dddc6b..8c9f6329 100644 --- a/mock/nlohmann/detail/macro_scope.hpp +++ b/mock/nlohmann/detail/macro_scope.hpp @@ -20,7 +20,11 @@ #endif // C++ language standard detection -#if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 +#if (defined(__cplusplus) && __cplusplus >= 202002L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 202002L) + #define JSON_HAS_CPP_20 + #define JSON_HAS_CPP_17 + #define JSON_HAS_CPP_14 +#elif (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_HAS_CXX17) && _HAS_CXX17 == 1) // fix for issue #464 #define JSON_HAS_CPP_17 #define JSON_HAS_CPP_14 #elif (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_HAS_CXX14) && _HAS_CXX14 == 1) @@ -73,6 +77,12 @@ #define JSON_INTERNAL_CATCH JSON_INTERNAL_CATCH_USER #endif +// allow to override assert +#if !defined(JSON_ASSERT) + #include // assert + #define JSON_ASSERT(x) assert(x) +#endif + /*! @brief macro to briefly define a mapping between an enum and JSON @def NLOHMANN_JSON_SERIALIZE_ENUM @@ -113,9 +123,174 @@ class StringType, class BooleanType, class NumberIntegerType, \ class NumberUnsignedType, class NumberFloatType, \ template class AllocatorType, \ - template class JSONSerializer> + template class JSONSerializer, \ + class BinaryType> #define NLOHMANN_BASIC_JSON_TPL \ basic_json + AllocatorType, JSONSerializer, BinaryType> + +// Macros to simplify conversion from/to types + +#define NLOHMANN_JSON_EXPAND( x ) x +#define NLOHMANN_JSON_GET_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, NAME,...) NAME +#define NLOHMANN_JSON_PASTE(...) NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_GET_MACRO(__VA_ARGS__, \ + NLOHMANN_JSON_PASTE64, \ + NLOHMANN_JSON_PASTE63, \ + NLOHMANN_JSON_PASTE62, \ + NLOHMANN_JSON_PASTE61, \ + NLOHMANN_JSON_PASTE60, \ + NLOHMANN_JSON_PASTE59, \ + NLOHMANN_JSON_PASTE58, \ + NLOHMANN_JSON_PASTE57, \ + NLOHMANN_JSON_PASTE56, \ + NLOHMANN_JSON_PASTE55, \ + NLOHMANN_JSON_PASTE54, \ + NLOHMANN_JSON_PASTE53, \ + NLOHMANN_JSON_PASTE52, \ + NLOHMANN_JSON_PASTE51, \ + NLOHMANN_JSON_PASTE50, \ + NLOHMANN_JSON_PASTE49, \ + NLOHMANN_JSON_PASTE48, \ + NLOHMANN_JSON_PASTE47, \ + NLOHMANN_JSON_PASTE46, \ + NLOHMANN_JSON_PASTE45, \ + NLOHMANN_JSON_PASTE44, \ + NLOHMANN_JSON_PASTE43, \ + NLOHMANN_JSON_PASTE42, \ + NLOHMANN_JSON_PASTE41, \ + NLOHMANN_JSON_PASTE40, \ + NLOHMANN_JSON_PASTE39, \ + NLOHMANN_JSON_PASTE38, \ + NLOHMANN_JSON_PASTE37, \ + NLOHMANN_JSON_PASTE36, \ + NLOHMANN_JSON_PASTE35, \ + NLOHMANN_JSON_PASTE34, \ + NLOHMANN_JSON_PASTE33, \ + NLOHMANN_JSON_PASTE32, \ + NLOHMANN_JSON_PASTE31, \ + NLOHMANN_JSON_PASTE30, \ + NLOHMANN_JSON_PASTE29, \ + NLOHMANN_JSON_PASTE28, \ + NLOHMANN_JSON_PASTE27, \ + NLOHMANN_JSON_PASTE26, \ + NLOHMANN_JSON_PASTE25, \ + NLOHMANN_JSON_PASTE24, \ + NLOHMANN_JSON_PASTE23, \ + NLOHMANN_JSON_PASTE22, \ + NLOHMANN_JSON_PASTE21, \ + NLOHMANN_JSON_PASTE20, \ + NLOHMANN_JSON_PASTE19, \ + NLOHMANN_JSON_PASTE18, \ + NLOHMANN_JSON_PASTE17, \ + NLOHMANN_JSON_PASTE16, \ + NLOHMANN_JSON_PASTE15, \ + NLOHMANN_JSON_PASTE14, \ + NLOHMANN_JSON_PASTE13, \ + NLOHMANN_JSON_PASTE12, \ + NLOHMANN_JSON_PASTE11, \ + NLOHMANN_JSON_PASTE10, \ + NLOHMANN_JSON_PASTE9, \ + NLOHMANN_JSON_PASTE8, \ + NLOHMANN_JSON_PASTE7, \ + NLOHMANN_JSON_PASTE6, \ + NLOHMANN_JSON_PASTE5, \ + NLOHMANN_JSON_PASTE4, \ + NLOHMANN_JSON_PASTE3, \ + NLOHMANN_JSON_PASTE2, \ + NLOHMANN_JSON_PASTE1)(__VA_ARGS__)) +#define NLOHMANN_JSON_PASTE2(func, v1) func(v1) +#define NLOHMANN_JSON_PASTE3(func, v1, v2) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE2(func, v2) +#define NLOHMANN_JSON_PASTE4(func, v1, v2, v3) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE3(func, v2, v3) +#define NLOHMANN_JSON_PASTE5(func, v1, v2, v3, v4) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE4(func, v2, v3, v4) +#define NLOHMANN_JSON_PASTE6(func, v1, v2, v3, v4, v5) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE5(func, v2, v3, v4, v5) +#define NLOHMANN_JSON_PASTE7(func, v1, v2, v3, v4, v5, v6) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE6(func, v2, v3, v4, v5, v6) +#define NLOHMANN_JSON_PASTE8(func, v1, v2, v3, v4, v5, v6, v7) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE7(func, v2, v3, v4, v5, v6, v7) +#define NLOHMANN_JSON_PASTE9(func, v1, v2, v3, v4, v5, v6, v7, v8) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE8(func, v2, v3, v4, v5, v6, v7, v8) +#define NLOHMANN_JSON_PASTE10(func, v1, v2, v3, v4, v5, v6, v7, v8, v9) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE9(func, v2, v3, v4, v5, v6, v7, v8, v9) +#define NLOHMANN_JSON_PASTE11(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE10(func, v2, v3, v4, v5, v6, v7, v8, v9, v10) +#define NLOHMANN_JSON_PASTE12(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE11(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) +#define NLOHMANN_JSON_PASTE13(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE12(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) +#define NLOHMANN_JSON_PASTE14(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE13(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) +#define NLOHMANN_JSON_PASTE15(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE14(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) +#define NLOHMANN_JSON_PASTE16(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE15(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) +#define NLOHMANN_JSON_PASTE17(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE16(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) +#define NLOHMANN_JSON_PASTE18(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE17(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) +#define NLOHMANN_JSON_PASTE19(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE18(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) +#define NLOHMANN_JSON_PASTE20(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE19(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) +#define NLOHMANN_JSON_PASTE21(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE20(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) +#define NLOHMANN_JSON_PASTE22(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE21(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) +#define NLOHMANN_JSON_PASTE23(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE22(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) +#define NLOHMANN_JSON_PASTE24(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE23(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23) +#define NLOHMANN_JSON_PASTE25(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE24(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24) +#define NLOHMANN_JSON_PASTE26(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE25(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25) +#define NLOHMANN_JSON_PASTE27(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE26(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26) +#define NLOHMANN_JSON_PASTE28(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE27(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27) +#define NLOHMANN_JSON_PASTE29(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE28(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28) +#define NLOHMANN_JSON_PASTE30(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE29(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29) +#define NLOHMANN_JSON_PASTE31(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE30(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30) +#define NLOHMANN_JSON_PASTE32(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE31(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31) +#define NLOHMANN_JSON_PASTE33(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE32(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32) +#define NLOHMANN_JSON_PASTE34(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE33(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33) +#define NLOHMANN_JSON_PASTE35(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE34(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34) +#define NLOHMANN_JSON_PASTE36(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE35(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35) +#define NLOHMANN_JSON_PASTE37(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE36(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36) +#define NLOHMANN_JSON_PASTE38(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE37(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37) +#define NLOHMANN_JSON_PASTE39(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE38(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38) +#define NLOHMANN_JSON_PASTE40(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE39(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39) +#define NLOHMANN_JSON_PASTE41(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE40(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40) +#define NLOHMANN_JSON_PASTE42(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE41(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41) +#define NLOHMANN_JSON_PASTE43(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE42(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42) +#define NLOHMANN_JSON_PASTE44(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE43(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43) +#define NLOHMANN_JSON_PASTE45(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE44(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44) +#define NLOHMANN_JSON_PASTE46(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE45(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45) +#define NLOHMANN_JSON_PASTE47(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE46(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46) +#define NLOHMANN_JSON_PASTE48(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE47(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47) +#define NLOHMANN_JSON_PASTE49(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE48(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48) +#define NLOHMANN_JSON_PASTE50(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE49(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49) +#define NLOHMANN_JSON_PASTE51(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE50(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50) +#define NLOHMANN_JSON_PASTE52(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE51(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51) +#define NLOHMANN_JSON_PASTE53(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE52(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52) +#define NLOHMANN_JSON_PASTE54(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE53(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53) +#define NLOHMANN_JSON_PASTE55(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE54(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54) +#define NLOHMANN_JSON_PASTE56(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE55(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55) +#define NLOHMANN_JSON_PASTE57(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE56(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56) +#define NLOHMANN_JSON_PASTE58(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE57(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57) +#define NLOHMANN_JSON_PASTE59(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE58(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58) +#define NLOHMANN_JSON_PASTE60(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE59(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59) +#define NLOHMANN_JSON_PASTE61(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE60(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60) +#define NLOHMANN_JSON_PASTE62(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE61(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61) +#define NLOHMANN_JSON_PASTE63(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE62(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62) +#define NLOHMANN_JSON_PASTE64(func, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) NLOHMANN_JSON_PASTE2(func, v1) NLOHMANN_JSON_PASTE63(func, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22, v23, v24, v25, v26, v27, v28, v29, v30, v31, v32, v33, v34, v35, v36, v37, v38, v39, v40, v41, v42, v43, v44, v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55, v56, v57, v58, v59, v60, v61, v62, v63) + +#define NLOHMANN_JSON_TO(v1) nlohmann_json_j[#v1] = nlohmann_json_t.v1; +#define NLOHMANN_JSON_FROM(v1) nlohmann_json_j.at(#v1).get_to(nlohmann_json_t.v1); + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_INTRUSIVE +@since version 3.9.0 +*/ +#define NLOHMANN_DEFINE_TYPE_INTRUSIVE(Type, ...) \ + friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +/*! +@brief macro +@def NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE +@since version 3.9.0 +*/ +#define NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(Type, ...) \ + inline void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \ + inline void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) } + +#ifndef JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_USE_IMPLICIT_CONVERSIONS 1 +#endif + +#if JSON_USE_IMPLICIT_CONVERSIONS + #define JSON_EXPLICIT +#else + #define JSON_EXPLICIT explicit +#endif diff --git a/mock/nlohmann/detail/macro_unscope.hpp b/mock/nlohmann/detail/macro_unscope.hpp index 80b293e7..eb706511 100644 --- a/mock/nlohmann/detail/macro_unscope.hpp +++ b/mock/nlohmann/detail/macro_unscope.hpp @@ -9,6 +9,7 @@ #endif // clean up +#undef JSON_ASSERT #undef JSON_INTERNAL_CATCH #undef JSON_CATCH #undef JSON_THROW @@ -17,5 +18,6 @@ #undef JSON_HAS_CPP_17 #undef NLOHMANN_BASIC_JSON_TPL_DECLARATION #undef NLOHMANN_BASIC_JSON_TPL +#undef JSON_EXPLICIT #include diff --git a/mock/nlohmann/detail/meta/cpp_future.hpp b/mock/nlohmann/detail/meta/cpp_future.hpp index 948cd4fb..dd929ee1 100644 --- a/mock/nlohmann/detail/meta/cpp_future.hpp +++ b/mock/nlohmann/detail/meta/cpp_future.hpp @@ -1,6 +1,5 @@ #pragma once -#include // not #include // size_t #include // conditional, enable_if, false_type, integral_constant, is_constructible, is_integral, is_same, remove_cv, remove_reference, true_type diff --git a/mock/nlohmann/detail/meta/detected.hpp b/mock/nlohmann/detail/meta/detected.hpp index 5b52460a..7b5a0035 100644 --- a/mock/nlohmann/detail/meta/detected.hpp +++ b/mock/nlohmann/detail/meta/detected.hpp @@ -4,7 +4,7 @@ #include -// http://en.cppreference.com/w/cpp/experimental/is_detected +// https://en.cppreference.com/w/cpp/experimental/is_detected namespace nlohmann { namespace detail @@ -19,39 +19,39 @@ struct nonesuch void operator=(nonesuch&&) = delete; }; -template class Op, - class... Args> +template class Op, + class... Args> struct detector { using value_t = std::false_type; using type = Default; }; -template class Op, class... Args> +template class Op, class... Args> struct detector>, Op, Args...> { using value_t = std::true_type; using type = Op; }; -template