fix : test for rpc handler

pull/945/head
pizihao 3 years ago
parent d2e569d188
commit b3b27204a7

@ -17,18 +17,19 @@
package cn.hippo4j.rpc.client; package cn.hippo4j.rpc.client;
import cn.hippo4j.rpc.discovery.ServerPort;
import cn.hippo4j.rpc.handler.NettyClientPoolHandler; import cn.hippo4j.rpc.handler.NettyClientPoolHandler;
import cn.hippo4j.rpc.handler.NettyClientTakeHandler; import cn.hippo4j.rpc.handler.NettyClientTakeHandler;
import cn.hippo4j.rpc.handler.NettyServerTakeHandler; import cn.hippo4j.rpc.handler.NettyServerTakeHandler;
import cn.hippo4j.rpc.request.DefaultRequest; import cn.hippo4j.rpc.model.DefaultRequest;
import cn.hippo4j.rpc.request.Request; import cn.hippo4j.rpc.model.Request;
import cn.hippo4j.rpc.response.Response; import cn.hippo4j.rpc.model.Response;
import cn.hippo4j.rpc.server.NettyServerConnection; import cn.hippo4j.rpc.server.NettyServerConnection;
import cn.hippo4j.rpc.server.RPCServer; import cn.hippo4j.rpc.server.RPCServer;
import cn.hippo4j.rpc.server.ServerConnection; import cn.hippo4j.rpc.server.ServerConnection;
import cn.hippo4j.rpc.support.ClassRegistry; import cn.hippo4j.rpc.discovery.ClassRegistry;
import cn.hippo4j.rpc.support.DefaultInstance; import cn.hippo4j.rpc.discovery.DefaultInstance;
import cn.hippo4j.rpc.support.Instance; import cn.hippo4j.rpc.discovery.Instance;
import io.netty.channel.pool.ChannelPoolHandler; import io.netty.channel.pool.ChannelPoolHandler;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
@ -40,8 +41,8 @@ import java.util.concurrent.TimeUnit;
public class RPCClientTest { public class RPCClientTest {
String host = "localhost"; String host = "localhost";
int port = 8888; ServerPort port = new TestServerPort();
int portTest = 8889; ServerPort portTest = new TestPortServerPort();
@Test @Test
public void connection() throws IOException { public void connection() throws IOException {
@ -109,4 +110,20 @@ public class RPCClientTest {
rpcClient.close(); rpcClient.close();
rpcServer.close(); rpcServer.close();
} }
static class TestServerPort implements ServerPort {
@Override
public int getPort() {
return 8888;
}
}
static class TestPortServerPort implements ServerPort {
@Override
public int getPort() {
return 8889;
}
}
} }

@ -15,7 +15,7 @@
* limitations under the License. * limitations under the License.
*/ */
package cn.hippo4j.rpc.support; package cn.hippo4j.rpc.discovery;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;

@ -15,12 +15,9 @@
* limitations under the License. * limitations under the License.
*/ */
package cn.hippo4j.rpc.support; package cn.hippo4j.rpc.discovery;
import lombok.AllArgsConstructor; import cn.hippo4j.common.web.exception.IllegalException;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
@ -38,18 +35,26 @@ public class DefaultInstanceTest {
@Test @Test
public void testGetInstance() { public void testGetInstance() {
String className = "cn.hippo4j.rpc.support.DefaultInstanceTest$InstanceModel"; String className = "cn.hippo4j.rpc.discovery.InstanceModel";
Object instanceInstance = instance.getInstance(className); Object instanceInstance = instance.getInstance(className);
Assert.assertNotNull(instanceInstance); Assert.assertNotNull(instanceInstance);
Assert.assertEquals(className, instanceInstance.getClass().getName()); Assert.assertEquals(className, instanceInstance.getClass().getName());
} }
@Setter @Test(expected = IllegalException.class)
@Getter public void testGetInstanceTest() {
@AllArgsConstructor String className = "cn.hippo4j.rpc.discovery.InstanceModelTest";
@NoArgsConstructor Object instanceInstance = instance.getInstance(className);
public static class InstanceModel { Assert.assertNotNull(instanceInstance);
Assert.assertEquals(className, instanceInstance.getClass().getName());
}
String name; @Test
public void getInstanceTest() {
Class<InstanceServerLoader> cls = InstanceServerLoader.class;
Object instanceInstance = instance.getInstance(cls);
Assert.assertNotNull(instanceInstance);
Assert.assertEquals(InstanceServerLoaderImpl.class, instanceInstance.getClass());
} }
} }

@ -0,0 +1,17 @@
package cn.hippo4j.rpc.discovery;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.boot.test.context.TestComponent;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@TestComponent
public class InstanceModel {
String name;
}

@ -0,0 +1,7 @@
package cn.hippo4j.rpc.discovery;
public interface InstanceServerLoader {
String getName();
}

@ -0,0 +1,17 @@
package cn.hippo4j.rpc.discovery;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.springframework.boot.test.context.TestComponent;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
public class InstanceServerLoaderImpl implements InstanceServerLoader {
String name;
}

@ -0,0 +1,30 @@
package cn.hippo4j.rpc.discovery;
import cn.hippo4j.common.config.ApplicationContextHolder;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,
classes = {InstanceModel.class, ApplicationContextHolder.class})
@RunWith(SpringJUnit4ClassRunner.class)
public class SpringContextInstanceTest {
Instance instance = new SpringContextInstance();
@Test
public void getInstance() {
Object obj = instance.getInstance(InstanceModel.class);
Assert.assertNotNull(obj);
Assert.assertEquals(obj.getClass(), InstanceModel.class);
}
@Test
public void testGetInstance() {
Object obj = instance.getInstance("instanceModel");
Assert.assertNotNull(obj);
Assert.assertEquals(obj.getClass(), InstanceModel.class);
}
}

@ -0,0 +1,67 @@
package cn.hippo4j.rpc.handler;
import io.netty.channel.ChannelHandler;
import org.junit.Assert;
import org.junit.Test;
public class NettyClientPoolHandlerTest {
@Test
public void testGetHandlerEntity(){
TestHandler handler = new TestHandler();
long order = 0;
String name = "Test";
NettyClientPoolHandler poolHandler = new NettyClientPoolHandler();
HandlerManager.HandlerEntity<ChannelHandler> entity = poolHandler.getHandlerEntity(order, handler, name);
Assert.assertEquals(entity.getName(),name);
Assert.assertEquals(entity.getOrder(),order);
Assert.assertEquals(entity.getHandler(),handler);
}
@Test
public void testCompareTo(){
TestHandler handler = new TestHandler();
long order = 0;
String name = "Test";
TestHandler handler1 = new TestHandler();
long order1 = 1;
String name1 = "Test1";
NettyClientPoolHandler poolHandler = new NettyClientPoolHandler();
HandlerManager.HandlerEntity<ChannelHandler> entity = poolHandler.getHandlerEntity(order, handler, name);
HandlerManager.HandlerEntity<ChannelHandler> entity1 = poolHandler.getHandlerEntity(order1, handler1, name1);
int compare = entity.compareTo(entity1);
Assert.assertTrue(compare < 0);
}
@Test
public void addLast() {
NettyClientPoolHandler handler = new NettyClientPoolHandler();
Assert.assertTrue(handler.isEmpty());
handler.addLast(new TestHandler());
Assert.assertFalse(handler.isEmpty());
}
@Test
public void addFirst() {
NettyClientPoolHandler handler = new NettyClientPoolHandler();
Assert.assertTrue(handler.isEmpty());
handler.addFirst(new TestHandler());
Assert.assertFalse(handler.isEmpty());
}
@Test
public void testAddLast() {
NettyClientPoolHandler handler = new NettyClientPoolHandler();
Assert.assertTrue(handler.isEmpty());
handler.addLast("Test", new TestHandler());
Assert.assertFalse(handler.isEmpty());
}
@Test
public void testAddFirst() {
NettyClientPoolHandler handler = new NettyClientPoolHandler();
Assert.assertTrue(handler.isEmpty());
handler.addFirst("Test", new TestHandler());
Assert.assertFalse(handler.isEmpty());
}
}

@ -0,0 +1,21 @@
package cn.hippo4j.rpc.handler;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
public class TestHandler implements ChannelHandler {
@Override
public void handlerAdded(ChannelHandlerContext ctx) throws Exception {
}
@Override
public void handlerRemoved(ChannelHandlerContext ctx) throws Exception {
}
@Override
public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
}
}

@ -0,0 +1,40 @@
package cn.hippo4j.rpc.server;
import cn.hippo4j.rpc.handler.TestHandler;
import org.junit.Assert;
import org.junit.Test;
public class NettyServerConnectionTest {
@Test
public void addLast() {
NettyServerConnection connection = new NettyServerConnection();
Assert.assertTrue(connection.isEmpty());
connection.addLast(new TestHandler());
Assert.assertFalse(connection.isEmpty());
}
@Test
public void addFirst() {
NettyServerConnection connection = new NettyServerConnection();
Assert.assertTrue(connection.isEmpty());
connection.addFirst(new TestHandler());
Assert.assertFalse(connection.isEmpty());
}
@Test
public void testAddLast() {
NettyServerConnection connection = new NettyServerConnection();
Assert.assertTrue(connection.isEmpty());
connection.addLast("Test", new TestHandler());
Assert.assertFalse(connection.isEmpty());
}
@Test
public void testAddFirst() {
NettyServerConnection connection = new NettyServerConnection();
Assert.assertTrue(connection.isEmpty());
connection.addFirst("Test", new TestHandler());
Assert.assertFalse(connection.isEmpty());
}
}

@ -17,9 +17,10 @@
package cn.hippo4j.rpc.server; package cn.hippo4j.rpc.server;
import cn.hippo4j.rpc.discovery.ServerPort;
import cn.hippo4j.rpc.handler.NettyServerTakeHandler; import cn.hippo4j.rpc.handler.NettyServerTakeHandler;
import cn.hippo4j.rpc.support.DefaultInstance; import cn.hippo4j.rpc.discovery.DefaultInstance;
import cn.hippo4j.rpc.support.Instance; import cn.hippo4j.rpc.discovery.Instance;
import io.netty.channel.EventLoopGroup; import io.netty.channel.EventLoopGroup;
import io.netty.channel.nio.NioEventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup;
import org.junit.Assert; import org.junit.Assert;
@ -31,7 +32,7 @@ import java.util.concurrent.TimeUnit;
public class RPCServerTest { public class RPCServerTest {
public static int port = 8888; public static ServerPort port = new TestServerPort();
@Test @Test
public void bind() throws IOException { public void bind() throws IOException {
@ -69,4 +70,11 @@ public class RPCServerTest {
rpcServer.close(); rpcServer.close();
} }
static class TestServerPort implements ServerPort {
@Override
public int getPort() {
return 8888;
}
}
} }

@ -17,6 +17,7 @@
package cn.hippo4j.rpc.support; package cn.hippo4j.rpc.support;
import cn.hippo4j.rpc.discovery.ServerPort;
import cn.hippo4j.rpc.handler.NettyClientPoolHandler; import cn.hippo4j.rpc.handler.NettyClientPoolHandler;
import cn.hippo4j.rpc.handler.NettyClientTakeHandler; import cn.hippo4j.rpc.handler.NettyClientTakeHandler;
import io.netty.channel.Channel; import io.netty.channel.Channel;
@ -29,7 +30,7 @@ import org.junit.Test;
public class NettyConnectPoolHolderTest { public class NettyConnectPoolHolderTest {
String host = "127.0.0.1"; String host = "127.0.0.1";
int port = 8888; ServerPort port = new TestServerPort();
int maxCount = 8; int maxCount = 8;
int timeout = 5000; int timeout = 5000;
EventLoopGroup group = new NioEventLoopGroup(); EventLoopGroup group = new NioEventLoopGroup();
@ -67,4 +68,12 @@ public class NettyConnectPoolHolderTest {
NettyConnectPool connectPool2 = NettyConnectPoolHolder.getPool(host, port); NettyConnectPool connectPool2 = NettyConnectPoolHolder.getPool(host, port);
Assert.assertNull(connectPool2); Assert.assertNull(connectPool2);
} }
static class TestServerPort implements ServerPort {
@Override
public int getPort() {
return 8888;
}
}
} }

@ -17,6 +17,9 @@
package cn.hippo4j.rpc.support; package cn.hippo4j.rpc.support;
import cn.hippo4j.rpc.discovery.DefaultInstance;
import cn.hippo4j.rpc.discovery.Instance;
import cn.hippo4j.rpc.discovery.ServerPort;
import cn.hippo4j.rpc.handler.NettyClientPoolHandler; import cn.hippo4j.rpc.handler.NettyClientPoolHandler;
import cn.hippo4j.rpc.handler.NettyClientTakeHandler; import cn.hippo4j.rpc.handler.NettyClientTakeHandler;
import cn.hippo4j.rpc.handler.NettyServerTakeHandler; import cn.hippo4j.rpc.handler.NettyServerTakeHandler;
@ -38,7 +41,7 @@ import java.util.concurrent.TimeUnit;
public class NettyConnectPoolTest { public class NettyConnectPoolTest {
String host = "127.0.0.1"; String host = "127.0.0.1";
int port = 8888; ServerPort port = new TestServerPort();
int maxCount = 64; int maxCount = 64;
int timeout = 5000; int timeout = 5000;
EventLoopGroup group = new NioEventLoopGroup(); EventLoopGroup group = new NioEventLoopGroup();
@ -110,4 +113,12 @@ public class NettyConnectPoolTest {
pool.close(); pool.close();
rpcServer.close(); rpcServer.close();
} }
static class TestServerPort implements ServerPort {
@Override
public int getPort() {
return 8888;
}
}
} }

@ -18,6 +18,7 @@
package cn.hippo4j.rpc.support; package cn.hippo4j.rpc.support;
import cn.hippo4j.common.web.exception.IllegalException; import cn.hippo4j.common.web.exception.IllegalException;
import cn.hippo4j.rpc.discovery.ServerPort;
import cn.hippo4j.rpc.exception.ConnectionException; import cn.hippo4j.rpc.exception.ConnectionException;
import cn.hippo4j.rpc.handler.NettyClientPoolHandler; import cn.hippo4j.rpc.handler.NettyClientPoolHandler;
import cn.hippo4j.rpc.handler.NettyClientTakeHandler; import cn.hippo4j.rpc.handler.NettyClientTakeHandler;
@ -26,24 +27,26 @@ import org.junit.Test;
public class NettyProxyCenterTest { public class NettyProxyCenterTest {
ServerPort port = new TestServerPort();
@Test @Test
public void getProxy() { public void getProxy() {
NettyClientPoolHandler handler = new NettyClientPoolHandler(new NettyClientTakeHandler()); NettyClientPoolHandler handler = new NettyClientPoolHandler(new NettyClientTakeHandler());
ProxyInterface localhost = NettyProxyCenter.getProxy(ProxyInterface.class, "localhost", 8888, handler); ProxyInterface localhost = NettyProxyCenter.getProxy(ProxyInterface.class, "localhost", port, handler);
Assert.assertNotNull(localhost); Assert.assertNotNull(localhost);
} }
@Test(expected = IllegalException.class) @Test(expected = IllegalException.class)
public void getProxyTest() { public void getProxyTest() {
NettyClientPoolHandler handler = new NettyClientPoolHandler(new NettyClientTakeHandler()); NettyClientPoolHandler handler = new NettyClientPoolHandler(new NettyClientTakeHandler());
ProxyClass localhost = NettyProxyCenter.getProxy(ProxyClass.class, "localhost", 8888, handler); ProxyClass localhost = NettyProxyCenter.getProxy(ProxyClass.class, "localhost", port, handler);
Assert.assertNotNull(localhost); Assert.assertNotNull(localhost);
} }
@Test(expected = ConnectionException.class) @Test(expected = ConnectionException.class)
public void getProxyTestCall() { public void getProxyTestCall() {
NettyClientPoolHandler handler = new NettyClientPoolHandler(new NettyClientTakeHandler()); NettyClientPoolHandler handler = new NettyClientPoolHandler(new NettyClientTakeHandler());
ProxyInterface localhost = NettyProxyCenter.getProxy(ProxyInterface.class, "localhost", 8888, handler); ProxyInterface localhost = NettyProxyCenter.getProxy(ProxyInterface.class, "localhost", port, handler);
localhost.hello(); localhost.hello();
Assert.assertNotNull(localhost); Assert.assertNotNull(localhost);
} }
@ -56,4 +59,12 @@ public class NettyProxyCenterTest {
static class ProxyClass { static class ProxyClass {
} }
static class TestServerPort implements ServerPort {
@Override
public int getPort() {
return 8888;
}
}
} }
Loading…
Cancel
Save