Skip to content

Commit 6ae220c

Browse files
authored
build: fix DPS TCK tests, pin version to 1.0.0 (#5783)
1 parent d90959b commit 6ae220c

8 files changed

Lines changed: 140 additions & 15 deletions

File tree

data-protocols/data-plane-signaling/data-plane-signaling-core/src/main/java/org/eclipse/edc/signaling/domain/DataFlowStartedNotificationMessage.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,19 @@ public final class DataFlowStartedNotificationMessage {
2121
@JsonInclude(JsonInclude.Include.NON_NULL)
2222
private DspDataAddress dataAddress;
2323

24+
private String messageId;
25+
2426
private DataFlowStartedNotificationMessage() {
2527
}
2628

2729
public DspDataAddress getDataAddress() {
2830
return dataAddress;
2931
}
3032

33+
public String getMessageId() {
34+
return messageId;
35+
}
36+
3137
public static class Builder {
3238

3339
private final DataFlowStartedNotificationMessage instance = new DataFlowStartedNotificationMessage();
@@ -44,6 +50,11 @@ public DataFlowStartedNotificationMessage build() {
4450
return instance;
4551
}
4652

53+
public Builder messageId(String messageId) {
54+
instance.messageId = messageId;
55+
return this;
56+
}
57+
4758
public Builder dataAddress(DspDataAddress dataAddress) {
4859
instance.dataAddress = dataAddress;
4960
return this;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/*
2+
* Copyright (c) 2026 Think-it GmbH
3+
*
4+
* This program and the accompanying materials are made available under the
5+
* terms of the Apache License, Version 2.0 which is available at
6+
* https://www.apache.org/licenses/LICENSE-2.0
7+
*
8+
* SPDX-License-Identifier: Apache-2.0
9+
*
10+
* Contributors:
11+
* Think-it GmbH - initial API and implementation
12+
*
13+
*/
14+
15+
package org.eclipse.edc.signaling.domain;
16+
17+
public class DataFlowSuspendMessage {
18+
19+
private String messageId;
20+
private String reason;
21+
22+
public String getMessageId() {
23+
return messageId;
24+
}
25+
26+
public String getReason() {
27+
return reason;
28+
}
29+
30+
public static class Builder {
31+
32+
private final DataFlowSuspendMessage instance = new DataFlowSuspendMessage();
33+
34+
public static Builder newInstance() {
35+
return new Builder();
36+
}
37+
38+
private Builder() {
39+
40+
}
41+
42+
public DataFlowSuspendMessage build() {
43+
return instance;
44+
}
45+
46+
public Builder messageId(String messageId) {
47+
instance.messageId = messageId;
48+
return this;
49+
}
50+
51+
public Builder reason(String reason) {
52+
instance.reason = reason;
53+
return this;
54+
}
55+
}
56+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
/*
2+
* Copyright (c) 2026 Think-it GmbH
3+
*
4+
* This program and the accompanying materials are made available under the
5+
* terms of the Apache License, Version 2.0 which is available at
6+
* https://www.apache.org/licenses/LICENSE-2.0
7+
*
8+
* SPDX-License-Identifier: Apache-2.0
9+
*
10+
* Contributors:
11+
* Think-it GmbH - initial API and implementation
12+
*
13+
*/
14+
15+
package org.eclipse.edc.signaling.domain;
16+
17+
public class DataFlowTerminateMessage {
18+
private String messageId;
19+
20+
public String getMessageId() {
21+
return messageId;
22+
}
23+
24+
public static class Builder {
25+
26+
private final DataFlowTerminateMessage instance = new DataFlowTerminateMessage();
27+
28+
public static Builder newInstance() {
29+
return new Builder();
30+
}
31+
32+
private Builder() {
33+
34+
}
35+
36+
public DataFlowTerminateMessage build() {
37+
return instance;
38+
}
39+
40+
public Builder messageId(String messageId) {
41+
instance.messageId = messageId;
42+
return this;
43+
}
44+
}
45+
}

data-protocols/data-plane-signaling/data-plane-signaling-core/src/main/java/org/eclipse/edc/signaling/logic/DataPlaneSignalingFlowController.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,13 @@
2727
import org.eclipse.edc.signaling.domain.DataFlowResumeMessage;
2828
import org.eclipse.edc.signaling.domain.DataFlowStartMessage;
2929
import org.eclipse.edc.signaling.domain.DataFlowStartedNotificationMessage;
30+
import org.eclipse.edc.signaling.domain.DataFlowSuspendMessage;
31+
import org.eclipse.edc.signaling.domain.DataFlowTerminateMessage;
3032
import org.eclipse.edc.signaling.domain.DspDataAddress;
3133
import org.eclipse.edc.signaling.port.ClientFactory;
3234
import org.eclipse.edc.spi.response.StatusResult;
3335
import org.eclipse.edc.spi.result.Result;
3436
import org.eclipse.edc.spi.result.ServiceResult;
35-
import org.eclipse.edc.spi.types.domain.transfer.DataFlowSuspendMessage;
3637
import org.eclipse.edc.transform.spi.TypeTransformerRegistry;
3738
import org.jetbrains.annotations.NotNull;
3839

@@ -161,6 +162,7 @@ public StatusResult<Void> suspend(TransferProcess transferProcess) {
161162
}
162163

163164
var message = DataFlowSuspendMessage.Builder.newInstance()
165+
.messageId(UUID.randomUUID().toString())
164166
.reason("suspend")
165167
.build();
166168

@@ -212,7 +214,10 @@ public StatusResult<Void> terminate(TransferProcess transferProcess) {
212214
return selectorClient.findById(transferProcess.getDataPlaneId())
213215
.flatMap(this::toStatusResult)
214216
.map(clientFactory::createClient)
215-
.compose(client -> client.terminate(transferProcess.getId()));
217+
.compose(client -> {
218+
var message = DataFlowTerminateMessage.Builder.newInstance().messageId(UUID.randomUUID().toString()).build();
219+
return client.terminate(transferProcess.getId(), message);
220+
});
216221
}
217222

218223
@Override
@@ -226,7 +231,8 @@ public StatusResult<Void> started(TransferProcess transferProcess) {
226231
.flatMap(this::toStatusResult)
227232
.map(clientFactory::createClient)
228233
.compose(client -> {
229-
var builder = DataFlowStartedNotificationMessage.Builder.newInstance();
234+
var builder = DataFlowStartedNotificationMessage.Builder.newInstance()
235+
.messageId(UUID.randomUUID().toString());
230236
var dataAddress = transferProcess.getContentDataAddress();
231237
if (dataAddress != null) {
232238
var dspDataAddressTransformation = typeTransformerRegistry.transform(dataAddress, DspDataAddress.class);

data-protocols/data-plane-signaling/data-plane-signaling-core/src/main/java/org/eclipse/edc/signaling/port/DataPlaneSignalingClient.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,11 @@
2828
import org.eclipse.edc.signaling.domain.DataFlowStartMessage;
2929
import org.eclipse.edc.signaling.domain.DataFlowStartedNotificationMessage;
3030
import org.eclipse.edc.signaling.domain.DataFlowStatusMessage;
31+
import org.eclipse.edc.signaling.domain.DataFlowSuspendMessage;
32+
import org.eclipse.edc.signaling.domain.DataFlowTerminateMessage;
3133
import org.eclipse.edc.signaling.spi.authorization.SignalingAuthorizationRegistry;
3234
import org.eclipse.edc.spi.response.StatusResult;
3335
import org.eclipse.edc.spi.result.Result;
34-
import org.eclipse.edc.spi.types.domain.transfer.DataFlowSuspendMessage;
3536

3637
import java.io.IOException;
3738
import java.util.function.Function;
@@ -77,8 +78,8 @@ public StatusResult<DataFlowStatusMessage> resume(String flowId, DataFlowResumeM
7778
return send(flowId + "/resume", message, this::dataFlowStatusMessage);
7879
}
7980

80-
public StatusResult<Void> terminate(String flowId) {
81-
return send(flowId + "/terminate", emptyMap(), this::discardResponseBody);
81+
public StatusResult<Void> terminate(String flowId, DataFlowTerminateMessage message) {
82+
return send(flowId + "/terminate", message, this::discardResponseBody);
8283
}
8384

8485
public StatusResult<Void> started(String flowId, DataFlowStartedNotificationMessage message) {

data-protocols/data-plane-signaling/data-plane-signaling-core/src/test/java/org/eclipse/edc/signaling/logic/DataPlaneSignalingFlowControllerTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import org.eclipse.edc.signaling.domain.DataFlowResumeMessage;
2727
import org.eclipse.edc.signaling.domain.DataFlowStartMessage;
2828
import org.eclipse.edc.signaling.domain.DataFlowStatusMessage;
29+
import org.eclipse.edc.signaling.domain.DataFlowSuspendMessage;
2930
import org.eclipse.edc.signaling.domain.DspDataAddress;
3031
import org.eclipse.edc.signaling.port.ClientFactory;
3132
import org.eclipse.edc.signaling.port.DataPlaneSignalingClient;
@@ -35,7 +36,6 @@
3536
import org.eclipse.edc.spi.result.ServiceResult;
3637
import org.eclipse.edc.spi.result.StoreResult;
3738
import org.eclipse.edc.spi.types.domain.DataAddress;
38-
import org.eclipse.edc.spi.types.domain.transfer.DataFlowSuspendMessage;
3939
import org.eclipse.edc.transform.spi.TypeTransformerRegistry;
4040
import org.jetbrains.annotations.NotNull;
4141
import org.jspecify.annotations.NonNull;
@@ -196,14 +196,14 @@ void shouldCallTerminateOnTheRightDataPlane() {
196196
.contentDataAddress(testDataAddress())
197197
.dataPlaneId("dataPlaneId")
198198
.build();
199-
when(dataPlaneClient.terminate(any())).thenReturn(StatusResult.success());
199+
when(dataPlaneClient.terminate(any(), any())).thenReturn(StatusResult.success());
200200
when(clientFactory.createClient(any())).thenReturn(dataPlaneClient);
201201
when(selectorService.findById(any())).thenReturn(ServiceResult.success(dataPlaneInstance));
202202

203203
var result = flowController.terminate(transferProcess);
204204

205205
assertThat(result).isSucceeded();
206-
verify(dataPlaneClient).terminate("transferProcessId");
206+
verify(dataPlaneClient).terminate(eq("transferProcessId"), argThat(it -> it.getMessageId() != null));
207207
verify(clientFactory).createClient(dataPlaneInstance);
208208
}
209209

@@ -214,7 +214,7 @@ void shouldFail_whenDataPlaneNotFound() {
214214
.contentDataAddress(testDataAddress())
215215
.dataPlaneId("invalid")
216216
.build();
217-
when(dataPlaneClient.terminate(any())).thenReturn(StatusResult.success());
217+
when(dataPlaneClient.terminate(any(), any())).thenReturn(StatusResult.success());
218218
when(clientFactory.createClient(any())).thenReturn(dataPlaneClient);
219219
when(selectorService.findById(any())).thenReturn(ServiceResult.notFound("not found"));
220220

data-protocols/data-plane-signaling/data-plane-signaling-core/src/test/java/org/eclipse/edc/signaling/port/DataPlaneSignalingClientTest.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import org.eclipse.edc.connector.dataplane.selector.spi.instance.DataPlaneInstance;
2121
import org.eclipse.edc.json.JacksonTypeManager;
2222
import org.eclipse.edc.signaling.domain.DataFlowPrepareMessage;
23+
import org.eclipse.edc.signaling.domain.DataFlowTerminateMessage;
2324
import org.eclipse.edc.signaling.spi.authorization.Header;
2425
import org.eclipse.edc.signaling.spi.authorization.SignalingAuthorization;
2526
import org.eclipse.edc.signaling.spi.authorization.SignalingAuthorizationRegistry;
@@ -29,6 +30,7 @@
2930
import org.junit.jupiter.api.extension.RegisterExtension;
3031

3132
import java.util.Map;
33+
import java.util.UUID;
3234

3335
import static com.github.tomakehurst.wiremock.client.WireMock.anyUrl;
3436
import static com.github.tomakehurst.wiremock.client.WireMock.containing;
@@ -61,8 +63,9 @@ class SetupAuthorization {
6163
void shouldSendRequestWithoutAuthorizationHeader_whenNoAuthorizationProfiles() {
6264
server.stubFor(post(anyUrl()).willReturn(noContent()));
6365
var client = createClient(dataPlane());
66+
var message = DataFlowTerminateMessage.Builder.newInstance().messageId(UUID.randomUUID().toString()).build();
6467

65-
var result = client.terminate("flow-id");
68+
var result = client.terminate("flow-id", message);
6669

6770
assertThat(result.succeeded()).isTrue();
6871
server.verify(postRequestedFor(urlPathEqualTo("/flow-id/terminate"))
@@ -76,8 +79,9 @@ void shouldAddAuthorizationHeader_whenAuthorizationProfilePresent() {
7679
var authorization = mock(SignalingAuthorization.class);
7780
when(authorizationRegistry.findByType("oauth2")).thenReturn(authorization);
7881
when(authorization.evaluate(profile)).thenReturn(Result.success(new Header("Authorization", "Bearer my-token")));
82+
var message = DataFlowTerminateMessage.Builder.newInstance().messageId(UUID.randomUUID().toString()).build();
7983

80-
var result = createClient(dataPlane(profile)).terminate("flow-id");
84+
var result = createClient(dataPlane(profile)).terminate("flow-id", message);
8185

8286
assertThat(result.succeeded()).isTrue();
8387
server.verify(postRequestedFor(urlPathEqualTo("/flow-id/terminate"))
@@ -88,8 +92,9 @@ void shouldAddAuthorizationHeader_whenAuthorizationProfilePresent() {
8892
void shouldFail_whenAuthorizationTypeNotSupported() {
8993
var profile = new AuthorizationProfile("unknown-type", Map.of());
9094
when(authorizationRegistry.findByType("unknown-type")).thenReturn(null);
95+
var message = DataFlowTerminateMessage.Builder.newInstance().messageId(UUID.randomUUID().toString()).build();
9196

92-
var result = createClient(dataPlane(profile)).terminate("flow-id");
97+
var result = createClient(dataPlane(profile)).terminate("flow-id", message);
9398

9499
assertThat(result.failed()).isTrue();
95100
assertThat(result.getFailureMessages()).anyMatch(msg -> msg.contains("unknown-type"));
@@ -102,8 +107,9 @@ void shouldFail_whenAuthorizationEvaluateFails() {
102107
var authorization = mock(SignalingAuthorization.class);
103108
when(authorizationRegistry.findByType("oauth2")).thenReturn(authorization);
104109
when(authorization.evaluate(profile)).thenReturn(Result.failure("token endpoint unreachable"));
110+
var message = DataFlowTerminateMessage.Builder.newInstance().messageId(UUID.randomUUID().toString()).build();
105111

106-
var result = createClient(dataPlane(profile)).terminate("flow-id");
112+
var result = createClient(dataPlane(profile)).terminate("flow-id", message);
107113

108114
assertThat(result.failed()).isTrue();
109115
assertThat(result.getFailureMessages()).anyMatch(msg -> msg.contains("token endpoint unreachable"));

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ testcontainers = "2.0.5"
4141
tink = "1.21.0"
4242
dcp-tck = "1.0.0-SNAPSHOT"
4343
dsp-tck = "1.0.0-SNAPSHOT"
44-
dps-tck = "1.0.0-SNAPSHOT"
44+
dps-tck = "1.0.0"
4545
junit = "6.0.3"
4646
wiremock = "3.13.2"
4747
cel = "0.11.1"

0 commit comments

Comments
 (0)