未验证 提交 89873429 编写于 作者: O openharmony_ci 提交者: Gitee

!7840 故障恢复

Merge pull request !7840 from xinking129/master
...@@ -444,6 +444,440 @@ export default function abilityTest() { ...@@ -444,6 +444,440 @@ export default function abilityTest() {
}, 800); }, 800);
} }
setTimeout(()=>{
if(flag==false){
expect().assertFail();
commonEvent.unsubscribe(subscriber, unSubscribeCallback);
}
},CASE_TIME_OUT)
})
/*
* @tc.number: Acts_AppRecovery_0800
* @tc.name: Fault recovery of multi-Ability application
* @tc.desc: If the restart recovery status is not set, the Ability application pre-failure state will not be
* restored after the application exits abnormally and restarts.
*/
it('Acts_AppRecovery_0800',0, async function (done) {
let subscriber;
let flag = false;
let countFirst = 0;
let countSecond = 0;
console.info("Acts_AppRecovery_0800====> start")
commonEvent.createSubscriber(ACTS_AppRecovery).then(async (data) => {
console.debug("Acts_AppRecovery_0800====> Create Subscribe");
subscriber = data;
commonEvent.subscribe(subscriber, subscribeCallBack);
globalThis.abilityContext.startAbility(
{
bundleName: "com.example.apprecoverysrely",
abilityName: "EntryAbility",
action: "Acts_AppRecovery_0800_once"
},(err)=>{
console.debug("Acts_AppRecovery_0800====> startAbility err:"+JSON.stringify(err));
expect(err.code).assertEqual(0);
})
})
function subscribeCallBack(err, data) {
console.debug("Acts_AppRecovery_0800====> 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;
}
setTimeout(() => {
commonEvent.subscribe(subscriber, subscribeCallBackSecond);
globalThis.abilityContext.startAbility(
{
bundleName: "com.example.apprecoverysrely",
abilityName: "EntryAbility",
action: "Acts_AppRecovery_0800_twice"
},
(err) => {
console.debug("Acts_AppRecovery_0800====> second startAbility err:" + JSON.stringify(err));
expect(err.code).assertEqual(0);
}
);
}, 800);
}
}
function subscribeCallBackSecond(err, data) {
console.debug("Acts_AppRecovery_0800====> 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_0800====> unSubscribeCallback");
done();
}, 800);
}
setTimeout(()=>{
if(flag==false){
expect().assertFail();
commonEvent.unsubscribe(subscriber, unSubscribeCallback);
}
},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(()=>{ setTimeout(()=>{
if(flag==false){ if(flag==false){
expect().assertFail(); expect().assertFail();
......
...@@ -69,11 +69,9 @@ export default class EntryAbility extends Ability { ...@@ -69,11 +69,9 @@ export default class EntryAbility extends Ability {
hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO);
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground'); hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
// 第一次启动设置项目
if (strAction == "Acts_AppRecovery_0100_once" || strAction == "Acts_AppRecovery_0300_once" || if (strAction == "Acts_AppRecovery_0100_once" || strAction == "Acts_AppRecovery_0300_once" ||
strAction == "Acts_AppRecovery_0700_once" || strAction == "Acts_AppRecovery_0900_once" || strAction == "Acts_AppRecovery_0700_once" || strAction == "Acts_AppRecovery_0900_once" ||
strAction == "Acts_AppRecovery_1100_once") { strAction == "Acts_AppRecovery_1100_once") {
// 是否包存状态
if (strAction == "Acts_AppRecovery_0100_once" || strAction == "Acts_AppRecovery_0300_once" || if (strAction == "Acts_AppRecovery_0100_once" || strAction == "Acts_AppRecovery_0300_once" ||
strAction == "Acts_AppRecovery_1100_once") { strAction == "Acts_AppRecovery_1100_once") {
appRecovery.saveAppState(this.context); appRecovery.saveAppState(this.context);
...@@ -81,11 +79,9 @@ export default class EntryAbility extends Ability { ...@@ -81,11 +79,9 @@ export default class EntryAbility extends Ability {
} else { } else {
console.log(strAction + "Rely====> not saveAppState"); console.log(strAction + "Rely====> not saveAppState");
} }
// 回复ACTS_AppRecovery_First消息
setTimeout(() => { setTimeout(() => {
commonEvent.publish("ACTS_AppRecovery_First",commonEventData,(err)=>{ commonEvent.publish("ACTS_AppRecovery_First",commonEventData,(err)=>{
console.log(strAction + "Rely====> publish err:" + JSON.stringify(err)); console.log(strAction + "Rely====> publish err:" + JSON.stringify(err));
// 是否退出
if (strAction == "Acts_AppRecovery_0100_once" || if (strAction == "Acts_AppRecovery_0100_once" ||
strAction == "Acts_AppRecovery_0700_once") { strAction == "Acts_AppRecovery_0700_once") {
setTimeout(()=>{ setTimeout(()=>{
...@@ -100,7 +96,6 @@ export default class EntryAbility extends Ability { ...@@ -100,7 +96,6 @@ export default class EntryAbility extends Ability {
}, 200); }, 200);
} }
// 第二次启动设置项目
if (strAction == "Acts_AppRecovery_0100_twice" || strAction == "Acts_AppRecovery_0300_twice" || if (strAction == "Acts_AppRecovery_0100_twice" || strAction == "Acts_AppRecovery_0300_twice" ||
strAction == "Acts_AppRecovery_0700_twice" || strAction == "Acts_AppRecovery_0900_twice" || strAction == "Acts_AppRecovery_0700_twice" || strAction == "Acts_AppRecovery_0900_twice" ||
strAction == "Acts_AppRecovery_1100_twice") { strAction == "Acts_AppRecovery_1100_twice") {
......
...@@ -67,11 +67,9 @@ export default class EntryAbility extends Ability { ...@@ -67,11 +67,9 @@ export default class EntryAbility extends Ability {
// Ability has brought to foreground // Ability has brought to foreground
hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO);
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground'); hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
// 第一次启动
if (strAction == "Acts_AppRecovery_0200_once" || strAction == "Acts_AppRecovery_0400_once" || if (strAction == "Acts_AppRecovery_0200_once" || strAction == "Acts_AppRecovery_0400_once" ||
strAction == "Acts_AppRecovery_0800_once" || strAction == "Acts_AppRecovery_0800_once" ||
strAction == "Acts_AppRecovery_1000_once" || strAction == "Acts_AppRecovery_1200_once") { strAction == "Acts_AppRecovery_1000_once" || strAction == "Acts_AppRecovery_1200_once") {
// 需要包存状态的用例
if (strAction == "Acts_AppRecovery_0200_once" || if (strAction == "Acts_AppRecovery_0200_once" ||
strAction == "Acts_AppRecovery_0400_once" || strAction == "Acts_AppRecovery_0400_once" ||
strAction == "Acts_AppRecovery_1200_once") { strAction == "Acts_AppRecovery_1200_once") {
...@@ -86,7 +84,6 @@ export default class EntryAbility extends Ability { ...@@ -86,7 +84,6 @@ export default class EntryAbility extends Ability {
}) })
}, 200); }, 200);
} }
// 第二次启动
if (strAction == "Acts_AppRecovery_0200_twice" || strAction == "Acts_AppRecovery_0400_twice" || if (strAction == "Acts_AppRecovery_0200_twice" || strAction == "Acts_AppRecovery_0400_twice" ||
strAction == "Acts_AppRecovery_0800_twice" || strAction == "Acts_AppRecovery_0800_twice" ||
strAction == "Acts_AppRecovery_1000_twice" || strAction == "Acts_AppRecovery_1200_twice") { strAction == "Acts_AppRecovery_1000_twice" || strAction == "Acts_AppRecovery_1200_twice") {
...@@ -96,14 +93,12 @@ export default class EntryAbility extends Ability { ...@@ -96,14 +93,12 @@ export default class EntryAbility extends Ability {
}) })
}, 200); }, 200);
} }
// 拉起第二个Ability
this.context.startAbility({ this.context.startAbility({
bundleName: "com.example.apprecoverysrely", bundleName: "com.example.apprecoverysrely",
abilityName: "EntryAbilitySec", abilityName: "EntryAbilitySec",
action: strAction action: strAction
},(err) => { },(err) => {
console.debug(strAction + "Rely1====> startAbility err:"+JSON.stringify(err)); console.debug(strAction + "Rely1====> startAbility err:"+JSON.stringify(err));
// 需要自己正常退出的用例
if (strAction == "Acts_AppRecovery_0200_once" || strAction == "Acts_AppRecovery_0200_twice" || if (strAction == "Acts_AppRecovery_0200_once" || strAction == "Acts_AppRecovery_0200_twice" ||
strAction == "Acts_AppRecovery_0400_twice" || strAction == "Acts_AppRecovery_0400_twice" ||
strAction == "Acts_AppRecovery_0800_once" || strAction == "Acts_AppRecovery_0800_twice" || strAction == "Acts_AppRecovery_0800_once" || strAction == "Acts_AppRecovery_0800_twice" ||
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册