Also added some awaits to improve staiblity of timing sensitive tests.
Change-Id: I92593c26e1d0068d26b5cfffa1afb61cdfd6bb1e
Issue-ID: NONRTRIC-116
Signed-off-by: elinuxhenrik <henrik.b.andersson@est.tech>
.flatMap(
response -> sendDmaapResponse(response.getBody(), dmaapRequestMessage, response.getStatusCode()));
} catch (Exception e) {
- logger.warn("Received unparsable message from DMAAP: {}", msg);
- return Mono.error(e); // Cannot make any response
+ String errorMsg = "Received unparsable message from DMAAP: \"" + msg + "\", reason: " + e.getMessage();
+ return Mono.error(new ServiceException(errorMsg)); // Cannot make any response
}
}
url = "/policies";
String rsp = restClient().get(url).block();
- assertThat(rsp.contains(policyInstanceId)).isTrue();
+ assertThat(rsp.contains(policyInstanceId)).as("Response contains policy instance ID.").isTrue();
url = "/policy?id=" + policyInstanceId;
rsp = restClient().get(url).block();
String rsp = restClient().get("/policies").block();
List<PolicyInfo> info = parseList(rsp, PolicyInfo.class);
- assertThat(info).size().isEqualTo(1);
+ assertThat(info.size()).isEqualTo(1);
PolicyInfo policyInfo = info.get(0);
- assertThat(policyInfo.id.equals("id1")).isTrue();
- assertThat(policyInfo.type.equals("")).isTrue();
+ assertThat(policyInfo.id).isEqualTo("id1");
+ assertThat(policyInfo.type).isEqualTo("");
}
@Test
@Test
void testPutAndGetService() throws Exception {
// PUT
- putService("name", 0, HttpStatus.CREATED);
- putService("name", 0, HttpStatus.OK);
+ String serviceName = "name";
+ putService(serviceName, 0, HttpStatus.CREATED);
+ putService(serviceName, 0, HttpStatus.OK);
// GET one service
String url = "/services?name=name";
assertThat(info.size()).isEqualTo(1);
ServiceStatus status = info.iterator().next();
assertThat(status.keepAliveIntervalSeconds).isEqualTo(0);
- assertThat(status.serviceName).isEqualTo("name");
+ assertThat(status.serviceName).isEqualTo(serviceName);
// GET (all)
url = "/services";
rsp = restClient().get(url).block();
- assertThat(rsp.contains("name")).isTrue();
+ assertThat(rsp.contains(serviceName)).as("Response contains service name").isTrue();
logger.info(rsp);
// Keep alive
restClient().delete(url).block();
assertThat(services.size()).isEqualTo(0);
- // Keep alive, no registerred service
+ // Keep alive, no registered service
testErrorCode(restClient().put("/services/keepalive?name=name", ""), HttpStatus.NOT_FOUND);
// PUT servive with bad payload
testErrorCode(restClient().put("/service", "crap"), HttpStatus.BAD_REQUEST);
testErrorCode(restClient().put("/service", "{}"), HttpStatus.BAD_REQUEST);
- testErrorCode(restClient().put("/service", createServiceJson("name", -123)), HttpStatus.BAD_REQUEST);
- testErrorCode(restClient().put("/service", createServiceJson("name", 0, "missing.portandprotocol.com")),
+ testErrorCode(restClient().put("/service", createServiceJson(serviceName, -123)), HttpStatus.BAD_REQUEST);
+ testErrorCode(restClient().put("/service", createServiceJson(serviceName, 0, "missing.portandprotocol.com")),
HttpStatus.BAD_REQUEST);
- // GET non existing servive
+ // GET non existing service
testErrorCode(restClient().get("/services?name=XXX"), HttpStatus.NOT_FOUND);
}
String url = "/policy_status?id=id";
String rsp = restClient().get(url).block();
- assertThat(rsp.equals("OK")).isTrue();
+ assertThat(rsp).isEqualTo("OK");
// GET non existing policy status
url = "/policy_status?id=XXX";
private Policy addPolicy(String id, String typeName, String service, String ric) throws ServiceException {
addRic(ric);
- Policy p = ImmutablePolicy.builder() //
+ Policy policy = ImmutablePolicy.builder() //
.id(id) //
.json(jsonString()) //
.ownerServiceName(service) //
.lastModified("lastModified") //
.isTransient(false) //
.build();
- policies.put(p);
- return p;
+ policies.put(policy);
+ return policy;
}
private Policy addPolicy(String id, String typeName, String service) throws ServiceException {
addPolicyType("type2", "ric");
for (int i = 0; i < 10; ++i) {
- Thread t =
+ Thread thread =
new Thread(new ConcurrencyTestRunnable(baseUrl(), supervision, a1ClientFactory, rics, policyTypes),
"TestThread_" + i);
- t.start();
- threads.add(t);
+ thread.start();
+ threads.add(thread);
}
for (Thread t : threads) {
t.join();
.verify();
}
- private boolean checkWebClientError(Throwable t, HttpStatus expStatus, String responseContains) {
- assertTrue(t instanceof WebClientResponseException);
- WebClientResponseException e = (WebClientResponseException) t;
- assertThat(e.getStatusCode()).isEqualTo(expStatus);
- assertThat(e.getResponseBodyAsString()).contains(responseContains);
+ private boolean checkWebClientError(Throwable throwable, HttpStatus expStatus, String responseContains) {
+ assertTrue(throwable instanceof WebClientResponseException);
+ WebClientResponseException responseException = (WebClientResponseException) throwable;
+ assertThat(responseException.getStatusCode()).isEqualTo(expStatus);
+ assertThat(responseException.getResponseBodyAsString()).contains(responseContains);
return true;
}
List<T> result = new ArrayList<>();
JsonArray jsonArr = JsonParser.parseString(jsonString).getAsJsonArray();
for (JsonElement jsonElement : jsonArr) {
- T o = gson.fromJson(jsonElement.toString(), clazz);
- result.add(o);
+ T json = gson.fromJson(jsonElement.toString(), clazz);
+ result.add(json);
}
return result;
}
// 'proceed(Object[])' is never called
verify(proceedingJoinPoint, never()).proceed(null);
- assertThat(logAppender.list.toString().contains("Execution time of")).isTrue();
+ assertThat(logAppender.list.get(0).getFormattedMessage()).startsWith("Execution time of");
}
@Test
sampleAspect.entryLog(proceedingJoinPoint);
- assertThat(logAppender.list.toString().contains("Entering method: " + signature)).isTrue();
+ assertThat(logAppender.list.get(0).getFormattedMessage()).isEqualTo("Entering method: " + signature);
}
@Test
sampleAspect.exitLog(proceedingJoinPoint);
- assertThat(logAppender.list.toString().contains("Exiting method: " + signature)).isTrue();
+ assertThat(logAppender.list.get(0).getFormattedMessage()).isEqualTo("Exiting method: " + signature);
}
}
List<String> policyTypeIds = clientUnderTest.getPolicyTypeIdentities().block();
- assertEquals(1, policyTypeIds.size(), "");
- assertEquals(POLICY_TYPE_1_ID, policyTypeIds.get(0), "");
+ assertEquals(1, policyTypeIds.size());
+ assertEquals(POLICY_TYPE_1_ID, policyTypeIds.get(0));
String expUrl = RIC_1_URL + "/a1-p/policytypes";
ImmutableAdapterRequest expectedParams = ImmutableAdapterRequest.builder() //
void getTypeSchema_STD() {
String policyType = clientUnderTest.getPolicyTypeSchema("").block();
- assertEquals("{}", policyType, "");
+ assertEquals("{}", policyType);
}
@Test
String inputString = "[1, \"1\" ]";
List<String> result = SdncJsonHelper.parseJsonArrayOfString(inputString).collectList().block();
- assertEquals(2, result.size(), "");
- assertEquals("1", result.get(0), "");
- assertEquals("1", result.get(1), "");
+ assertEquals(2, result.size());
+ assertEquals("1", result.get(0));
+ assertEquals("1", result.get(1));
}
@Test
List<String> returned = clientUnderTest.getPolicyIdentities().block();
- assertEquals(2, returned.size(), "");
+ assertEquals(2, returned.size());
ImmutableAdapterRequest expectedParams = ImmutableAdapterRequest.builder() //
.nearRtRicUrl(policiesUrl()) //
List<String> returned = clientUnderTest.getPolicyIdentities().block();
- assertEquals(2, returned.size(), "");
+ assertEquals(2, returned.size());
ImmutableAdapterRequest expectedParams = ImmutableAdapterRequest.builder() //
.nearRtRicUrl(RIC_1_URL + "/a1-p/policytypes/type1/policies") //
.putPolicy(A1ClientHelper.createPolicy(RIC_1_URL, POLICY_1_ID, POLICY_JSON_VALID, POLICY_TYPE_1_ID))
.block();
- assertEquals("OK", returned, "");
+ assertEquals("OK", returned);
final String expUrl = policiesUrl() + "/" + POLICY_1_ID;
AdapterRequest expectedInputParams = ImmutableAdapterRequest.builder() //
.nearRtRicUrl(expUrl) //
.deletePolicy(A1ClientHelper.createPolicy(RIC_1_URL, POLICY_1_ID, POLICY_JSON_VALID, POLICY_TYPE_1_ID))
.block();
- assertEquals("OK", returned, "");
+ assertEquals("OK", returned);
final String expUrl = policiesUrl() + "/" + POLICY_1_ID;
AdapterRequest expectedInputParams = ImmutableAdapterRequest.builder() //
.nearRtRicUrl(expUrl) //
messageConsumerUnderTest.start().join();
- assertThat(logAppender.list.toString()
- .contains("Cannot fetch because of Error respons " + responseCode + " " + responseMessage + " from DMaaP."))
- .isTrue();
+ assertThat(logAppender.list.get(0).getFormattedMessage()).isEqualTo(
+ "Cannot fetch because of Error respons " + responseCode + " " + responseMessage + " from DMaaP.");
verify(messageConsumerUnderTest).sleep(DmaapMessageConsumer.TIME_BETWEEN_DMAAP_RETRIES);
}
package org.oransc.policyagent.dmaap;
+import static ch.qos.logback.classic.Level.WARN;
import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
-import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.read.ListAppender;
@Test
void unparseableMessage_thenWarning() {
- final ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(DmaapMessageHandler.class);
+ final ListAppender<ILoggingEvent> logAppender =
+ LoggingUtils.getLogListAppender(DmaapMessageHandler.class, WARN);
- testedObject.handleDmaapMsg("bad message");
+ String msg = "bad message";
+ testedObject.handleDmaapMsg(msg);
- assertThat(logAppender.list.get(0).getLevel()).isEqualTo(Level.WARN);
- assertThat(logAppender.list.toString().contains("handleDmaapMsg failure ")).isTrue();
+ assertThat(logAppender.list.get(0).getFormattedMessage()).startsWith(
+ "handleDmaapMsg failure org.oransc.policyagent.exceptions.ServiceException: Received unparsable "
+ + "message from DMAAP: \"" + msg + "\", reason: ");
}
@Test
ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
verify(dmaapClient).send(captor.capture());
String actualMessage = captor.getValue();
- assertThat(actualMessage.contains(HttpStatus.BAD_REQUEST.toString())).isTrue();
+ assertThat(actualMessage.contains(HttpStatus.BAD_REQUEST.toString()))
+ .as("Message \"%s\" sent to DMaaP contains %s", actualMessage, HttpStatus.BAD_REQUEST) //
+ .isTrue();
verify(dmaapClient).sendBatchWithResponse();
verifyNoMoreInteractions(dmaapClient);
verify(dmaapClient).send(captor.capture());
String actualMessage = captor.getValue();
assertThat(actualMessage
- .contains(HttpStatus.BAD_REQUEST + "\",\"message\":\"Not implemented operation: " + badOperation)).isTrue();
+ .contains(HttpStatus.BAD_REQUEST + "\",\"message\":\"Not implemented operation: " + badOperation)) //
+ .as("Message \"%s\" sent to DMaaP contains %s", actualMessage, HttpStatus.BAD_REQUEST) //
+ .isTrue();
verify(dmaapClient).sendBatchWithResponse();
verifyNoMoreInteractions(dmaapClient);
String message = dmaapInputMessage(Operation.PUT).toString();
message = message.replace(",\"payload\":{\"name\":\"name\",\"schema\":\"schema\"}", "");
- final ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(DmaapMessageHandler.class);
+ final ListAppender<ILoggingEvent> logAppender =
+ LoggingUtils.getLogListAppender(DmaapMessageHandler.class, WARN);
testedObject.handleDmaapMsg(message);
- assertThat(logAppender.list.get(0).getLevel()).isEqualTo(Level.WARN);
- assertThat(logAppender.list.toString().contains("Expected payload in message from DMAAP: ")).isTrue();
+ assertThat(logAppender.list.get(0).getFormattedMessage())
+ .startsWith("Expected payload in message from DMAAP: ");
}
}
package org.oransc.policyagent.tasks;
+import static ch.qos.logback.classic.Level.WARN;
import static org.assertj.core.api.Assertions.assertThat;
-import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.spi.ILoggingEvent;
import ch.qos.logback.core.read.ListAppender;
.appName(HOSTNAME_VALUE) //
.build();
- final ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(EnvironmentProcessor.class);
+ final ListAppender<ILoggingEvent> logAppender =
+ LoggingUtils.getLogListAppender(EnvironmentProcessor.class, WARN);
StepVerifier.create(EnvironmentProcessor.readEnvironmentVariables(systemEnvironment))
.expectNext(expectedEnvProperties).expectComplete();
- assertThat(logAppender.list.get(0).getLevel()).isEqualTo(Level.WARN);
- assertThat(logAppender.list.toString()
- .contains("$CONSUL_PORT variable will be set to default port " + defaultConsulPort)).isTrue();
+ assertThat(logAppender.list.get(0).getFormattedMessage())
+ .isEqualTo("$CONSUL_PORT variable will be set to default port " + defaultConsulPort);
}
@Test
import static ch.qos.logback.classic.Level.ERROR;
import static ch.qos.logback.classic.Level.WARN;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.awaitility.Awaitility.await;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
refreshTaskUnderTest.start();
- assertThat(logAppender.list.toString().contains("Configuration refresh terminated")).isTrue();
+ assertThat(logAppender.list.get(0).getFormattedMessage()).isEqualTo("Configuration refresh terminated");
}
@Test
void startWithStubbedRefreshReturnError_thenErrorAndTerminationLogged() {
refreshTaskUnderTest = this.createTestObject(CONFIG_FILE_DOES_NOT_EXIST, null, null, false);
- doReturn(Flux.error(new Exception("Error"))).when(refreshTaskUnderTest).createRefreshTask();
+ String errorMessage = "Error";
+ doReturn(Flux.error(new Exception(errorMessage))).when(refreshTaskUnderTest).createRefreshTask();
final ListAppender<ILoggingEvent> logAppender = LoggingUtils.getLogListAppender(RefreshConfigTask.class, ERROR);
refreshTaskUnderTest.start();
ILoggingEvent event = logAppender.list.get(0);
- assertThat(event.getLevel()).isEqualTo(ERROR);
- assertThat(event.toString().contains("Configuration refresh terminated due to exception")).isTrue();
+ assertThat(event.getFormattedMessage())
+ .isEqualTo("Configuration refresh terminated due to exception java.lang.Exception: " + errorMessage);
}
@Test
refreshTaskUnderTest.start();
refreshTaskUnderTest.stop();
- assertThat(refreshTaskUnderTest.getRefreshTask().isDisposed()).isTrue();
+ assertThat(refreshTaskUnderTest.getRefreshTask().isDisposed()).as("Refresh task is disposed").isTrue();
}
@Test
verify(refreshTaskUnderTest).loadConfigurationFromFile();
assertThat(appConfig.getRicConfigs().size()).isEqualTo(0);
- assertThat(logAppender.list.toString().contains("Local configuration file not loaded: fileName, ")).isTrue();
+ await().until(() -> logAppender.list.size() > 0);
+ assertThat(logAppender.list.get(0).getFormattedMessage())
+ .startsWith("Local configuration file not loaded: fileName, ");
}
@Test
.thenCancel() //
.verify();
- assertThat(
- logAppender.list.toString().contains("Could not refresh application configuration. java.io.IOException"))
- .isTrue();
+ await().until(() -> logAppender.list.size() > 0);
+ assertThat(logAppender.list.get(0).getFormattedMessage())
+ .isEqualTo("Could not refresh application configuration. java.io.IOException");
}
@Test
.thenCancel() //
.verify();
- assertThat(logAppender.list.toString()
- .contains("Could not parse configuration org.oransc.policyagent.exceptions.ServiceException: ")).isTrue();
+ await().until(() -> logAppender.list.size() > 0);
+ assertThat(logAppender.list.get(0).getFormattedMessage())
+ .startsWith("Could not parse configuration org.oransc.policyagent.exceptions.ServiceException: ");
}
private RicConfig getRicConfig(String name) {
ILoggingEvent loggingEvent = logAppender.list.get(0);
assertThat(loggingEvent.getLevel()).isEqualTo(WARN);
- verifyCorrectLogMessage(0, logAppender, "Service notification failed for service: " + SERVICE_1_NAME);
+ verifyCorrectLogMessage(0, logAppender,
+ "Service notification failed for service: " + SERVICE_1_NAME + ". Cause: " + originalErrorMessage);
}
private void setUpCreationOfA1Client() {
private void verifyCorrectLogMessage(int messageIndex, ListAppender<ILoggingEvent> logAppender,
String expectedMessage) {
ILoggingEvent loggingEvent = logAppender.list.get(messageIndex);
- assertThat(loggingEvent.toString().contains(expectedMessage)).isTrue();
+ assertThat(loggingEvent.getFormattedMessage()).isEqualTo(expectedMessage);
}
}
assertThat(loggingEvent.getLevel()).isEqualTo(WARN);
String expectedLogMessage =
"Could not delete policy: " + POLICY_ID + " from ric: " + RIC_NAME + ". Cause: " + originalErrorMessage;
- assertThat(loggingEvent.toString().contains(expectedLogMessage)).isTrue();
+ assertThat(loggingEvent.getFormattedMessage()).isEqualTo(expectedLogMessage);
}
@Test