Skip to content

Commit 5b03f1b

Browse files
committed
- corrected package of SamplingMessageServerIT
- added some more integration tests - fixed incorrect message validity calculation
1 parent eec87c7 commit 5b03f1b

File tree

3 files changed

+160
-16
lines changed

3 files changed

+160
-16
lines changed

sampling-message-server/src/it/java/de/dhbw/ravensburg/verteiltesysteme/server/samplingmessageserver/SamplingMessageServerIT.java renamed to sampling-message-server/src/it/java/de/dhbw/ravensburg/verteiltesysteme/server/SamplingMessageServerIT.java

Lines changed: 156 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
package de.dhbw.ravensburg.verteiltesysteme.server.samplingmessageserver;
1+
package de.dhbw.ravensburg.verteiltesysteme.server;
22

33
import de.dhbw.ravensburg.verteiltesysteme.de.dhbw.ravensburg.verteiltesysteme.rpc.SamplingMessageGrpc;
44
import de.dhbw.ravensburg.verteiltesysteme.de.dhbw.ravensburg.verteiltesysteme.rpc.SamplingMessageGrpcService;
5-
import de.dhbw.ravensburg.verteiltesysteme.server.ServiceEndpoint;
65
import de.dhbw.ravensburg.verteiltesysteme.server.service.ServiceConfig;
76
import io.grpc.ManagedChannel;
87
import io.grpc.ManagedChannelBuilder;
@@ -12,12 +11,17 @@
1211
import org.testng.annotations.BeforeMethod;
1312
import org.testng.annotations.Test;
1413

14+
import java.util.Collections;
15+
1516
@Slf4j
1617
public class SamplingMessageServerIT {
1718

18-
private final Integer testingPort = 8888;
19+
final Integer testingPort = 8888;
1920
ServiceEndpoint serviceEndpoint;
20-
ServiceConfig serviceConfig = new ServiceConfig(ServiceConfig.DEFAULT_MAXIMUM_SAMPLING_MESSAGE_NAME_SIZE, ServiceConfig.DEFAULT_MAXIMUM_SAMPLING_MESSAGE_CONTENT_SIZE, ServiceConfig.DEFAULT_MAXIMUM_SAMPLING_MESSAGE_COUNT, testingPort);
21+
final Integer maxSamplingMessageNameLength = 20;
22+
final Integer maxSamplingMessageContentLength = 20;
23+
final Integer maxSamplingMessageCount = 20;
24+
ServiceConfig serviceConfig = new ServiceConfig(maxSamplingMessageNameLength, maxSamplingMessageContentLength, maxSamplingMessageCount, testingPort);
2125
SamplingMessageGrpc.SamplingMessageBlockingStub samplingMessageBlockingStub;
2226

2327
private static SamplingMessageGrpcService.CreateSamplingMessageRequest createSamplingMessageRequest(String name, long duration) {
@@ -81,6 +85,9 @@ public void writeNewMessageWithMaxValueLifetime() {
8185
Assert.assertEquals(readSamplingMessageResponse.getMessageContent(), msgContent);
8286
}*/
8387

88+
/*
89+
Start new server instance for each test method
90+
*/
8491
@BeforeMethod
8592
public void beforeMethod() {
8693
this.serviceEndpoint = new ServiceEndpoint(serviceConfig);
@@ -91,6 +98,9 @@ public void beforeMethod() {
9198
samplingMessageBlockingStub = SamplingMessageGrpc.newBlockingStub(managedChannel);
9299
}
93100

101+
/*
102+
Kill server after test method
103+
*/
94104
@AfterMethod
95105
public void afterMethod() {
96106
this.serviceEndpoint.shutdown();
@@ -117,13 +127,6 @@ public void deleteExistingMessage() {
117127
Assert.assertEquals(deleteSamplingMessageResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.SUCCESS);
118128
}
119129

120-
@Test
121-
public void deleteNonExistingMessage() {
122-
SamplingMessageGrpcService.DeleteSamplingMessageRequest deleteSamplingMessageRequest = deleteSamplingMessageRequest("TEST01");
123-
SamplingMessageGrpcService.DeleteSamplingMessageResponse deleteSamplingMessageResponse = this.samplingMessageBlockingStub.deleteSamplingMessage(deleteSamplingMessageRequest);
124-
Assert.assertEquals(deleteSamplingMessageResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.NOT_FOUND);
125-
}
126-
127130
@Test
128131
public void writeNewMessage() {
129132
final String msgName = "Test01";
@@ -218,4 +221,146 @@ public void getNewMessageStatus() {
218221
}
219222

220223

224+
@Test
225+
public void getStatusOfNonExistingMessage() {
226+
final String msgName = "iDontExist";
227+
SamplingMessageGrpcService.GetSamplingMessageStatusRequest getSamplingMessageStatusRequest = getSamplingMessageStatusRequest(msgName);
228+
SamplingMessageGrpcService.GetSamplingMessageStatusResponse getSamplingMessageStatusResponse = this.samplingMessageBlockingStub.getSamplingMessageStatus(getSamplingMessageStatusRequest);
229+
Assert.assertEquals(getSamplingMessageStatusResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.NOT_FOUND);
230+
Assert.assertFalse(getSamplingMessageStatusResponse.getMessageIsEmpty());
231+
Assert.assertFalse(getSamplingMessageStatusResponse.getMessageIsValid());
232+
}
233+
234+
@Test
235+
public void readNonExistingMessage() {
236+
final String msgName = "iDontExist";
237+
SamplingMessageGrpcService.ReadSamplingMessageRequest readSamplingMessageRequest = readSamplingMessageRequest(msgName);
238+
SamplingMessageGrpcService.ReadSamplingMessageResponse readSamplingMessageResponse = this.samplingMessageBlockingStub.readSamplingMessage(readSamplingMessageRequest);
239+
Assert.assertEquals(readSamplingMessageResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.NOT_FOUND);
240+
Assert.assertFalse(readSamplingMessageResponse.getMessageIsValid());
241+
}
242+
243+
@Test
244+
public void clearNonExistingMessage() {
245+
final String msgName = "iDontExist";
246+
SamplingMessageGrpcService.ClearSamplingMessageRequest clearSamplingMessageRequest = clearSamplingMessageRequest(msgName);
247+
SamplingMessageGrpcService.ClearSamplingMessageResponse clearSamplingMessageResponse = this.samplingMessageBlockingStub.clearSamplingMessage(clearSamplingMessageRequest);
248+
Assert.assertEquals(clearSamplingMessageResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.NOT_FOUND);
249+
}
250+
251+
@Test
252+
public void writeNonExistingMessage() {
253+
final String msgName = "iDontExist";
254+
final String msgContent = "random";
255+
SamplingMessageGrpcService.WriteSamplingMessageRequest writeSamplingMessageRequest = writeSamplingMessageRequest(msgName, msgContent);
256+
SamplingMessageGrpcService.WriteSamplingMessageResponse writeSamplingMessageResponse = this.samplingMessageBlockingStub.writeSamplingMessage(writeSamplingMessageRequest);
257+
Assert.assertEquals(writeSamplingMessageResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.NOT_FOUND);
258+
}
259+
260+
@Test
261+
public void deleteNonExistingMessage() {
262+
SamplingMessageGrpcService.DeleteSamplingMessageRequest deleteSamplingMessageRequest = deleteSamplingMessageRequest("iDontExist");
263+
SamplingMessageGrpcService.DeleteSamplingMessageResponse deleteSamplingMessageResponse = this.samplingMessageBlockingStub.deleteSamplingMessage(deleteSamplingMessageRequest);
264+
Assert.assertEquals(deleteSamplingMessageResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.NOT_FOUND);
265+
}
266+
267+
268+
@Test(timeOut = 20000)
269+
public void messageTimeoutTest() throws InterruptedException {
270+
final String msgName = "Test01";
271+
final String msgContent = "content01";
272+
final long lifetime = 2;
273+
SamplingMessageGrpcService.CreateSamplingMessageRequest createSamplingMessageRequest = createSamplingMessageRequest(msgName, lifetime);
274+
SamplingMessageGrpcService.CreateSamplingMessageResponse createSamplingMessageResponse = this.samplingMessageBlockingStub.createSamplingMessage(createSamplingMessageRequest);
275+
Assert.assertEquals(createSamplingMessageResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.SUCCESS);
276+
277+
Thread.sleep(lifetime * 1000 + 1);
278+
279+
SamplingMessageGrpcService.GetSamplingMessageStatusRequest getSamplingMessageStatusRequest = getSamplingMessageStatusRequest(msgName);
280+
SamplingMessageGrpcService.GetSamplingMessageStatusResponse getSamplingMessageStatusResponse = this.samplingMessageBlockingStub.getSamplingMessageStatus(getSamplingMessageStatusRequest);
281+
Assert.assertFalse(getSamplingMessageStatusResponse.getMessageIsValid());
282+
}
283+
284+
@Test
285+
public void exceedMaxMessageNameLengthAtCreation() {
286+
final String tooLongMsgName = String.join("", Collections.nCopies(maxSamplingMessageNameLength + 1, "x"));
287+
SamplingMessageGrpcService.CreateSamplingMessageRequest createSamplingMessageRequest = createSamplingMessageRequest(tooLongMsgName, 120);
288+
SamplingMessageGrpcService.CreateSamplingMessageResponse createSamplingMessageResponse = this.samplingMessageBlockingStub.createSamplingMessage(createSamplingMessageRequest);
289+
Assert.assertEquals(createSamplingMessageResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.ILLEGAL_PARAMETER);
290+
}
291+
292+
@Test
293+
public void exceedMaxMessageNameLengthAtGetingStatus() {
294+
final String tooLongMsgName = String.join("", Collections.nCopies(maxSamplingMessageNameLength + 1, "x"));
295+
SamplingMessageGrpcService.GetSamplingMessageStatusRequest getSamplingMessageStatusRequest = getSamplingMessageStatusRequest(tooLongMsgName);
296+
SamplingMessageGrpcService.GetSamplingMessageStatusResponse getSamplingMessageStatusResponse = this.samplingMessageBlockingStub.getSamplingMessageStatus(getSamplingMessageStatusRequest);
297+
Assert.assertEquals(getSamplingMessageStatusResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.ILLEGAL_PARAMETER);
298+
Assert.assertFalse(getSamplingMessageStatusResponse.getMessageIsEmpty());
299+
Assert.assertFalse(getSamplingMessageStatusResponse.getMessageIsValid());
300+
}
301+
302+
@Test
303+
public void exceedMaxMessageNameLengthAtRading() {
304+
final String tooLongMsgName = String.join("", Collections.nCopies(maxSamplingMessageNameLength + 1, "x"));
305+
SamplingMessageGrpcService.ReadSamplingMessageRequest readSamplingMessageRequest = readSamplingMessageRequest(tooLongMsgName);
306+
SamplingMessageGrpcService.ReadSamplingMessageResponse readSamplingMessageResponse = this.samplingMessageBlockingStub.readSamplingMessage(readSamplingMessageRequest);
307+
Assert.assertEquals(readSamplingMessageResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.ILLEGAL_PARAMETER);
308+
Assert.assertFalse(readSamplingMessageResponse.getMessageIsValid());
309+
}
310+
311+
@Test
312+
public void exceedMaxMessageNameLengthAtClearing() {
313+
final String tooLongMsgName = String.join("", Collections.nCopies(maxSamplingMessageNameLength + 1, "x"));
314+
SamplingMessageGrpcService.ClearSamplingMessageRequest clearSamplingMessageRequest = clearSamplingMessageRequest(tooLongMsgName);
315+
SamplingMessageGrpcService.ClearSamplingMessageResponse clearSamplingMessageResponse = this.samplingMessageBlockingStub.clearSamplingMessage(clearSamplingMessageRequest);
316+
Assert.assertEquals(clearSamplingMessageResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.ILLEGAL_PARAMETER);
317+
}
318+
319+
@Test
320+
public void exceedMaxMessageNameLengthAtWriting() {
321+
final String tooLongMsgName = String.join("", Collections.nCopies(maxSamplingMessageNameLength + 1, "x"));
322+
final String msgContent = "random";
323+
SamplingMessageGrpcService.WriteSamplingMessageRequest writeSamplingMessageRequest = writeSamplingMessageRequest(tooLongMsgName, msgContent);
324+
SamplingMessageGrpcService.WriteSamplingMessageResponse writeSamplingMessageResponse = this.samplingMessageBlockingStub.writeSamplingMessage(writeSamplingMessageRequest);
325+
Assert.assertEquals(writeSamplingMessageResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.ILLEGAL_PARAMETER);
326+
}
327+
328+
@Test
329+
public void exceedMaxMessageNameLengthAtDeleting() {
330+
final String tooLongMsgName = String.join("", Collections.nCopies(maxSamplingMessageNameLength + 1, "x"));
331+
SamplingMessageGrpcService.DeleteSamplingMessageRequest deleteSamplingMessageRequest = deleteSamplingMessageRequest(tooLongMsgName);
332+
SamplingMessageGrpcService.DeleteSamplingMessageResponse deleteSamplingMessageResponse = this.samplingMessageBlockingStub.deleteSamplingMessage(deleteSamplingMessageRequest);
333+
Assert.assertEquals(deleteSamplingMessageResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.ILLEGAL_PARAMETER);
334+
}
335+
336+
337+
@Test
338+
public void exceedMaxMessageContentLength() {
339+
final String msgName = String.join("", Collections.nCopies(maxSamplingMessageNameLength, "x"));
340+
final String tooLongMsgContent = String.join("", Collections.nCopies(maxSamplingMessageContentLength + 1, "x"));
341+
final long lifetime = 2;
342+
SamplingMessageGrpcService.CreateSamplingMessageRequest createSamplingMessageRequest = createSamplingMessageRequest(msgName, 120);
343+
SamplingMessageGrpcService.CreateSamplingMessageResponse createSamplingMessageResponse = this.samplingMessageBlockingStub.createSamplingMessage(createSamplingMessageRequest);
344+
Assert.assertEquals(createSamplingMessageResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.SUCCESS);
345+
346+
SamplingMessageGrpcService.WriteSamplingMessageRequest writeSamplingMessageRequest = writeSamplingMessageRequest(msgName, tooLongMsgContent);
347+
SamplingMessageGrpcService.WriteSamplingMessageResponse writeSamplingMessageResponse = this.samplingMessageBlockingStub.writeSamplingMessage(writeSamplingMessageRequest);
348+
Assert.assertEquals(writeSamplingMessageResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.ILLEGAL_PARAMETER);
349+
350+
}
351+
352+
@Test
353+
public void exceedMaxMessageCount() {
354+
for (int i = 0; i < maxSamplingMessageCount; ++i) {
355+
SamplingMessageGrpcService.CreateSamplingMessageRequest createSamplingMessageRequest = createSamplingMessageRequest(String.valueOf(i), 120);
356+
SamplingMessageGrpcService.CreateSamplingMessageResponse createSamplingMessageResponse = this.samplingMessageBlockingStub.createSamplingMessage(createSamplingMessageRequest);
357+
Assert.assertEquals(createSamplingMessageResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.SUCCESS);
358+
}
359+
final String msgName = "killer";
360+
SamplingMessageGrpcService.CreateSamplingMessageRequest createSamplingMessageRequest = createSamplingMessageRequest(msgName, 120);
361+
SamplingMessageGrpcService.CreateSamplingMessageResponse createSamplingMessageResponse = this.samplingMessageBlockingStub.createSamplingMessage(createSamplingMessageRequest);
362+
Assert.assertEquals(createSamplingMessageResponse.getStatusCode(), SamplingMessageGrpcService.StatusCode.MESSAGE_COUNT_EXCEEDED);
363+
}
364+
365+
221366
}

sampling-message-server/src/main/java/de/dhbw/ravensburg/verteiltesysteme/server/service/InputValidator.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package de.dhbw.ravensburg.verteiltesysteme.server.service;
22

3-
import lombok.Data;
43
import lombok.NonNull;
54

65
import java.time.Duration;
@@ -11,19 +10,18 @@
1110
* Utilizes ServiceConfig
1211
* Provides validation patterns for incoming transit data
1312
*/
14-
@Data
1513
public class InputValidator {
1614
private ServiceConfig serviceConfig;
1715

1816
public InputValidator(final ServiceConfig serviceConfig) {
1917
this.serviceConfig = serviceConfig;
2018
}
2119

22-
public boolean isInvalidMessageName(@NonNull final String messageName) {
20+
public boolean isInvalidMessageName(final String messageName) {
2321
return (messageName == null || messageName.length() > this.serviceConfig.getMaximumSamplingMessageNameSize()); // messageName.isEmpty());
2422
}
2523

26-
public boolean isInvalidMessageContent(@NonNull final String messageContent) {
24+
public boolean isInvalidMessageContent(final String messageContent) {
2725
return (messageContent == null || messageContent.length() > this.serviceConfig.getMaximumSamplingMessageContentSize()); // messageContent.isEmpty();
2826
}
2927

@@ -33,7 +31,7 @@ public boolean isMessageCountExceeded(final Long totalMessageCount) {
3331

3432
public boolean isValid(@NonNull final Instant creationTime, @NonNull final Duration lifetime) {
3533
//TODO; prevent overflow
36-
return Instant.now().minus(lifetime).isBefore(creationTime.plus(lifetime));
34+
return Instant.now().minus(lifetime).isBefore(creationTime);
3735
}
3836

3937
public int getCurrentSamplingMaximumMessageCount() {

sampling-message-server/src/main/java/de/dhbw/ravensburg/verteiltesysteme/server/service/SamplingMessageServiceImpl.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ public ServiceResult writeSamplingMessage(@NonNull final String messageName, @No
7878
}
7979

8080
final ServiceResult serviceResult;
81+
8182
if (databaseAccessObject.writeSamplingMessageContentAndTimestamp(messageName, messageContent, Instant.now())) {
8283
serviceResult = new ServiceResult(ServiceResult.Status.SUCCESS);
8384
} else {

0 commit comments

Comments
 (0)