Skip to content

Commit a350ffc

Browse files
authored
[ISSUE #4349][Unit Test] eventmesh-common header unit test. (#4348)
* [ISSUE #4339][Unit Test] eventmesh-common header unit test. * [ISSUE #4339][Unit Test] eventmesh-common header unit test. * [ISSUE #4339][Unit Test] eventmesh-common body unit test. * [ISSUE #4339][Unit Test] eventmesh-common ReflectUtils and RandomStringUtils unit test. * [ISSUE #4339]comment. * [ISSUE #4339]expectedException.
1 parent 8418745 commit a350ffc

10 files changed

Lines changed: 290 additions & 9 deletions

File tree

‎eventmesh-common/src/main/java/org/apache/eventmesh/common/config/ConfigService.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
package org.apache.eventmesh.common.config;
1919

20-
import static org.apache.eventmesh.common.utils.ReflectUtils.lookUpField;
20+
import static org.apache.eventmesh.common.utils.ReflectUtils.lookUpFieldByParentClass;
2121

2222
import org.apache.commons.lang3.StringUtils;
2323

@@ -160,7 +160,7 @@ private void populateConfig(Object object, Class<?> clazz, Config config)
160160
try {
161161
field = clazz.getDeclaredField(configInfo.getField());
162162
} catch (NoSuchFieldException e) {
163-
field = lookUpField(clazz, configInfo.getField());
163+
field = lookUpFieldByParentClass(clazz, configInfo.getField());
164164
if (field == null) {
165165
throw e;
166166
}

‎eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/HttpConvertsUtils.java‎

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.util.EnumSet;
3030
import java.util.HashMap;
3131
import java.util.Map;
32+
import java.util.Objects;
3233

3334
import lombok.extern.slf4j.Slf4j;
3435

@@ -171,7 +172,10 @@ private void setFiledValue(Header header, Map<String, Object> headerParam, Proto
171172
protocolKeyField.setAccessible(true);
172173
switch (headerFieldName) {
173174
case ProtocolKey.VERSION:
174-
headerField.set(header, ProtocolVersion.get(MapUtils.getString(headerParam, ProtocolKey.VERSION)));
175+
ProtocolVersion protocolVersion = ProtocolVersion.get(MapUtils.getString(headerParam, ProtocolKey.VERSION));
176+
if (Objects.nonNull(protocolVersion)) {
177+
headerField.set(header, protocolVersion);
178+
}
175179
break;
176180
case ProtocolKey.LANGUAGE:
177181
String language = StringUtils.isBlank(MapUtils.getString(headerParam, ProtocolKey.LANGUAGE))
@@ -183,7 +187,9 @@ private void setFiledValue(Header header, Map<String, Object> headerParam, Proto
183187
// Use the attribute name to compare with the key value to achieve one-to-one correspondence and ignore case.
184188
if (StringUtils.equalsIgnoreCase(headerFieldName, protocolKeyValue)) {
185189
Object value = getValue(headerParam, protocolKeyValue);
186-
headerField.set(header, value);
190+
if (Objects.nonNull(value)) {
191+
headerField.set(header, value);
192+
}
187193
}
188194
break;
189195
}

‎eventmesh-common/src/main/java/org/apache/eventmesh/common/utils/ReflectUtils.java‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@
2323
public class ReflectUtils {
2424

2525
/**
26-
* Look up fields inherited from the parent class.
26+
* Look up not private fields inherited from the parent class.
2727
*
2828
* @param clazz
2929
* @param fieldName
3030
* @return
3131
*/
32-
public static Field lookUpField(Class<?> clazz, String fieldName) {
32+
public static Field lookUpFieldByParentClass(Class<?> clazz, String fieldName) {
3333
Class<?> superClass = clazz.getSuperclass();
3434
while (superClass != null) {
3535
Field[] superFields = superClass.getDeclaredFields();
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
package org.apache.eventmesh.common.protocol.http.body;
19+
20+
import org.apache.eventmesh.common.protocol.http.body.client.HeartbeatRequestBody;
21+
import org.apache.eventmesh.common.protocol.http.body.client.RegRequestBody;
22+
import org.apache.eventmesh.common.protocol.http.body.client.SubscribeRequestBody;
23+
import org.apache.eventmesh.common.protocol.http.body.client.UnRegRequestBody;
24+
import org.apache.eventmesh.common.protocol.http.body.client.UnSubscribeRequestBody;
25+
import org.apache.eventmesh.common.protocol.http.body.message.PushMessageRequestBody;
26+
import org.apache.eventmesh.common.protocol.http.body.message.ReplyMessageRequestBody;
27+
import org.apache.eventmesh.common.protocol.http.body.message.SendMessageBatchRequestBody;
28+
import org.apache.eventmesh.common.protocol.http.body.message.SendMessageBatchV2RequestBody;
29+
import org.apache.eventmesh.common.protocol.http.body.message.SendMessageRequestBody;
30+
import org.apache.eventmesh.common.protocol.http.common.RequestCode;
31+
32+
import java.util.HashMap;
33+
import java.util.Map;
34+
35+
import org.junit.Assert;
36+
import org.junit.Before;
37+
import org.junit.Test;
38+
39+
public class BodyTest {
40+
41+
private Map<String, Object> originalMap;
42+
43+
@Before
44+
public void before() {
45+
originalMap = new HashMap<>();
46+
}
47+
48+
@Test
49+
public void testBuildBody() throws Exception {
50+
Assert.assertThrows(Exception.class, () -> Body.buildBody("-1", originalMap));
51+
Body sendMessageBatchRequestBody = Body.buildBody(String.valueOf(RequestCode.MSG_BATCH_SEND.getRequestCode()), originalMap);
52+
Assert.assertNotNull(sendMessageBatchRequestBody);
53+
Assert.assertEquals(sendMessageBatchRequestBody.getClass(), SendMessageBatchRequestBody.class);
54+
Body sendMessageBatchV2RequestBody = Body.buildBody(String.valueOf(RequestCode.MSG_BATCH_SEND_V2.getRequestCode()), originalMap);
55+
Assert.assertNotNull(sendMessageBatchV2RequestBody);
56+
Assert.assertEquals(sendMessageBatchV2RequestBody.getClass(), SendMessageBatchV2RequestBody.class);
57+
Body sendMessageRequestBodySync = Body.buildBody(String.valueOf(RequestCode.MSG_SEND_SYNC.getRequestCode()), originalMap);
58+
Assert.assertNotNull(sendMessageRequestBodySync);
59+
Assert.assertEquals(sendMessageRequestBodySync.getClass(), SendMessageRequestBody.class);
60+
Body sendMessageRequestBodyAsync = Body.buildBody(String.valueOf(RequestCode.MSG_SEND_ASYNC.getRequestCode()), originalMap);
61+
Assert.assertNotNull(sendMessageRequestBodyAsync);
62+
Assert.assertEquals(sendMessageRequestBodyAsync.getClass(), SendMessageRequestBody.class);
63+
Body pushMessageRequestBodySync = Body.buildBody(String.valueOf(RequestCode.HTTP_PUSH_CLIENT_SYNC.getRequestCode()), originalMap);
64+
Assert.assertNotNull(pushMessageRequestBodySync);
65+
Assert.assertEquals(pushMessageRequestBodySync.getClass(), PushMessageRequestBody.class);
66+
Body pushMessageRequestBodyAsync = Body.buildBody(String.valueOf(RequestCode.HTTP_PUSH_CLIENT_ASYNC.getRequestCode()), originalMap);
67+
Assert.assertNotNull(pushMessageRequestBodyAsync);
68+
Assert.assertEquals(pushMessageRequestBodyAsync.getClass(), PushMessageRequestBody.class);
69+
Body regRequestBody = Body.buildBody(String.valueOf(RequestCode.REGISTER.getRequestCode()), originalMap);
70+
Assert.assertNotNull(regRequestBody);
71+
Assert.assertEquals(regRequestBody.getClass(), RegRequestBody.class);
72+
Body unRegRequestBody = Body.buildBody(String.valueOf(RequestCode.UNREGISTER.getRequestCode()), originalMap);
73+
Assert.assertNotNull(unRegRequestBody);
74+
Assert.assertEquals(unRegRequestBody.getClass(), UnRegRequestBody.class);
75+
Body subscribeRequestBody = Body.buildBody(String.valueOf(RequestCode.SUBSCRIBE.getRequestCode()), originalMap);
76+
Assert.assertNotNull(subscribeRequestBody);
77+
Assert.assertEquals(subscribeRequestBody.getClass(), SubscribeRequestBody.class);
78+
Body unSubscribeRequestBody = Body.buildBody(String.valueOf(RequestCode.UNSUBSCRIBE.getRequestCode()), originalMap);
79+
Assert.assertNotNull(unSubscribeRequestBody);
80+
Assert.assertEquals(unSubscribeRequestBody.getClass(), UnSubscribeRequestBody.class);
81+
Body heartbeatRequestBody = Body.buildBody(String.valueOf(RequestCode.HEARTBEAT.getRequestCode()), originalMap);
82+
Assert.assertNotNull(heartbeatRequestBody);
83+
Assert.assertEquals(heartbeatRequestBody.getClass(), HeartbeatRequestBody.class);
84+
Body replyMessageRequestBody = Body.buildBody(String.valueOf(RequestCode.REPLY_MESSAGE.getRequestCode()), originalMap);
85+
Assert.assertNotNull(replyMessageRequestBody);
86+
Assert.assertEquals(replyMessageRequestBody.getClass(), ReplyMessageRequestBody.class);
87+
Body baseRequestBody = Body.buildBody(String.valueOf(RequestCode.ADMIN_SHUTDOWN.getRequestCode()), originalMap);
88+
Assert.assertNotNull(baseRequestBody);
89+
Assert.assertEquals(baseRequestBody.getClass(), BaseRequestBody.class);
90+
}
91+
}
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
package org.apache.eventmesh.common.protocol.http.header;
19+
20+
import org.apache.eventmesh.common.protocol.http.common.RequestCode;
21+
import org.apache.eventmesh.common.protocol.http.header.client.HeartbeatRequestHeader;
22+
import org.apache.eventmesh.common.protocol.http.header.client.RegRequestHeader;
23+
import org.apache.eventmesh.common.protocol.http.header.client.SubscribeRequestHeader;
24+
import org.apache.eventmesh.common.protocol.http.header.client.UnRegRequestHeader;
25+
import org.apache.eventmesh.common.protocol.http.header.client.UnSubscribeRequestHeader;
26+
import org.apache.eventmesh.common.protocol.http.header.message.PushMessageRequestHeader;
27+
import org.apache.eventmesh.common.protocol.http.header.message.ReplyMessageRequestHeader;
28+
import org.apache.eventmesh.common.protocol.http.header.message.SendMessageBatchRequestHeader;
29+
import org.apache.eventmesh.common.protocol.http.header.message.SendMessageBatchV2RequestHeader;
30+
import org.apache.eventmesh.common.protocol.http.header.message.SendMessageRequestHeader;
31+
32+
import java.util.HashMap;
33+
import java.util.Map;
34+
35+
import org.junit.Assert;
36+
import org.junit.Before;
37+
import org.junit.Test;
38+
39+
public class HeaderTest {
40+
41+
private Map<String, Object> originalMap;
42+
43+
@Before
44+
public void before() {
45+
originalMap = new HashMap<>();
46+
}
47+
48+
@Test
49+
public void testBuildHeader() throws Exception {
50+
Assert.assertThrows(Exception.class, () -> Header.buildHeader("-1", originalMap));
51+
Header messageBatchRequestHeader = Header.buildHeader(String.valueOf(RequestCode.MSG_BATCH_SEND.getRequestCode()), originalMap);
52+
Assert.assertNotNull(messageBatchRequestHeader);
53+
Assert.assertEquals(messageBatchRequestHeader.getClass(), SendMessageBatchRequestHeader.class);
54+
Header sendMessageBatchV2RequestHeader = Header.buildHeader(String.valueOf(RequestCode.MSG_BATCH_SEND_V2.getRequestCode()), originalMap);
55+
Assert.assertNotNull(sendMessageBatchV2RequestHeader);
56+
Assert.assertEquals(sendMessageBatchV2RequestHeader.getClass(), SendMessageBatchV2RequestHeader.class);
57+
Header sendMessageRequestHeaderSync = Header.buildHeader(String.valueOf(RequestCode.MSG_SEND_SYNC.getRequestCode()), originalMap);
58+
Assert.assertNotNull(sendMessageRequestHeaderSync);
59+
Assert.assertEquals(sendMessageRequestHeaderSync.getClass(), SendMessageRequestHeader.class);
60+
Header sendMessageRequestHeaderAsync = Header.buildHeader(String.valueOf(RequestCode.MSG_SEND_ASYNC.getRequestCode()), originalMap);
61+
Assert.assertNotNull(sendMessageRequestHeaderAsync);
62+
Assert.assertEquals(sendMessageRequestHeaderAsync.getClass(), SendMessageRequestHeader.class);
63+
Header pushMessageRequestHeaderSync = Header.buildHeader(String.valueOf(RequestCode.HTTP_PUSH_CLIENT_SYNC.getRequestCode()), originalMap);
64+
Assert.assertNotNull(pushMessageRequestHeaderSync);
65+
Assert.assertEquals(pushMessageRequestHeaderSync.getClass(), PushMessageRequestHeader.class);
66+
Header pushMessageRequestHeaderAsync = Header.buildHeader(String.valueOf(RequestCode.HTTP_PUSH_CLIENT_ASYNC.getRequestCode()), originalMap);
67+
Assert.assertNotNull(pushMessageRequestHeaderAsync);
68+
Assert.assertEquals(pushMessageRequestHeaderAsync.getClass(), PushMessageRequestHeader.class);
69+
Header regRequestHeader = Header.buildHeader(String.valueOf(RequestCode.REGISTER.getRequestCode()), originalMap);
70+
Assert.assertNotNull(regRequestHeader);
71+
Assert.assertEquals(regRequestHeader.getClass(), RegRequestHeader.class);
72+
Header unRegRequestHeader = Header.buildHeader(String.valueOf(RequestCode.UNREGISTER.getRequestCode()), originalMap);
73+
Assert.assertNotNull(unRegRequestHeader);
74+
Assert.assertEquals(unRegRequestHeader.getClass(), UnRegRequestHeader.class);
75+
Header subscribeRequestHeader = Header.buildHeader(String.valueOf(RequestCode.SUBSCRIBE.getRequestCode()), originalMap);
76+
Assert.assertNotNull(subscribeRequestHeader);
77+
Assert.assertEquals(subscribeRequestHeader.getClass(), SubscribeRequestHeader.class);
78+
Header unSubscribeRequestHeader = Header.buildHeader(String.valueOf(RequestCode.UNSUBSCRIBE.getRequestCode()), originalMap);
79+
Assert.assertNotNull(unSubscribeRequestHeader);
80+
Assert.assertEquals(unSubscribeRequestHeader.getClass(), UnSubscribeRequestHeader.class);
81+
Header heartbeatRequestHeader = Header.buildHeader(String.valueOf(RequestCode.HEARTBEAT.getRequestCode()), originalMap);
82+
Assert.assertNotNull(heartbeatRequestHeader);
83+
Assert.assertEquals(heartbeatRequestHeader.getClass(), HeartbeatRequestHeader.class);
84+
Header replyMessageRequestHeader = Header.buildHeader(String.valueOf(RequestCode.REPLY_MESSAGE.getRequestCode()), originalMap);
85+
Assert.assertNotNull(replyMessageRequestHeader);
86+
Assert.assertEquals(replyMessageRequestHeader.getClass(), ReplyMessageRequestHeader.class);
87+
Header baseRequestHeader = Header.buildHeader(String.valueOf(RequestCode.ADMIN_SHUTDOWN.getRequestCode()), originalMap);
88+
Assert.assertNotNull(baseRequestHeader);
89+
Assert.assertEquals(baseRequestHeader.getClass(), BaseRequestHeader.class);
90+
}
91+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
package org.apache.eventmesh.common.utils;
19+
20+
import org.apache.commons.lang3.math.NumberUtils;
21+
22+
import org.junit.Assert;
23+
import org.junit.Test;
24+
25+
public class RandomStringUtilsTest {
26+
27+
@Test
28+
public void testGenerateNum() {
29+
String result = RandomStringUtils.generateNum(2);
30+
Assert.assertTrue(NumberUtils.isDigits(result));
31+
Assert.assertEquals(2, result.length());
32+
}
33+
34+
@Test
35+
public void testGenerateUUID() {
36+
String result = RandomStringUtils.generateUUID();
37+
Assert.assertTrue(result.matches("^\\w{8}-\\w{4}-\\w{4}-\\w{4}-\\w{12}$"));
38+
}
39+
40+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one or more
3+
* contributor license agreements. See the NOTICE file distributed with
4+
* this work for additional information regarding copyright ownership.
5+
* The ASF licenses this file to You under the Apache License, Version 2.0
6+
* (the "License"); you may not use this file except in compliance with
7+
* the License. You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
package org.apache.eventmesh.common.utils;
19+
20+
import java.lang.reflect.Field;
21+
22+
import org.junit.Assert;
23+
import org.junit.Test;
24+
25+
public class ReflectUtilsTest {
26+
27+
public static class TestParent {
28+
29+
private String age;
30+
31+
public String tel;
32+
33+
}
34+
35+
public static class TestObj extends TestParent {
36+
37+
private String name;
38+
39+
private String password;
40+
}
41+
42+
@Test
43+
public void testLookUpFieldByParentClass() {
44+
Field fieldName = ReflectUtils.lookUpFieldByParentClass(TestObj.class, "name");
45+
Field fieldAge = ReflectUtils.lookUpFieldByParentClass(TestObj.class, "age");
46+
Field fieldTel = ReflectUtils.lookUpFieldByParentClass(TestObj.class, "tel");
47+
Assert.assertNull(fieldName);
48+
Assert.assertNull(fieldAge);
49+
Assert.assertNotNull(fieldTel);
50+
Assert.assertEquals("tel", fieldTel.getName());
51+
}
52+
53+
}

‎eventmesh-trace-plugin/eventmesh-trace-jaeger/src/test/java/org/apache/eventmesh/trace/jaeger/JaegerTraceServiceTest.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public void testShutdown() throws NoSuchFieldException, IllegalAccessException {
5757
try {
5858
sdkTracerProviderField = JaegerTraceService.class.getDeclaredField("sdkTracerProvider");
5959
} catch (NoSuchFieldException e) {
60-
sdkTracerProviderField = ReflectUtils.lookUpField(JaegerTraceService.class, "sdkTracerProvider");
60+
sdkTracerProviderField = ReflectUtils.lookUpFieldByParentClass(JaegerTraceService.class, "sdkTracerProvider");
6161
if (sdkTracerProviderField == null) {
6262
throw e;
6363
}

‎eventmesh-trace-plugin/eventmesh-trace-pinpoint/src/test/java/org/apache/eventmesh/trace/pinpoint/PinpointTraceServiceTest.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public void testShutdown() throws Exception {
5353
try {
5454
sdkTracerProviderField = PinpointTraceService.class.getDeclaredField("sdkTracerProvider");
5555
} catch (NoSuchFieldException e) {
56-
sdkTracerProviderField = ReflectUtils.lookUpField(PinpointTraceService.class, "sdkTracerProvider");
56+
sdkTracerProviderField = ReflectUtils.lookUpFieldByParentClass(PinpointTraceService.class, "sdkTracerProvider");
5757
if (sdkTracerProviderField == null) {
5858
throw e;
5959
}

‎eventmesh-trace-plugin/eventmesh-trace-zipkin/src/test/java/org/apache/eventmesh/trace/zipkin/ZipkinTraceServiceTest.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ public void testShutdown() throws Exception {
5656
try {
5757
sdkTracerProviderField = ZipkinTraceService.class.getDeclaredField("sdkTracerProvider");
5858
} catch (NoSuchFieldException e) {
59-
sdkTracerProviderField = ReflectUtils.lookUpField(ZipkinTraceService.class, "sdkTracerProvider");
59+
sdkTracerProviderField = ReflectUtils.lookUpFieldByParentClass(ZipkinTraceService.class, "sdkTracerProvider");
6060
if (sdkTracerProviderField == null) {
6161
throw e;
6262
}

0 commit comments

Comments
 (0)