package org.zstack.test.core.workflow;
import junit.framework.Assert;
import org.junit.Test;
import org.zstack.core.workflow.WorkFlowException;
import org.zstack.header.core.Completion;
import org.zstack.header.core.workflow.FlowRollback;
import org.zstack.header.core.workflow.FlowTrigger;
import org.zstack.header.errorcode.ErrorCode;
import org.zstack.header.exception.CloudRuntimeException;
import org.zstack.test.BeanConstructor;
import org.zstack.utils.Utils;
import org.zstack.utils.logging.CLogger;
/**
* Created with IntelliJ IDEA.
* User: frank
* Time: 3:33 PM
* To change this template use File | Settings | File Templates.
*/
public class TestSimpleFlow11 {
CLogger logger = Utils.getLogger(TestSimpleFlow11.class);
boolean s = false;
@Test
public void test() throws WorkFlowException {
new BeanConstructor().build();
FlowRollback rollback = new FlowRollback() {
@Override
public void rollback() {
s = true;
}
@Override
public void skipRestRollbacks() {
}
};
new Completion(rollback) {
@Override
public void success() {
}
@Override
public void fail(ErrorCode errorCode) {
throw new RuntimeException("on purpose");
}
}.fail(null);
Assert.assertTrue(s);
s = false;
rollback = new FlowRollback() {
@Override
public void rollback() {
s = true;
}
@Override
public void skipRestRollbacks() {
}
};
new Completion(rollback) {
@Override
public void success() {
throw new CloudRuntimeException("on purpose");
}
@Override
public void fail(ErrorCode errorCode) {
}
}.success();
Assert.assertTrue(s);
s = false;
FlowTrigger trigger = new FlowTrigger() {
@Override
public void fail(ErrorCode errorCode) {
s = true;
}
@Override
public void next() {
}
@Override
public void setError(ErrorCode error) {
}
};
new Completion(trigger) {
@Override
public void success() {
throw new RuntimeException("on purpose");
}
@Override
public void fail(ErrorCode errorCode) {
}
}.success();
Assert.assertTrue(s);
s = false;
trigger = new FlowTrigger() {
@Override
public void fail(ErrorCode errorCode) {
s = true;
}
@Override
public void next() {
}
@Override
public void setError(ErrorCode error) {
}
};
new Completion(trigger) {
@Override
public void success() {
}
@Override
public void fail(ErrorCode errorCode) {
throw new RuntimeException("on purpose");
}
}.fail(null);
Assert.assertTrue(s);
}
}