package org.zstack.test.aop; import junit.framework.Assert; import org.junit.Before; import org.junit.Test; import org.zstack.core.With; import org.zstack.core.cloudbus.CloudBusIN; import org.zstack.core.componentloader.ComponentLoader; import org.zstack.header.AbstractService; import org.zstack.header.Service; import org.zstack.header.message.Message; import org.zstack.header.message.MessageReply; import org.zstack.header.message.NeedReplyMessage; import org.zstack.test.BeanConstructor; import org.zstack.utils.Utils; import org.zstack.utils.logging.CLogger; /** */ public class TestWith1 { CLogger logger = Utils.getLogger(TestWith1.class); boolean success; ComponentLoader loader; CloudBusIN bus; @Before public void setUp() throws Exception { BeanConstructor con = new BeanConstructor(); loader = con.build(); bus = loader.getComponent(CloudBusIN.class); } public static class TestMsg extends NeedReplyMessage { } @Test public void test() throws InterruptedException { Service serv = new AbstractService() { @Override public void handleMessage(final Message msg) { new With(msg).run(new Runnable() { @Override public void run() { throw new RuntimeException("on purpose"); } }); } @Override public String getId() { return "Test1"; } @Override public boolean start() { return true; } @Override public boolean stop() { return true; } }; bus.registerService(serv); bus.activeService(serv); TestMsg msg = new TestMsg(); msg.setServiceId("Test1"); msg.setTimeout(500); MessageReply reply = bus.call(msg); Assert.assertFalse(reply.isSuccess()); } }