diff --git a/hiviewdfx/abilityconstanttest/BUILD.gn b/hiviewdfx/abilityconstanttest/BUILD.gn new file mode 100755 index 0000000000000000000000000000000000000000..ea31b2494fb85b12a04f6726092fcb4274598a6c --- /dev/null +++ b/hiviewdfx/abilityconstanttest/BUILD.gn @@ -0,0 +1,32 @@ +# Copyright (C) 2021 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("//test/xts/tools/build/suite.gni") +ohos_js_hap_suite("ActsAbilityConstantTest") { + hap_profile = "./src/main/config.json" + deps = [ + ":abilityconstant_assets", + ":abilityconstant_resources", + ] + certificate_profile = "./signature/openharmony_sx.p7b" + hap_name = "ActsAbilityConstantTest" +} +ohos_js_assets("abilityconstant_assets") { + js2abc = true + hap_profile = "./src/main/config.json" + source_dir = "./src/main/js" +} +ohos_resources("abilityconstant_resources") { + sources = [ "./src/main/resources" ] + hap_profile = "./src/main/config.json" +} diff --git a/hiviewdfx/abilityconstanttest/Test.json b/hiviewdfx/abilityconstanttest/Test.json new file mode 100755 index 0000000000000000000000000000000000000000..b4ae095f3855a59bbe9e283660950fef992ecfe6 --- /dev/null +++ b/hiviewdfx/abilityconstanttest/Test.json @@ -0,0 +1,19 @@ +{ + "description": "Configuration for abilityconstant demo Tests", + "driver": { + "type": "OHJSUnitTest", + "test-timeout": "300000", + "package-name": "ohos.abilityconstant.test", + "bundle-name": "ohos.abilityconstant.test", + "shell-timeout": "300000" + }, + "kits": [ + { + "test-file-name": [ + "ActsAbilityConstantTest.hap" + ], + "type": "AppInstallKit", + "cleanup-apps": true + } + ] +} diff --git a/hiviewdfx/abilityconstanttest/signature/openharmony_sx.p7b b/hiviewdfx/abilityconstanttest/signature/openharmony_sx.p7b new file mode 100755 index 0000000000000000000000000000000000000000..9be1e98fa4c0c28ca997ed660112fa16b194f0f5 Binary files /dev/null and b/hiviewdfx/abilityconstanttest/signature/openharmony_sx.p7b differ diff --git a/hiviewdfx/abilityconstanttest/src/main/config.json b/hiviewdfx/abilityconstanttest/src/main/config.json new file mode 100755 index 0000000000000000000000000000000000000000..c0c7e3dd54017e41fd0a9329f5f06d3af6930d4a --- /dev/null +++ b/hiviewdfx/abilityconstanttest/src/main/config.json @@ -0,0 +1,94 @@ +{ + "app": { + "bundleName": "ohos.abilityconstant.test", + "vendor": "example", + "version": { + "code": 1, + "name": "1.0" + }, + "apiVersion": { + "compatible": 4, + "target": 5 + } + }, + "deviceConfig": {}, + "module": { + "package": "ohos.abilityconstant.test", + "name": ".entry", + "mainAbility": ".MainAbility", + "srcPath":"", + "deviceType": [ + "default", + "phone" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "entry", + "moduleType": "entry" + }, + "abilities": [ + { + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "orientation": "unspecified", + "formsEnabled": false, + "name": ".MainAbility", + "srcLanguage": "js", + "srcPath": "MainAbility", + "icon": "$media:icon", + "description": "$string:MainAbility_desc", + "label": "$string:MainAbility_label", + "type": "page", + "visible": true, + "launchType": "standard" + }, + { + "orientation": "unspecified", + "formsEnabled": false, + "name": ".TestAbility", + "srcLanguage": "js", + "srcPath": "TestAbility", + "icon": "$media:icon", + "description": "$string:TestAbility_desc", + "label": "$string:TestAbility_label", + "type": "page", + "visible": true, + "launchType": "standard" + } + ], + "js": [ + { + "pages": [ + "pages/index/index" + ], + "name": "default", + "window": { + "designWidth": 720, + "autoDesignWidth": false + } + }, + { + "pages": [ + "pages/index/index" + ], + "name": ".TestAbility", + "window": { + "designWidth": 720, + "autoDesignWidth": false + } + } + ], + "testRunner": { + "name": "OpenHarmonyTestRunner", + "srcPath": "TestRunner" + } + } +} diff --git a/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/app.js b/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/app.js new file mode 100755 index 0000000000000000000000000000000000000000..4b241cccbaa71f0c5cbd9e7dc437a0feb224c7d5 --- /dev/null +++ b/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/app.js @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2021 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. + */ +export default { + onCreate() { + console.info('AceApplication onCreate'); + }, + onDestroy() { + console.info('AceApplication onDestroy'); + } +}; diff --git a/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/i18n/en-US.json b/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/i18n/en-US.json new file mode 100755 index 0000000000000000000000000000000000000000..e63c70d978a3a53be988388c87182f81785e170c --- /dev/null +++ b/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/i18n/en-US.json @@ -0,0 +1,6 @@ +{ + "strings": { + "hello": "Hello", + "world": "World" + } +} \ No newline at end of file diff --git a/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/i18n/zh-CN.json b/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/i18n/zh-CN.json new file mode 100755 index 0000000000000000000000000000000000000000..de6ee5748322f44942c1b003319d8e66c837675f --- /dev/null +++ b/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/i18n/zh-CN.json @@ -0,0 +1,6 @@ +{ + "strings": { + "hello": "您好", + "world": "世界" + } +} \ No newline at end of file diff --git a/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/pages/index/index.css b/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/pages/index/index.css new file mode 100755 index 0000000000000000000000000000000000000000..6fda792753f2e15f22b529c7b90a82185b2770bf --- /dev/null +++ b/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/pages/index/index.css @@ -0,0 +1,9 @@ +.container { + flex-direction: column; + justify-content: center; + align-items: center; +} + +.title { + font-size: 100px; +} diff --git a/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/pages/index/index.hml b/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/pages/index/index.hml new file mode 100755 index 0000000000000000000000000000000000000000..f64b040a5ae394dbaa5e185e1ecd4f4556b92184 --- /dev/null +++ b/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/pages/index/index.hml @@ -0,0 +1,5 @@ +
+ + {{ $t('strings.hello') }} {{ title }} + +
diff --git a/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/pages/index/index.js b/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/pages/index/index.js new file mode 100755 index 0000000000000000000000000000000000000000..35205bb7c2ee8b1f11259c4ae27298e4a94d76c2 --- /dev/null +++ b/hiviewdfx/abilityconstanttest/src/main/js/MainAbility/pages/index/index.js @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2021 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. + */ + +export default { + data: { + title: "" + }, + onInit() { + this.title = this.$t('strings.world'); + }, + onShow() { + console.info('onShow finish') + }, + onReady() { + }, +} \ No newline at end of file diff --git a/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/app.js b/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/app.js new file mode 100755 index 0000000000000000000000000000000000000000..d5ee271df29e516d1c8929054283e5f2bf5c981c --- /dev/null +++ b/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/app.js @@ -0,0 +1,31 @@ +/* + * 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 AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' +import { Hypium } from '@ohos/hypium' +import testsuite from '../test/List.test' + +export default { + onCreate() { + console.info('TestApplication onCreate') + var abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + var abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + console.info('start run testcase!!!') + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite) + }, + onDestroy() { + console.info("TestApplication onDestroy"); + } +}; diff --git a/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/i18n/en-US.json b/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/i18n/en-US.json new file mode 100755 index 0000000000000000000000000000000000000000..55561b83737c3c31d082fbfa11e5fc987a351104 --- /dev/null +++ b/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/i18n/en-US.json @@ -0,0 +1,8 @@ +{ + "strings": { + "hello": "Hello", + "world": "World" + }, + "Files": { + } +} \ No newline at end of file diff --git a/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/i18n/zh-CN.json b/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/i18n/zh-CN.json new file mode 100755 index 0000000000000000000000000000000000000000..cce1af06761a42add0cac1a0567aa3237eda8cb4 --- /dev/null +++ b/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/i18n/zh-CN.json @@ -0,0 +1,8 @@ +{ + "strings": { + "hello": "您好", + "world": "世界" + }, + "Files": { + } +} \ No newline at end of file diff --git a/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/pages/index/index.css b/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/pages/index/index.css new file mode 100755 index 0000000000000000000000000000000000000000..b21c92c6290ea747bd891e2ab673721afc5521ed --- /dev/null +++ b/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/pages/index/index.css @@ -0,0 +1,30 @@ +.container { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + left: 0px; + top: 0px; + width: 100%; + height: 100%; +} + +.title { + font-size: 60px; + text-align: center; + width: 100%; + height: 40%; + margin: 10px; +} + +@media screen and (device-type: phone) and (orientation: landscape) { + .title { + font-size: 60px; + } +} + +@media screen and (device-type: tablet) and (orientation: landscape) { + .title { + font-size: 100px; + } +} \ No newline at end of file diff --git a/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/pages/index/index.hml b/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/pages/index/index.hml new file mode 100755 index 0000000000000000000000000000000000000000..f64b040a5ae394dbaa5e185e1ecd4f4556b92184 --- /dev/null +++ b/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/pages/index/index.hml @@ -0,0 +1,5 @@ +
+ + {{ $t('strings.hello') }} {{ title }} + +
diff --git a/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/pages/index/index.js b/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/pages/index/index.js new file mode 100755 index 0000000000000000000000000000000000000000..d94b75c085fa1c16a0b2721609b18c57a7295476 --- /dev/null +++ b/hiviewdfx/abilityconstanttest/src/main/js/TestAbility/pages/index/index.js @@ -0,0 +1,26 @@ +/* + * 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. + */ + +export default { + data: { + title: "" + }, + onInit() { + this.title = this.$t('strings.world'); + } +} + + + diff --git a/hiviewdfx/abilityconstanttest/src/main/js/TestRunner/OpenHarmonyTestRunner.js b/hiviewdfx/abilityconstanttest/src/main/js/TestRunner/OpenHarmonyTestRunner.js new file mode 100755 index 0000000000000000000000000000000000000000..b9e78ce7cf73f1ade6ba52a408a44e33f5430f0d --- /dev/null +++ b/hiviewdfx/abilityconstanttest/src/main/js/TestRunner/OpenHarmonyTestRunner.js @@ -0,0 +1,59 @@ +/* + * 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 AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' + +function translateParamsToString(parameters) { + const keySet = new Set([ + '-s class', '-s notClass', '-s suite', '-s itName', + '-s level', '-s testType', '-s size', '-s timeout', + '-s package', '-s dryRun' + ]) + let targetParams = ''; + for (const key in parameters) { + if (keySet.has(key)) { + targetParams += ' ' + key + ' ' + parameters[key] + } + } + return targetParams.trim() +} + + export default { + onPrepare() { + console.info('OpenHarmonyTestRunner OnPrepare') + }, + onRun() { + console.log('OpenHarmonyTestRunner onRun run') + var abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + var abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + + var testAbilityName = abilityDelegatorArguments.parameters['-p'] + '.TestAbility' + + var cmd = 'aa start -d 0 -a ' + testAbilityName + ' -b ' + abilityDelegatorArguments.bundleName + cmd += ' ' + translateParamsToString(abilityDelegatorArguments.parameters) + var debug = abilityDelegatorArguments.parameters["-D"] + console.info('debug value : '+debug) + if (debug == 'true') + { + cmd += ' -D' + } + console.info('cmd : '+cmd) + abilityDelegator.executeShellCommand(cmd, (err, data) => { + console.info('executeShellCommand : err : ' + JSON.stringify(err)); + console.info('executeShellCommand : data : ' + data.stdResult); + console.info('executeShellCommand : data : ' + data.exitCode); + }) + } +}; diff --git a/hiviewdfx/abilityconstanttest/src/main/js/test/List.test.js b/hiviewdfx/abilityconstanttest/src/main/js/test/List.test.js new file mode 100755 index 0000000000000000000000000000000000000000..e7f6d0f9f3fb670cf8fa99b25f296da69ec86493 --- /dev/null +++ b/hiviewdfx/abilityconstanttest/src/main/js/test/List.test.js @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2021 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. + */ +require('./abilityconstant_test.js'); +import ActsAbilityConstantTest from './abilityconstant_test.js' + +export default function testsuite() { + ActsAbilityConstantTest() +} \ No newline at end of file diff --git a/hiviewdfx/abilityconstanttest/src/main/js/test/abilityconstant_test.js b/hiviewdfx/abilityconstanttest/src/main/js/test/abilityconstant_test.js new file mode 100755 index 0000000000000000000000000000000000000000..ad2394a3719b99c3adf4b24c6aa001a65f09395a --- /dev/null +++ b/hiviewdfx/abilityconstanttest/src/main/js/test/abilityconstant_test.js @@ -0,0 +1,79 @@ +/* + * 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 AbilityConstant from "@ohos.application.AbilityConstant" +import Ability from "@ohos.application.Ability" +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium' + +class AbilityTest extends Ability { + onSaveState(reason, wantParam) { + if (reason == AbilityConstant.StateType.APP_RECOVERY) { + wantParam["test3"] = 3; + return AbilityConstant.OnSaveResult.ALL_AGREE + } + return AbilityConstant.OnSaveResult.ALL_REJECT + } +} + +export default function ActsAbilityConstantTest() { +describe("ActsAbilityConstantTest", function () { + /** + * @tc.number: DFX_DFR_AbilityConstant_Interface_0100 + * @tc.name: onSaveState接口测试 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AbilityConstant_Interface_0100", 0, function () { + console.info("-------------------------DFX_DFR_AbilityConstant_Interface_0100 start-------------------------"); + try{ + let ability_test = new AbilityTest(); + let StateType = AbilityConstant.StateType.APP_RECOVERY; + let wantParam = {"test1": 1, "test2": 2}; + let ret = ability_test.onSaveState(StateType, wantParam); + if (wantParam["test3"] == 3) { + expect(true).assertTrue(); + } else { + console.info("test3 not exist"); + expect(false).assertTrue(); + } + expect(ret).assertEqual(AbilityConstant.OnSaveResult.ALL_AGREE); + }catch(error){ + console.info("DFX_DFR_AbilityConstant_Interface_0100 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AbilityConstant_Interface_0100 end"); + }) + + /** + * @tc.number: DFX_DFR_AbilityConstant_Interface_0200 + * @tc.name: 检验AbilityConstant属性返回值是否符合预期 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AbilityConstant_Interface_0200", 0, function () { + console.info("-------------------------DFX_DFR_AbilityConstant_Interface_0200 start-------------------------"); + try{ + expect(AbilityConstant.LaunchReason.APP_RECOVERY).assertEqual(4); + expect(AbilityConstant.OnSaveResult.ALL_AGREE).assertEqual(0); + expect(AbilityConstant.OnSaveResult.CONTINUATION_REJECT).assertEqual(1); + expect(AbilityConstant.OnSaveResult.CONTINUATION_MISMATCH).assertEqual(2); + expect(AbilityConstant.OnSaveResult.RECOVERY_AGREE).assertEqual(3); + expect(AbilityConstant.OnSaveResult.RECOVERY_REJECT).assertEqual(4); + }catch(error){ + console.info("DFX_DFR_AbilityConstant_Interface_0200 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AbilityConstant_Interface_0200 end"); + }) + +}) +} \ No newline at end of file diff --git a/hiviewdfx/abilityconstanttest/src/main/resources/base/element/string.json b/hiviewdfx/abilityconstanttest/src/main/resources/base/element/string.json new file mode 100755 index 0000000000000000000000000000000000000000..6f8639beb5b02df5c593e62c318271089c846004 --- /dev/null +++ b/hiviewdfx/abilityconstanttest/src/main/resources/base/element/string.json @@ -0,0 +1,28 @@ +{ + "string": [ + { + "name": "app_name", + "value": "FaultloggerJs" + }, + { + "name": "mainability_description", + "value": "hap sample empty page" + }, + { + "name": "MainAbility_desc", + "value": "description" + }, + { + "name": "MainAbility_label", + "value": "label" + }, + { + "name": "TestAbility_desc", + "value": "description" + }, + { + "name": "TestAbility_label", + "value": "label" + } + ] +} diff --git a/hiviewdfx/abilityconstanttest/src/main/resources/base/media/icon.png b/hiviewdfx/abilityconstanttest/src/main/resources/base/media/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/hiviewdfx/abilityconstanttest/src/main/resources/base/media/icon.png differ diff --git a/hiviewdfx/apprecoverytest/BUILD.gn b/hiviewdfx/apprecoverytest/BUILD.gn new file mode 100755 index 0000000000000000000000000000000000000000..1ac0cd9094e5c194d3a6e4867434966015dcfb30 --- /dev/null +++ b/hiviewdfx/apprecoverytest/BUILD.gn @@ -0,0 +1,32 @@ +# Copyright (C) 2021 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("//test/xts/tools/build/suite.gni") +ohos_js_hap_suite("ActsAppRecoveryTest") { + hap_profile = "./src/main/config.json" + deps = [ + ":apprecovery_assets", + ":apprecovery_resources", + ] + certificate_profile = "./signature/openharmony_sx.p7b" + hap_name = "ActsAppRecoveryTest" +} +ohos_js_assets("apprecovery_assets") { + js2abc = true + hap_profile = "./src/main/config.json" + source_dir = "./src/main/js" +} +ohos_resources("apprecovery_resources") { + sources = [ "./src/main/resources" ] + hap_profile = "./src/main/config.json" +} diff --git a/hiviewdfx/apprecoverytest/Test.json b/hiviewdfx/apprecoverytest/Test.json new file mode 100755 index 0000000000000000000000000000000000000000..84490e78c3516abe25d67f3b0b0d41d52a0f591b --- /dev/null +++ b/hiviewdfx/apprecoverytest/Test.json @@ -0,0 +1,19 @@ +{ + "description": "Configuration for apprecovery demo Tests", + "driver": { + "type": "OHJSUnitTest", + "test-timeout": "300000", + "package-name": "ohos.apprecovery.test", + "bundle-name": "ohos.apprecovery.test", + "shell-timeout": "300000" + }, + "kits": [ + { + "test-file-name": [ + "ActsAppRecoveryTest.hap" + ], + "type": "AppInstallKit", + "cleanup-apps": true + } + ] +} diff --git a/hiviewdfx/apprecoverytest/signature/openharmony_sx.p7b b/hiviewdfx/apprecoverytest/signature/openharmony_sx.p7b new file mode 100755 index 0000000000000000000000000000000000000000..9be1e98fa4c0c28ca997ed660112fa16b194f0f5 Binary files /dev/null and b/hiviewdfx/apprecoverytest/signature/openharmony_sx.p7b differ diff --git a/hiviewdfx/apprecoverytest/src/main/config.json b/hiviewdfx/apprecoverytest/src/main/config.json new file mode 100755 index 0000000000000000000000000000000000000000..63ce81e7b6f2c9d959f21f3283aca9e1682b8923 --- /dev/null +++ b/hiviewdfx/apprecoverytest/src/main/config.json @@ -0,0 +1,94 @@ +{ + "app": { + "bundleName": "ohos.apprecovery.test", + "vendor": "example", + "version": { + "code": 1, + "name": "1.0" + }, + "apiVersion": { + "compatible": 4, + "target": 5 + } + }, + "deviceConfig": {}, + "module": { + "package": "ohos.apprecovery.test", + "name": ".entry", + "mainAbility": ".MainAbility", + "srcPath":"", + "deviceType": [ + "default", + "phone" + ], + "distro": { + "deliveryWithInstall": true, + "moduleName": "entry", + "moduleType": "entry" + }, + "abilities": [ + { + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ], + "orientation": "unspecified", + "formsEnabled": false, + "name": ".MainAbility", + "srcLanguage": "js", + "srcPath": "MainAbility", + "icon": "$media:icon", + "description": "$string:MainAbility_desc", + "label": "$string:MainAbility_label", + "type": "page", + "visible": true, + "launchType": "standard" + }, + { + "orientation": "unspecified", + "formsEnabled": false, + "name": ".TestAbility", + "srcLanguage": "js", + "srcPath": "TestAbility", + "icon": "$media:icon", + "description": "$string:TestAbility_desc", + "label": "$string:TestAbility_label", + "type": "page", + "visible": true, + "launchType": "standard" + } + ], + "js": [ + { + "pages": [ + "pages/index/index" + ], + "name": "default", + "window": { + "designWidth": 720, + "autoDesignWidth": false + } + }, + { + "pages": [ + "pages/index/index" + ], + "name": ".TestAbility", + "window": { + "designWidth": 720, + "autoDesignWidth": false + } + } + ], + "testRunner": { + "name": "OpenHarmonyTestRunner", + "srcPath": "TestRunner" + } + } +} diff --git a/hiviewdfx/apprecoverytest/src/main/js/MainAbility/app.js b/hiviewdfx/apprecoverytest/src/main/js/MainAbility/app.js new file mode 100755 index 0000000000000000000000000000000000000000..4b241cccbaa71f0c5cbd9e7dc437a0feb224c7d5 --- /dev/null +++ b/hiviewdfx/apprecoverytest/src/main/js/MainAbility/app.js @@ -0,0 +1,22 @@ +/* + * Copyright (C) 2021 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. + */ +export default { + onCreate() { + console.info('AceApplication onCreate'); + }, + onDestroy() { + console.info('AceApplication onDestroy'); + } +}; diff --git a/hiviewdfx/apprecoverytest/src/main/js/MainAbility/i18n/en-US.json b/hiviewdfx/apprecoverytest/src/main/js/MainAbility/i18n/en-US.json new file mode 100755 index 0000000000000000000000000000000000000000..e63c70d978a3a53be988388c87182f81785e170c --- /dev/null +++ b/hiviewdfx/apprecoverytest/src/main/js/MainAbility/i18n/en-US.json @@ -0,0 +1,6 @@ +{ + "strings": { + "hello": "Hello", + "world": "World" + } +} \ No newline at end of file diff --git a/hiviewdfx/apprecoverytest/src/main/js/MainAbility/i18n/zh-CN.json b/hiviewdfx/apprecoverytest/src/main/js/MainAbility/i18n/zh-CN.json new file mode 100755 index 0000000000000000000000000000000000000000..de6ee5748322f44942c1b003319d8e66c837675f --- /dev/null +++ b/hiviewdfx/apprecoverytest/src/main/js/MainAbility/i18n/zh-CN.json @@ -0,0 +1,6 @@ +{ + "strings": { + "hello": "您好", + "world": "世界" + } +} \ No newline at end of file diff --git a/hiviewdfx/apprecoverytest/src/main/js/MainAbility/pages/index/index.css b/hiviewdfx/apprecoverytest/src/main/js/MainAbility/pages/index/index.css new file mode 100755 index 0000000000000000000000000000000000000000..6fda792753f2e15f22b529c7b90a82185b2770bf --- /dev/null +++ b/hiviewdfx/apprecoverytest/src/main/js/MainAbility/pages/index/index.css @@ -0,0 +1,9 @@ +.container { + flex-direction: column; + justify-content: center; + align-items: center; +} + +.title { + font-size: 100px; +} diff --git a/hiviewdfx/apprecoverytest/src/main/js/MainAbility/pages/index/index.hml b/hiviewdfx/apprecoverytest/src/main/js/MainAbility/pages/index/index.hml new file mode 100755 index 0000000000000000000000000000000000000000..f64b040a5ae394dbaa5e185e1ecd4f4556b92184 --- /dev/null +++ b/hiviewdfx/apprecoverytest/src/main/js/MainAbility/pages/index/index.hml @@ -0,0 +1,5 @@ +
+ + {{ $t('strings.hello') }} {{ title }} + +
diff --git a/hiviewdfx/apprecoverytest/src/main/js/MainAbility/pages/index/index.js b/hiviewdfx/apprecoverytest/src/main/js/MainAbility/pages/index/index.js new file mode 100755 index 0000000000000000000000000000000000000000..35205bb7c2ee8b1f11259c4ae27298e4a94d76c2 --- /dev/null +++ b/hiviewdfx/apprecoverytest/src/main/js/MainAbility/pages/index/index.js @@ -0,0 +1,28 @@ +/* + * Copyright (C) 2021 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. + */ + +export default { + data: { + title: "" + }, + onInit() { + this.title = this.$t('strings.world'); + }, + onShow() { + console.info('onShow finish') + }, + onReady() { + }, +} \ No newline at end of file diff --git a/hiviewdfx/apprecoverytest/src/main/js/TestAbility/app.js b/hiviewdfx/apprecoverytest/src/main/js/TestAbility/app.js new file mode 100755 index 0000000000000000000000000000000000000000..d5ee271df29e516d1c8929054283e5f2bf5c981c --- /dev/null +++ b/hiviewdfx/apprecoverytest/src/main/js/TestAbility/app.js @@ -0,0 +1,31 @@ +/* + * 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 AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' +import { Hypium } from '@ohos/hypium' +import testsuite from '../test/List.test' + +export default { + onCreate() { + console.info('TestApplication onCreate') + var abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + var abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + console.info('start run testcase!!!') + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite) + }, + onDestroy() { + console.info("TestApplication onDestroy"); + } +}; diff --git a/hiviewdfx/apprecoverytest/src/main/js/TestAbility/i18n/en-US.json b/hiviewdfx/apprecoverytest/src/main/js/TestAbility/i18n/en-US.json new file mode 100755 index 0000000000000000000000000000000000000000..55561b83737c3c31d082fbfa11e5fc987a351104 --- /dev/null +++ b/hiviewdfx/apprecoverytest/src/main/js/TestAbility/i18n/en-US.json @@ -0,0 +1,8 @@ +{ + "strings": { + "hello": "Hello", + "world": "World" + }, + "Files": { + } +} \ No newline at end of file diff --git a/hiviewdfx/apprecoverytest/src/main/js/TestAbility/i18n/zh-CN.json b/hiviewdfx/apprecoverytest/src/main/js/TestAbility/i18n/zh-CN.json new file mode 100755 index 0000000000000000000000000000000000000000..cce1af06761a42add0cac1a0567aa3237eda8cb4 --- /dev/null +++ b/hiviewdfx/apprecoverytest/src/main/js/TestAbility/i18n/zh-CN.json @@ -0,0 +1,8 @@ +{ + "strings": { + "hello": "您好", + "world": "世界" + }, + "Files": { + } +} \ No newline at end of file diff --git a/hiviewdfx/apprecoverytest/src/main/js/TestAbility/pages/index/index.css b/hiviewdfx/apprecoverytest/src/main/js/TestAbility/pages/index/index.css new file mode 100755 index 0000000000000000000000000000000000000000..b21c92c6290ea747bd891e2ab673721afc5521ed --- /dev/null +++ b/hiviewdfx/apprecoverytest/src/main/js/TestAbility/pages/index/index.css @@ -0,0 +1,30 @@ +.container { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + left: 0px; + top: 0px; + width: 100%; + height: 100%; +} + +.title { + font-size: 60px; + text-align: center; + width: 100%; + height: 40%; + margin: 10px; +} + +@media screen and (device-type: phone) and (orientation: landscape) { + .title { + font-size: 60px; + } +} + +@media screen and (device-type: tablet) and (orientation: landscape) { + .title { + font-size: 100px; + } +} \ No newline at end of file diff --git a/hiviewdfx/apprecoverytest/src/main/js/TestAbility/pages/index/index.hml b/hiviewdfx/apprecoverytest/src/main/js/TestAbility/pages/index/index.hml new file mode 100755 index 0000000000000000000000000000000000000000..f64b040a5ae394dbaa5e185e1ecd4f4556b92184 --- /dev/null +++ b/hiviewdfx/apprecoverytest/src/main/js/TestAbility/pages/index/index.hml @@ -0,0 +1,5 @@ +
+ + {{ $t('strings.hello') }} {{ title }} + +
diff --git a/hiviewdfx/apprecoverytest/src/main/js/TestAbility/pages/index/index.js b/hiviewdfx/apprecoverytest/src/main/js/TestAbility/pages/index/index.js new file mode 100755 index 0000000000000000000000000000000000000000..d94b75c085fa1c16a0b2721609b18c57a7295476 --- /dev/null +++ b/hiviewdfx/apprecoverytest/src/main/js/TestAbility/pages/index/index.js @@ -0,0 +1,26 @@ +/* + * 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. + */ + +export default { + data: { + title: "" + }, + onInit() { + this.title = this.$t('strings.world'); + } +} + + + diff --git a/hiviewdfx/apprecoverytest/src/main/js/TestRunner/OpenHarmonyTestRunner.js b/hiviewdfx/apprecoverytest/src/main/js/TestRunner/OpenHarmonyTestRunner.js new file mode 100755 index 0000000000000000000000000000000000000000..b9e78ce7cf73f1ade6ba52a408a44e33f5430f0d --- /dev/null +++ b/hiviewdfx/apprecoverytest/src/main/js/TestRunner/OpenHarmonyTestRunner.js @@ -0,0 +1,59 @@ +/* + * 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 AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' + +function translateParamsToString(parameters) { + const keySet = new Set([ + '-s class', '-s notClass', '-s suite', '-s itName', + '-s level', '-s testType', '-s size', '-s timeout', + '-s package', '-s dryRun' + ]) + let targetParams = ''; + for (const key in parameters) { + if (keySet.has(key)) { + targetParams += ' ' + key + ' ' + parameters[key] + } + } + return targetParams.trim() +} + + export default { + onPrepare() { + console.info('OpenHarmonyTestRunner OnPrepare') + }, + onRun() { + console.log('OpenHarmonyTestRunner onRun run') + var abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + var abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + + var testAbilityName = abilityDelegatorArguments.parameters['-p'] + '.TestAbility' + + var cmd = 'aa start -d 0 -a ' + testAbilityName + ' -b ' + abilityDelegatorArguments.bundleName + cmd += ' ' + translateParamsToString(abilityDelegatorArguments.parameters) + var debug = abilityDelegatorArguments.parameters["-D"] + console.info('debug value : '+debug) + if (debug == 'true') + { + cmd += ' -D' + } + console.info('cmd : '+cmd) + abilityDelegator.executeShellCommand(cmd, (err, data) => { + console.info('executeShellCommand : err : ' + JSON.stringify(err)); + console.info('executeShellCommand : data : ' + data.stdResult); + console.info('executeShellCommand : data : ' + data.exitCode); + }) + } +}; diff --git a/hiviewdfx/apprecoverytest/src/main/js/test/List.test.js b/hiviewdfx/apprecoverytest/src/main/js/test/List.test.js new file mode 100755 index 0000000000000000000000000000000000000000..40129c79098b4fcc2e9c0b491e9592e61bff19d8 --- /dev/null +++ b/hiviewdfx/apprecoverytest/src/main/js/test/List.test.js @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2021 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. + */ +require('./apprecovery_test.js'); +import ActsAppRecoveryTest from './apprecovery_test.js' + +export default function testsuite() { + ActsAppRecoveryTest() +} \ No newline at end of file diff --git a/hiviewdfx/apprecoverytest/src/main/js/test/apprecovery_test.js b/hiviewdfx/apprecoverytest/src/main/js/test/apprecovery_test.js new file mode 100755 index 0000000000000000000000000000000000000000..f5a5c13a677f53b49c70b59bcda43085ed304338 --- /dev/null +++ b/hiviewdfx/apprecoverytest/src/main/js/test/apprecovery_test.js @@ -0,0 +1,429 @@ +/* + * 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 appRecovery from "@ohos.app.ability.appRecovery" +import AbilityConstant from "@ohos.app.ability.AbilityConstant" +import Ability from "@ohos.application.Ability" +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium' + +class AbilityTest extends Ability { + onSaveState(reason, wantParam) { + if (reason == AbilityConstant.StateType.APP_RECOVERY) { + wantParam["test3"] = 3; + return AbilityConstant.OnSaveResult.ALL_AGREE + } + return AbilityConstant.OnSaveResult.ALL_REJECT + } +} + +export default function ActsAppRecoveryTest() { +describe("ActsAppRecoveryTest", function () { + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_0100 + * @tc.name: 故障发生时总是重启应用 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_0100", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_0100 start-------------------------"); + try{ + appRecovery.enableAppRecovery(0, 3, 1); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_0100 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_0100 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_0200 + * @tc.name: cppcrash故障发生时不重启应用 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_0200", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_0200 start-------------------------"); + try{ + appRecovery.enableAppRecovery(1, 3, 1); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_0200 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_0200 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_0300 + * @tc.name: jscrash故障发生时不重启应用 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_0300", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_0300 start-------------------------"); + try{ + appRecovery.enableAppRecovery(2, 3, 1); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_0300 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_0300 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_0400 + * @tc.name: appfreeze故障发生时不重启应用 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_0400", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_0400 start-------------------------"); + try{ + appRecovery.enableAppRecovery(4, 3, 1); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_0400 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_0400 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_0500 + * @tc.name: cppcrash故障或appfreeze故障发生时不重启应用 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_0500", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_0500 start-------------------------"); + try{ + appRecovery.enableAppRecovery(5, 3, 1); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_0500 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_0500 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_0600 + * @tc.name: jscrash故障或appfreeze故障发生时不重启应用 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_0600", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_0600 start-------------------------"); + try{ + appRecovery.enableAppRecovery(6, 3, 1); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_0600 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_0600 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_0700 + * @tc.name: jscrash故障、cppcrash故障或appfreeze故障发生时都不重启应用 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_0700", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_0700 start-------------------------"); + try{ + appRecovery.enableAppRecovery(7, 3, 1); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_0700 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_0700 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_0800 + * @tc.name: 当error时保存数据 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_0800", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_0800 start-------------------------"); + try{ + appRecovery.enableAppRecovery(0, 1, 1); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_0800 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_0800 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_0900 + * @tc.name: 当切换到后台时保存数据 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_0900", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_0900 start-------------------------"); + try{ + appRecovery.enableAppRecovery(0, 2, 1); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_0900 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_0900 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_1000 + * @tc.name: 以文件保存数据 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_1000", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_1000 start-------------------------"); + try{ + appRecovery.enableAppRecovery(0, 3, 1); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_1000 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_1000 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_1100 + * @tc.name: 以共享内存保存数据 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_1100", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_1100 start-------------------------"); + try{ + appRecovery.enableAppRecovery(0, 3, 2); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_1100 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_1100 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_1200 + * @tc.name: 调用restartApp接口 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_1200", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_1200 start-------------------------"); + try{ + appRecovery.restartApp(); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_1200 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_1200 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_1300 + * @tc.name: 调用saveAppState接口 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_1300", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_1300 start-------------------------"); + try{ + appRecovery.saveAppState(); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_1300 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_1300 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_1400 + * @tc.name: enableAppRecovery接口不传参使用默认值 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_1400", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_1400 start-------------------------"); + try{ + appRecovery.enableAppRecovery(); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_1400 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_1400 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_1500 + * @tc.name: enableAppRecovery接口传1个参数 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_1500", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_1500 start-------------------------"); + try{ + appRecovery.enableAppRecovery(0); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_1500 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_1500 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_1600 + * @tc.name: enableAppRecovery接口传2个参数 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_1600", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_1600 start-------------------------"); + try{ + appRecovery.enableAppRecovery(0, 3); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_1600 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_1600 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_1700 + * @tc.name: enableAppRecovery接口传3个参数 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_1700", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_1700 start-------------------------"); + try{ + appRecovery.enableAppRecovery(0, 3, 1); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_1700 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_1700 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_1800 + * @tc.name: enableAppRecovery接口关键字传参 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_1800", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_1800 start-------------------------"); + try{ + appRecovery.enableAppRecovery(appRecovery.RestartFlag.ALWAYS_RESTART); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_1800 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_1800 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_1900 + * @tc.name: enableAppRecovery接口关键字传多个参数 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_1900", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_1900 start-------------------------"); + try{ + appRecovery.enableAppRecovery(appRecovery.RestartFlag.ALWAYS_RESTART, + appRecovery.SaveOccasionFlag.SAVE_WHEN_ERROR, appRecovery.SaveModeFlag.SAVE_WITH_FILE); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_1900 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_1900 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_2000 + * @tc.name: enableAppRecovery接口关键字传多个组合参数 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_2000", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_2000 start-------------------------"); + try{ + appRecovery.enableAppRecovery( + appRecovery.RestartFlag.ALWAYS_RESTART | appRecovery.RestartFlag.CPP_CRASH_NO_RESTART | appRecovery.RestartFlag.JS_CRASH_NO_RESTART, + appRecovery.SaveOccasionFlag.SAVE_WHEN_ERROR | appRecovery.SaveOccasionFlag.SAVE_WHEN_BACKGROUND, + appRecovery.SaveModeFlag.SAVE_WITH_FILE); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_2000 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_2000 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_2100 + * @tc.name: onSaveState接口测试 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_2100", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_2100 start-------------------------"); + try{ + let ability_test = new AbilityTest(); + let StateType = AbilityConstant.StateType.APP_RECOVERY; + let wantParam = {"test1": 1, "test2": 2}; + let ret = ability_test.onSaveState(StateType, wantParam); + if (wantParam["test3"] == 3) { + expect(true).assertTrue(); + } else { + console.info("test3 not exist"); + expect(false).assertTrue(); + } + expect(ret).assertEqual(AbilityConstant.OnSaveResult.ALL_AGREE); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_2100 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_2100 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_2200 + * @tc.name: 检验appRecovery属性返回值是否符合预期 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_2200", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_2200 start-------------------------"); + try{ + expect(appRecovery.RestartFlag.ALWAYS_RESTART).assertEqual(0); + expect(appRecovery.RestartFlag.CPP_CRASH_NO_RESTART).assertEqual(0x0001); + expect(appRecovery.RestartFlag.JS_CRASH_NO_RESTART).assertEqual(0x0002); + expect(appRecovery.RestartFlag.APP_FREEZE_NO_RESTART).assertEqual(0x0004); + expect(appRecovery.RestartFlag.NO_RESTART).assertEqual(0xFFFF); + expect(appRecovery.SaveOccasionFlag.SAVE_WHEN_ERROR).assertEqual(0x0001); + expect(appRecovery.SaveOccasionFlag.SAVE_WHEN_BACKGROUND).assertEqual(0x0002); + expect(appRecovery.SaveModeFlag.SAVE_WITH_FILE).assertEqual(0x0001); + expect(appRecovery.SaveModeFlag.SAVE_WITH_SHARED_MEMORY).assertEqual(0x0002); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_2200 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_2200 end"); + }) + + /** + * @tc.number: DFX_DFR_AppRecovery_Interface_2300 + * @tc.name: 检验AbilityConstant属性返回值是否符合预期 + * @tc.desc: appRecovery interface test. + */ + it("DFX_DFR_AppRecovery_Interface_2300", 0, function () { + console.info("-------------------------DFX_DFR_AppRecovery_Interface_2300 start-------------------------"); + try{ + expect(AbilityConstant.LaunchReason.APP_RECOVERY).assertEqual(4); + expect(AbilityConstant.OnSaveResult.ALL_AGREE).assertEqual(0); + expect(AbilityConstant.OnSaveResult.CONTINUATION_REJECT).assertEqual(1); + expect(AbilityConstant.OnSaveResult.CONTINUATION_MISMATCH).assertEqual(2); + expect(AbilityConstant.OnSaveResult.RECOVERY_AGREE).assertEqual(3); + expect(AbilityConstant.OnSaveResult.RECOVERY_REJECT).assertEqual(4); + }catch(error){ + console.info("DFX_DFR_AppRecovery_Interface_2300 err = " + error); + expect(false).assertTrue(); + } + console.info("DFX_DFR_AppRecovery_Interface_2300 end"); + }) + +}) +} \ No newline at end of file diff --git a/hiviewdfx/apprecoverytest/src/main/resources/base/element/string.json b/hiviewdfx/apprecoverytest/src/main/resources/base/element/string.json new file mode 100755 index 0000000000000000000000000000000000000000..6f8639beb5b02df5c593e62c318271089c846004 --- /dev/null +++ b/hiviewdfx/apprecoverytest/src/main/resources/base/element/string.json @@ -0,0 +1,28 @@ +{ + "string": [ + { + "name": "app_name", + "value": "FaultloggerJs" + }, + { + "name": "mainability_description", + "value": "hap sample empty page" + }, + { + "name": "MainAbility_desc", + "value": "description" + }, + { + "name": "MainAbility_label", + "value": "label" + }, + { + "name": "TestAbility_desc", + "value": "description" + }, + { + "name": "TestAbility_label", + "value": "label" + } + ] +} diff --git a/hiviewdfx/apprecoverytest/src/main/resources/base/media/icon.png b/hiviewdfx/apprecoverytest/src/main/resources/base/media/icon.png new file mode 100755 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and b/hiviewdfx/apprecoverytest/src/main/resources/base/media/icon.png differ