feat: change default mode (#11653)
This commit is contained in:
parent
bc383544e2
commit
feaa530589
|
|
@ -22,19 +22,19 @@ import org.apache.dubbo.common.extension.ExtensionScope;
|
|||
import org.apache.dubbo.common.extension.SPI;
|
||||
import org.apache.dubbo.common.utils.StringUtils;
|
||||
import org.apache.dubbo.config.ApplicationConfig;
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
import org.apache.dubbo.rpc.executor.ExecutorSupport;
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
|
||||
import java.util.Optional;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.ScheduledExecutorService;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_ISOLATION;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
@SPI(value = "default", scope = ExtensionScope.APPLICATION)
|
||||
@SPI(value = "isolation", scope = ExtensionScope.APPLICATION)
|
||||
public interface ExecutorRepository {
|
||||
|
||||
/**
|
||||
|
|
@ -187,7 +187,7 @@ public interface ExecutorRepository {
|
|||
|
||||
static String getMode(ApplicationModel applicationModel) {
|
||||
Optional<ApplicationConfig> optional = applicationModel.getApplicationConfigManager().getApplication();
|
||||
return optional.map(ApplicationConfig::getExecutorManagementMode).orElse(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
return optional.map(ApplicationConfig::getExecutorManagementMode).orElse(EXECUTOR_MANAGEMENT_MODE_ISOLATION);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,14 +16,6 @@
|
|||
*/
|
||||
package org.apache.dubbo.config;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.dubbo.common.compiler.support.AdaptiveCompiler;
|
||||
import org.apache.dubbo.common.infra.InfraAdapter;
|
||||
import org.apache.dubbo.common.logger.ErrorTypeAwareLogger;
|
||||
|
|
@ -33,6 +25,14 @@ import org.apache.dubbo.common.utils.StringUtils;
|
|||
import org.apache.dubbo.config.support.Parameter;
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_PROTOCOL_KEY;
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_VERSION_KEY;
|
||||
|
|
@ -40,7 +40,7 @@ import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;
|
|||
import static org.apache.dubbo.common.constants.CommonConstants.DUMP_DIRECTORY;
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.DUMP_ENABLE;
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE;
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_ISOLATION;
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.HOST_KEY;
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.LIVENESS_PROBE_KEY;
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.METADATA_KEY;
|
||||
|
|
@ -274,7 +274,7 @@ public class ApplicationConfig extends AbstractConfig {
|
|||
}
|
||||
}
|
||||
if (executorManagementMode == null) {
|
||||
executorManagementMode = EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
executorManagementMode = EXECUTOR_MANAGEMENT_MODE_ISOLATION;
|
||||
}
|
||||
if (enableFileCache == null) {
|
||||
enableFileCache = Boolean.TRUE;
|
||||
|
|
|
|||
|
|
@ -720,7 +720,7 @@ class ExtensionLoaderTest {
|
|||
void testDuplicatedImplWithoutOverriddenStrategy() {
|
||||
List<LoadingStrategy> loadingStrategies = ExtensionLoader.getLoadingStrategies();
|
||||
ExtensionLoader.setLoadingStrategies(new DubboExternalLoadingStrategyTest(false),
|
||||
new DubboInternalLoadingStrategyTest(false));
|
||||
new DubboInternalLoadingStrategyTest(false));
|
||||
ExtensionLoader<DuplicatedWithoutOverriddenExt> extensionLoader = getExtensionLoader(DuplicatedWithoutOverriddenExt.class);
|
||||
try {
|
||||
extensionLoader.getExtension("duplicated");
|
||||
|
|
@ -738,7 +738,7 @@ class ExtensionLoaderTest {
|
|||
void testDuplicatedImplWithOverriddenStrategy() {
|
||||
List<LoadingStrategy> loadingStrategies = ExtensionLoader.getLoadingStrategies();
|
||||
ExtensionLoader.setLoadingStrategies(new DubboExternalLoadingStrategyTest(true),
|
||||
new DubboInternalLoadingStrategyTest(true));
|
||||
new DubboInternalLoadingStrategyTest(true));
|
||||
ExtensionLoader<DuplicatedOverriddenExt> extensionLoader = getExtensionLoader(DuplicatedOverriddenExt.class);
|
||||
DuplicatedOverriddenExt duplicatedOverriddenExt = extensionLoader.getExtension("duplicated");
|
||||
assertEquals("DuplicatedOverriddenExt1", duplicatedOverriddenExt.echo());
|
||||
|
|
@ -832,4 +832,4 @@ class ExtensionLoaderTest {
|
|||
return MAX_PRIORITY;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@
|
|||
package org.apache.dubbo.config;
|
||||
|
||||
import org.apache.dubbo.config.bootstrap.DubboBootstrap;
|
||||
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
|
|
@ -31,7 +30,7 @@ import java.util.Map;
|
|||
import static org.apache.dubbo.common.constants.CommonConstants.APPLICATION_KEY;
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.DUBBO;
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.DUMP_DIRECTORY;
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_ISOLATION;
|
||||
import static org.apache.dubbo.common.constants.QosConstants.ACCEPT_FOREIGN_IP;
|
||||
import static org.apache.dubbo.common.constants.QosConstants.QOS_ENABLE;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
|
|
@ -346,7 +345,7 @@ class ApplicationConfigTest {
|
|||
ApplicationConfig applicationConfig = DubboBootstrap.getInstance().getApplication();
|
||||
|
||||
Assertions.assertEquals(DUBBO, applicationConfig.getProtocol());
|
||||
Assertions.assertEquals(EXECUTOR_MANAGEMENT_MODE_DEFAULT, applicationConfig.getExecutorManagementMode());
|
||||
Assertions.assertEquals(EXECUTOR_MANAGEMENT_MODE_ISOLATION, applicationConfig.getExecutorManagementMode());
|
||||
Assertions.assertEquals(Boolean.TRUE, applicationConfig.getEnableFileCache());
|
||||
|
||||
DubboBootstrap.getInstance().destroy();
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ public class ChannelHandlers {
|
|||
return ChannelHandlers.getInstance().wrapInternal(handler, url);
|
||||
}
|
||||
|
||||
protected static ChannelHandlers getInstance() {
|
||||
public static ChannelHandlers getInstance() {
|
||||
return INSTANCE;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ import org.apache.dubbo.common.URL;
|
|||
import org.apache.dubbo.common.logger.Logger;
|
||||
import org.apache.dubbo.common.logger.LoggerFactory;
|
||||
import org.apache.dubbo.common.utils.NetUtils;
|
||||
import org.apache.dubbo.config.ApplicationConfig;
|
||||
import org.apache.dubbo.remoting.Channel;
|
||||
import org.apache.dubbo.remoting.Constants;
|
||||
import org.apache.dubbo.remoting.RemotingException;
|
||||
|
|
@ -30,7 +31,7 @@ import org.apache.dubbo.remoting.exchange.ExchangeHandler;
|
|||
import org.apache.dubbo.remoting.exchange.ExchangeServer;
|
||||
import org.apache.dubbo.remoting.exchange.Exchangers;
|
||||
import org.apache.dubbo.remoting.transport.dispatcher.FakeChannelHandlers;
|
||||
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
|
@ -38,6 +39,8 @@ import org.junit.jupiter.api.Test;
|
|||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
|
||||
class HeartbeatHandlerTest {
|
||||
|
||||
private static final Logger logger = LoggerFactory.getLogger(HeartbeatHandlerTest.class);
|
||||
|
|
@ -72,6 +75,11 @@ class HeartbeatHandlerTest {
|
|||
.addParameter(Constants.HEARTBEAT_KEY, 1000);
|
||||
CountDownLatch connect = new CountDownLatch(1);
|
||||
CountDownLatch disconnect = new CountDownLatch(1);
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
serverURL = serverURL.setScopeModel(applicationModel);
|
||||
TestHeartbeatHandler handler = new TestHeartbeatHandler(connect, disconnect);
|
||||
server = Exchangers.bind(serverURL, handler);
|
||||
System.out.println("Server bind successfully");
|
||||
|
|
@ -97,6 +105,11 @@ class HeartbeatHandlerTest {
|
|||
.addParameter(Constants.TRANSPORTER_KEY, "netty3")
|
||||
.addParameter(Constants.HEARTBEAT_KEY, 1000)
|
||||
.addParameter(Constants.CODEC_KEY, "telnet");
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
serverURL = serverURL.setScopeModel(applicationModel);
|
||||
CountDownLatch connect = new CountDownLatch(1);
|
||||
CountDownLatch disconnect = new CountDownLatch(1);
|
||||
TestHeartbeatHandler handler = new TestHeartbeatHandler(connect, disconnect);
|
||||
|
|
@ -118,6 +131,11 @@ class HeartbeatHandlerTest {
|
|||
.addParameter(Constants.EXCHANGER_KEY, HeaderExchanger.NAME)
|
||||
.addParameter(Constants.TRANSPORTER_KEY, "netty3")
|
||||
.addParameter(Constants.CODEC_KEY, "telnet");
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
serverURL = serverURL.setScopeModel(applicationModel);
|
||||
CountDownLatch connect = new CountDownLatch(1);
|
||||
CountDownLatch disconnect = new CountDownLatch(1);
|
||||
TestHeartbeatHandler handler = new TestHeartbeatHandler(connect, disconnect);
|
||||
|
|
|
|||
|
|
@ -16,8 +16,10 @@
|
|||
*/
|
||||
package org.apache.dubbo.remoting.transport.netty;
|
||||
|
||||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.common.utils.DubboAppender;
|
||||
import org.apache.dubbo.common.utils.NetUtils;
|
||||
import org.apache.dubbo.config.ApplicationConfig;
|
||||
import org.apache.dubbo.remoting.Channel;
|
||||
import org.apache.dubbo.remoting.Client;
|
||||
import org.apache.dubbo.remoting.Constants;
|
||||
|
|
@ -25,12 +27,14 @@ import org.apache.dubbo.remoting.RemotingException;
|
|||
import org.apache.dubbo.remoting.RemotingServer;
|
||||
import org.apache.dubbo.remoting.exchange.Exchangers;
|
||||
import org.apache.dubbo.remoting.exchange.support.ExchangeHandlerAdapter;
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
import org.apache.dubbo.rpc.model.FrameworkModel;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
|
||||
/**
|
||||
* Client reconnect test
|
||||
*/
|
||||
|
|
@ -71,8 +75,13 @@ class ClientReconnectTest {
|
|||
|
||||
|
||||
public Client startClient(int port, int heartbeat) throws RemotingException {
|
||||
final String url = "exchange://127.0.0.1:" + port + "/client.reconnect.test?check=false&codec=exchange&client=netty3&" +
|
||||
Constants.HEARTBEAT_KEY + "=" + heartbeat;
|
||||
URL url = URL.valueOf("exchange://127.0.0.1:" + port + "/client.reconnect.test?check=false&codec=exchange&client=netty3&" +
|
||||
Constants.HEARTBEAT_KEY + "=" + heartbeat);
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
url = url.setScopeModel(applicationModel);
|
||||
return Exchangers.connect(url);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,11 +18,11 @@ package org.apache.dubbo.remoting.transport.netty;
|
|||
|
||||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.common.utils.NetUtils;
|
||||
import org.apache.dubbo.remoting.RemotingException;
|
||||
import org.apache.dubbo.config.ApplicationConfig;
|
||||
import org.apache.dubbo.remoting.RemotingServer;
|
||||
import org.apache.dubbo.remoting.exchange.ExchangeChannel;
|
||||
import org.apache.dubbo.remoting.exchange.Exchangers;
|
||||
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
|
@ -30,6 +30,8 @@ import org.junit.jupiter.api.Test;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
|
||||
/**
|
||||
* Date: 5/3/11
|
||||
* Time: 5:47 PM
|
||||
|
|
@ -40,7 +42,13 @@ class NettyClientTest {
|
|||
|
||||
@BeforeAll
|
||||
public static void setUp() throws Exception {
|
||||
server = Exchangers.bind(URL.valueOf("exchange://localhost:" + port + "?server=netty3&codec=exchange"), new TelnetServerHandler());
|
||||
URL url = URL.valueOf("exchange://localhost:" + port + "?server=netty3&codec=exchange");
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
url = url.setScopeModel(applicationModel);
|
||||
server = Exchangers.bind(url, new TelnetServerHandler());
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
|
|
@ -52,16 +60,22 @@ class NettyClientTest {
|
|||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) throws RemotingException, InterruptedException {
|
||||
ExchangeChannel client = Exchangers.connect(URL.valueOf("exchange://10.20.153.10:20880?client=netty3&heartbeat=1000&codec=exchange"));
|
||||
Thread.sleep(60 * 1000 * 50);
|
||||
}
|
||||
// public static void main(String[] args) throws RemotingException, InterruptedException {
|
||||
// ExchangeChannel client = Exchangers.connect(URL.valueOf("exchange://10.20.153.10:20880?client=netty3&heartbeat=1000&codec=exchange"));
|
||||
// Thread.sleep(60 * 1000 * 50);
|
||||
// }
|
||||
|
||||
@Test
|
||||
void testClientClose() throws Exception {
|
||||
List<ExchangeChannel> clients = new ArrayList<ExchangeChannel>(100);
|
||||
for (int i = 0; i < 100; i++) {
|
||||
ExchangeChannel client = Exchangers.connect(URL.valueOf("exchange://localhost:" + port + "?client=netty3&codec=exchange"));
|
||||
URL url = URL.valueOf("exchange://localhost:" + port + "?client=netty3&codec=exchange");
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
url = url.setScopeModel(applicationModel);
|
||||
ExchangeChannel client = Exchangers.connect(url);
|
||||
Thread.sleep(5);
|
||||
clients.add(client);
|
||||
}
|
||||
|
|
@ -74,7 +88,13 @@ class NettyClientTest {
|
|||
@Test
|
||||
void testServerClose() throws Exception {
|
||||
for (int i = 0; i < 100; i++) {
|
||||
RemotingServer aServer = Exchangers.bind(URL.valueOf("exchange://localhost:" + NetUtils.getAvailablePort(6000) + "?server=netty3&codec=exchange"), new TelnetServerHandler());
|
||||
URL url = URL.valueOf("exchange://localhost:" + NetUtils.getAvailablePort(6000) + "?server=netty3&codec=exchange");
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
url = url.setScopeModel(applicationModel);
|
||||
RemotingServer aServer = Exchangers.bind(url, new TelnetServerHandler());
|
||||
aServer.close();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,12 +17,16 @@
|
|||
package org.apache.dubbo.remoting.transport.netty;
|
||||
|
||||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.config.ApplicationConfig;
|
||||
import org.apache.dubbo.remoting.Constants;
|
||||
import org.apache.dubbo.remoting.RemotingException;
|
||||
import org.apache.dubbo.remoting.exchange.ExchangeChannel;
|
||||
import org.apache.dubbo.remoting.exchange.ExchangeServer;
|
||||
import org.apache.dubbo.remoting.exchange.Exchangers;
|
||||
import org.apache.dubbo.remoting.exchange.support.Replier;
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
|
||||
/**
|
||||
* NettyClientToServerTest
|
||||
|
|
@ -33,6 +37,11 @@ class NettyClientToServerTest extends ClientToServerTest {
|
|||
// add heartbeat cycle to avoid unstable ut.
|
||||
URL url = URL.valueOf("exchange://localhost:" + port + "?server=netty3&codec=exchange");
|
||||
url = url.addParameter(Constants.HEARTBEAT_KEY, 600 * 1000);
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
url = url.setScopeModel(applicationModel);
|
||||
return Exchangers.bind(url, receiver);
|
||||
}
|
||||
|
||||
|
|
@ -40,6 +49,11 @@ class NettyClientToServerTest extends ClientToServerTest {
|
|||
// add heartbeat cycle to avoid unstable ut.
|
||||
URL url = URL.valueOf("exchange://localhost:" + port + "?client=netty3&timeout=3000&codec=exchange");
|
||||
url = url.addParameter(Constants.HEARTBEAT_KEY, 600 * 1000);
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
url = url.setScopeModel(applicationModel);
|
||||
return Exchangers.connect(url);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -18,14 +18,17 @@ package org.apache.dubbo.remoting.transport.netty;
|
|||
|
||||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.common.utils.NetUtils;
|
||||
import org.apache.dubbo.config.ApplicationConfig;
|
||||
import org.apache.dubbo.remoting.exchange.ExchangeChannel;
|
||||
import org.apache.dubbo.remoting.exchange.ExchangeServer;
|
||||
import org.apache.dubbo.remoting.exchange.Exchangers;
|
||||
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
|
||||
/**
|
||||
* Date: 4/26/11
|
||||
* Time: 4:13 PM
|
||||
|
|
@ -40,8 +43,17 @@ class NettyStringTest {
|
|||
//int port = 10001;
|
||||
int port = NetUtils.getAvailablePort();
|
||||
System.out.println(port);
|
||||
server = Exchangers.bind(URL.valueOf("telnet://0.0.0.0:" + port + "?server=netty3&codec=telnet"), new TelnetServerHandler());
|
||||
client = Exchangers.connect(URL.valueOf("telnet://127.0.0.1:" + port + "?client=netty3&codec=telnet"), new TelnetClientHandler());
|
||||
URL serverURL = URL.valueOf("telnet://0.0.0.0:" + port + "?server=netty3&codec=telnet");
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
serverURL = serverURL.setScopeModel(applicationModel);
|
||||
|
||||
URL clientURL = URL.valueOf("telnet://127.0.0.1:" + port + "?client=netty3&codec=telnet");
|
||||
clientURL = clientURL.setScopeModel(applicationModel);
|
||||
server = Exchangers.bind(serverURL, new TelnetServerHandler());
|
||||
client = Exchangers.connect(clientURL, new TelnetClientHandler());
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
|
|
|
|||
|
|
@ -18,11 +18,11 @@ package org.apache.dubbo.remoting.transport.netty;
|
|||
|
||||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.common.utils.NetUtils;
|
||||
import org.apache.dubbo.config.ApplicationConfig;
|
||||
import org.apache.dubbo.remoting.Channel;
|
||||
import org.apache.dubbo.remoting.ChannelHandler;
|
||||
import org.apache.dubbo.remoting.RemotingException;
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
|
|
@ -32,6 +32,8 @@ import java.util.Random;
|
|||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
|
||||
class ThreadNameTest {
|
||||
|
||||
private NettyServer server;
|
||||
|
|
@ -53,12 +55,15 @@ class ThreadNameTest {
|
|||
public void before() throws Exception {
|
||||
int port = NetUtils.getAvailablePort(20880 + new Random().nextInt(10000));
|
||||
serverURL = URL.valueOf("telnet://localhost?side=provider&codec=telnet")
|
||||
.setPort(port)
|
||||
.setScopeModel(ApplicationModel.defaultModel());
|
||||
.setPort(port);
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
serverURL = serverURL.setScopeModel(applicationModel);
|
||||
clientURL = URL.valueOf("telnet://localhost?side=consumer&codec=telnet")
|
||||
.setPort(port)
|
||||
.setScopeModel(ApplicationModel.defaultModel());
|
||||
|
||||
.setPort(port);
|
||||
clientURL = clientURL.setScopeModel(applicationModel);
|
||||
serverHandler = new ThreadNameVerifyHandler(serverRegex, false, serverLatch);
|
||||
clientHandler = new ThreadNameVerifyHandler(clientRegex, true, clientLatch);
|
||||
server = new NettyServer(serverURL, serverHandler);
|
||||
|
|
|
|||
|
|
@ -16,8 +16,12 @@
|
|||
*/
|
||||
package org.apache.dubbo.remoting.transport.netty4;
|
||||
|
||||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.common.constants.CommonConstants;
|
||||
import org.apache.dubbo.common.utils.DubboAppender;
|
||||
import org.apache.dubbo.common.utils.NetUtils;
|
||||
import org.apache.dubbo.config.ApplicationConfig;
|
||||
import org.apache.dubbo.config.context.ConfigManager;
|
||||
import org.apache.dubbo.remoting.Channel;
|
||||
import org.apache.dubbo.remoting.Client;
|
||||
import org.apache.dubbo.remoting.Constants;
|
||||
|
|
@ -25,12 +29,15 @@ import org.apache.dubbo.remoting.RemotingException;
|
|||
import org.apache.dubbo.remoting.RemotingServer;
|
||||
import org.apache.dubbo.remoting.exchange.Exchangers;
|
||||
import org.apache.dubbo.remoting.exchange.support.ExchangeHandlerAdapter;
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
import org.apache.dubbo.rpc.model.FrameworkModel;
|
||||
|
||||
import org.apache.dubbo.rpc.model.ModuleModel;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
|
||||
/**
|
||||
* Client reconnect test
|
||||
*/
|
||||
|
|
@ -74,12 +81,31 @@ class ClientReconnectTest {
|
|||
|
||||
|
||||
public Client startClient(int port, int heartbeat) throws RemotingException {
|
||||
final String url = "exchange://127.0.0.1:" + port + "/client.reconnect.test?client=netty4&check=false&" + Constants.HEARTBEAT_KEY + "=" + heartbeat;
|
||||
URL url = URL.valueOf("exchange://127.0.0.1:" + port + "/client.reconnect.test?client=netty4&check=false&" + Constants.HEARTBEAT_KEY + "=" + heartbeat);
|
||||
FrameworkModel frameworkModel = new FrameworkModel();
|
||||
ApplicationModel applicationModel = frameworkModel.newApplication();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
ConfigManager configManager = new ConfigManager(applicationModel);
|
||||
configManager.setApplication(applicationConfig);
|
||||
configManager.getApplication();
|
||||
applicationModel.setConfigManager(configManager);
|
||||
url = url.putAttribute(CommonConstants.SCOPE_MODEL, applicationModel);
|
||||
return Exchangers.connect(url);
|
||||
}
|
||||
|
||||
public RemotingServer startServer(int port) throws RemotingException {
|
||||
final String url = "exchange://127.0.0.1:" + port + "/client.reconnect.test?server=netty4";
|
||||
URL url = URL.valueOf("exchange://127.0.0.1:" + port + "/client.reconnect.test?server=netty4");
|
||||
FrameworkModel frameworkModel = new FrameworkModel();
|
||||
ApplicationModel applicationModel = frameworkModel.newApplication();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
ConfigManager configManager = new ConfigManager(applicationModel);
|
||||
configManager.setApplication(applicationConfig);
|
||||
configManager.getApplication();
|
||||
applicationModel.setConfigManager(configManager);
|
||||
ModuleModel moduleModel = applicationModel.getDefaultModule();
|
||||
url = url.putAttribute(CommonConstants.SCOPE_MODEL, moduleModel);
|
||||
return Exchangers.bind(url, new HandlerAdapter());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,13 +17,17 @@
|
|||
package org.apache.dubbo.remoting.transport.netty4;
|
||||
|
||||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.common.constants.CommonConstants;
|
||||
import org.apache.dubbo.common.utils.NetUtils;
|
||||
import org.apache.dubbo.config.ApplicationConfig;
|
||||
import org.apache.dubbo.config.context.ConfigManager;
|
||||
import org.apache.dubbo.remoting.RemotingException;
|
||||
import org.apache.dubbo.remoting.api.connection.AbstractConnectionClient;
|
||||
import org.apache.dubbo.remoting.api.connection.ConnectionManager;
|
||||
import org.apache.dubbo.remoting.api.connection.MultiplexProtocolConnectionManager;
|
||||
import org.apache.dubbo.remoting.api.pu.DefaultPuHandler;
|
||||
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
import org.apache.dubbo.rpc.model.ModuleModel;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
|
|
@ -34,6 +38,8 @@ import java.util.concurrent.ExecutorService;
|
|||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
|
||||
|
||||
public class ConnectionTest {
|
||||
|
||||
|
|
@ -47,6 +53,17 @@ public class ConnectionTest {
|
|||
public static void init() throws RemotingException {
|
||||
int port = NetUtils.getAvailablePort();
|
||||
url = URL.valueOf("empty://127.0.0.1:" + port + "?foo=bar");
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
ConfigManager configManager = new ConfigManager(applicationModel);
|
||||
configManager.setApplication(applicationConfig);
|
||||
configManager.getApplication();
|
||||
applicationModel.setConfigManager(configManager);
|
||||
url = url.setScopeModel(applicationModel);
|
||||
ModuleModel moduleModel = applicationModel.getDefaultModule();
|
||||
url = url.putAttribute(CommonConstants.SCOPE_MODEL, moduleModel);
|
||||
server = new NettyPortUnificationServer(url, new DefaultPuHandler());
|
||||
server.bind();
|
||||
connectionManager = url.getOrDefaultFrameworkModel().getExtensionLoader(ConnectionManager.class).getExtension(MultiplexProtocolConnectionManager.NAME);
|
||||
|
|
|
|||
|
|
@ -17,12 +17,19 @@
|
|||
package org.apache.dubbo.remoting.transport.netty4;
|
||||
|
||||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.common.constants.CommonConstants;
|
||||
import org.apache.dubbo.config.ApplicationConfig;
|
||||
import org.apache.dubbo.config.context.ConfigManager;
|
||||
import org.apache.dubbo.remoting.Constants;
|
||||
import org.apache.dubbo.remoting.RemotingException;
|
||||
import org.apache.dubbo.remoting.exchange.ExchangeChannel;
|
||||
import org.apache.dubbo.remoting.exchange.ExchangeServer;
|
||||
import org.apache.dubbo.remoting.exchange.Exchangers;
|
||||
import org.apache.dubbo.remoting.exchange.support.Replier;
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
import org.apache.dubbo.rpc.model.ModuleModel;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
|
||||
/**
|
||||
* Netty4ClientToServerTest
|
||||
|
|
@ -32,7 +39,20 @@ class NettyClientToServerTest extends ClientToServerTest {
|
|||
protected ExchangeServer newServer(int port, Replier<?> receiver) throws RemotingException {
|
||||
// add heartbeat cycle to avoid unstable ut.
|
||||
URL url = URL.valueOf("exchange://localhost:" + port + "?server=netty4");
|
||||
url = url.addParameter(Constants.HEARTBEAT_KEY, 600 * 1000);
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
ConfigManager configManager = new ConfigManager(applicationModel);
|
||||
configManager.setApplication(applicationConfig);
|
||||
configManager.getApplication();
|
||||
applicationModel.setConfigManager(configManager);
|
||||
url = url.addParameter(Constants.HEARTBEAT_KEY, 600 * 1000).putAttribute(CommonConstants.SCOPE_MODEL, applicationModel);
|
||||
url = url.setScopeModel(applicationModel);
|
||||
// ModuleModel moduleModel = applicationModel.getDefaultModule();
|
||||
|
||||
ModuleModel moduleModel = applicationModel.getDefaultModule();
|
||||
url = url.putAttribute(CommonConstants.SCOPE_MODEL, moduleModel);
|
||||
return Exchangers.bind(url, receiver);
|
||||
}
|
||||
|
||||
|
|
@ -40,6 +60,17 @@ class NettyClientToServerTest extends ClientToServerTest {
|
|||
// add heartbeat cycle to avoid unstable ut.
|
||||
URL url = URL.valueOf("exchange://localhost:" + port + "?client=netty4&timeout=3000");
|
||||
url = url.addParameter(Constants.HEARTBEAT_KEY, 600 * 1000);
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
ConfigManager configManager = new ConfigManager(applicationModel);
|
||||
configManager.setApplication(applicationConfig);
|
||||
configManager.getApplication();
|
||||
applicationModel.setConfigManager(configManager);
|
||||
url = url.setScopeModel(applicationModel);
|
||||
ModuleModel moduleModel = applicationModel.getDefaultModule();
|
||||
url = url.putAttribute(CommonConstants.SCOPE_MODEL, moduleModel);
|
||||
return Exchangers.connect(url);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,18 +17,24 @@
|
|||
package org.apache.dubbo.remoting.transport.netty4;
|
||||
|
||||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.common.constants.CommonConstants;
|
||||
import org.apache.dubbo.common.url.component.ServiceConfigURL;
|
||||
import org.apache.dubbo.common.utils.NetUtils;
|
||||
import org.apache.dubbo.config.ApplicationConfig;
|
||||
import org.apache.dubbo.config.context.ConfigManager;
|
||||
import org.apache.dubbo.remoting.Channel;
|
||||
import org.apache.dubbo.remoting.Constants;
|
||||
import org.apache.dubbo.remoting.RemotingException;
|
||||
import org.apache.dubbo.remoting.RemotingServer;
|
||||
import org.apache.dubbo.remoting.transport.ChannelHandlerAdapter;
|
||||
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
import org.apache.dubbo.rpc.model.ModuleModel;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
import static org.hamcrest.CoreMatchers.is;
|
||||
import static org.hamcrest.MatcherAssert.assertThat;
|
||||
|
||||
|
|
@ -39,6 +45,17 @@ class NettyTransporterTest {
|
|||
URL url = new ServiceConfigURL("telnet", "localhost", port,
|
||||
new String[]{Constants.BIND_PORT_KEY, String.valueOf(port)});
|
||||
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
ConfigManager configManager = new ConfigManager(applicationModel);
|
||||
configManager.setApplication(applicationConfig);
|
||||
configManager.getApplication();
|
||||
applicationModel.setConfigManager(configManager);
|
||||
url = url.setScopeModel(applicationModel);
|
||||
ModuleModel moduleModel = applicationModel.getDefaultModule();
|
||||
url = url.putAttribute(CommonConstants.SCOPE_MODEL, moduleModel);
|
||||
RemotingServer server = new NettyTransporter().bind(url, new ChannelHandlerAdapter());
|
||||
|
||||
assertThat(server.isBound(), is(true));
|
||||
|
|
@ -51,7 +68,17 @@ class NettyTransporterTest {
|
|||
int port = NetUtils.getAvailablePort();
|
||||
URL url = new ServiceConfigURL("telnet", "localhost", port,
|
||||
new String[]{Constants.BIND_PORT_KEY, String.valueOf(port)});
|
||||
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
ConfigManager configManager = new ConfigManager(applicationModel);
|
||||
configManager.setApplication(applicationConfig);
|
||||
configManager.getApplication();
|
||||
applicationModel.setConfigManager(configManager);
|
||||
url = url.setScopeModel(applicationModel);
|
||||
ModuleModel moduleModel = applicationModel.getDefaultModule();
|
||||
url = url.putAttribute(CommonConstants.SCOPE_MODEL, moduleModel);
|
||||
new NettyTransporter().bind(url, new ChannelHandlerAdapter() {
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -17,16 +17,22 @@
|
|||
package org.apache.dubbo.remoting.transport.netty4;
|
||||
|
||||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.common.constants.CommonConstants;
|
||||
import org.apache.dubbo.common.utils.NetUtils;
|
||||
import org.apache.dubbo.config.ApplicationConfig;
|
||||
import org.apache.dubbo.config.context.ConfigManager;
|
||||
import org.apache.dubbo.remoting.RemotingException;
|
||||
import org.apache.dubbo.remoting.api.connection.AbstractConnectionClient;
|
||||
import org.apache.dubbo.remoting.api.pu.DefaultPuHandler;
|
||||
import org.apache.dubbo.remoting.exchange.PortUnificationExchanger;
|
||||
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
import org.apache.dubbo.rpc.model.ModuleModel;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
|
||||
class PortUnificationExchangerTest {
|
||||
|
||||
private static URL url;
|
||||
|
|
@ -35,6 +41,17 @@ class PortUnificationExchangerTest {
|
|||
public static void init() throws RemotingException {
|
||||
int port = NetUtils.getAvailablePort();
|
||||
url = URL.valueOf("empty://127.0.0.1:" + port + "?foo=bar");
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
ConfigManager configManager = new ConfigManager(applicationModel);
|
||||
configManager.setApplication(applicationConfig);
|
||||
configManager.getApplication();
|
||||
applicationModel.setConfigManager(configManager);
|
||||
url = url.setScopeModel(applicationModel);
|
||||
ModuleModel moduleModel = applicationModel.getDefaultModule();
|
||||
url = url.putAttribute(CommonConstants.SCOPE_MODEL, moduleModel);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
|||
|
|
@ -17,20 +17,37 @@
|
|||
package org.apache.dubbo.remoting.transport.netty4;
|
||||
|
||||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.common.constants.CommonConstants;
|
||||
import org.apache.dubbo.common.utils.NetUtils;
|
||||
import org.apache.dubbo.config.ApplicationConfig;
|
||||
import org.apache.dubbo.config.context.ConfigManager;
|
||||
import org.apache.dubbo.remoting.RemotingException;
|
||||
import org.apache.dubbo.remoting.api.pu.DefaultPuHandler;
|
||||
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
import org.apache.dubbo.rpc.model.ModuleModel;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
|
||||
class PortUnificationServerTest {
|
||||
|
||||
@Test
|
||||
void testBind() throws RemotingException {
|
||||
int port = NetUtils.getAvailablePort();
|
||||
URL url = URL.valueOf("empty://127.0.0.1:" + port + "?foo=bar");
|
||||
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
ConfigManager configManager = new ConfigManager(applicationModel);
|
||||
configManager.setApplication(applicationConfig);
|
||||
configManager.getApplication();
|
||||
applicationModel.setConfigManager(configManager);
|
||||
url = url.setScopeModel(applicationModel);
|
||||
ModuleModel moduleModel = applicationModel.getDefaultModule();
|
||||
url = url.putAttribute(CommonConstants.SCOPE_MODEL, moduleModel);
|
||||
// abstract endpoint need to get codec of url(which is in triple package)
|
||||
final NettyPortUnificationServer server = new NettyPortUnificationServer(url, new DefaultPuHandler());
|
||||
server.bind();
|
||||
|
|
|
|||
|
|
@ -19,12 +19,15 @@ package org.apache.dubbo.remoting.transport.netty4;
|
|||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.common.constants.CommonConstants;
|
||||
import org.apache.dubbo.common.utils.NetUtils;
|
||||
import org.apache.dubbo.config.ApplicationConfig;
|
||||
import org.apache.dubbo.config.context.ConfigManager;
|
||||
import org.apache.dubbo.remoting.RemotingException;
|
||||
import org.apache.dubbo.remoting.exchange.ExchangeChannel;
|
||||
import org.apache.dubbo.remoting.exchange.ExchangeServer;
|
||||
import org.apache.dubbo.remoting.exchange.Exchangers;
|
||||
import org.apache.dubbo.remoting.exchange.support.ReplierDispatcher;
|
||||
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
import org.apache.dubbo.rpc.model.ModuleModel;
|
||||
import org.junit.jupiter.api.AfterEach;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
|
|
@ -38,6 +41,7 @@ import java.util.concurrent.ExecutorService;
|
|||
import java.util.concurrent.Executors;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
import static org.junit.jupiter.api.Assertions.fail;
|
||||
|
||||
|
||||
|
|
@ -59,7 +63,19 @@ class ReplierDispatcherTest {
|
|||
ReplierDispatcher dispatcher = new ReplierDispatcher();
|
||||
dispatcher.addReplier(RpcMessage.class, new RpcMessageHandler());
|
||||
dispatcher.addReplier(Data.class, (channel, msg) -> new StringMessage("hello world"));
|
||||
exchangeServer = Exchangers.bind(URL.valueOf("exchange://localhost:" + port + "?" + CommonConstants.TIMEOUT_KEY + "=60000"), dispatcher);
|
||||
URL url = URL.valueOf("exchange://localhost:" + port + "?" + CommonConstants.TIMEOUT_KEY + "=60000");
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
ConfigManager configManager = new ConfigManager(applicationModel);
|
||||
configManager.setApplication(applicationConfig);
|
||||
configManager.getApplication();
|
||||
applicationModel.setConfigManager(configManager);
|
||||
url = url.setScopeModel(applicationModel);
|
||||
ModuleModel moduleModel = applicationModel.getDefaultModule();
|
||||
url = url.putAttribute(CommonConstants.SCOPE_MODEL, moduleModel);
|
||||
exchangeServer = Exchangers.bind(url, dispatcher);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,9 @@
|
|||
package org.apache.dubbo.remoting.transport.netty4.api;
|
||||
|
||||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.common.constants.CommonConstants;
|
||||
import org.apache.dubbo.config.ApplicationConfig;
|
||||
import org.apache.dubbo.config.context.ConfigManager;
|
||||
import org.apache.dubbo.remoting.RemotingException;
|
||||
import org.apache.dubbo.remoting.api.connection.AbstractConnectionClient;
|
||||
import org.apache.dubbo.remoting.api.connection.ConnectionManager;
|
||||
|
|
@ -25,6 +28,8 @@ import org.apache.dubbo.remoting.api.connection.MultiplexProtocolConnectionManag
|
|||
import org.apache.dubbo.remoting.api.pu.DefaultPuHandler;
|
||||
import org.apache.dubbo.remoting.transport.netty4.NettyPortUnificationServer;
|
||||
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
import org.apache.dubbo.rpc.model.ModuleModel;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
|
|
@ -34,6 +39,8 @@ import java.lang.reflect.Field;
|
|||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
|
||||
public class MultiplexProtocolConnectionManagerTest {
|
||||
private static URL url1;
|
||||
|
||||
|
|
@ -46,8 +53,21 @@ public class MultiplexProtocolConnectionManagerTest {
|
|||
|
||||
@BeforeAll
|
||||
public static void init() throws RemotingException {
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
ConfigManager configManager = new ConfigManager(applicationModel);
|
||||
configManager.setApplication(applicationConfig);
|
||||
configManager.getApplication();
|
||||
applicationModel.setConfigManager(configManager);
|
||||
url1 = URL.valueOf("empty://127.0.0.1:8080?foo=bar");
|
||||
url2 = URL.valueOf("tri://127.0.0.1:8081?foo=bar");
|
||||
url1 = url1.setScopeModel(applicationModel);
|
||||
ModuleModel moduleModel = applicationModel.getDefaultModule();
|
||||
url1 = url1.putAttribute(CommonConstants.SCOPE_MODEL, moduleModel);
|
||||
url2 = url2.setScopeModel(applicationModel);
|
||||
url2 = url2.putAttribute(CommonConstants.SCOPE_MODEL, moduleModel);
|
||||
server = new NettyPortUnificationServer(url1, new DefaultPuHandler());
|
||||
server.bind();
|
||||
connectionManager = url1.getOrDefaultFrameworkModel()
|
||||
|
|
|
|||
|
|
@ -18,7 +18,10 @@
|
|||
package org.apache.dubbo.remoting.transport.netty4.api;
|
||||
|
||||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.common.constants.CommonConstants;
|
||||
import org.apache.dubbo.common.utils.NetUtils;
|
||||
import org.apache.dubbo.config.ApplicationConfig;
|
||||
import org.apache.dubbo.config.context.ConfigManager;
|
||||
import org.apache.dubbo.remoting.RemotingException;
|
||||
import org.apache.dubbo.remoting.api.connection.AbstractConnectionClient;
|
||||
import org.apache.dubbo.remoting.api.connection.ConnectionManager;
|
||||
|
|
@ -26,7 +29,8 @@ import org.apache.dubbo.remoting.api.connection.SingleProtocolConnectionManager;
|
|||
import org.apache.dubbo.remoting.api.pu.DefaultPuHandler;
|
||||
import org.apache.dubbo.remoting.transport.netty4.NettyConnectionClient;
|
||||
import org.apache.dubbo.remoting.transport.netty4.NettyPortUnificationServer;
|
||||
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
import org.apache.dubbo.rpc.model.ModuleModel;
|
||||
import org.junit.jupiter.api.AfterAll;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
|
|
@ -36,6 +40,8 @@ import java.lang.reflect.Field;
|
|||
import java.util.Map;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import static org.apache.dubbo.common.constants.CommonConstants.EXECUTOR_MANAGEMENT_MODE_DEFAULT;
|
||||
|
||||
public class SingleProtocolConnectionManagerTest {
|
||||
|
||||
private static URL url;
|
||||
|
|
@ -48,6 +54,17 @@ public class SingleProtocolConnectionManagerTest {
|
|||
public static void init() throws RemotingException {
|
||||
int port = NetUtils.getAvailablePort();
|
||||
url = URL.valueOf("empty://127.0.0.1:" + port + "?foo=bar");
|
||||
ApplicationModel applicationModel = ApplicationModel.defaultModel();
|
||||
ApplicationConfig applicationConfig = new ApplicationConfig("provider-app");
|
||||
applicationConfig.setExecutorManagementMode(EXECUTOR_MANAGEMENT_MODE_DEFAULT);
|
||||
applicationModel.getApplicationConfigManager().setApplication(applicationConfig);
|
||||
ConfigManager configManager = new ConfigManager(applicationModel);
|
||||
configManager.setApplication(applicationConfig);
|
||||
configManager.getApplication();
|
||||
applicationModel.setConfigManager(configManager);
|
||||
url = url.setScopeModel(applicationModel);
|
||||
ModuleModel moduleModel = applicationModel.getDefaultModule();
|
||||
url = url.putAttribute(CommonConstants.SCOPE_MODEL, moduleModel);
|
||||
server = new NettyPortUnificationServer(url, new DefaultPuHandler());
|
||||
server.bind();
|
||||
connectionManager = url.getOrDefaultFrameworkModel()
|
||||
|
|
|
|||
|
|
@ -14,13 +14,13 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.dubbo.remoting.transport.dispatcher;
|
||||
package org.apache.dubbo.rpc.protocol.dubbo.managemode;
|
||||
|
||||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.common.url.component.ServiceConfigURL;
|
||||
import org.apache.dubbo.remoting.ChannelHandler;
|
||||
import org.apache.dubbo.remoting.transport.MultiMessageHandler;
|
||||
|
||||
import org.apache.dubbo.remoting.transport.dispatcher.ChannelHandlers;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.Mockito;
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.dubbo.remoting.handler;
|
||||
package org.apache.dubbo.rpc.protocol.dubbo.managemode;
|
||||
|
||||
import org.apache.dubbo.remoting.ExecutionException;
|
||||
import org.apache.dubbo.remoting.RemotingException;
|
||||
|
|
@ -22,7 +22,6 @@ import org.apache.dubbo.remoting.exchange.Request;
|
|||
import org.apache.dubbo.remoting.exchange.Response;
|
||||
import org.apache.dubbo.remoting.transport.dispatcher.connection.ConnectionOrderedChannelHandler;
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Disabled;
|
||||
|
|
@ -31,7 +30,6 @@ import org.junit.jupiter.api.Test;
|
|||
import java.util.concurrent.ThreadPoolExecutor;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
|
||||
class ConnectChannelHandlerTest extends WrappedChannelHandlerTest {
|
||||
|
||||
@BeforeEach
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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.
|
||||
*/
|
||||
package org.apache.dubbo.rpc.protocol.dubbo.managemode;
|
||||
|
||||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.remoting.Channel;
|
||||
import org.apache.dubbo.remoting.ChannelHandler;
|
||||
import org.apache.dubbo.remoting.RemotingException;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class MockedChannel implements Channel {
|
||||
private boolean isClosed;
|
||||
private volatile boolean closing = false;
|
||||
private URL url;
|
||||
private ChannelHandler handler;
|
||||
private Map<String, Object> map = new HashMap<String, Object>();
|
||||
|
||||
public MockedChannel() {
|
||||
super();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public URL getUrl() {
|
||||
return url;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ChannelHandler getChannelHandler() {
|
||||
|
||||
return this.handler;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InetSocketAddress getLocalAddress() {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Object message) throws RemotingException {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void send(Object message, boolean sent) throws RemotingException {
|
||||
this.send(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
isClosed = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close(int timeout) {
|
||||
this.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void startClose() {
|
||||
closing = true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isClosed() {
|
||||
return isClosed;
|
||||
}
|
||||
|
||||
@Override
|
||||
public InetSocketAddress getRemoteAddress() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isConnected() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean hasAttribute(String key) {
|
||||
return map.containsKey(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object getAttribute(String key) {
|
||||
return map.get(key);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAttribute(String key, Object value) {
|
||||
map.put(key, value);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeAttribute(String key) {
|
||||
map.remove(key);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
/*
|
||||
* Licensed to the Apache Software Foundation (ASF) under one or more
|
||||
* contributor license agreements. See the NOTICE file distributed with
|
||||
* this work for additional information regarding copyright ownership.
|
||||
* The ASF licenses this file to You 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.
|
||||
*/
|
||||
package org.apache.dubbo.rpc.protocol.dubbo.managemode;
|
||||
|
||||
import org.apache.dubbo.common.utils.ConcurrentHashSet;
|
||||
import org.apache.dubbo.remoting.Channel;
|
||||
import org.apache.dubbo.remoting.ChannelHandler;
|
||||
import org.apache.dubbo.remoting.RemotingException;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
|
||||
public class MockedChannelHandler implements ChannelHandler {
|
||||
// ConcurrentMap<String, Channel> channels = new ConcurrentHashMap<String, Channel>();
|
||||
ConcurrentHashSet<Channel> channels = new ConcurrentHashSet<Channel>();
|
||||
|
||||
@Override
|
||||
public void connected(Channel channel) throws RemotingException {
|
||||
channels.add(channel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void disconnected(Channel channel) throws RemotingException {
|
||||
channels.remove(channel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sent(Channel channel, Object message) throws RemotingException {
|
||||
channel.send(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void received(Channel channel, Object message) throws RemotingException {
|
||||
//echo
|
||||
channel.send(message);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void caught(Channel channel, Throwable exception) throws RemotingException {
|
||||
throw new RemotingException(channel, exception);
|
||||
|
||||
}
|
||||
|
||||
public Set<Channel> getChannels() {
|
||||
return Collections.unmodifiableSet(channels);
|
||||
}
|
||||
}
|
||||
|
|
@ -14,8 +14,7 @@
|
|||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.apache.dubbo.remoting.handler;
|
||||
|
||||
package org.apache.dubbo.rpc.protocol.dubbo.managemode;
|
||||
|
||||
import org.apache.dubbo.common.URL;
|
||||
import org.apache.dubbo.common.extension.ExtensionLoader;
|
||||
|
|
@ -28,7 +27,6 @@ import org.apache.dubbo.remoting.exchange.Response;
|
|||
import org.apache.dubbo.remoting.exchange.support.DefaultFuture;
|
||||
import org.apache.dubbo.remoting.transport.dispatcher.WrappedChannelHandler;
|
||||
import org.apache.dubbo.rpc.model.ApplicationModel;
|
||||
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
|
@ -40,7 +38,7 @@ import static org.junit.jupiter.api.Assertions.fail;
|
|||
|
||||
class WrappedChannelHandlerTest {
|
||||
WrappedChannelHandler handler;
|
||||
URL url = URL.valueOf("test://10.20.30.40:1234");
|
||||
URL url = URL.valueOf("dubbo://10.20.30.40:1234");
|
||||
|
||||
@BeforeEach
|
||||
public void setUp() throws Exception {
|
||||
Loading…
Reference in New Issue