Target attributes update can be (re-)triggered by management API (#690)

* extend Management API with attribute `requestAttributes`
* introduce new DMF Event Topic `REQUEST_ATTRIBUTES_UPDATE`
* enhance REST documentation by new functionality
* add tests for:
  * Management API
  * Amqp Message Dispatcher Service
  * Repository (Target Management)

Signed-off-by: Jeroen Jan Laverman (INST/ESY3) <jeroen.laverman@bosch-si.com>
This commit is contained in:
Jeroen Laverman
2018-06-14 12:48:31 +02:00
committed by Dominic Schabel
parent f4340098d9
commit ecfe774e53
18 changed files with 275 additions and 17 deletions

View File

@@ -38,6 +38,7 @@ import org.eclipse.hawkbit.dmf.json.model.DmfDownloadAndUpdateRequest;
import org.eclipse.hawkbit.dmf.json.model.DmfMetadata;
import org.eclipse.hawkbit.repository.SystemManagement;
import org.eclipse.hawkbit.repository.event.remote.TargetAssignDistributionSetEvent;
import org.eclipse.hawkbit.repository.event.remote.TargetAttributesRequestedEvent;
import org.eclipse.hawkbit.repository.event.remote.TargetDeletedEvent;
import org.eclipse.hawkbit.repository.event.remote.entity.CancelTargetAssignmentEvent;
import org.eclipse.hawkbit.repository.jpa.RepositoryApplicationConfiguration;
@@ -213,6 +214,19 @@ public class AmqpMessageDispatcherServiceTest extends AbstractIntegrationTest {
});
}
}
@Test
@Description("Verifies that sending update controller attributes event works.")
public void sendUpdateAttributesRequest() {
final String amqpUri = "amqp://anyhost";
final TargetAttributesRequestedEvent targetAttributesRequestedEvent = new TargetAttributesRequestedEvent(TENANT,
1L, CONTROLLER_ID, amqpUri, Target.class.getName(), serviceMatcher.getServiceId());
amqpMessageDispatcherService.targetTriggerUpdateAttributes(targetAttributesRequestedEvent);
final Message sendMessage = createArgumentCapture(URI.create(amqpUri));
assertUpdateAttributesMessage(sendMessage);
}
@Test
@Description("Verifies that send cancel event works")
@@ -299,7 +313,7 @@ public class AmqpMessageDispatcherServiceTest extends AbstractIntegrationTest {
final DmfDownloadAndUpdateRequest downloadAndUpdateRequest = convertMessage(sendMessage,
DmfDownloadAndUpdateRequest.class);
assertEquals(downloadAndUpdateRequest.getActionId(), action);
assertEquals("The topic of the event shuold contain DOWNLOAD_AND_INSTALL", EventTopic.DOWNLOAD_AND_INSTALL,
assertEquals("The topic of the event should contain DOWNLOAD_AND_INSTALL", EventTopic.DOWNLOAD_AND_INSTALL,
sendMessage.getMessageProperties().getHeaders().get(MessageHeaderKey.TOPIC));
assertEquals("Security token of target", TEST_TOKEN, downloadAndUpdateRequest.getTargetSecurityToken());
@@ -307,6 +321,14 @@ public class AmqpMessageDispatcherServiceTest extends AbstractIntegrationTest {
}
private void assertUpdateAttributesMessage(final Message sendMessage) {
assertEventMessage(sendMessage);
assertEquals("The topic of the event should contain REQUEST_ATTRIBUTES_UPDATE",
EventTopic.REQUEST_ATTRIBUTES_UPDATE,
sendMessage.getMessageProperties().getHeaders().get(MessageHeaderKey.TOPIC));
}
private void assertEventMessage(final Message sendMessage) {
assertNotNull("The message should not be null", sendMessage);