package com.ctriposs.baiji.rpc.samples.crosstest;
import org.junit.Assert;
import java.util.*;
public class Client {
public static void main(String[] args) throws Exception {
TestServiceClient client = TestServiceClient.getInstance(TestServiceClient.class, "http://localhost:8113/");
for (String format : TestServiceClient.getSupportFormats()) {
client.setFormat(format);
CrossTestRequestType requestType = new CrossTestRequestType("beepboop", createSample());
CrossTestResponseType responseType = client.testSerialize(requestType);
System.out.println(responseType.getMessage());
System.out.println(responseType.getResponseStatus());
checkStatus(requestType.getSample(), responseType.getSampleList().getSamples());
System.out.println("Passed!!!");
}
}
private static TestSerializerSample createSample() {
TestSerializerSample sample = new TestSerializerSample();
Random random = new Random();
sample.bigint1 = random.nextLong();
sample.boolean1 = false;
sample.double1 = random.nextDouble();
sample.enum1 = Enum1Values.GREEN;
sample.int1 = random.nextInt();
sample.string1 = UUID.randomUUID().toString();
sample.bytes1 = new byte[256];
for (int i = 0; i < 256; ++i) {
sample.bytes1[i] = (byte) i;
}
sample.list1 = Arrays.asList("啦", "b", "c");
Map<String, Integer> map = new HashMap<>();
map.put("1a", 1);
map.put("2b", 2);
map.put("3c", 3);
sample.map1 = map;
sample.record = new Record(1, true, "testRecord");
TestSerializerSample innerSample = new TestSerializerSample();
innerSample.bigint1 = random.nextLong();
innerSample.boolean1 = true;
innerSample.double1 = random.nextDouble();
innerSample.list1 = Arrays.asList("你", "我", "他");
innerSample.map1 = map;
sample.innerSample = innerSample;
Record2 record2 = new Record2();
record2.bigint2 = random.nextLong();
record2.enum2 = Enum2Values.PLANE;
Map<String, Record> recordMap = new HashMap<>();
recordMap.put("m1", new Record(1, true, "testRecord"));
recordMap.put("m2", new Record(2, true, "testRecordRecord"));
record2.map2 = recordMap;
sample.container1 = new Record2Container(Arrays.asList(record2));
return sample;
}
private static void checkStatus(TestSerializerSample expected, List<TestSerializerSample> actualList) {
for (int i = 0; i < actualList.size(); i++) {
TestSerializerSample actual = actualList.get(i);
Assert.assertEquals(expected.bigint1, actual.bigint1);
Assert.assertEquals(expected.boolean1, actual.boolean1);
Assert.assertEquals(expected.double1, actual.double1);
Assert.assertEquals(expected.enum1, Enum1Values.GREEN);
Assert.assertEquals(expected.string1, actual.string1);
Assert.assertEquals((long) actual.int1, (long) (i + 2048));
Assert.assertEquals(expected.list1.size(), actual.list1.size());
Assert.assertEquals(expected.map1.size(), actual.map1.size());
Assert.assertEquals(expected.list1, actual.list1);
Assert.assertEquals(expected.map1, actual.map1);
Assert.assertEquals(expected.record, actual.record);
Assert.assertArrayEquals(expected.bytes1, actual.bytes1);
Assert.assertNotNull(actual.innerSample);
Assert.assertEquals(expected.innerSample.bigint1, actual.innerSample.bigint1);
Assert.assertEquals(expected.innerSample.boolean1, actual.innerSample.boolean1);
Assert.assertEquals(expected.innerSample.double1, actual.innerSample.double1);
Assert.assertEquals(expected.innerSample.list1, actual.innerSample.list1);
Assert.assertEquals(expected.innerSample.map1, actual.innerSample.map1);
Record2 expectedRecord2 = expected.container1.getRecord2list().get(0);
Record2 actualRecord2 = actual.container1.getRecord2list().get(0);
Assert.assertEquals(expectedRecord2.bigint2, actualRecord2.bigint2);
Assert.assertEquals(expectedRecord2.enum2, actualRecord2.enum2);
Assert.assertEquals(expectedRecord2.map2, actualRecord2.map2);
}
}
}