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