Skip to content

Commit 2f2e81e

Browse files
committed
test: update HttpSinkConnectorTest
1 parent 6732e53 commit 2f2e81e

File tree

3 files changed

+48
-41
lines changed

3 files changed

+48
-41
lines changed

Diff for: eventmesh-connectors/eventmesh-connector-http/build.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ dependencies {
2626

2727
testImplementation "org.apache.httpcomponents:httpclient"
2828
testImplementation 'org.mock-server:mockserver-netty:5.15.0'
29+
testImplementation 'com.squareup.okhttp3:okhttp:4.12.0'
2930
compileOnly 'org.projectlombok:lombok'
3031
annotationProcessor 'org.projectlombok:lombok'
3132
}

Diff for: eventmesh-connectors/eventmesh-connector-http/src/test/java/org/apache/eventmesh/connector/http/source/connector/HttpSinkConnectorTest.java

+46-40
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121

2222
import org.apache.eventmesh.connector.http.sink.HttpSinkConnector;
2323
import org.apache.eventmesh.connector.http.sink.config.HttpSinkConfig;
24+
import org.apache.eventmesh.connector.http.sink.config.HttpWebhookConfig;
2425
import org.apache.eventmesh.openconnect.offsetmgmt.api.data.ConnectRecord;
2526
import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordOffset;
2627
import org.apache.eventmesh.openconnect.offsetmgmt.api.data.RecordPartition;
@@ -34,18 +35,21 @@
3435
import org.junit.jupiter.api.AfterEach;
3536
import org.junit.jupiter.api.BeforeEach;
3637
import org.junit.jupiter.api.Test;
37-
import org.mockserver.client.MockServerClient;
3838
import org.mockserver.integration.ClientAndServer;
3939
import org.mockserver.model.HttpRequest;
4040
import org.mockserver.model.HttpResponse;
4141
import org.mockserver.model.MediaType;
42-
import org.mockserver.verify.VerificationTimes;
43-
44-
import io.vertx.core.http.HttpMethod;
4542

4643
import com.alibaba.fastjson2.JSON;
44+
import com.alibaba.fastjson2.JSONArray;
4745
import com.alibaba.fastjson2.JSONObject;
4846

47+
import okhttp3.HttpUrl;
48+
import okhttp3.OkHttpClient;
49+
import okhttp3.Request;
50+
import okhttp3.Response;
51+
import okhttp3.ResponseBody;
52+
4953
public class HttpSinkConnectorTest {
5054

5155
private HttpSinkConnector sinkConnector;
@@ -68,8 +72,7 @@ void before() throws Exception {
6872
this.severUri = URI.create(sinkConfig.connectorConfig.getUrls()[0]);
6973
// start mockServer
7074
mockServer = ClientAndServer.startClientAndServer(severUri.getPort());
71-
// mockServer response
72-
new MockServerClient(severUri.getHost(), severUri.getPort())
75+
mockServer.reset()
7376
.when(
7477
request()
7578
.withMethod("POST")
@@ -113,46 +116,49 @@ void testPut() throws Exception {
113116
Thread.sleep(5000);
114117

115118
// verify request
116-
new MockServerClient(severUri.getHost(), severUri.getPort())
117-
.verify(
118-
HttpRequest.request()
119-
.withMethod(HttpMethod.POST.name())
120-
.withPath(severUri.getPath()),
121-
VerificationTimes.exactly(times));
122-
123-
/*
124-
**The following code is only required in webhook mode**
119+
HttpRequest[] recordedRequests = mockServer.retrieveRecordedRequests(null);
120+
assert recordedRequests.length == times;
125121

126122
// verify response
127123
HttpWebhookConfig webhookConfig = sinkConfig.connectorConfig.getWebhookConfig();
128-
URI uri = new URIBuilder()
129-
.setScheme("http")
130-
.setHost(severUri.getHost())
131-
.setPort(webhookConfig.getPort())
132-
.setPath(webhookConfig.getExportPath())
133-
.addParameter("pageNum", "1")
134-
.addParameter("pageSize", "10")
135-
.addParameter("type", "poll")
124+
String url = new HttpUrl.Builder()
125+
.scheme("http")
126+
.host(severUri.getHost())
127+
.port(webhookConfig.getPort())
128+
.addPathSegments(webhookConfig.getExportPath())
129+
.addQueryParameter("pageNum", "1")
130+
.addQueryParameter("pageSize", "10")
131+
.addQueryParameter("type", "poll")
132+
.build().toString();
133+
134+
// build request
135+
Request request = new Request.Builder()
136+
.url(url)
137+
.addHeader("Content-Type", "application/json")
136138
.build();
137139

138-
CloseableHttpClient httpClient = HttpClients.createDefault();
139-
HttpGet httpGet = new HttpGet(uri);
140-
httpGet.setHeader("Content-Type", "application/json");
141-
CloseableHttpResponse response = httpClient.execute(httpGet);
142-
String body = EntityUtils.toString(response.getEntity());
143-
assert body != null;
144-
JSONArray pageItems = JSON.parseObject(body).getJSONArray("pageItems");
145-
assert pageItems != null && pageItems.size() == times;
146-
for (int i = 0; i < times; i++) {
147-
JSONObject pageItem = pageItems.getJSONObject(i);
148-
assert pageItem != null;
149-
assert pageItem.getJSONObject("data") != null;
150-
assert pageItem.getJSONObject("metadata") != null;
140+
OkHttpClient client = new OkHttpClient();
141+
try (Response response = client.newCall(request).execute()) {
142+
// check response code
143+
if (!response.isSuccessful()) {
144+
throw new RuntimeException("Unexpected response code: " + response);
145+
}
146+
// check response body
147+
ResponseBody responseBody = response.body();
148+
if (responseBody != null) {
149+
JSONObject jsonObject = JSON.parseObject(responseBody.string());
150+
JSONArray pageItems = jsonObject.getJSONArray("pageItems");
151+
152+
assert pageItems != null && pageItems.size() == times;
153+
154+
for (int i = 0; i < times; i++) {
155+
JSONObject pageItem = pageItems.getJSONObject(i);
156+
assert pageItem != null;
157+
assert pageItem.getJSONObject("data") != null;
158+
assert pageItem.getJSONObject("metadata") != null;
159+
}
160+
}
151161
}
152-
153-
httpClient.close();
154-
155-
*/
156162
}
157163

158164
private ConnectRecord createConnectRecord() {

Diff for: eventmesh-connectors/eventmesh-connector-http/src/test/resources/sink-config.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ connectorConfig:
3939
interval: 1000
4040
retryOnNonSuccess: true
4141
webhookConfig:
42-
activate: false
42+
activate: true
4343
exportPath: /export
4444
port: 8988
4545
serverIdleTimeout: 5000

0 commit comments

Comments
 (0)