Refactor test cases for Sentinel gRPC Adapter (#101)
- Added a GrpcTestServer to abstract common server logic - Refactor with new added `GrpcTestServer`
This commit is contained in:
parent
2772f189ab
commit
b61be268a3
|
|
@ -0,0 +1,33 @@
|
|||
package com.alibaba.csp.sentinel.adapter.grpc;
|
||||
|
||||
import io.grpc.Server;
|
||||
import io.grpc.ServerBuilder;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
class GrpcTestServer {
|
||||
private Server server;
|
||||
|
||||
GrpcTestServer() {
|
||||
}
|
||||
|
||||
void start(int port, boolean shouldintercept) throws IOException {
|
||||
if (server != null) {
|
||||
throw new IllegalStateException("Server already running!");
|
||||
}
|
||||
ServerBuilder<?> serverBuild = ServerBuilder.forPort(port)
|
||||
.addService(new FooServiceImpl());
|
||||
if (shouldintercept) {
|
||||
serverBuild.intercept(new SentinelGrpcServerInterceptor());
|
||||
}
|
||||
server = serverBuild.build();
|
||||
server.start();
|
||||
}
|
||||
|
||||
void stop() {
|
||||
if (server != null) {
|
||||
server.shutdown();
|
||||
server = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -15,7 +15,6 @@
|
|||
*/
|
||||
package com.alibaba.csp.sentinel.adapter.grpc;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
|
||||
import com.alibaba.csp.sentinel.EntryType;
|
||||
|
|
@ -27,10 +26,7 @@ import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
|
|||
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
|
||||
import com.alibaba.csp.sentinel.slots.clusterbuilder.ClusterBuilderSlot;
|
||||
|
||||
import io.grpc.Server;
|
||||
import io.grpc.ServerBuilder;
|
||||
import io.grpc.StatusRuntimeException;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
|
|
@ -43,8 +39,7 @@ public class SentinelGrpcClientInterceptorTest {
|
|||
|
||||
private final String resourceName = "com.alibaba.sentinel.examples.FooService/sayHello";
|
||||
private final int threshold = 2;
|
||||
|
||||
private Server server;
|
||||
private final GrpcTestServer server = new GrpcTestServer();
|
||||
|
||||
private void configureFlowRule() {
|
||||
FlowRule rule = new FlowRule()
|
||||
|
|
@ -61,7 +56,7 @@ public class SentinelGrpcClientInterceptorTest {
|
|||
final int port = 19328;
|
||||
|
||||
configureFlowRule();
|
||||
prepareServer(port);
|
||||
server.start(port, false);
|
||||
|
||||
FooServiceClient client = new FooServiceClient("localhost", port, new SentinelGrpcClientInterceptor());
|
||||
final int total = 8;
|
||||
|
|
@ -81,7 +76,7 @@ public class SentinelGrpcClientInterceptorTest {
|
|||
assertEquals(total - threshold, blockedQps);
|
||||
assertEquals(threshold, passQps);
|
||||
|
||||
stopServer();
|
||||
server.stop();
|
||||
}
|
||||
|
||||
private void sendRequest(FooServiceClient client) {
|
||||
|
|
@ -94,20 +89,4 @@ public class SentinelGrpcClientInterceptorTest {
|
|||
}
|
||||
}
|
||||
|
||||
private void prepareServer(int port) throws IOException {
|
||||
if (server != null) {
|
||||
throw new IllegalStateException("Server already running!");
|
||||
}
|
||||
server = ServerBuilder.forPort(port)
|
||||
.addService(new FooServiceImpl())
|
||||
.build();
|
||||
server.start();
|
||||
}
|
||||
|
||||
private void stopServer() {
|
||||
if (server != null) {
|
||||
server.shutdown();
|
||||
server = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -15,7 +15,6 @@
|
|||
*/
|
||||
package com.alibaba.csp.sentinel.adapter.grpc;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Collections;
|
||||
|
||||
import com.alibaba.csp.sentinel.EntryType;
|
||||
|
|
@ -27,10 +26,7 @@ import com.alibaba.csp.sentinel.slots.block.flow.FlowRule;
|
|||
import com.alibaba.csp.sentinel.slots.block.flow.FlowRuleManager;
|
||||
import com.alibaba.csp.sentinel.slots.clusterbuilder.ClusterBuilderSlot;
|
||||
|
||||
import io.grpc.Server;
|
||||
import io.grpc.ServerBuilder;
|
||||
import io.grpc.StatusRuntimeException;
|
||||
import org.junit.Test;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
|
|
@ -43,8 +39,8 @@ public class SentinelGrpcServerInterceptorTest {
|
|||
|
||||
private final String resourceName = "com.alibaba.sentinel.examples.FooService/anotherHello";
|
||||
private final int threshold = 4;
|
||||
private final GrpcTestServer server = new GrpcTestServer();
|
||||
|
||||
private Server server;
|
||||
private FooServiceClient client;
|
||||
|
||||
private void configureFlowRule() {
|
||||
|
|
@ -63,7 +59,7 @@ public class SentinelGrpcServerInterceptorTest {
|
|||
client = new FooServiceClient("localhost", port);
|
||||
|
||||
configureFlowRule();
|
||||
prepareServer(port);
|
||||
server.start(port, true);
|
||||
|
||||
final int total = 8;
|
||||
for (int i = 0; i < total; i++) {
|
||||
|
|
@ -82,7 +78,7 @@ public class SentinelGrpcServerInterceptorTest {
|
|||
assertEquals(total - threshold, blockedQps);
|
||||
assertEquals(threshold, passQps);
|
||||
|
||||
stopServer();
|
||||
server.stop();
|
||||
}
|
||||
|
||||
private void sendRequest() {
|
||||
|
|
@ -94,21 +90,4 @@ public class SentinelGrpcServerInterceptorTest {
|
|||
}
|
||||
}
|
||||
|
||||
private void prepareServer(int port) throws IOException {
|
||||
if (server != null) {
|
||||
throw new IllegalStateException("Server already running!");
|
||||
}
|
||||
server = ServerBuilder.forPort(port)
|
||||
.addService(new FooServiceImpl())
|
||||
.intercept(new SentinelGrpcServerInterceptor())
|
||||
.build();
|
||||
server.start();
|
||||
}
|
||||
|
||||
private void stopServer() {
|
||||
if (server != null) {
|
||||
server.shutdown();
|
||||
server = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue