diff --git a/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/BUILD.gn b/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/BUILD.gn index b651a07fc92d48cd3d59a39eadc926a0be6c5d1e..48c83978b363f10118117e2f026aee1bdc221ca8 100644 --- a/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/BUILD.gn +++ b/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/BUILD.gn @@ -1,43 +1,43 @@ -# Copyright (c) 2023 Huawei Device Co., Ltd. -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and +# Copyright (c) 2023 Huawei Device Co., Ltd. +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and # limitations under the License. - -import("//test/xts/tools/build/suite.gni") - -ohos_js_hap_suite("ActsAppRecoveryTestCaller") { - hap_profile = "entry/src/ohosTest/module.json" - js_build_mode = "debug" - deps = [ - ":actsapprecoverytestcaller_js_assets", - ":actsapprecoverytestcaller_resources", - ] - ets2abc = true - certificate_profile = "signature/openharmony_sx.p7b" - hap_name = "ActsAppRecoveryTestCaller" - subsystem_name = "ability" - part_name = "ability_runtime" -} - -ohos_app_scope("actsapprecoverytestcaller_app_profile") { - app_profile = "AppScope/app.json" - sources = [ "AppScope/resources" ] -} - -ohos_js_assets("actsapprecoverytestcaller_js_assets") { - source_dir = "entry/src/ohosTest/ets" -} - -ohos_resources("actsapprecoverytestcaller_resources") { - sources = [ "entry/src/ohosTest/resources" ] - deps = [ ":actsapprecoverytestcaller_app_profile" ] - hap_profile = "entry/src/ohosTest/module.json" -} + +import("//test/xts/tools/build/suite.gni") + +ohos_js_hap_suite("ActsAppRecoveryTestCaller") { + hap_profile = "entry/src/main/module.json" + js_build_mode = "debug" + deps = [ + ":actsapprecoverytestcaller_js_assets", + ":actsapprecoverytestcaller_resources", + ] + ets2abc = true + certificate_profile = "signature/openharmony_sx.p7b" + hap_name = "ActsAppRecoveryTestCaller" + subsystem_name = "ability" + part_name = "ability_runtime" +} + +ohos_app_scope("actsapprecoverytestcaller_app_profile") { + app_profile = "AppScope/app.json" + sources = [ "AppScope/resources" ] +} + +ohos_js_assets("actsapprecoverytestcaller_js_assets") { + source_dir = "entry/src/main/ets" +} + +ohos_resources("actsapprecoverytestcaller_resources") { + sources = [ "entry/src/main/resources" ] + deps = [ ":actsapprecoverytestcaller_app_profile" ] + hap_profile = "entry/src/main/module.json" +} diff --git a/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ts b/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/ets/TestRunner/OpenHarmonyTestRunner.ts similarity index 100% rename from ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ts rename to ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/ets/TestRunner/OpenHarmonyTestRunner.ts diff --git a/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/ets/test/Ability.test.ets b/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/ets/test/Ability.test.ets similarity index 61% rename from ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/ets/test/Ability.test.ets rename to ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/ets/test/Ability.test.ets index 78a8999e4cfa6c71146de73b4eb7dfa3997c9182..cb7151c4adf198947addb4c6d862920013ee0d11 100644 --- a/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/ets/test/Ability.test.ets +++ b/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/ets/test/Ability.test.ets @@ -18,6 +18,7 @@ import commonEvent from '@ohos.commonEvent' import abilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry'; import missionManager from '@ohos.application.missionManager'; + const CASE_TIME_OUT=5000; var ACTS_AppRecovery = { events: ["ACTS_AppRecovery_First", "ACTS_AppRecovery_Second"] @@ -541,5 +542,353 @@ export default function abilityTest() { },CASE_TIME_OUT) }) + /* + * @tc.number: Acts_AppRecovery_0900 + * @tc.name: Fault recovery of multi-Ability application + * @tc.desc: When the application settings restart recovery status is valid, the application exits abnormally + * and restarts to restore the pre-failure state of Ability application. + */ + it('Acts_AppRecovery_0900',0, async function (done) { + let subscriber; + let flag = false; + console.info("Acts_AppRecovery_0900====> start") + commonEvent.createSubscriber(ACTS_AppRecovery).then(async (data) => { + console.debug("Acts_AppRecovery_0900====> Create Subscribe"); + subscriber = data; + commonEvent.subscribe(subscriber, subscribeCallBack); + globalThis.abilityContext.startAbility( + { + bundleName: "com.example.apprecoveryrely", + abilityName: "EntryAbility", + action: "Acts_AppRecovery_0900_once" + },(err)=>{ + console.debug("Acts_AppRecovery_0900====> startAbility err:"+JSON.stringify(err)); + expect(err.code).assertEqual(0); + }) + }) + + function subscribeCallBack(err, data) { + console.debug("Acts_AppRecovery_0900====> subscribeCallBack data:" + JSON.stringify(data)); + if(data.event == "ACTS_AppRecovery_First") { + if (data.parameters.message["ohos.aafwk.param.AbilityRecoveryRestart"] == undefined) { + expect(true).assertTrue(); + } else { + expect(data.parameters.message["ohos.aafwk.param.AbilityRecoveryRestart"]).assertFalse(); + } + let abilityDelegator = abilityDelegatorRegistry.getAbilityDelegator(); + let pkillCmd = "pkill -f com.example.apprecoveryrely"; + console.debug("Acts_AppRecovery_0900====> shell command call " + pkillCmd); + abilityDelegator.executeShellCommand(pkillCmd, 1, (err, data) => { + console.debug("Acts_AppRecovery_0900====> shell command callback " + JSON.stringify(err) + " " + JSON.stringify(data)); + setTimeout(() => { + commonEvent.subscribe(subscriber, subscribeCallBackSecond); + globalThis.abilityContext.startAbility( + { + bundleName: "com.example.apprecoveryrely", + abilityName: "EntryAbility", + action: "Acts_AppRecovery_0900_twice" + }, + (err) => { + console.debug("Acts_AppRecovery_0900====> second startAbility err:" + JSON.stringify(err)); + expect(err.code).assertEqual(0); + } + ); + }, 800); + }); + } + } + + function subscribeCallBackSecond(err, data) { + console.debug("Acts_AppRecovery_0900====> second subscribeCallBack data:" + JSON.stringify(data)); + if(data.event == "ACTS_AppRecovery_Second") { + flag=true; + if (data.parameters.message["ohos.aafwk.param.AbilityRecoveryRestart"] == undefined) { + expect(true).assertTrue(); + } else { + expect(data.parameters.message["ohos.aafwk.param.AbilityRecoveryRestart"]).assertFalse(); + } + commonEvent.unsubscribe(subscriber, unSubscribeCallback); + } + } + + function unSubscribeCallback() { + setTimeout(() => { + console.debug("Acts_AppRecovery_0900====> unSubscribeCallback"); + done(); + }, 800); + } + + setTimeout(()=>{ + if(flag==false){ + expect().assertFail(); + commonEvent.unsubscribe(subscriber, unSubscribeCallback); + } + },CASE_TIME_OUT) + }) + + /* + * @tc.number: Acts_AppRecovery_1000 + * @tc.name: Fault recovery of multi-Ability application + * @tc.desc: When the application settings restart recovery status is valid, the application exits abnormally + * and restarts to restore the pre-failure state of Ability application. + */ + it('Acts_AppRecovery_1000',0, async function (done) { + let subscriber; + let flag = false; + let countFirst = 0; + let countSecond = 0; + console.info("Acts_AppRecovery_1000====> start") + commonEvent.createSubscriber(ACTS_AppRecovery).then(async (data) => { + console.debug("Acts_AppRecovery_1000====> Create Subscribe"); + subscriber = data; + commonEvent.subscribe(subscriber, subscribeCallBack); + globalThis.abilityContext.startAbility( + { + bundleName: "com.example.apprecoverysrely", + abilityName: "EntryAbility", + action: "Acts_AppRecovery_1000_once" + },(err)=>{ + console.debug("Acts_AppRecovery_1000====> startAbility err:"+JSON.stringify(err)); + expect(err.code).assertEqual(0); + }) + }) + + function subscribeCallBack(err, data) { + console.debug("Acts_AppRecovery_1000====> subscribeCallBack data:" + JSON.stringify(data)); + if(data.event == "ACTS_AppRecovery_First") { + countFirst++; + if (data.parameters.message["ohos.aafwk.param.AbilityRecoveryRestart"] == undefined) { + expect(true).assertTrue(); + } else { + expect(data.parameters.message["ohos.aafwk.param.AbilityRecoveryRestart"]).assertFalse(); + } + if (countFirst < 2) { + return; + } + let abilityDelegator = abilityDelegatorRegistry.getAbilityDelegator(); + let pkillCmd = "pkill -f com.example.apprecoverysrely"; + abilityDelegator.executeShellCommand(pkillCmd, 1, (err, data) => { + setTimeout(() => { + commonEvent.subscribe(subscriber, subscribeCallBackSecond); + globalThis.abilityContext.startAbility( + { + bundleName: "com.example.apprecoverysrely", + abilityName: "EntryAbility", + action: "Acts_AppRecovery_1000_twice" + }, + (err) => { + console.debug("Acts_AppRecovery_1000====> second startAbility err:" + JSON.stringify(err)); + expect(err.code).assertEqual(0); + } + ); + }, 800); + }); + } + } + + function subscribeCallBackSecond(err, data) { + console.debug("Acts_AppRecovery_1000====> second subscribeCallBack data:" + JSON.stringify(data)); + if(data.event == "ACTS_AppRecovery_Second") { + countSecond++; + flag=true; + if (data.parameters.message["ohos.aafwk.param.AbilityRecoveryRestart"] == undefined) { + expect(true).assertTrue(); + } else { + expect(data.parameters.message["ohos.aafwk.param.AbilityRecoveryRestart"]).assertFalse(); + } + if (countSecond < 2) { + return; + } + commonEvent.unsubscribe(subscriber, unSubscribeCallback); + } + } + + function unSubscribeCallback() { + setTimeout(() => { + console.debug("Acts_AppRecovery_1000====> unSubscribeCallback"); + done(); + }, 800); + } + + setTimeout(()=>{ + if(flag==false){ + expect().assertFail(); + commonEvent.unsubscribe(subscriber, unSubscribeCallback); + } + },CASE_TIME_OUT) + }) + + + + /* + * @tc.number: Acts_AppRecovery_1100 + * @tc.name: Fault recovery of multi-Ability application + * @tc.desc: When setting restart recovery status is valid, exit the application by clearing the task list and + * do not restore the pre-failure state of the Ability application after the application restart. + */ + it('Acts_AppRecovery_1100',0, async function (done) { + let subscriber; + let flag = false; + console.info("Acts_AppRecovery_1100====> start") + commonEvent.createSubscriber(ACTS_AppRecovery).then(async (data) => { + console.debug("Acts_AppRecovery_1100====> Create Subscribe"); + subscriber = data; + commonEvent.subscribe(subscriber, subscribeCallBack); + globalThis.abilityContext.startAbility( + { + bundleName: "com.example.apprecoveryrely", + abilityName: "EntryAbility", + action: "Acts_AppRecovery_1100_once" + },(err)=>{ + console.debug("Acts_AppRecovery_1100====> startAbility err:"+JSON.stringify(err)); + expect(err.code).assertEqual(0); + }) + }) + + function subscribeCallBack(err, data) { + console.debug("Acts_AppRecovery_1100====> subscribeCallBack data:" + JSON.stringify(data)); + if(data.event == "ACTS_AppRecovery_First") { + if (data.parameters.message["ohos.aafwk.param.AbilityRecoveryRestart"] == undefined) { + expect(true).assertTrue(); + } else { + expect(data.parameters.message["ohos.aafwk.param.AbilityRecoveryRestart"]).assertFalse(); + } + let abilityDelegator = abilityDelegatorRegistry.getAbilityDelegator(); + let pkillCmd = "pkill -f com.example.apprecoveryrely"; + abilityDelegator.executeShellCommand(pkillCmd, 1, (err, data) => { + setTimeout(() => { + commonEvent.subscribe(subscriber, subscribeCallBackSecond); + globalThis.abilityContext.startAbility( + { + bundleName: "com.example.apprecoveryrely", + abilityName: "EntryAbility", + action: "Acts_AppRecovery_1100_twice" + }, + (err) => { + console.debug("Acts_AppRecovery_1100====> second startAbility err:" + JSON.stringify(err)); + expect(err.code).assertEqual(0); + } + ); + }, 800); + }); + } + } + + function subscribeCallBackSecond(err, data) { + console.debug("Acts_AppRecovery_1100====> second subscribeCallBack data:" + JSON.stringify(data)); + if(data.event == "ACTS_AppRecovery_Second") { + flag=true; + let message = data.parameters.message; + expect(message["ohos.aafwk.param.AbilityRecoveryRestart"]).assertTrue(); + commonEvent.unsubscribe(subscriber, unSubscribeCallback); + } + } + + function unSubscribeCallback() { + setTimeout(() => { + console.debug("Acts_AppRecovery_1100====> unSubscribeCallback"); + done(); + }, 800); + } + + setTimeout(()=>{ + if(flag==false){ + expect().assertFail(); + commonEvent.unsubscribe(subscriber, unSubscribeCallback); + } + },CASE_TIME_OUT) + }) + + /* + * @tc.number: Acts_AppRecovery_1200 + * @tc.name: Fault recovery of multi-Ability application + * @tc.desc: When setting restart recovery status is valid, exit the application by clearing the task list and + * do not restore the pre-failure state of the Ability application after the application restart. + */ + it('Acts_AppRecovery_1200',0, async function (done) { + let subscriber; + let flag = false; + let countFirst = 0; + let countSecond = 0; + console.info("Acts_AppRecovery_1200====> start") + commonEvent.createSubscriber(ACTS_AppRecovery).then(async (data) => { + console.debug("Acts_AppRecovery_1200====> Create Subscribe"); + subscriber = data; + commonEvent.subscribe(subscriber, subscribeCallBack); + globalThis.abilityContext.startAbility( + { + bundleName: "com.example.apprecoverysrely", + abilityName: "EntryAbility", + action: "Acts_AppRecovery_1200_once" + },(err)=>{ + console.debug("Acts_AppRecovery_1200====> startAbility err:"+JSON.stringify(err)); + expect(err.code).assertEqual(0); + }) + }) + + function subscribeCallBack(err, data) { + console.debug("Acts_AppRecovery_1200====> subscribeCallBack data:" + JSON.stringify(data)); + if(data.event == "ACTS_AppRecovery_First") { + countFirst++; + let message = data.parameters.message; + let strJson = JSON.stringify(data.parameters.message); + if (data.parameters.message["ohos.aafwk.param.AbilityRecoveryRestart"] == undefined) { + expect(true).assertTrue(); + } else { + expect(data.parameters.message["ohos.aafwk.param.AbilityRecoveryRestart"]).assertFalse(); + } + if (countFirst < 2) { + return; + } + let abilityDelegator = abilityDelegatorRegistry.getAbilityDelegator(); + let pkillCmd = "pkill -f com.example.apprecoverysrely"; + abilityDelegator.executeShellCommand(pkillCmd, 1, (err, data) => { + setTimeout(() => { + commonEvent.subscribe(subscriber, subscribeCallBackSecond); + globalThis.abilityContext.startAbility( + { + bundleName: "com.example.apprecoverysrely", + abilityName: "EntryAbility", + action: "Acts_AppRecovery_1200_twice" + }, + (err) => { + console.debug("Acts_AppRecovery_1200====> second startAbility err:" + JSON.stringify(err)); + expect(err.code).assertEqual(0); + } + ); + }, 800); + }); + } + } + + function subscribeCallBackSecond(err, data) { + console.debug("Acts_AppRecovery_1200====> second subscribeCallBack data:" + JSON.stringify(data)); + if(data.event == "ACTS_AppRecovery_Second") { + countSecond++; + flag=true; + let message = data.parameters.message; + expect(message["ohos.aafwk.param.AbilityRecoveryRestart"]).assertTrue(); + if (countSecond < 2) { + return; + } + commonEvent.unsubscribe(subscriber, unSubscribeCallback); + } + } + + function unSubscribeCallback() { + setTimeout(() => { + console.debug("Acts_AppRecovery_1200====> unSubscribeCallback"); + done(); + }, 800); + } + + setTimeout(()=>{ + if(flag==false){ + expect().assertFail(); + commonEvent.unsubscribe(subscriber, unSubscribeCallback); + } + },CASE_TIME_OUT) + }) + }) } \ No newline at end of file diff --git a/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/ets/test/List.test.ets b/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/ets/test/List.test.ets similarity index 100% rename from ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/ets/test/List.test.ets rename to ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/ets/test/List.test.ets diff --git a/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/ets/testability/TestAbility.ets b/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/ets/testability/TestAbility.ets similarity index 98% rename from ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/ets/testability/TestAbility.ets rename to ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/ets/testability/TestAbility.ets index e35e89b89108c421311940ca5bc74d853b942c77..dcaeccba2925f3b37ef3830165f2982200c2e418 100644 --- a/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/ets/testability/TestAbility.ets +++ b/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/ets/testability/TestAbility.ets @@ -13,6 +13,7 @@ * limitations under the License. */ import hilog from '@ohos.hilog' +// import Ability from '@ohos.application.Ability' import Ability from '@ohos.app.ability.UIAbility' import AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' import { Hypium } from '@ohos/hypium' diff --git a/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/ets/testability/pages/Index.ets b/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/ets/testability/pages/Index.ets similarity index 100% rename from ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/ets/testability/pages/Index.ets rename to ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/ets/testability/pages/Index.ets diff --git a/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/module.json b/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/module.json similarity index 100% rename from ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/module.json rename to ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/module.json diff --git a/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/resources/base/element/color.json b/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/resources/base/element/color.json similarity index 100% rename from ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/resources/base/element/color.json rename to ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/resources/base/element/color.json diff --git a/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/resources/base/element/string.json b/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/resources/base/element/string.json similarity index 100% rename from ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/resources/base/element/string.json rename to ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/resources/base/element/string.json diff --git a/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/resources/base/media/icon.png b/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/resources/base/media/icon.png similarity index 100% rename from ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/resources/base/media/icon.png rename to ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/resources/base/media/icon.png diff --git a/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/resources/base/profile/test_pages.json b/ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/resources/base/profile/test_pages.json similarity index 100% rename from ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/ohosTest/resources/base/profile/test_pages.json rename to ability/ability_runtime/apprecovery/ActsAppRecoveryTestCaller/entry/src/main/resources/base/profile/test_pages.json