Make some test timeouts (await) configurable (#2525)
Signed-off-by: Avgustin Marinov <Avgustin.Marinov@bosch.com>
This commit is contained in:
@@ -93,10 +93,7 @@ abstract class AbstractAmqpServiceIntegrationTest extends AbstractAmqpIntegratio
|
||||
}
|
||||
|
||||
protected <T> T waitUntilIsPresent(final Callable<Optional<T>> callable) {
|
||||
|
||||
createConditionFactory()
|
||||
.until(() -> SecurityContextSwitch.runAsPrivileged(() -> callable.call().isPresent()));
|
||||
|
||||
await().until(() -> SecurityContextSwitch.runAsPrivileged(() -> callable.call().isPresent()));
|
||||
try {
|
||||
return SecurityContextSwitch.runAsPrivileged(() -> callable.call().get());
|
||||
} catch (final Exception e) {
|
||||
@@ -105,8 +102,8 @@ abstract class AbstractAmqpServiceIntegrationTest extends AbstractAmqpIntegratio
|
||||
}
|
||||
|
||||
protected void waitUntilEventMessagesAreDispatchedToTarget(final EventTopic... eventTopics) {
|
||||
createConditionFactory().untilAsserted(() -> assertThat(replyToListener.getLatestEventMessageTopics())
|
||||
.containsExactlyInAnyOrderElementsOf(Arrays.asList(eventTopics)));
|
||||
await().untilAsserted(() ->
|
||||
assertThat(replyToListener.getLatestEventMessageTopics()).containsExactlyInAnyOrderElementsOf(Arrays.asList(eventTopics)));
|
||||
replyToListener.resetLatestEventMessageTopics();
|
||||
}
|
||||
|
||||
@@ -188,8 +185,8 @@ abstract class AbstractAmqpServiceIntegrationTest extends AbstractAmqpIntegratio
|
||||
|
||||
}
|
||||
|
||||
protected void assertDmfDownloadAndUpdateRequest(final DmfDownloadAndUpdateRequest request,
|
||||
final Set<SoftwareModule> softwareModules, final String controllerId) {
|
||||
protected void assertDmfDownloadAndUpdateRequest(
|
||||
final DmfDownloadAndUpdateRequest request, final Set<SoftwareModule> softwareModules, final String controllerId) {
|
||||
assertSoftwareModules(softwareModules, request.getSoftwareModules());
|
||||
final Target updatedTarget = waitUntilIsPresent(() -> targetManagement.getByControllerID(controllerId));
|
||||
assertThat(updatedTarget).isNotNull();
|
||||
@@ -217,8 +214,7 @@ abstract class AbstractAmqpServiceIntegrationTest extends AbstractAmqpIntegratio
|
||||
}
|
||||
|
||||
protected void verifyReplyToListener() {
|
||||
createConditionFactory()
|
||||
.untilAsserted(() -> Mockito.verify(replyToListener, Mockito.atLeast(1)).handleMessage(Mockito.any()));
|
||||
await().untilAsserted(() -> Mockito.verify(replyToListener, Mockito.atLeast(1)).handleMessage(Mockito.any()));
|
||||
}
|
||||
|
||||
protected Long cancelAction(final Long actionId, final String controllerId) {
|
||||
@@ -369,8 +365,7 @@ abstract class AbstractAmqpServiceIntegrationTest extends AbstractAmqpIntegratio
|
||||
|
||||
protected void assertUpdateAttributes(final String controllerId, final Map<String, String> attributes) {
|
||||
waitUntilIsPresent(() -> controllerManagement.getByControllerId(controllerId));
|
||||
|
||||
createConditionFactory().untilAsserted(() -> {
|
||||
await().untilAsserted(() -> {
|
||||
try {
|
||||
final Map<String, String> controllerAttributes = SecurityContextSwitch.runAsPrivileged(
|
||||
() -> targetManagement.getControllerAttributes(controllerId));
|
||||
@@ -416,16 +411,14 @@ abstract class AbstractAmqpServiceIntegrationTest extends AbstractAmqpIntegratio
|
||||
assertConfirmRequest(confirmRequest, dsModules, controllerId);
|
||||
}
|
||||
|
||||
protected void assertConfirmRequest(final DmfConfirmRequest request, final Set<SoftwareModule> softwareModules,
|
||||
final String controllerId) {
|
||||
protected void assertConfirmRequest(final DmfConfirmRequest request, final Set<SoftwareModule> softwareModules, final String controllerId) {
|
||||
assertSoftwareModules(softwareModules, request.getSoftwareModules());
|
||||
final Target updatedTarget = waitUntilIsPresent(() -> targetManagement.getByControllerID(controllerId));
|
||||
assertThat(updatedTarget).isNotNull();
|
||||
assertThat(updatedTarget.getSecurityToken()).isEqualTo(request.getTargetSecurityToken());
|
||||
}
|
||||
|
||||
private void assertAssignmentMessage(final Set<SoftwareModule> dsModules, final String controllerId,
|
||||
final EventTopic topic) {
|
||||
private void assertAssignmentMessage(final Set<SoftwareModule> dsModules, final String controllerId, final EventTopic topic) {
|
||||
final Message replyMessage = assertReplyMessageHeader(topic, controllerId);
|
||||
assertAllTargetsCount(1);
|
||||
|
||||
@@ -435,7 +428,8 @@ abstract class AbstractAmqpServiceIntegrationTest extends AbstractAmqpIntegratio
|
||||
assertDmfDownloadAndUpdateRequest(downloadAndUpdateRequest, dsModules, controllerId);
|
||||
}
|
||||
|
||||
private void registerAndAssertTargetWithExistingTenant(final String controllerId, final String name,
|
||||
private void registerAndAssertTargetWithExistingTenant(
|
||||
final String controllerId, final String name,
|
||||
final int existingTargetsAfterCreation, final TargetUpdateStatus expectedTargetStatus,
|
||||
final String createdBy, final Map<String, String> attributes,
|
||||
final Callable<Optional<Target>> fetchTarget) {
|
||||
@@ -443,8 +437,9 @@ abstract class AbstractAmqpServiceIntegrationTest extends AbstractAmqpIntegratio
|
||||
final Target registeredTarget = waitUntilIsPresent(fetchTarget::call);
|
||||
assertAllTargetsCount(existingTargetsAfterCreation);
|
||||
assertThat(registeredTarget).isNotNull();
|
||||
assertTarget(registeredTarget, name != null ? name : controllerId, expectedTargetStatus, createdBy,
|
||||
attributes != null ? attributes : Collections.emptyMap());
|
||||
assertTarget(
|
||||
registeredTarget, name != null ? name : controllerId, expectedTargetStatus,
|
||||
createdBy, attributes != null ? attributes : Collections.emptyMap());
|
||||
}
|
||||
|
||||
private Optional<Target> findTargetBasedOnNewVersion(final String controllerId, final int version) {
|
||||
@@ -455,7 +450,8 @@ abstract class AbstractAmqpServiceIntegrationTest extends AbstractAmqpIntegratio
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
private void assertTarget(final Target target, final String name, final TargetUpdateStatus updateStatus,
|
||||
private void assertTarget(
|
||||
final Target target, final String name, final TargetUpdateStatus updateStatus,
|
||||
final String createdBy, final Map<String, String> attributes) {
|
||||
assertThat(target.getTenant()).isEqualTo(TENANT_EXIST);
|
||||
assertThat(target.getName()).isEqualTo(name);
|
||||
@@ -463,9 +459,7 @@ abstract class AbstractAmqpServiceIntegrationTest extends AbstractAmqpIntegratio
|
||||
assertThat(target.getDescription()).contains(target.getControllerId());
|
||||
assertThat(target.getCreatedBy()).isEqualTo(createdBy);
|
||||
assertThat(target.getUpdateStatus()).isEqualTo(updateStatus);
|
||||
assertThat(target.getAddress())
|
||||
.isEqualTo(IpUtil.createAmqpUri(getVirtualHost(), DmfTestConfiguration.REPLY_TO_EXCHANGE));
|
||||
assertThat(target.getAddress()).isEqualTo(IpUtil.createAmqpUri(getVirtualHost(), DmfTestConfiguration.REPLY_TO_EXCHANGE));
|
||||
assertThat(targetManagement.getControllerAttributes(target.getControllerId())).isEqualTo(attributes);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -794,7 +794,7 @@ class AmqpMessageDispatcherServiceIntegrationTest extends AbstractAmqpServiceInt
|
||||
}
|
||||
|
||||
private void waitUntil(final Callable<Boolean> callable) {
|
||||
createConditionFactory().until(() -> SecurityContextSwitch.runAsPrivileged(callable));
|
||||
await().until(() -> SecurityContextSwitch.runAsPrivileged(callable));
|
||||
}
|
||||
|
||||
private void assertLatestMultiActionMessageContainsInstallMessages(final String controllerId,
|
||||
|
||||
@@ -1229,26 +1229,22 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr
|
||||
}
|
||||
|
||||
private void assertAction(final Long actionId, final int messages, final Status... expectedActionStates) {
|
||||
createConditionFactory().await().untilAsserted(() -> {
|
||||
await().untilAsserted(() -> {
|
||||
try {
|
||||
SecurityContextSwitch.runAsPrivileged(() -> {
|
||||
final List<ActionStatus> actionStatusList = deploymentManagement
|
||||
.findActionStatusByAction(actionId, PAGE).getContent();
|
||||
final List<ActionStatus> actionStatusList = deploymentManagement.findActionStatusByAction(actionId, PAGE).getContent();
|
||||
|
||||
// Check correlation ID
|
||||
final List<String> messagesFromServer = actionStatusList.stream()
|
||||
.flatMap(actionStatus -> deploymentManagement
|
||||
.findMessagesByActionStatusId(actionStatus.getId(), PAGE).getContent().stream())
|
||||
.filter(Objects::nonNull)
|
||||
.filter(message -> message
|
||||
.startsWith(RepositoryConstants.SERVER_MESSAGE_PREFIX + "DMF message"))
|
||||
.filter(message -> message.startsWith(RepositoryConstants.SERVER_MESSAGE_PREFIX + "DMF message"))
|
||||
.toList();
|
||||
|
||||
assertThat(messagesFromServer).hasSize(messages)
|
||||
.allMatch(message -> message.endsWith(CORRELATION_ID));
|
||||
assertThat(messagesFromServer).hasSize(messages).allMatch(message -> message.endsWith(CORRELATION_ID));
|
||||
|
||||
final List<Status> status = actionStatusList.stream().map(ActionStatus::getStatus)
|
||||
.toList();
|
||||
final List<Status> status = actionStatusList.stream().map(ActionStatus::getStatus).toList();
|
||||
assertThat(status).containsOnly(expectedActionStates);
|
||||
|
||||
return null;
|
||||
@@ -1267,7 +1263,7 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr
|
||||
|
||||
private void assertActionStatusList(final Long actionId, final int statusListCount,
|
||||
final Status... expectedActionStates) {
|
||||
createConditionFactory().await().untilAsserted(() -> {
|
||||
await().untilAsserted(() -> {
|
||||
try {
|
||||
SecurityContextSwitch.runAsPrivileged(() -> {
|
||||
final List<ActionStatus> actionStatusList = deploymentManagement
|
||||
@@ -1302,8 +1298,8 @@ class AmqpMessageHandlerServiceIntegrationTest extends AbstractAmqpServiceIntegr
|
||||
|
||||
private void verifyNumberOfDeadLetterMessages(final int numberOfInvocations) {
|
||||
assertEmptyReceiverQueueCount();
|
||||
createConditionFactory().untilAsserted(() -> Mockito
|
||||
.verify(getDeadletterListener(), Mockito.times(numberOfInvocations)).handleMessage(Mockito.any()));
|
||||
await().untilAsserted(
|
||||
() -> Mockito.verify(getDeadletterListener(), Mockito.times(numberOfInvocations)).handleMessage(Mockito.any()));
|
||||
Mockito.reset(getDeadletterListener());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -40,8 +40,6 @@ import org.springframework.test.context.ContextConfiguration;
|
||||
@SuppressWarnings("java:S6813") // constructor injects are not possible for test classes
|
||||
public abstract class AbstractAmqpIntegrationTest extends AbstractIntegrationTest {
|
||||
|
||||
private static final Duration TIMEOUT = Duration.ofSeconds(5);
|
||||
|
||||
@Autowired
|
||||
private ConnectionFactory connectionFactory;
|
||||
@Autowired
|
||||
@@ -60,8 +58,11 @@ public abstract class AbstractAmqpIntegrationTest extends AbstractIntegrationTes
|
||||
return dmfClient;
|
||||
}
|
||||
|
||||
protected ConditionFactory createConditionFactory() {
|
||||
return Awaitility.await().atMost(TIMEOUT.toMillis(), TimeUnit.MILLISECONDS);
|
||||
private static final Duration AT_LEAST = Duration.ofMillis(Integer.getInteger("hawkbit.it.amqp.await.atLeastMs", 100));
|
||||
private static final Duration POLL_INTERVAL = Duration.ofMillis(Integer.getInteger("hawkbit.it.amqp.await.pollIntervalMs", 200));
|
||||
private static final Duration TIMEOUT = Duration.ofMillis(Integer.getInteger("hawkbit.it.amqp.await.timeoutMs", 5000));
|
||||
protected ConditionFactory await() {
|
||||
return Awaitility.await().atLeast(AT_LEAST).pollInterval(POLL_INTERVAL).atMost(TIMEOUT);
|
||||
}
|
||||
|
||||
protected Message createMessage(final Object payload, final MessageProperties messageProperties) {
|
||||
|
||||
Reference in New Issue
Block a user