use of org.apache.servicecomb.core.Invocation in project java-chassis by ServiceComb.
the class TestSchemaMetaCodecRestTemplate method testProtoSchemaOperationBase.
@Test
@SuppressWarnings({ "rawtypes", "unchecked" })
public void testProtoSchemaOperationBase() throws Exception {
Invocation consumerInvocation = mockInvocation("base", InvocationType.CONSUMER);
Invocation providerInvocation = mockInvocation("base", InvocationType.PRODUCER);
OperationProtobuf providerOperationProtobuf = ProtobufManager.getOrCreateOperation(providerInvocation);
OperationProtobuf consumerOperationProtobuf = ProtobufManager.getOrCreateOperation(consumerInvocation);
byte[] values;
// request message
RequestRootSerializer requestSerializer = consumerOperationProtobuf.getRequestRootSerializer();
boolean boolValue = true;
int iValue = 20;
long lValue = 30L;
float fValue = 40f;
double dValue = 50D;
String sValue = "hello";
int[] iArray = new int[] { 60, 70 };
Color color = Color.BLUE;
LocalDate localDate = LocalDate.of(2019, 10, 1);
Date date = new Date();
Empty empty = new Empty();
Map<String, Object> args = new HashMap<>();
args.put("boolValue", boolValue);
args.put("iValue", iValue);
args.put("lValue", lValue);
args.put("fValue", fValue);
args.put("dValue", dValue);
args.put("sValue", sValue);
args.put("iArray", iArray);
args.put("color", color);
args.put("localDate", localDate);
args.put("date", date);
args.put("empty", empty);
values = requestSerializer.serialize(args);
RequestRootDeserializer<Object> requestDeserializer = providerOperationProtobuf.getRequestRootDeserializer();
Map<String, Object> decodedArgs = requestDeserializer.deserialize(values);
Assert.assertEquals(boolValue, decodedArgs.get("boolValue"));
Assert.assertEquals(iValue, decodedArgs.get("iValue"));
Assert.assertEquals(lValue, decodedArgs.get("lValue"));
Assert.assertEquals(fValue, decodedArgs.get("fValue"));
Assert.assertEquals(dValue, decodedArgs.get("dValue"));
Assert.assertArrayEquals(iArray, (int[]) decodedArgs.get("iArray"));
Assert.assertEquals(color, decodedArgs.get("color"));
Assert.assertEquals(date, decodedArgs.get("date"));
Assert.assertTrue(decodedArgs.get("localDate") instanceof LocalDate);
Assert.assertEquals(localDate, decodedArgs.get("localDate"));
Assert.assertTrue(decodedArgs.get("empty") instanceof Empty);
// default value testing
args.put("boolValue", false);
args.put("iValue", 0);
args.put("lValue", 0L);
args.put("fValue", 0F);
args.put("dValue", 0D);
args.put("sValue", null);
args.put("iArray", new int[0]);
args.put("color", null);
args.put("localDate", null);
args.put("date", null);
args.put("empty", null);
values = requestSerializer.serialize(args);
decodedArgs = requestDeserializer.deserialize(values);
Assert.assertEquals(null, decodedArgs.get("boolValue"));
Assert.assertEquals(null, decodedArgs.get("iValue"));
Assert.assertEquals(null, decodedArgs.get("lValue"));
Assert.assertEquals(null, decodedArgs.get("fValue"));
Assert.assertEquals(null, decodedArgs.get("dValue"));
Assert.assertEquals(null, decodedArgs.get("iArray"));
Assert.assertEquals(null, decodedArgs.get("color"));
Assert.assertEquals(null, decodedArgs.get("localDate"));
Assert.assertEquals(null, decodedArgs.get("date"));
Assert.assertEquals(null, decodedArgs.get("empty"));
// response message
ResponseRootSerializer responseSerializer = providerOperationProtobuf.findResponseRootSerializer(200);
values = responseSerializer.serialize(30);
ResponseRootDeserializer<Object> responseDeserializer = consumerOperationProtobuf.findResponseRootDeserializer(200);
Object decodedValue = responseDeserializer.deserialize(values, TypeFactory.defaultInstance().constructType(int.class));
Assert.assertEquals(30, (int) decodedValue);
}
use of org.apache.servicecomb.core.Invocation in project java-chassis by ServiceComb.
the class TestSchemaMetaCodecRestTemplate method testProtoSchemaOperationUser.
@Test
public void testProtoSchemaOperationUser() throws Exception {
Invocation consumerInvocation = mockInvocation("user", InvocationType.CONSUMER);
Invocation providerInvocation = mockInvocation("user", InvocationType.PRODUCER);
OperationProtobuf providerOperationProtobuf = ProtobufManager.getOrCreateOperation(providerInvocation);
OperationProtobuf consumerOperationProtobuf = ProtobufManager.getOrCreateOperation(consumerInvocation);
User user = new User();
user.name = "user";
User friend = new User();
friend.name = "friend";
List<User> friends = new ArrayList<>();
friends.add(friend);
user.friends = friends;
byte[] values;
// request message
Map<String, Object> args = new HashMap<>();
RequestRootSerializer requestSerializer = consumerOperationProtobuf.getRequestRootSerializer();
user.friends = friends;
args.put("user", user);
values = requestSerializer.serialize(args);
RequestRootDeserializer<Object> requestDeserializer = providerOperationProtobuf.getRequestRootDeserializer();
Map<String, Object> decodedUserArgs = requestDeserializer.deserialize(values);
Assert.assertEquals(user.name, ((User) decodedUserArgs.get("user")).name);
Assert.assertEquals(user.friends.get(0).name, ((User) decodedUserArgs.get("user")).friends.get(0).name);
// response message
ResponseRootSerializer responseSerializer = providerOperationProtobuf.findResponseRootSerializer(200);
values = responseSerializer.serialize(user);
ResponseRootDeserializer<Object> responseDeserializer = consumerOperationProtobuf.findResponseRootDeserializer(200);
User decodedUser = (User) responseDeserializer.deserialize(values, TypeFactory.defaultInstance().constructType(User.class));
Assert.assertEquals(user.name, decodedUser.name);
Assert.assertEquals(user.friends.get(0).name, decodedUser.friends.get(0).name);
user.friends = new ArrayList<>();
values = responseSerializer.serialize(user);
decodedUser = (User) responseDeserializer.deserialize(values, TypeFactory.defaultInstance().constructType(User.class));
Assert.assertEquals(user.name, decodedUser.name);
// proto buffer encode and decode empty list to be null
Assert.assertEquals(null, decodedUser.friends);
}
use of org.apache.servicecomb.core.Invocation in project java-chassis by ServiceComb.
the class AccessLogGeneratorTest method testClientLog.
@Test
public void testClientLog() {
Invocation invocation = Mockito.mock(Invocation.class);
InvocationStageTrace stageTrace = Mockito.mock(InvocationStageTrace.class);
OperationMeta operationMeta = Mockito.mock(OperationMeta.class);
long startMillisecond = 1416863450581L;
when(stageTrace.getStartSend()).thenReturn(0L);
when(stageTrace.getStart()).thenReturn(0L);
when(stageTrace.getFinish()).thenReturn(0L);
when(stageTrace.getStartTimeMillis()).thenReturn(startMillisecond);
when(invocation.getOperationMeta()).thenReturn(operationMeta);
when(invocation.getInvocationStageTrace()).thenReturn(stageTrace);
InvocationFinishEvent finishEvent = new InvocationFinishEvent(invocation, null);
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(ConfigurableDatetimeAccessItem.DEFAULT_DATETIME_PATTERN, ConfigurableDatetimeAccessItem.DEFAULT_LOCALE);
simpleDateFormat.setTimeZone(TimeZone.getDefault());
when(operationMeta.getHttpMethod()).thenReturn(HttpMethod.DELETE.toString());
String log = LOG_GENERATOR.generateClientLog(finishEvent);
Assert.assertEquals("DELETE" + " - " + simpleDateFormat.format(startMillisecond), log);
}
use of org.apache.servicecomb.core.Invocation in project java-chassis by ServiceComb.
the class HttpMethodItemTest method initStrBuilder.
@Before
public void initStrBuilder() {
routingContext = Mockito.mock(RoutingContext.class);
finishEvent = Mockito.mock(InvocationFinishEvent.class);
invocation = Mockito.mock(Invocation.class);
restClientRequest = Mockito.mock(RestClientRequestImpl.class);
clientRequest = Mockito.mock(HttpClientRequest.class);
endpoint = Mockito.mock(Endpoint.class);
urlEndpoint = Mockito.mock(URIEndpointObject.class);
Map<String, Object> handlerMap = new HashMap<>();
handlerMap.put(RestConst.INVOCATION_HANDLER_REQUESTCLIENT, restClientRequest);
when(finishEvent.getInvocation()).thenReturn(invocation);
when(invocation.getHandlerContext()).thenReturn(handlerMap);
when(invocation.getEndpoint()).thenReturn(endpoint);
when(endpoint.getAddress()).thenReturn(urlEndpoint);
accessLogEvent = new ServerAccessLogEvent();
accessLogEvent.setRoutingContext(routingContext);
strBuilder = new StringBuilder();
}
use of org.apache.servicecomb.core.Invocation in project java-chassis by ServiceComb.
the class InvocationContextItemTest method initStrBuilder.
@Before
public void initStrBuilder() {
accessLogEvent = new ServerAccessLogEvent();
routingContext = Mockito.mock(RoutingContext.class);
finishEvent = Mockito.mock(InvocationFinishEvent.class);
invocation = Mockito.mock(Invocation.class);
accessLogEvent.setRoutingContext(routingContext);
strBuilder = new StringBuilder();
}
Aggregations