Skip to content

Commit 0f73a4c

Browse files
committed
change chunk sending to send each chunk in dedicated message
1 parent d209a36 commit 0f73a4c

3 files changed

Lines changed: 64 additions & 38 deletions

File tree

agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SendChunkedMessageForSingleChunkTest.java

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -64,27 +64,36 @@ class SendChunkedMessageForSingleChunkTest extends AbstractIntegrationTest {
6464
ByteString.copyFrom(ContentReader.readRawData(ContentReader.Identifier.SMALL_TASK_DATA)));
6565
payloadParameters.setTypeUrl(SystemMessageType.EMPTY.getKey());
6666

67+
// create message tuples for each chunk
6768
List<MessageParameterTuple> tuples =
6869
encodeMessageService.chunkAndBase64EncodeEachChunk(
6970
messageHeaderParameters, payloadParameters, onboardingResponse);
7071

71-
tuples.forEach(
72-
messageParameterTuple ->
73-
Assertions.assertTrue(
74-
Objects.requireNonNull(messageParameterTuple.getPayloadParameters().getValue())
75-
.toStringUtf8()
76-
.length()
77-
<= MAX_CHUNK_SIZE));
78-
79-
List<String> encodedMessages = encodeMessageService.encode(tuples);
80-
8172
SendMessageParameters sendMessageParameters = new SendMessageParameters();
82-
sendMessageParameters.setEncodedMessages(encodedMessages);
8373
sendMessageParameters.setOnboardingResponse(onboardingResponse);
84-
sendMessageService.send(sendMessageParameters);
74+
75+
// encode and send each chunk
76+
tuples.forEach(
77+
messageParameterTuple -> {
78+
Assertions.assertTrue(
79+
Objects.requireNonNull(messageParameterTuple.getPayloadParameters().getValue())
80+
.toStringUtf8()
81+
.length()
82+
<= MAX_CHUNK_SIZE);
83+
String encodedMessage = encodeMessageService.encode(
84+
messageParameterTuple.getMessageHeaderParameters(),
85+
messageParameterTuple.getPayloadParameters());
86+
sendMessageParameters.setEncodedMessages(Collections.singletonList(encodedMessage));
87+
sendMessageService.send(sendMessageParameters);
88+
}
89+
);
8590

8691
waitForTheAgrirouterToProcessMultipleMessages();
8792

93+
// WARNING: receiving part might not be accurate for now, as we changed the sending structure from
94+
// sending all chunks in _one_ agrirouter message (which was incorrect) to sending each chunk in a
95+
// dedicated message
96+
8897
FetchMessageService fetchMessageService = new FetchMessageServiceImpl();
8998
Optional<List<FetchMessageResponse>> fetchMessageResponses =
9099
fetchMessageService.fetch(

agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/messaging/rest/SendChunkedMessageTest.java

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class SendChunkedMessageTest extends AbstractIntegrationTest {
4242
@Test
4343
@Disabled("Issue #197 | Needs investigation, not running any longer.")
4444
void
45-
givenLargeContentMessageWhenSendingTheMessageToTheAhrgrirouterTheSdkShouldHelpToSendTheFileInMultipleChunks()
45+
givenLargeContentMessageWhenSendingTheMessageToTheAgrirouterTheSdkShouldHelpToSendTheFileInMultipleChunks()
4646
throws Throwable {
4747

4848
final EncodeMessageService encodeMessageService = new EncodeMessageServiceImpl();
@@ -64,27 +64,36 @@ class SendChunkedMessageTest extends AbstractIntegrationTest {
6464
ByteString.copyFrom(ContentReader.readRawData(ContentReader.Identifier.BIG_TASK_DATA)));
6565
payloadParameters.setTypeUrl(SystemMessageType.EMPTY.getKey());
6666

67+
// create message tuples for each chunk
6768
var tuples =
6869
encodeMessageService.chunkAndBase64EncodeEachChunk(
6970
messageHeaderParameters, payloadParameters, onboardingResponse);
7071

71-
tuples.forEach(
72-
messageParameterTuple ->
73-
Assertions.assertTrue(
74-
Objects.requireNonNull(messageParameterTuple.getPayloadParameters().getValue())
75-
.toStringUtf8()
76-
.length()
77-
<= MAX_CHUNK_SIZE));
78-
79-
var encodedMessages = encodeMessageService.encode(tuples);
80-
8172
var sendMessageParameters = new SendMessageParameters();
82-
sendMessageParameters.setEncodedMessages(encodedMessages);
8373
sendMessageParameters.setOnboardingResponse(onboardingResponse);
84-
sendMessageService.send(sendMessageParameters);
74+
75+
// encode and send each chunk
76+
tuples.forEach(
77+
messageParameterTuple -> {
78+
Assertions.assertTrue(
79+
Objects.requireNonNull(messageParameterTuple.getPayloadParameters().getValue())
80+
.toStringUtf8()
81+
.length()
82+
<= MAX_CHUNK_SIZE);
83+
String encodedMessage = encodeMessageService.encode(
84+
messageParameterTuple.getMessageHeaderParameters(),
85+
messageParameterTuple.getPayloadParameters());
86+
sendMessageParameters.setEncodedMessages(Collections.singletonList(encodedMessage));
87+
sendMessageService.send(sendMessageParameters);
88+
}
89+
);
8590

8691
waitForTheAgrirouterToProcessMultipleMessages();
8792

93+
// WARNING: receiving part might not be accurate for now, as we changed the sending structure from
94+
// sending all chunks in _one_ agrirouter message (which was incorrect) to sending each chunk in a
95+
// dedicated message
96+
8897
FetchMessageService fetchMessageService = new FetchMessageServiceImpl();
8998
var fetchMessageResponses =
9099
fetchMessageService.fetch(

agrirouter-sdk-java-tests/src/test/java/com/dke/data/agrirouter/test/usecase/SendAndReceiveChunkedMessagesTest.java

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -192,26 +192,34 @@ private void actionsForSender(ByteString messageContent, int expectedNrOfChunks)
192192
encodeMessageService.chunkAndBase64EncodeEachChunk(
193193
messageHeaderParameters, payloadParameters, onboardingResponse);
194194

195-
tuples.forEach(
196-
messageParameterTuple ->
197-
Assertions.assertTrue(
198-
Objects.requireNonNull(messageParameterTuple.getPayloadParameters().getValue())
199-
.toStringUtf8()
200-
.length()
201-
<= MAX_CHUNK_SIZE));
202-
203-
var encodedMessages = encodeMessageService.encode(tuples);
204-
205-
// [3] Send the chunks to the agrirouter.
195+
// [3] Send each chunk to the agrirouter.
206196
var sendMessageParameters = new SendMessageParameters();
207-
sendMessageParameters.setEncodedMessages(encodedMessages);
208197
sendMessageParameters.setOnboardingResponse(onboardingResponse);
209-
sendMessageService.send(sendMessageParameters);
198+
199+
tuples.forEach(
200+
messageParameterTuple -> {
201+
Assertions.assertTrue(
202+
Objects.requireNonNull(messageParameterTuple.getPayloadParameters().getValue())
203+
.toStringUtf8()
204+
.length()
205+
<= MAX_CHUNK_SIZE);
206+
String encodedMessage = encodeMessageService.encode(
207+
messageParameterTuple.getMessageHeaderParameters(),
208+
messageParameterTuple.getPayloadParameters());
209+
sendMessageParameters.setEncodedMessages(Collections.singletonList(encodedMessage));
210+
sendMessageService.send(sendMessageParameters);
211+
}
212+
);
210213

211214
// [4] Wait for the AR to process the chunks.
212215
waitForTheAgrirouterToProcessMultipleMessages();
213216

214217
// [5] Check if the chunks were processed successfully.
218+
219+
// WARNING: receiving part might not be accurate for now, as we changed the sending structure from
220+
// sending all chunks in _one_ agrirouter message (which was incorrect) to sending each chunk in a
221+
// dedicated message
222+
215223
FetchMessageService fetchMessageService = new FetchMessageServiceImpl();
216224
var fetchMessageResponses =
217225
fetchMessageService.fetch(

0 commit comments

Comments
 (0)