From 66806d60a588adc239e6a81ddc909a666686dedc Mon Sep 17 00:00:00 2001 From: redkale Date: Tue, 13 Aug 2024 23:03:55 +0800 Subject: [PATCH] MessagedInstanceTest --- .../redkale/test/mq/MessagedInstanceTest.java | 151 ++++++++++++++++++ ...ssageFacde.java => TestMessageFacade.java} | 2 +- 2 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 src/test/java/org/redkale/test/mq/MessagedInstanceTest.java rename src/test/java/org/redkale/test/mq/{TestMessageFacde.java => TestMessageFacade.java} (88%) diff --git a/src/test/java/org/redkale/test/mq/MessagedInstanceTest.java b/src/test/java/org/redkale/test/mq/MessagedInstanceTest.java new file mode 100644 index 000000000..11765ff96 --- /dev/null +++ b/src/test/java/org/redkale/test/mq/MessagedInstanceTest.java @@ -0,0 +1,151 @@ +/* + +*/ + +package org.redkale.test.mq; + +import java.lang.reflect.Field; +import java.net.InetSocketAddress; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.redkale.boot.Application; +import org.redkale.boot.LoggingBaseHandler; +import org.redkale.inject.ResourceEvent; +import org.redkale.inject.ResourceFactory; +import org.redkale.mq.spi.MessageAgent; +import org.redkale.mq.spi.MessageAsmMethodBoost; +import org.redkale.mq.spi.MessageClientProducer; +import org.redkale.mq.spi.MessageModuleEngine; +import org.redkale.net.AsyncGroup; +import org.redkale.net.client.ClientAddress; +import org.redkale.net.sncp.Sncp; +import org.redkale.net.sncp.SncpClient; +import org.redkale.net.sncp.SncpRpcGroups; +import org.redkale.util.AnyValue; +import org.redkale.util.Utility; + +/** + * + * @author zhangjx + */ +public class MessagedInstanceTest { + + private static Application application; + + private static MessageModuleEngine engine; + + private static ResourceFactory resourceFactory; + + public static void main(String[] args) throws Throwable { + LoggingBaseHandler.initDebugLogConfig(); + MessagedInstanceTest test = new MessagedInstanceTest(); + init(); + test.run1(); + test.run2(); + } + + @BeforeAll + public static void init() throws Exception { + application = Application.create(true); + resourceFactory = application.getResourceFactory(); + engine = new MessageModuleEngine(application); + + MessageAgent agent = createMessageAgent(application, "mymq"); + MessageAgent[] messageAgents = new MessageAgent[] {agent}; + Field field = MessageModuleEngine.class.getDeclaredField("messageAgents"); + field.setAccessible(true); + field.set(engine, messageAgents); + } + + @Test + public void run1() throws Exception { + Class serviceClass = TestMessageService.class; + MessageAsmMethodBoost boost = new MessageAsmMethodBoost(false, serviceClass, engine); + SncpRpcGroups grous = new SncpRpcGroups(); + AsyncGroup iGroup = AsyncGroup.create("", Utility.newScheduledExecutor(1), 0, 0); + SncpClient client = new SncpClient( + "", iGroup, "0", new InetSocketAddress("127.0.0.1", 8080), new ClientAddress(), "TCP", 1, 16); + TestMessageService instance = Sncp.createLocalService( + null, "", serviceClass, boost, resourceFactory, grous, client, null, null, null); + resourceFactory.inject(instance); + + } + + @Test + public void run2() throws Exception { + TestMessageFacade facade = new TestMessageFacade(); + engine.onServicePostInit(null, facade); + } + + public static MessageAgent createMessageAgent(Application application, String name) throws Exception { + MessageAgent agent = new MessageAgent() { + @Override + protected void startMessageConsumer() { + // + } + + @Override + protected void stopMessageConsumer() { + // + } + + @Override + protected void startMessageProducer() { + // + } + + @Override + protected void stopMessageProducer() { + // + } + + @Override + protected void startMessageClientConsumer() { + // + } + + @Override + protected void stopMessageClientConsumer() { + // + } + + @Override + protected MessageClientProducer startMessageClientProducer() { + return null; + } + + @Override + public void onResourceChange(ResourceEvent[] events) {} + + @Override + public CompletableFuture createTopic(String... topics) { + return null; + } + + @Override + public CompletableFuture deleteTopic(String... topics) { + return null; + } + + @Override + public CompletableFuture> queryTopic() { + return null; + } + + @Override + public boolean acceptsConf(AnyValue config) { + return true; + } + }; + Field field = MessageAgent.class.getDeclaredField("application"); + field.setAccessible(true); + field.set(agent, application); + field = MessageAgent.class.getDeclaredField("environment"); + field.setAccessible(true); + field.set(agent, application.getEnvironment()); + agent.init(AnyValue.create().addValue("name", name)); + return agent; + } +} diff --git a/src/test/java/org/redkale/test/mq/TestMessageFacde.java b/src/test/java/org/redkale/test/mq/TestMessageFacade.java similarity index 88% rename from src/test/java/org/redkale/test/mq/TestMessageFacde.java rename to src/test/java/org/redkale/test/mq/TestMessageFacade.java index ba71473a5..42ffc83ba 100644 --- a/src/test/java/org/redkale/test/mq/TestMessageFacde.java +++ b/src/test/java/org/redkale/test/mq/TestMessageFacade.java @@ -13,7 +13,7 @@ import org.redkale.service.AbstractService; * @author zhangjx */ @Component -public class TestMessageFacde extends AbstractService { +public class TestMessageFacade extends AbstractService { @Messaged(mq = "mymq", topics = "test_bean_topic", group = "group_5") public int runMessage5(TestBean message) {