parent
1dcb72d7fc
commit
713d12ed59
@ -0,0 +1,72 @@
|
|||||||
|
package com.tencent.cloud.rpc.enhancement.feign;
|
||||||
|
|
||||||
|
import com.tencent.cloud.common.metadata.MetadataContext;
|
||||||
|
import com.tencent.cloud.common.metadata.MetadataContextHolder;
|
||||||
|
import com.tencent.cloud.common.metadata.StaticMetadataManager;
|
||||||
|
import com.tencent.cloud.common.metadata.config.MetadataLocalProperties;
|
||||||
|
import com.tencent.cloud.common.util.ApplicationContextAwareUtils;
|
||||||
|
import feign.Request;
|
||||||
|
import org.junit.jupiter.api.AfterAll;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockedStatic;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
|
import org.springframework.cloud.client.ServiceInstance;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
|
||||||
|
import static com.tencent.cloud.rpc.enhancement.resttemplate.PolarisLoadBalancerRequestTransformer.LOAD_BALANCER_SERVICE_INSTANCE;
|
||||||
|
import static com.tencent.polaris.test.common.Consts.NAMESPACE_TEST;
|
||||||
|
import static com.tencent.polaris.test.common.Consts.SERVICE_PROVIDER;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
public class PolarisLoadBalancerFeignRequestTransformerTest {
|
||||||
|
|
||||||
|
private static MockedStatic<ApplicationContextAwareUtils> mockedApplicationContextAwareUtils;
|
||||||
|
|
||||||
|
private PolarisLoadBalancerFeignRequestTransformer transformer = new PolarisLoadBalancerFeignRequestTransformer();
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private Request clientRequest;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private ServiceInstance serviceInstance;
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
static void beforeAll() {
|
||||||
|
mockedApplicationContextAwareUtils = Mockito.mockStatic(ApplicationContextAwareUtils.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(() -> ApplicationContextAwareUtils.getProperties(anyString()))
|
||||||
|
.thenReturn("unit-test");
|
||||||
|
ApplicationContext applicationContext = mock(ApplicationContext.class);
|
||||||
|
MetadataLocalProperties metadataLocalProperties = mock(MetadataLocalProperties.class);
|
||||||
|
StaticMetadataManager staticMetadataManager = mock(StaticMetadataManager.class);
|
||||||
|
doReturn(metadataLocalProperties).when(applicationContext).getBean(MetadataLocalProperties.class);
|
||||||
|
doReturn(staticMetadataManager).when(applicationContext).getBean(StaticMetadataManager.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(ApplicationContextAwareUtils::getApplicationContext).thenReturn(applicationContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
static void afterAll() {
|
||||||
|
mockedApplicationContextAwareUtils.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() {
|
||||||
|
MetadataContext.LOCAL_NAMESPACE = NAMESPACE_TEST;
|
||||||
|
MetadataContext.LOCAL_SERVICE = SERVICE_PROVIDER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() throws Throwable {
|
||||||
|
transformer.transformRequest(clientRequest, serviceInstance);
|
||||||
|
assertThat(MetadataContextHolder.get().getLoadbalancerMetadata().get(LOAD_BALANCER_SERVICE_INSTANCE)).isEqualTo(serviceInstance);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,121 @@
|
|||||||
|
package com.tencent.cloud.rpc.enhancement.plugin;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
|
import com.tencent.cloud.common.metadata.MetadataContext;
|
||||||
|
import com.tencent.cloud.common.util.ApplicationContextAwareUtils;
|
||||||
|
import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties;
|
||||||
|
import com.tencent.cloud.rpc.enhancement.plugin.assembly.client.AssemblyClientExceptionHook;
|
||||||
|
import com.tencent.polaris.assembly.api.AssemblyAPI;
|
||||||
|
import org.junit.jupiter.api.AfterAll;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockedStatic;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
|
import org.springframework.cloud.client.DefaultServiceInstance;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
|
import org.springframework.http.HttpMethod;
|
||||||
|
|
||||||
|
import static com.tencent.polaris.test.common.Consts.NAMESPACE_TEST;
|
||||||
|
import static com.tencent.polaris.test.common.Consts.SERVICE_PROVIDER;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
public class AssemblyClientExceptionHookTest {
|
||||||
|
|
||||||
|
private static MockedStatic<ApplicationContextAwareUtils> mockedApplicationContextAwareUtils;
|
||||||
|
@InjectMocks
|
||||||
|
private AssemblyClientExceptionHook assemblyClientExceptionHook;
|
||||||
|
@Mock
|
||||||
|
private AssemblyAPI assemblyAPI;
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
static void beforeAll() {
|
||||||
|
mockedApplicationContextAwareUtils = Mockito.mockStatic(ApplicationContextAwareUtils.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(() -> ApplicationContextAwareUtils.getProperties(anyString()))
|
||||||
|
.thenReturn("unit-test");
|
||||||
|
ApplicationContext applicationContext = mock(ApplicationContext.class);
|
||||||
|
RpcEnhancementReporterProperties reporterProperties = mock(RpcEnhancementReporterProperties.class);
|
||||||
|
doReturn(reporterProperties)
|
||||||
|
.when(applicationContext).getBean(RpcEnhancementReporterProperties.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(ApplicationContextAwareUtils::getApplicationContext)
|
||||||
|
.thenReturn(applicationContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
static void afterAll() {
|
||||||
|
mockedApplicationContextAwareUtils.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() {
|
||||||
|
MetadataContext.LOCAL_NAMESPACE = NAMESPACE_TEST;
|
||||||
|
MetadataContext.LOCAL_SERVICE = SERVICE_PROVIDER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetName() {
|
||||||
|
assertThat(assemblyClientExceptionHook.getName()).isEqualTo(AssemblyClientExceptionHook.class.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testType() {
|
||||||
|
assertThat(assemblyClientExceptionHook.getType()).isEqualTo(EnhancedPluginType.Client.EXCEPTION);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRun() {
|
||||||
|
EnhancedPluginContext pluginContext = new EnhancedPluginContext();
|
||||||
|
EnhancedRequestContext request = EnhancedRequestContext.builder()
|
||||||
|
.httpMethod(HttpMethod.GET)
|
||||||
|
.url(URI.create("http://0.0.0.0/"))
|
||||||
|
.httpHeaders(new HttpHeaders())
|
||||||
|
.build();
|
||||||
|
request.toString();
|
||||||
|
EnhancedResponseContext response = EnhancedResponseContext.builder()
|
||||||
|
.httpStatus(200)
|
||||||
|
.build();
|
||||||
|
response.toString();
|
||||||
|
|
||||||
|
DefaultServiceInstance targetServiceInstance = new DefaultServiceInstance();
|
||||||
|
targetServiceInstance.setServiceId(SERVICE_PROVIDER);
|
||||||
|
|
||||||
|
DefaultServiceInstance localServiceInstance = new DefaultServiceInstance();
|
||||||
|
localServiceInstance.setServiceId(SERVICE_PROVIDER);
|
||||||
|
|
||||||
|
pluginContext.setRequest(request);
|
||||||
|
pluginContext.setResponse(response);
|
||||||
|
pluginContext.setTargetServiceInstance(targetServiceInstance);
|
||||||
|
pluginContext.setLocalServiceInstance(localServiceInstance);
|
||||||
|
pluginContext.setThrowable(new RuntimeException());
|
||||||
|
|
||||||
|
assemblyClientExceptionHook.run(pluginContext);
|
||||||
|
assemblyClientExceptionHook.getOrder();
|
||||||
|
assemblyClientExceptionHook.getName();
|
||||||
|
assemblyClientExceptionHook.getType();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testHandlerThrowable() {
|
||||||
|
// mock request
|
||||||
|
EnhancedRequestContext request = mock(EnhancedRequestContext.class);
|
||||||
|
// mock response
|
||||||
|
EnhancedResponseContext response = mock(EnhancedResponseContext.class);
|
||||||
|
|
||||||
|
EnhancedPluginContext context = new EnhancedPluginContext();
|
||||||
|
context.setRequest(request);
|
||||||
|
context.setResponse(response);
|
||||||
|
assemblyClientExceptionHook.handlerThrowable(context, new RuntimeException("Mock exception."));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,121 @@
|
|||||||
|
package com.tencent.cloud.rpc.enhancement.plugin;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
|
import com.tencent.cloud.common.metadata.MetadataContext;
|
||||||
|
import com.tencent.cloud.common.util.ApplicationContextAwareUtils;
|
||||||
|
import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties;
|
||||||
|
import com.tencent.cloud.rpc.enhancement.plugin.assembly.client.AssemblyClientPostHook;
|
||||||
|
import com.tencent.polaris.assembly.api.AssemblyAPI;
|
||||||
|
import org.junit.jupiter.api.AfterAll;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockedStatic;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
|
import org.springframework.cloud.client.DefaultServiceInstance;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
|
import org.springframework.http.HttpMethod;
|
||||||
|
|
||||||
|
import static com.tencent.polaris.test.common.Consts.NAMESPACE_TEST;
|
||||||
|
import static com.tencent.polaris.test.common.Consts.SERVICE_PROVIDER;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
public class AssemblyClientPostHookTest {
|
||||||
|
|
||||||
|
private static MockedStatic<ApplicationContextAwareUtils> mockedApplicationContextAwareUtils;
|
||||||
|
@InjectMocks
|
||||||
|
private AssemblyClientPostHook assemblyClientPostHook;
|
||||||
|
@Mock
|
||||||
|
private AssemblyAPI assemblyAPI;
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
static void beforeAll() {
|
||||||
|
mockedApplicationContextAwareUtils = Mockito.mockStatic(ApplicationContextAwareUtils.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(() -> ApplicationContextAwareUtils.getProperties(anyString()))
|
||||||
|
.thenReturn("unit-test");
|
||||||
|
ApplicationContext applicationContext = mock(ApplicationContext.class);
|
||||||
|
RpcEnhancementReporterProperties reporterProperties = mock(RpcEnhancementReporterProperties.class);
|
||||||
|
doReturn(reporterProperties)
|
||||||
|
.when(applicationContext).getBean(RpcEnhancementReporterProperties.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(ApplicationContextAwareUtils::getApplicationContext)
|
||||||
|
.thenReturn(applicationContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
static void afterAll() {
|
||||||
|
mockedApplicationContextAwareUtils.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() {
|
||||||
|
MetadataContext.LOCAL_NAMESPACE = NAMESPACE_TEST;
|
||||||
|
MetadataContext.LOCAL_SERVICE = SERVICE_PROVIDER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetName() {
|
||||||
|
assertThat(assemblyClientPostHook.getName()).isEqualTo(AssemblyClientPostHook.class.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testType() {
|
||||||
|
assertThat(assemblyClientPostHook.getType()).isEqualTo(EnhancedPluginType.Client.POST);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRun() {
|
||||||
|
EnhancedPluginContext pluginContext = new EnhancedPluginContext();
|
||||||
|
EnhancedRequestContext request = EnhancedRequestContext.builder()
|
||||||
|
.httpMethod(HttpMethod.GET)
|
||||||
|
.url(URI.create("http://0.0.0.0/"))
|
||||||
|
.httpHeaders(new HttpHeaders())
|
||||||
|
.build();
|
||||||
|
request.toString();
|
||||||
|
EnhancedResponseContext response = EnhancedResponseContext.builder()
|
||||||
|
.httpStatus(200)
|
||||||
|
.build();
|
||||||
|
response.toString();
|
||||||
|
|
||||||
|
DefaultServiceInstance targetServiceInstance = new DefaultServiceInstance();
|
||||||
|
targetServiceInstance.setServiceId(SERVICE_PROVIDER);
|
||||||
|
|
||||||
|
DefaultServiceInstance localServiceInstance = new DefaultServiceInstance();
|
||||||
|
localServiceInstance.setServiceId(SERVICE_PROVIDER);
|
||||||
|
|
||||||
|
pluginContext.setRequest(request);
|
||||||
|
pluginContext.setResponse(response);
|
||||||
|
pluginContext.setTargetServiceInstance(targetServiceInstance);
|
||||||
|
pluginContext.setLocalServiceInstance(localServiceInstance);
|
||||||
|
pluginContext.setThrowable(new RuntimeException());
|
||||||
|
|
||||||
|
assemblyClientPostHook.run(pluginContext);
|
||||||
|
assemblyClientPostHook.getOrder();
|
||||||
|
assemblyClientPostHook.getName();
|
||||||
|
assemblyClientPostHook.getType();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testHandlerThrowable() {
|
||||||
|
// mock request
|
||||||
|
EnhancedRequestContext request = mock(EnhancedRequestContext.class);
|
||||||
|
// mock response
|
||||||
|
EnhancedResponseContext response = mock(EnhancedResponseContext.class);
|
||||||
|
|
||||||
|
EnhancedPluginContext context = new EnhancedPluginContext();
|
||||||
|
context.setRequest(request);
|
||||||
|
context.setResponse(response);
|
||||||
|
assemblyClientPostHook.handlerThrowable(context, new RuntimeException("Mock exception."));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,121 @@
|
|||||||
|
package com.tencent.cloud.rpc.enhancement.plugin;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
|
import com.tencent.cloud.common.metadata.MetadataContext;
|
||||||
|
import com.tencent.cloud.common.util.ApplicationContextAwareUtils;
|
||||||
|
import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties;
|
||||||
|
import com.tencent.cloud.rpc.enhancement.plugin.assembly.client.AssemblyClientPreHook;
|
||||||
|
import com.tencent.polaris.assembly.api.AssemblyAPI;
|
||||||
|
import org.junit.jupiter.api.AfterAll;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockedStatic;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
|
import org.springframework.cloud.client.DefaultServiceInstance;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
|
import org.springframework.http.HttpMethod;
|
||||||
|
|
||||||
|
import static com.tencent.polaris.test.common.Consts.NAMESPACE_TEST;
|
||||||
|
import static com.tencent.polaris.test.common.Consts.SERVICE_PROVIDER;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
public class AssemblyClientPreHookTest {
|
||||||
|
|
||||||
|
private static MockedStatic<ApplicationContextAwareUtils> mockedApplicationContextAwareUtils;
|
||||||
|
@InjectMocks
|
||||||
|
private AssemblyClientPreHook assemblyClientPreHook;
|
||||||
|
@Mock
|
||||||
|
private AssemblyAPI assemblyAPI;
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
static void beforeAll() {
|
||||||
|
mockedApplicationContextAwareUtils = Mockito.mockStatic(ApplicationContextAwareUtils.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(() -> ApplicationContextAwareUtils.getProperties(anyString()))
|
||||||
|
.thenReturn("unit-test");
|
||||||
|
ApplicationContext applicationContext = mock(ApplicationContext.class);
|
||||||
|
RpcEnhancementReporterProperties reporterProperties = mock(RpcEnhancementReporterProperties.class);
|
||||||
|
doReturn(reporterProperties)
|
||||||
|
.when(applicationContext).getBean(RpcEnhancementReporterProperties.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(ApplicationContextAwareUtils::getApplicationContext)
|
||||||
|
.thenReturn(applicationContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
static void afterAll() {
|
||||||
|
mockedApplicationContextAwareUtils.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() {
|
||||||
|
MetadataContext.LOCAL_NAMESPACE = NAMESPACE_TEST;
|
||||||
|
MetadataContext.LOCAL_SERVICE = SERVICE_PROVIDER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetName() {
|
||||||
|
assertThat(assemblyClientPreHook.getName()).isEqualTo(AssemblyClientPreHook.class.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testType() {
|
||||||
|
assertThat(assemblyClientPreHook.getType()).isEqualTo(EnhancedPluginType.Client.PRE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRun() {
|
||||||
|
EnhancedPluginContext pluginContext = new EnhancedPluginContext();
|
||||||
|
EnhancedRequestContext request = EnhancedRequestContext.builder()
|
||||||
|
.httpMethod(HttpMethod.GET)
|
||||||
|
.url(URI.create("http://0.0.0.0/"))
|
||||||
|
.httpHeaders(new HttpHeaders())
|
||||||
|
.build();
|
||||||
|
request.toString();
|
||||||
|
EnhancedResponseContext response = EnhancedResponseContext.builder()
|
||||||
|
.httpStatus(200)
|
||||||
|
.build();
|
||||||
|
response.toString();
|
||||||
|
|
||||||
|
DefaultServiceInstance targetServiceInstance = new DefaultServiceInstance();
|
||||||
|
targetServiceInstance.setServiceId(SERVICE_PROVIDER);
|
||||||
|
|
||||||
|
DefaultServiceInstance localServiceInstance = new DefaultServiceInstance();
|
||||||
|
localServiceInstance.setServiceId(SERVICE_PROVIDER);
|
||||||
|
|
||||||
|
pluginContext.setRequest(request);
|
||||||
|
pluginContext.setResponse(response);
|
||||||
|
pluginContext.setTargetServiceInstance(targetServiceInstance);
|
||||||
|
pluginContext.setLocalServiceInstance(localServiceInstance);
|
||||||
|
pluginContext.setThrowable(new RuntimeException());
|
||||||
|
|
||||||
|
assemblyClientPreHook.run(pluginContext);
|
||||||
|
assemblyClientPreHook.getOrder();
|
||||||
|
assemblyClientPreHook.getName();
|
||||||
|
assemblyClientPreHook.getType();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testHandlerThrowable() {
|
||||||
|
// mock request
|
||||||
|
EnhancedRequestContext request = mock(EnhancedRequestContext.class);
|
||||||
|
// mock response
|
||||||
|
EnhancedResponseContext response = mock(EnhancedResponseContext.class);
|
||||||
|
|
||||||
|
EnhancedPluginContext context = new EnhancedPluginContext();
|
||||||
|
context.setRequest(request);
|
||||||
|
context.setResponse(response);
|
||||||
|
assemblyClientPreHook.handlerThrowable(context, new RuntimeException("Mock exception."));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,61 @@
|
|||||||
|
package com.tencent.cloud.rpc.enhancement.plugin;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashSet;
|
||||||
|
|
||||||
|
import com.tencent.cloud.rpc.enhancement.plugin.assembly.AssemblyRequestContext;
|
||||||
|
import com.tencent.polaris.api.pojo.ServiceKey;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
|
import org.springframework.http.HttpMethod;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
public class AssemblyRequestContextTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAssemblyRequestContext() {
|
||||||
|
URI uri = URI.create("http://0.0.0.0/");
|
||||||
|
|
||||||
|
HttpHeaders httpHeaders = new HttpHeaders();
|
||||||
|
httpHeaders.add("a", "a");
|
||||||
|
httpHeaders.add(HttpHeaders.COOKIE, "cookies-k1=cookies-v1;cookies-k2=cookies-v2");
|
||||||
|
|
||||||
|
EnhancedRequestContext enhancedRequestContext = EnhancedRequestContext.builder()
|
||||||
|
.httpMethod(HttpMethod.GET)
|
||||||
|
.url(uri)
|
||||||
|
.httpHeaders(httpHeaders)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
ServiceKey callerService = new ServiceKey("test", "test");
|
||||||
|
AssemblyRequestContext assemblyRequestContext = new AssemblyRequestContext(
|
||||||
|
enhancedRequestContext,
|
||||||
|
callerService,
|
||||||
|
"0.0.0.0"
|
||||||
|
);
|
||||||
|
|
||||||
|
assertThat(assemblyRequestContext.getURI()).isEqualTo(uri);
|
||||||
|
|
||||||
|
assertThat(assemblyRequestContext.getHeader("a")).isEqualTo("a");
|
||||||
|
assemblyRequestContext.setHeader("b", "b");
|
||||||
|
assertThat(assemblyRequestContext.listHeaderKeys()).isEqualTo(new HashSet<>(Arrays.asList(HttpHeaders.COOKIE, "a", "b")));
|
||||||
|
|
||||||
|
assertThat(assemblyRequestContext.getMethod()).isEqualTo(HttpMethod.GET.toString());
|
||||||
|
assemblyRequestContext.setMethod(HttpMethod.OPTIONS.name());
|
||||||
|
assertThat(assemblyRequestContext.getMethod()).isEqualTo(HttpMethod.OPTIONS.toString());
|
||||||
|
|
||||||
|
assertThat(assemblyRequestContext.getCookie("cookies-k1")).isEqualTo("cookies-v1");
|
||||||
|
assertThat(assemblyRequestContext.getCookie("cookies-k2")).isEqualTo("cookies-v2");
|
||||||
|
assemblyRequestContext.setCookie("cookies-k3", "cookies-v3");
|
||||||
|
assertThat(assemblyRequestContext.listCookieKeys()).isEqualTo(new HashSet<>(Arrays.asList("cookies-k1", "cookies-k2", "cookies-k3")));
|
||||||
|
|
||||||
|
assertThat(assemblyRequestContext.getCallerService()).isEqualTo(callerService);
|
||||||
|
assertThat(assemblyRequestContext.getCallerIp()).isEqualTo("0.0.0.0");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,79 @@
|
|||||||
|
package com.tencent.cloud.rpc.enhancement.plugin;
|
||||||
|
|
||||||
|
import java.net.SocketTimeoutException;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import com.tencent.cloud.common.util.ApplicationContextAwareUtils;
|
||||||
|
import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties;
|
||||||
|
import com.tencent.cloud.rpc.enhancement.plugin.assembly.AssemblyResponseContext;
|
||||||
|
import com.tencent.polaris.api.pojo.RetStatus;
|
||||||
|
import org.junit.jupiter.api.AfterAll;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.MockedStatic;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
public class AssemblyResponseContextTest {
|
||||||
|
|
||||||
|
private static MockedStatic<ApplicationContextAwareUtils> mockedApplicationContextAwareUtils;
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
static void beforeAll() {
|
||||||
|
mockedApplicationContextAwareUtils = Mockito.mockStatic(ApplicationContextAwareUtils.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(() -> ApplicationContextAwareUtils.getProperties(anyString()))
|
||||||
|
.thenReturn("unit-test");
|
||||||
|
ApplicationContext applicationContext = mock(ApplicationContext.class);
|
||||||
|
RpcEnhancementReporterProperties reporterProperties = mock(RpcEnhancementReporterProperties.class);
|
||||||
|
doReturn(reporterProperties)
|
||||||
|
.when(applicationContext).getBean(RpcEnhancementReporterProperties.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(ApplicationContextAwareUtils::getApplicationContext)
|
||||||
|
.thenReturn(applicationContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
static void afterAll() {
|
||||||
|
mockedApplicationContextAwareUtils.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAssemblyResponseContext() {
|
||||||
|
|
||||||
|
HttpHeaders httpHeaders = new HttpHeaders();
|
||||||
|
httpHeaders.add("a", "a");
|
||||||
|
|
||||||
|
EnhancedResponseContext enhancedResponseContext = EnhancedResponseContext.builder()
|
||||||
|
.httpHeaders(httpHeaders)
|
||||||
|
.httpStatus(HttpStatus.OK.value())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
AssemblyResponseContext assemblyResponseContext = new AssemblyResponseContext(enhancedResponseContext, null);
|
||||||
|
assertThat(assemblyResponseContext.getHeader("a")).isEqualTo("a");
|
||||||
|
assertThat(assemblyResponseContext.getRetCode()).isEqualTo(HttpStatus.OK.value());
|
||||||
|
assertThat(assemblyResponseContext.getThrowable()).isEqualTo(null);
|
||||||
|
assertThat(assemblyResponseContext.getRetStatus()).isEqualTo(RetStatus.RetSuccess);
|
||||||
|
assertThat(assemblyResponseContext.listHeaders()).isEqualTo(new HashSet<>(List.of("a")));
|
||||||
|
|
||||||
|
Throwable e = new SocketTimeoutException();
|
||||||
|
assemblyResponseContext = new AssemblyResponseContext(null, e);
|
||||||
|
assertThat(assemblyResponseContext.getHeader("a")).isEqualTo(null);
|
||||||
|
assertThat(assemblyResponseContext.getRetCode()).isEqualTo(null);
|
||||||
|
assertThat(assemblyResponseContext.getThrowable()).isEqualTo(e);
|
||||||
|
assertThat(assemblyResponseContext.getRetStatus()).isEqualTo(RetStatus.RetTimeout);
|
||||||
|
assertThat(assemblyResponseContext.listHeaders()).isEqualTo(null);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,121 @@
|
|||||||
|
package com.tencent.cloud.rpc.enhancement.plugin;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
|
import com.tencent.cloud.common.metadata.MetadataContext;
|
||||||
|
import com.tencent.cloud.common.util.ApplicationContextAwareUtils;
|
||||||
|
import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties;
|
||||||
|
import com.tencent.cloud.rpc.enhancement.plugin.assembly.server.AssemblyServerExceptionHook;
|
||||||
|
import com.tencent.polaris.assembly.api.AssemblyAPI;
|
||||||
|
import org.junit.jupiter.api.AfterAll;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockedStatic;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
|
import org.springframework.cloud.client.DefaultServiceInstance;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
|
import org.springframework.http.HttpMethod;
|
||||||
|
|
||||||
|
import static com.tencent.polaris.test.common.Consts.NAMESPACE_TEST;
|
||||||
|
import static com.tencent.polaris.test.common.Consts.SERVICE_PROVIDER;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
public class AssemblyServerExceptionHookTest {
|
||||||
|
|
||||||
|
private static MockedStatic<ApplicationContextAwareUtils> mockedApplicationContextAwareUtils;
|
||||||
|
@InjectMocks
|
||||||
|
private AssemblyServerExceptionHook assemblyServerExceptionHook;
|
||||||
|
@Mock
|
||||||
|
private AssemblyAPI assemblyAPI;
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
static void beforeAll() {
|
||||||
|
mockedApplicationContextAwareUtils = Mockito.mockStatic(ApplicationContextAwareUtils.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(() -> ApplicationContextAwareUtils.getProperties(anyString()))
|
||||||
|
.thenReturn("unit-test");
|
||||||
|
ApplicationContext applicationContext = mock(ApplicationContext.class);
|
||||||
|
RpcEnhancementReporterProperties reporterProperties = mock(RpcEnhancementReporterProperties.class);
|
||||||
|
doReturn(reporterProperties)
|
||||||
|
.when(applicationContext).getBean(RpcEnhancementReporterProperties.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(ApplicationContextAwareUtils::getApplicationContext)
|
||||||
|
.thenReturn(applicationContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
static void afterAll() {
|
||||||
|
mockedApplicationContextAwareUtils.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() {
|
||||||
|
MetadataContext.LOCAL_NAMESPACE = NAMESPACE_TEST;
|
||||||
|
MetadataContext.LOCAL_SERVICE = SERVICE_PROVIDER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetName() {
|
||||||
|
assertThat(assemblyServerExceptionHook.getName()).isEqualTo(AssemblyServerExceptionHook.class.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testType() {
|
||||||
|
assertThat(assemblyServerExceptionHook.getType()).isEqualTo(EnhancedPluginType.Server.EXCEPTION);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRun() {
|
||||||
|
EnhancedPluginContext pluginContext = new EnhancedPluginContext();
|
||||||
|
EnhancedRequestContext request = EnhancedRequestContext.builder()
|
||||||
|
.httpMethod(HttpMethod.GET)
|
||||||
|
.url(URI.create("http://0.0.0.0/"))
|
||||||
|
.httpHeaders(new HttpHeaders())
|
||||||
|
.build();
|
||||||
|
request.toString();
|
||||||
|
EnhancedResponseContext response = EnhancedResponseContext.builder()
|
||||||
|
.httpStatus(200)
|
||||||
|
.build();
|
||||||
|
response.toString();
|
||||||
|
|
||||||
|
DefaultServiceInstance targetServiceInstance = new DefaultServiceInstance();
|
||||||
|
targetServiceInstance.setServiceId(SERVICE_PROVIDER);
|
||||||
|
|
||||||
|
DefaultServiceInstance localServiceInstance = new DefaultServiceInstance();
|
||||||
|
localServiceInstance.setServiceId(SERVICE_PROVIDER);
|
||||||
|
|
||||||
|
pluginContext.setRequest(request);
|
||||||
|
pluginContext.setResponse(response);
|
||||||
|
pluginContext.setTargetServiceInstance(targetServiceInstance);
|
||||||
|
pluginContext.setLocalServiceInstance(localServiceInstance);
|
||||||
|
pluginContext.setThrowable(new RuntimeException());
|
||||||
|
|
||||||
|
assemblyServerExceptionHook.run(pluginContext);
|
||||||
|
assemblyServerExceptionHook.getOrder();
|
||||||
|
assemblyServerExceptionHook.getName();
|
||||||
|
assemblyServerExceptionHook.getType();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testHandlerThrowable() {
|
||||||
|
// mock request
|
||||||
|
EnhancedRequestContext request = mock(EnhancedRequestContext.class);
|
||||||
|
// mock response
|
||||||
|
EnhancedResponseContext response = mock(EnhancedResponseContext.class);
|
||||||
|
|
||||||
|
EnhancedPluginContext context = new EnhancedPluginContext();
|
||||||
|
context.setRequest(request);
|
||||||
|
context.setResponse(response);
|
||||||
|
assemblyServerExceptionHook.handlerThrowable(context, new RuntimeException("Mock exception."));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,121 @@
|
|||||||
|
package com.tencent.cloud.rpc.enhancement.plugin;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
|
import com.tencent.cloud.common.metadata.MetadataContext;
|
||||||
|
import com.tencent.cloud.common.util.ApplicationContextAwareUtils;
|
||||||
|
import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties;
|
||||||
|
import com.tencent.cloud.rpc.enhancement.plugin.assembly.server.AssemblyServerPostHook;
|
||||||
|
import com.tencent.polaris.assembly.api.AssemblyAPI;
|
||||||
|
import org.junit.jupiter.api.AfterAll;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockedStatic;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
|
import org.springframework.cloud.client.DefaultServiceInstance;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
|
import org.springframework.http.HttpMethod;
|
||||||
|
|
||||||
|
import static com.tencent.polaris.test.common.Consts.NAMESPACE_TEST;
|
||||||
|
import static com.tencent.polaris.test.common.Consts.SERVICE_PROVIDER;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
public class AssemblyServerPostHookTest {
|
||||||
|
|
||||||
|
private static MockedStatic<ApplicationContextAwareUtils> mockedApplicationContextAwareUtils;
|
||||||
|
@InjectMocks
|
||||||
|
private AssemblyServerPostHook assemblyServerPostHook;
|
||||||
|
@Mock
|
||||||
|
private AssemblyAPI assemblyAPI;
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
static void beforeAll() {
|
||||||
|
mockedApplicationContextAwareUtils = Mockito.mockStatic(ApplicationContextAwareUtils.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(() -> ApplicationContextAwareUtils.getProperties(anyString()))
|
||||||
|
.thenReturn("unit-test");
|
||||||
|
ApplicationContext applicationContext = mock(ApplicationContext.class);
|
||||||
|
RpcEnhancementReporterProperties reporterProperties = mock(RpcEnhancementReporterProperties.class);
|
||||||
|
doReturn(reporterProperties)
|
||||||
|
.when(applicationContext).getBean(RpcEnhancementReporterProperties.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(ApplicationContextAwareUtils::getApplicationContext)
|
||||||
|
.thenReturn(applicationContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
static void afterAll() {
|
||||||
|
mockedApplicationContextAwareUtils.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() {
|
||||||
|
MetadataContext.LOCAL_NAMESPACE = NAMESPACE_TEST;
|
||||||
|
MetadataContext.LOCAL_SERVICE = SERVICE_PROVIDER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetName() {
|
||||||
|
assertThat(assemblyServerPostHook.getName()).isEqualTo(AssemblyServerPostHook.class.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testType() {
|
||||||
|
assertThat(assemblyServerPostHook.getType()).isEqualTo(EnhancedPluginType.Server.POST);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRun() {
|
||||||
|
EnhancedPluginContext pluginContext = new EnhancedPluginContext();
|
||||||
|
EnhancedRequestContext request = EnhancedRequestContext.builder()
|
||||||
|
.httpMethod(HttpMethod.GET)
|
||||||
|
.url(URI.create("http://0.0.0.0/"))
|
||||||
|
.httpHeaders(new HttpHeaders())
|
||||||
|
.build();
|
||||||
|
request.toString();
|
||||||
|
EnhancedResponseContext response = EnhancedResponseContext.builder()
|
||||||
|
.httpStatus(200)
|
||||||
|
.build();
|
||||||
|
response.toString();
|
||||||
|
|
||||||
|
DefaultServiceInstance targetServiceInstance = new DefaultServiceInstance();
|
||||||
|
targetServiceInstance.setServiceId(SERVICE_PROVIDER);
|
||||||
|
|
||||||
|
DefaultServiceInstance localServiceInstance = new DefaultServiceInstance();
|
||||||
|
localServiceInstance.setServiceId(SERVICE_PROVIDER);
|
||||||
|
|
||||||
|
pluginContext.setRequest(request);
|
||||||
|
pluginContext.setResponse(response);
|
||||||
|
pluginContext.setTargetServiceInstance(targetServiceInstance);
|
||||||
|
pluginContext.setLocalServiceInstance(localServiceInstance);
|
||||||
|
pluginContext.setThrowable(new RuntimeException());
|
||||||
|
|
||||||
|
assemblyServerPostHook.run(pluginContext);
|
||||||
|
assemblyServerPostHook.getOrder();
|
||||||
|
assemblyServerPostHook.getName();
|
||||||
|
assemblyServerPostHook.getType();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testHandlerThrowable() {
|
||||||
|
// mock request
|
||||||
|
EnhancedRequestContext request = mock(EnhancedRequestContext.class);
|
||||||
|
// mock response
|
||||||
|
EnhancedResponseContext response = mock(EnhancedResponseContext.class);
|
||||||
|
|
||||||
|
EnhancedPluginContext context = new EnhancedPluginContext();
|
||||||
|
context.setRequest(request);
|
||||||
|
context.setResponse(response);
|
||||||
|
assemblyServerPostHook.handlerThrowable(context, new RuntimeException("Mock exception."));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,121 @@
|
|||||||
|
package com.tencent.cloud.rpc.enhancement.plugin;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
|
import com.tencent.cloud.common.metadata.MetadataContext;
|
||||||
|
import com.tencent.cloud.common.util.ApplicationContextAwareUtils;
|
||||||
|
import com.tencent.cloud.rpc.enhancement.config.RpcEnhancementReporterProperties;
|
||||||
|
import com.tencent.cloud.rpc.enhancement.plugin.assembly.server.AssemblyServerPreHook;
|
||||||
|
import com.tencent.polaris.assembly.api.AssemblyAPI;
|
||||||
|
import org.junit.jupiter.api.AfterAll;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockedStatic;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
|
import org.springframework.cloud.client.DefaultServiceInstance;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.http.HttpHeaders;
|
||||||
|
import org.springframework.http.HttpMethod;
|
||||||
|
|
||||||
|
import static com.tencent.polaris.test.common.Consts.NAMESPACE_TEST;
|
||||||
|
import static com.tencent.polaris.test.common.Consts.SERVICE_PROVIDER;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
public class AssemblyServerPreHookTest {
|
||||||
|
|
||||||
|
private static MockedStatic<ApplicationContextAwareUtils> mockedApplicationContextAwareUtils;
|
||||||
|
@InjectMocks
|
||||||
|
private AssemblyServerPreHook assemblyServerPreHook;
|
||||||
|
@Mock
|
||||||
|
private AssemblyAPI assemblyAPI;
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
static void beforeAll() {
|
||||||
|
mockedApplicationContextAwareUtils = Mockito.mockStatic(ApplicationContextAwareUtils.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(() -> ApplicationContextAwareUtils.getProperties(anyString()))
|
||||||
|
.thenReturn("unit-test");
|
||||||
|
ApplicationContext applicationContext = mock(ApplicationContext.class);
|
||||||
|
RpcEnhancementReporterProperties reporterProperties = mock(RpcEnhancementReporterProperties.class);
|
||||||
|
doReturn(reporterProperties)
|
||||||
|
.when(applicationContext).getBean(RpcEnhancementReporterProperties.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(ApplicationContextAwareUtils::getApplicationContext)
|
||||||
|
.thenReturn(applicationContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
static void afterAll() {
|
||||||
|
mockedApplicationContextAwareUtils.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() {
|
||||||
|
MetadataContext.LOCAL_NAMESPACE = NAMESPACE_TEST;
|
||||||
|
MetadataContext.LOCAL_SERVICE = SERVICE_PROVIDER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetName() {
|
||||||
|
assertThat(assemblyServerPreHook.getName()).isEqualTo(AssemblyServerPreHook.class.getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testType() {
|
||||||
|
assertThat(assemblyServerPreHook.getType()).isEqualTo(EnhancedPluginType.Server.PRE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testRun() {
|
||||||
|
EnhancedPluginContext pluginContext = new EnhancedPluginContext();
|
||||||
|
EnhancedRequestContext request = EnhancedRequestContext.builder()
|
||||||
|
.httpMethod(HttpMethod.GET)
|
||||||
|
.url(URI.create("http://0.0.0.0/"))
|
||||||
|
.httpHeaders(new HttpHeaders())
|
||||||
|
.build();
|
||||||
|
request.toString();
|
||||||
|
EnhancedResponseContext response = EnhancedResponseContext.builder()
|
||||||
|
.httpStatus(200)
|
||||||
|
.build();
|
||||||
|
response.toString();
|
||||||
|
|
||||||
|
DefaultServiceInstance targetServiceInstance = new DefaultServiceInstance();
|
||||||
|
targetServiceInstance.setServiceId(SERVICE_PROVIDER);
|
||||||
|
|
||||||
|
DefaultServiceInstance localServiceInstance = new DefaultServiceInstance();
|
||||||
|
localServiceInstance.setServiceId(SERVICE_PROVIDER);
|
||||||
|
|
||||||
|
pluginContext.setRequest(request);
|
||||||
|
pluginContext.setResponse(response);
|
||||||
|
pluginContext.setTargetServiceInstance(targetServiceInstance);
|
||||||
|
pluginContext.setLocalServiceInstance(localServiceInstance);
|
||||||
|
pluginContext.setThrowable(new RuntimeException());
|
||||||
|
|
||||||
|
assemblyServerPreHook.run(pluginContext);
|
||||||
|
assemblyServerPreHook.getOrder();
|
||||||
|
assemblyServerPreHook.getName();
|
||||||
|
assemblyServerPreHook.getType();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testHandlerThrowable() {
|
||||||
|
// mock request
|
||||||
|
EnhancedRequestContext request = mock(EnhancedRequestContext.class);
|
||||||
|
// mock response
|
||||||
|
EnhancedResponseContext response = mock(EnhancedResponseContext.class);
|
||||||
|
|
||||||
|
EnhancedPluginContext context = new EnhancedPluginContext();
|
||||||
|
context.setRequest(request);
|
||||||
|
context.setResponse(response);
|
||||||
|
assemblyServerPreHook.handlerThrowable(context, new RuntimeException("Mock exception."));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,72 @@
|
|||||||
|
package com.tencent.cloud.rpc.enhancement.resttemplate;
|
||||||
|
|
||||||
|
import com.tencent.cloud.common.metadata.MetadataContext;
|
||||||
|
import com.tencent.cloud.common.metadata.MetadataContextHolder;
|
||||||
|
import com.tencent.cloud.common.metadata.StaticMetadataManager;
|
||||||
|
import com.tencent.cloud.common.metadata.config.MetadataLocalProperties;
|
||||||
|
import com.tencent.cloud.common.util.ApplicationContextAwareUtils;
|
||||||
|
import org.junit.jupiter.api.AfterAll;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.MockedStatic;
|
||||||
|
import org.mockito.Mockito;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
|
import org.springframework.cloud.client.ServiceInstance;
|
||||||
|
import org.springframework.context.ApplicationContext;
|
||||||
|
import org.springframework.http.HttpRequest;
|
||||||
|
|
||||||
|
import static com.tencent.cloud.rpc.enhancement.resttemplate.PolarisLoadBalancerRequestTransformer.LOAD_BALANCER_SERVICE_INSTANCE;
|
||||||
|
import static com.tencent.polaris.test.common.Consts.NAMESPACE_TEST;
|
||||||
|
import static com.tencent.polaris.test.common.Consts.SERVICE_PROVIDER;
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
public class PolarisLoadBalancerRequestTransformerTest {
|
||||||
|
private static MockedStatic<ApplicationContextAwareUtils> mockedApplicationContextAwareUtils;
|
||||||
|
|
||||||
|
private PolarisLoadBalancerRequestTransformer transformer = new PolarisLoadBalancerRequestTransformer();
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private HttpRequest clientRequest;
|
||||||
|
|
||||||
|
@Mock
|
||||||
|
private ServiceInstance serviceInstance;
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
static void beforeAll() {
|
||||||
|
mockedApplicationContextAwareUtils = Mockito.mockStatic(ApplicationContextAwareUtils.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(() -> ApplicationContextAwareUtils.getProperties(anyString()))
|
||||||
|
.thenReturn("unit-test");
|
||||||
|
ApplicationContext applicationContext = mock(ApplicationContext.class);
|
||||||
|
MetadataLocalProperties metadataLocalProperties = mock(MetadataLocalProperties.class);
|
||||||
|
StaticMetadataManager staticMetadataManager = mock(StaticMetadataManager.class);
|
||||||
|
doReturn(metadataLocalProperties).when(applicationContext).getBean(MetadataLocalProperties.class);
|
||||||
|
doReturn(staticMetadataManager).when(applicationContext).getBean(StaticMetadataManager.class);
|
||||||
|
mockedApplicationContextAwareUtils.when(ApplicationContextAwareUtils::getApplicationContext).thenReturn(applicationContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
@AfterAll
|
||||||
|
static void afterAll() {
|
||||||
|
mockedApplicationContextAwareUtils.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
@BeforeEach
|
||||||
|
void setUp() {
|
||||||
|
MetadataContext.LOCAL_NAMESPACE = NAMESPACE_TEST;
|
||||||
|
MetadataContext.LOCAL_SERVICE = SERVICE_PROVIDER;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void test() throws Throwable {
|
||||||
|
transformer.transformRequest(clientRequest, serviceInstance);
|
||||||
|
assertThat(MetadataContextHolder.get().getLoadbalancerMetadata().get(LOAD_BALANCER_SERVICE_INSTANCE)).isEqualTo(serviceInstance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in new issue