From 1ad9b915c413eca25f6e35dfd075766931710462 Mon Sep 17 00:00:00 2001 From: Kai Zimmermann Date: Tue, 7 Feb 2017 09:57:57 +0100 Subject: [PATCH] Fix cancel action status (#429) * Fixed handling of action cancellation status updates. Signed-off-by: kaizimmerm * Fix broken DDI test. Signed-off-by: kaizimmerm * Code readibility. Signed-off-by: kaizimmerm * Reduce access to default. Signed-off-by: kaizimmerm * Added test for finished on action that is in cancelling. Signed-off-by: kaizimmerm * Update MariaDb driver Signed-off-by: kaizimmerm * Wrong branch Signed-off-by: kaizimmerm * Remove duplicate status definition. Signed-off-by: kaizimmerm * Use updated picture in docs. Signed-off-by: kaizimmerm * Leverage existing statics. Signed-off-by: kaizimmerm * Fix picture upload. Signed-off-by: kaizimmerm * Revert change Signed-off-by: kaizimmerm --- .gitattributes | 1 + docs/src/main/resources/Binterfaces.md | 4 +- .../main/resources/img/hawkBit_overview.jpeg | Bin 0 -> 210469 bytes .../main/resources/img/hawkBit_overview.png | Bin 40723 -> 0 bytes .../ddi/rest/resource/DdiRootController.java | 2 +- .../rest/resource/DdiCancelActionTest.java | 9 +- .../amqp/AmqpMessageHandlerService.java | 2 +- .../json/model/action/MgmtActionStatus.java | 34 -- .../mgmt/rest/resource/MgmtTargetMapper.java | 62 +-- .../CancelActionNotAllowedException.java | 9 +- .../hawkbit/repository/model/Action.java | 7 +- .../jpa/JpaControllerManagement.java | 40 +- .../jpa/ControllerManagementTest.java | 420 ++++++++++++++++-- .../repository/jpa/TargetManagementTest.java | 50 --- .../test/util/AbstractIntegrationTest.java | 4 +- .../repository/test/util/TestdataFactory.java | 7 +- .../actionhistory/ActionHistoryTable.java | 55 +-- .../actionhistory/ActionStatusIconMapper.java | 75 ++++ .../ui/utils/SPUIStyleDefinitions.java | 5 + 19 files changed, 513 insertions(+), 273 deletions(-) create mode 100644 docs/src/main/resources/img/hawkBit_overview.jpeg delete mode 100644 docs/src/main/resources/img/hawkBit_overview.png create mode 100644 hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/actionhistory/ActionStatusIconMapper.java diff --git a/.gitattributes b/.gitattributes index 0825468a3..fd20d7edb 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2,6 +2,7 @@ # Denote all files that are truly binary and should not be modified. *.png binary *.jpg binary +*.jpeg binary *.pdf binary *.PNG binary *.pptx binary diff --git a/docs/src/main/resources/Binterfaces.md b/docs/src/main/resources/Binterfaces.md index 3dd6d0ab4..8f8209e8f 100644 --- a/docs/src/main/resources/Binterfaces.md +++ b/docs/src/main/resources/Binterfaces.md @@ -4,11 +4,11 @@ title : "Interfaces" series : "homepagetop" sequence: "2" order : 2 -imagename : "hawkBit_overview.png" +imagename : "hawkBit_overview.jpeg" style: "thumb1" animatestyle: "fadeIn" fadestyle: "fadeIn" fadeduration: "4" --- -hawkBit offers a direct device integration via HTTP or an device management federation API which allows you to connect devices with different protocol adapter. Users can make use of the graphical user interface and other service can interact with hawkBit through the RESTful management API. \ No newline at end of file +hawkBit offers a direct device integration via HTTP or an device management federation API which allows you to connect devices with different protocol adapter. Users can make use of the graphical user interface and other service can interact with hawkBit through the RESTful management API. diff --git a/docs/src/main/resources/img/hawkBit_overview.jpeg b/docs/src/main/resources/img/hawkBit_overview.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..c16b20d88debfd3d3f68e3605158c20b38d973db GIT binary patch literal 210469 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

47Jr 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

e@6ZuF!VRW3| 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%0AN^Djfw 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 DqV9u^ diff --git a/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootController.java b/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootController.java index 5f2875e42..73610168e 100644 --- a/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootController.java +++ b/hawkbit-ddi-resource/src/main/java/org/eclipse/hawkbit/ddi/rest/resource/DdiRootController.java @@ -439,7 +439,7 @@ public class DdiRootController implements DdiRootControllerRestApi { case REJECTED: LOG.info("Target rejected the cancelation request (actionid: {}, controllerId: {}).", actionid, target.getControllerId()); - status = Status.WARNING; + status = Status.CANCEL_REJECTED; messages.add(RepositoryConstants.SERVER_MESSAGE_PREFIX + "Target rejected the cancelation request."); break; case CLOSED: diff --git a/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiCancelActionTest.java b/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiCancelActionTest.java index 8760f839b..8cda78fea 100644 --- a/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiCancelActionTest.java +++ b/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiCancelActionTest.java @@ -276,7 +276,7 @@ public class DdiCancelActionTest extends AbstractDDiApiIntegrationTest { assertThat(deploymentManagement.countActionStatusAll()).isEqualTo(5); assertThat(deploymentManagement.findActiveActionsByTarget(savedTarget.getControllerId())).hasSize(1); - // cancelation canceled -> should remove the action from active + // cancellation canceled -> should remove the action from active assertThat(deploymentManagement.findActiveActionsByTarget(savedTarget.getControllerId())).hasSize(1); current = System.currentTimeMillis(); mvc.perform(post("/{tenant}/controller/v1/" + TestdataFactory.DEFAULT_CONTROLLER_ID + "/cancelAction/" @@ -289,7 +289,8 @@ public class DdiCancelActionTest extends AbstractDDiApiIntegrationTest { assertThat(deploymentManagement.countActionStatusAll()).isEqualTo(6); assertThat(deploymentManagement.findActiveActionsByTarget(savedTarget.getControllerId())).hasSize(1); - // cancelation rejected -> action still active until controller close it + // cancellation rejected -> action still active until controller close + // it // with finished or // error assertThat(deploymentManagement.findActiveActionsByTarget(savedTarget.getControllerId())).hasSize(1); @@ -304,9 +305,9 @@ public class DdiCancelActionTest extends AbstractDDiApiIntegrationTest { assertThat(deploymentManagement.countActionStatusAll()).isEqualTo(7); assertThat(deploymentManagement.findActiveActionsByTarget(savedTarget.getControllerId())).hasSize(1); - // cancelaction closed -> should remove the action from active + // update closed -> should remove the action from active current = System.currentTimeMillis(); - mvc.perform(post("/{tenant}/controller/v1/" + TestdataFactory.DEFAULT_CONTROLLER_ID + "/cancelAction/" + mvc.perform(post("/{tenant}/controller/v1/" + TestdataFactory.DEFAULT_CONTROLLER_ID + "/deploymentBase/" + cancelAction.getId() + "/feedback", tenantAware.getCurrentTenant()) .content(JsonBuilder.cancelActionFeedback(cancelAction.getId().toString(), "closed")) .contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON)) diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java index 66a56378c..a56be2088 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java @@ -294,7 +294,7 @@ public class AmqpMessageHandlerService extends BaseAmqpService { private Status hanldeCancelRejectedState(final Message message, final Action action) { if (action.isCancelingOrCanceled()) { - return Status.WARNING; + return Status.CANCEL_REJECTED; } else { logAndThrowMessageError(message, "Cancel recjected message is not allowed, if action is on state: " + action.getStatus()); diff --git a/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/action/MgmtActionStatus.java b/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/action/MgmtActionStatus.java index 26120d2d5..b629ee180 100644 --- a/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/action/MgmtActionStatus.java +++ b/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/action/MgmtActionStatus.java @@ -23,40 +23,6 @@ import com.fasterxml.jackson.annotation.JsonProperty; @JsonIgnoreProperties(ignoreUnknown = true) public class MgmtActionStatus { - /** - * Action is finished successfully for this target. - */ - public static final String AS_FINISHED = "finished"; - - /** - * Action has failed for this target. - */ - public static final String AS_ERROR = "error"; - - /** - * Action is still running but with warnings. - */ - public static final String AS_WARNING = "warning"; - - /** - * Action is still running for this target. - */ - public static final String AS_RUNNING = "running"; - /** - * Action has been canceled for this target. - */ - public static final String AS_CANCELED = "canceled"; - - /** - * Action has been presented to the target. - */ - public static final String AS_RETRIEVED = "retrieved"; - - /** - * Action has been canceled for this target. - */ - public static final String AS_CANCELING = "canceling"; - @JsonProperty("id") private Long statusId; diff --git a/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetMapper.java b/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetMapper.java index 5ef0e726c..716241ce1 100644 --- a/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetMapper.java +++ b/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetMapper.java @@ -34,7 +34,6 @@ import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.ActionStatus; import org.eclipse.hawkbit.repository.model.PollStatus; import org.eclipse.hawkbit.repository.model.Target; -import org.eclipse.hawkbit.repository.model.TargetUpdateStatus; import org.eclipse.hawkbit.rest.data.ResponseList; import org.eclipse.hawkbit.rest.data.SortDirection; import org.eclipse.hawkbit.util.IpUtil; @@ -112,7 +111,7 @@ public final class MgmtTargetMapper { targetRest.setControllerId(target.getControllerId()); targetRest.setDescription(target.getDescription()); targetRest.setName(target.getName()); - targetRest.setUpdateStatus(getUpdateStatusName(target.getTargetInfo().getUpdateStatus())); + targetRest.setUpdateStatus(target.getTargetInfo().getUpdateStatus().name().toLowerCase()); final URI address = target.getTargetInfo().getAddress(); if (address != null) { @@ -198,37 +197,6 @@ public final class MgmtTargetMapper { .collect(Collectors.toList()); } - private static String getNameOfActionStatusType(final Action.Status type) { - String result; - - switch (type) { - case CANCELED: - result = MgmtActionStatus.AS_CANCELED; - break; - case ERROR: - result = MgmtActionStatus.AS_ERROR; - break; - case FINISHED: - result = MgmtActionStatus.AS_FINISHED; - break; - case RETRIEVED: - result = MgmtActionStatus.AS_RETRIEVED; - break; - case RUNNING: - result = MgmtActionStatus.AS_RUNNING; - break; - case WARNING: - result = MgmtActionStatus.AS_WARNING; - break; - default: - return type.name().toLowerCase(); - - } - - return result; - - } - private static String getType(final Action action) { if (!action.isCancelingOrCanceled()) { return MgmtAction.ACTION_UPDATE; @@ -239,39 +207,13 @@ public final class MgmtTargetMapper { return null; } - private static String getUpdateStatusName(final TargetUpdateStatus updatestatus) { - String result; - - switch (updatestatus) { - case ERROR: - result = "error"; - break; - case IN_SYNC: - result = "in_sync"; - break; - case PENDING: - result = "pending"; - break; - case REGISTERED: - result = "registered"; - break; - case UNKNOWN: - result = "unknown"; - break; - default: - return updatestatus.name().toLowerCase(); - } - - return result; - } - private static MgmtActionStatus toResponse(final ActionStatus actionStatus) { final MgmtActionStatus result = new MgmtActionStatus(); result.setMessages(actionStatus.getMessages()); result.setReportedAt(actionStatus.getCreatedAt()); result.setStatusId(actionStatus.getId()); - result.setType(getNameOfActionStatusType(actionStatus.getStatus())); + result.setType(actionStatus.getStatus().name().toLowerCase()); return result; } diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/CancelActionNotAllowedException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/CancelActionNotAllowedException.java index dd1ca4553..454c79919 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/CancelActionNotAllowedException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/CancelActionNotAllowedException.java @@ -12,11 +12,10 @@ import org.eclipse.hawkbit.exception.AbstractServerRtException; import org.eclipse.hawkbit.exception.SpServerError; /** - * Thrown if cancelation of actions is performened where the action is not - * cancelable, e.g. the action is not active or is already a cancel action. - * - * - * + * Thrown if cancellation of action is requested where the action cannot be + * cancelled (e.g. the action is not active or is already a canceled action) or + * controller provides cancellation feedback on an action that is actually not + * in caneling state. * */ public final class CancelActionNotAllowedException extends AbstractServerRtException { diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/Action.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/Action.java index 66659f2b1..5200510e4 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/Action.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/model/Action.java @@ -172,7 +172,12 @@ public interface Action extends TenantAwareBaseEntity { * Action is in waiting state, e.g. the action is scheduled in a rollout * but not yet activated. */ - SCHEDULED; + SCHEDULED, + + /** + * Cancellation has been rejected by the controller. + */ + CANCEL_REJECTED; } /** diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java index 68080312a..2a3dc126b 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/JpaControllerManagement.java @@ -28,6 +28,7 @@ import org.eclipse.hawkbit.repository.builder.ActionStatusCreate; import org.eclipse.hawkbit.repository.event.remote.DownloadProgressEvent; import org.eclipse.hawkbit.repository.event.remote.TargetPollEvent; import org.eclipse.hawkbit.repository.event.remote.entity.TargetUpdatedEvent; +import org.eclipse.hawkbit.repository.exception.CancelActionNotAllowedException; import org.eclipse.hawkbit.repository.exception.EntityNotFoundException; import org.eclipse.hawkbit.repository.exception.ToManyAttributeEntriesException; import org.eclipse.hawkbit.repository.exception.TooManyStatusEntriesException; @@ -101,9 +102,6 @@ public class JpaControllerManagement implements ControllerManagement { @Autowired private RepositoryProperties repositoryProperties; - @Autowired - private TenantConfigurationRepository tenantConfigurationRepository; - @Autowired private TenantConfigurationManagement tenantConfigurationManagement; @@ -242,26 +240,29 @@ public class JpaControllerManagement implements ControllerManagement { final JpaActionStatusCreate create = (JpaActionStatusCreate) c; final JpaAction action = getActionAndThrowExceptionIfNotFound(create.getActionId()); + + if (!action.isCancelingOrCanceled()) { + throw new CancelActionNotAllowedException("The action is not in canceling state."); + } + final JpaActionStatus actionStatus = create.build(); - checkForToManyStatusEntries(action); - action.setStatus(actionStatus.getStatus()); - switch (actionStatus.getStatus()) { - case WARNING: - case ERROR: - case RUNNING: - break; case CANCELED: case FINISHED: handleFinishedCancelation(actionStatus, action); break; - case RETRIEVED: - actionStatus.addMessage(RepositoryConstants.SERVER_MESSAGE_PREFIX + "Cancellation request retrieved."); + case ERROR: + case CANCEL_REJECTED: + // Cancellation rejected. Back to running. + action.setStatus(Status.RUNNING); break; default: - // do nothing + // information status entry - check for a potential DOS attack + checkForToManyStatusEntries(action); + break; } + actionStatus.setAction(actionRepository.save(action)); actionStatusRepository.save(actionStatus); @@ -306,17 +307,11 @@ public class JpaControllerManagement implements ControllerManagement { /** * Sets {@link TargetUpdateStatus} based on given {@link ActionStatus}. - * - * @param actionStatus - * @param action - * @return */ private Action handleAddUpdateActionStatus(final JpaActionStatus actionStatus, final JpaAction action) { LOG.debug("addUpdateActionStatus for action {}", action.getId()); JpaTarget target = (JpaTarget) action.getTarget(); - // check for a potential DOS attack - checkForToManyStatusEntries(action); switch (actionStatus.getStatus()) { case ERROR: @@ -327,10 +322,9 @@ public class JpaControllerManagement implements ControllerManagement { case FINISHED: handleFinishedAndStoreInTargetStatus(target, action); break; - case CANCELED: - case WARNING: - case RUNNING: default: + // information status entry - check for a potential DOS attack + checkForToManyStatusEntries(action); break; } @@ -339,8 +333,6 @@ public class JpaControllerManagement implements ControllerManagement { LOG.debug("addUpdateActionStatus {} for target {} is finished.", action, target.getId()); - action.setStatus(actionStatus.getStatus()); - return actionRepository.save(action); } diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/ControllerManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/ControllerManagementTest.java index f9a469c8a..f1389606e 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/ControllerManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/ControllerManagementTest.java @@ -12,6 +12,8 @@ import static org.fest.assertions.api.Assertions.assertThat; import static org.junit.Assert.fail; import java.io.ByteArrayInputStream; +import java.util.List; +import java.util.Map; import javax.validation.ConstraintViolationException; @@ -20,13 +22,15 @@ import org.eclipse.hawkbit.repository.RepositoryProperties; import org.eclipse.hawkbit.repository.event.remote.TargetAssignDistributionSetEvent; import org.eclipse.hawkbit.repository.event.remote.entity.ActionCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.ActionUpdatedEvent; +import org.eclipse.hawkbit.repository.event.remote.entity.CancelTargetAssignmentEvent; import org.eclipse.hawkbit.repository.event.remote.entity.DistributionSetCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.SoftwareModuleCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.SoftwareModuleUpdatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.TargetCreatedEvent; import org.eclipse.hawkbit.repository.event.remote.entity.TargetUpdatedEvent; -import org.eclipse.hawkbit.repository.jpa.model.JpaAction; +import org.eclipse.hawkbit.repository.exception.CancelActionNotAllowedException; import org.eclipse.hawkbit.repository.model.Action; +import org.eclipse.hawkbit.repository.model.ActionStatus; import org.eclipse.hawkbit.repository.model.Artifact; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.Target; @@ -37,8 +41,11 @@ import org.eclipse.hawkbit.repository.test.util.TestdataFactory; import org.junit.Test; import org.springframework.beans.factory.annotation.Autowired; +import com.google.common.collect.Maps; + import ru.yandex.qatools.allure.annotations.Description; import ru.yandex.qatools.allure.annotations.Features; +import ru.yandex.qatools.allure.annotations.Step; import ru.yandex.qatools.allure.annotations.Stories; @Features("Component Tests - Repository") @@ -49,40 +56,256 @@ public class ControllerManagementTest extends AbstractJpaIntegrationTest { private RepositoryProperties repositoryProperties; @Test - @Description("Controller adds a new action status.") + @Description("Controller confirms successfull update with FINISHED status.") @ExpectEvents({ @Expect(type = TargetCreatedEvent.class, count = 1), @Expect(type = DistributionSetCreatedEvent.class, count = 1), @Expect(type = ActionCreatedEvent.class, count = 1), @Expect(type = ActionUpdatedEvent.class, count = 1), @Expect(type = TargetUpdatedEvent.class, count = 2), @Expect(type = TargetAssignDistributionSetEvent.class, count = 1), @Expect(type = SoftwareModuleCreatedEvent.class, count = 3) }) - public void controllerAddsActionStatus() { - final DistributionSet ds = testdataFactory.createDistributionSet(""); - Target savedTarget = testdataFactory.createTarget(); + public void controllerConfirmsUpdateWithFinished() { + final Long actionId = createTargetAndAssignDs(); - assertThat(savedTarget.getTargetInfo().getUpdateStatus()).isEqualTo(TargetUpdateStatus.UNKNOWN); + simulateIntermediateStatusOnUpdate(actionId); - savedTarget = assignDistributionSet(ds.getId(), savedTarget.getControllerId()).getAssignedEntity().iterator() - .next(); - final JpaAction savedAction = (JpaAction) deploymentManagement - .findActiveActionsByTarget(savedTarget.getControllerId()).get(0); + controllerManagament + .addUpdateActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.FINISHED)); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.IN_SYNC, + Action.Status.FINISHED, Action.Status.FINISHED, false); - assertThat(targetManagement.findTargetByControllerID(savedTarget.getControllerId()).getTargetInfo() - .getUpdateStatus()).isEqualTo(TargetUpdateStatus.PENDING); + assertThat(actionStatusRepository.count()).isEqualTo(6); + assertThat(deploymentManagement.findActionStatusByAction(pageReq, actionId).getNumberOfElements()).isEqualTo(6); + } - controllerManagament.addUpdateActionStatus( - entityFactory.actionStatus().create(savedAction.getId()).status(Action.Status.RUNNING)); + @Test + @Description("Controller confirms successfull update with FINISHED status on a action that is on canceling. " + + "Reason: The decission to ignore the cancellation is in fact up to the controller.") + @ExpectEvents({ @Expect(type = TargetCreatedEvent.class, count = 1), + @Expect(type = DistributionSetCreatedEvent.class, count = 1), + @Expect(type = ActionCreatedEvent.class, count = 1), @Expect(type = ActionUpdatedEvent.class, count = 2), + @Expect(type = CancelTargetAssignmentEvent.class, count = 1), + @Expect(type = TargetUpdatedEvent.class, count = 2), + @Expect(type = TargetAssignDistributionSetEvent.class, count = 1), + @Expect(type = SoftwareModuleCreatedEvent.class, count = 3) }) + public void controllerConfirmsUpdateWithFinishedAndIgnorsCancellationWithThat() { + final Long actionId = createTargetAndAssignDs(); + deploymentManagement.cancelAction(actionId); + + controllerManagament + .addUpdateActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.FINISHED)); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.IN_SYNC, + Action.Status.FINISHED, Action.Status.FINISHED, false); + + assertThat(actionStatusRepository.count()).isEqualTo(3); + assertThat(deploymentManagement.findActionStatusByAction(pageReq, actionId).getNumberOfElements()).isEqualTo(3); + } + + @Test + @Description("Update server rejects cancelation feedback if action is not in CANCELING state.") + @ExpectEvents({ @Expect(type = TargetCreatedEvent.class, count = 1), + @Expect(type = DistributionSetCreatedEvent.class, count = 1), + @Expect(type = ActionCreatedEvent.class, count = 1), @Expect(type = TargetUpdatedEvent.class, count = 1), + @Expect(type = TargetAssignDistributionSetEvent.class, count = 1), + @Expect(type = SoftwareModuleCreatedEvent.class, count = 3) }) + public void cancellationFeedbackRejectedIfActionIsNotInCanceling() { + final Long actionId = createTargetAndAssignDs(); + + try { + controllerManagament.addCancelActionStatus( + entityFactory.actionStatus().create(actionId).status(Action.Status.FINISHED)); + fail("Expected " + CancelActionNotAllowedException.class.getName()); + } catch (final CancelActionNotAllowedException e) { + // expected + } + + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.PENDING, + Action.Status.RUNNING, Action.Status.RUNNING, true); + + assertThat(actionStatusRepository.count()).isEqualTo(1); + assertThat(deploymentManagement.findActionStatusByAction(pageReq, actionId).getNumberOfElements()).isEqualTo(1); + + } + + @Test + @Description("Controller confirms action cancelation with FINISHED status.") + @ExpectEvents({ @Expect(type = TargetCreatedEvent.class, count = 1), + @Expect(type = DistributionSetCreatedEvent.class, count = 1), + @Expect(type = ActionCreatedEvent.class, count = 1), @Expect(type = ActionUpdatedEvent.class, count = 2), + @Expect(type = TargetUpdatedEvent.class, count = 2), + @Expect(type = CancelTargetAssignmentEvent.class, count = 1), + @Expect(type = TargetAssignDistributionSetEvent.class, count = 1), + @Expect(type = SoftwareModuleCreatedEvent.class, count = 3) }) + public void controllerConfirmsActionCancelationWithFinished() { + final Long actionId = createTargetAndAssignDs(); + + deploymentManagement.cancelAction(actionId); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.PENDING, + Action.Status.CANCELING, Action.Status.CANCELING, true); + + simulateIntermediateStatusOnCancellation(actionId); + + controllerManagament + .addCancelActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.FINISHED)); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.IN_SYNC, + Action.Status.CANCELED, Action.Status.FINISHED, false); + + assertThat(actionStatusRepository.count()).isEqualTo(7); + assertThat(deploymentManagement.findActionStatusByAction(pageReq, actionId).getNumberOfElements()).isEqualTo(7); + } + + @Test + @Description("Controller confirms action cancelation with FINISHED status.") + @ExpectEvents({ @Expect(type = TargetCreatedEvent.class, count = 1), + @Expect(type = DistributionSetCreatedEvent.class, count = 1), + @Expect(type = ActionCreatedEvent.class, count = 1), @Expect(type = ActionUpdatedEvent.class, count = 2), + @Expect(type = TargetUpdatedEvent.class, count = 2), + @Expect(type = CancelTargetAssignmentEvent.class, count = 1), + @Expect(type = TargetAssignDistributionSetEvent.class, count = 1), + @Expect(type = SoftwareModuleCreatedEvent.class, count = 3) }) + public void controllerConfirmsActionCancelationWithCanceled() { + final Long actionId = createTargetAndAssignDs(); + + deploymentManagement.cancelAction(actionId); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.PENDING, + Action.Status.CANCELING, Action.Status.CANCELING, true); + + simulateIntermediateStatusOnCancellation(actionId); + + controllerManagament + .addCancelActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.CANCELED)); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.IN_SYNC, + Action.Status.CANCELED, Action.Status.CANCELED, false); + + assertThat(actionStatusRepository.count()).isEqualTo(7); + assertThat(deploymentManagement.findActionStatusByAction(pageReq, actionId).getNumberOfElements()).isEqualTo(7); + } + + @Test + @Description("Controller rejects action cancelation with CANCEL_REJECTED status. Action goes back to RUNNING status as it expects " + + "that the controller will continue the original update.") + @ExpectEvents({ @Expect(type = TargetCreatedEvent.class, count = 1), + @Expect(type = DistributionSetCreatedEvent.class, count = 1), + @Expect(type = ActionCreatedEvent.class, count = 1), @Expect(type = ActionUpdatedEvent.class, count = 2), + @Expect(type = TargetUpdatedEvent.class, count = 1), + @Expect(type = CancelTargetAssignmentEvent.class, count = 1), + @Expect(type = TargetAssignDistributionSetEvent.class, count = 1), + @Expect(type = SoftwareModuleCreatedEvent.class, count = 3) }) + public void controllerRejectsActionCancelationWithReject() { + final Long actionId = createTargetAndAssignDs(); + + deploymentManagement.cancelAction(actionId); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.PENDING, + Action.Status.CANCELING, Action.Status.CANCELING, true); + + simulateIntermediateStatusOnCancellation(actionId); + + controllerManagament.addCancelActionStatus( + entityFactory.actionStatus().create(actionId).status(Action.Status.CANCEL_REJECTED)); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.PENDING, + Action.Status.RUNNING, Action.Status.CANCEL_REJECTED, true); + + assertThat(actionStatusRepository.count()).isEqualTo(7); + assertThat(deploymentManagement.findActionStatusByAction(pageReq, actionId).getNumberOfElements()).isEqualTo(7); + } + + @Test + @Description("Controller rejects action cancelation with ERROR status. Action goes back to RUNNING status as it expects " + + "that the controller will continue the original update.") + @ExpectEvents({ @Expect(type = TargetCreatedEvent.class, count = 1), + @Expect(type = DistributionSetCreatedEvent.class, count = 1), + @Expect(type = ActionCreatedEvent.class, count = 1), @Expect(type = ActionUpdatedEvent.class, count = 2), + @Expect(type = TargetUpdatedEvent.class, count = 1), + @Expect(type = CancelTargetAssignmentEvent.class, count = 1), + @Expect(type = TargetAssignDistributionSetEvent.class, count = 1), + @Expect(type = SoftwareModuleCreatedEvent.class, count = 3) }) + public void controllerRejectsActionCancelationWithError() { + final Long actionId = createTargetAndAssignDs(); + + deploymentManagement.cancelAction(actionId); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.PENDING, + Action.Status.CANCELING, Action.Status.CANCELING, true); + + simulateIntermediateStatusOnCancellation(actionId); + + controllerManagament + .addCancelActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.ERROR)); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.PENDING, + Action.Status.RUNNING, Action.Status.ERROR, true); + + assertThat(actionStatusRepository.count()).isEqualTo(7); + assertThat(deploymentManagement.findActionStatusByAction(pageReq, actionId).getNumberOfElements()).isEqualTo(7); + } + + @Step + private Long createTargetAndAssignDs() { + final Long dsId = testdataFactory.createDistributionSet().getId(); + testdataFactory.createTarget(); + assignDistributionSet(dsId, TestdataFactory.DEFAULT_CONTROLLER_ID); assertThat(targetManagement.findTargetByControllerID(TestdataFactory.DEFAULT_CONTROLLER_ID).getTargetInfo() .getUpdateStatus()).isEqualTo(TargetUpdateStatus.PENDING); - controllerManagament.addUpdateActionStatus( - entityFactory.actionStatus().create(savedAction.getId()).status(Action.Status.FINISHED)); - assertThat(targetManagement.findTargetByControllerID(TestdataFactory.DEFAULT_CONTROLLER_ID).getTargetInfo() - .getUpdateStatus()).isEqualTo(TargetUpdateStatus.IN_SYNC); + return deploymentManagement.findActiveActionsByTarget(TestdataFactory.DEFAULT_CONTROLLER_ID).get(0).getId(); + } + + @Step + private void simulateIntermediateStatusOnCancellation(final Long actionId) { + controllerManagament + .addCancelActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.RUNNING)); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.PENDING, + Action.Status.CANCELING, Action.Status.RUNNING, true); + + controllerManagament + .addCancelActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.DOWNLOAD)); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.PENDING, + Action.Status.CANCELING, Action.Status.DOWNLOAD, true); + + controllerManagament + .addCancelActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.RETRIEVED)); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.PENDING, + Action.Status.CANCELING, Action.Status.RETRIEVED, true); + + controllerManagament + .addCancelActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.WARNING)); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.PENDING, + Action.Status.CANCELING, Action.Status.WARNING, true); + } + + @Step + private void simulateIntermediateStatusOnUpdate(final Long actionId) { + controllerManagament + .addUpdateActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.RUNNING)); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.PENDING, + Action.Status.RUNNING, Action.Status.RUNNING, true); + + controllerManagament + .addUpdateActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.DOWNLOAD)); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.PENDING, + Action.Status.RUNNING, Action.Status.DOWNLOAD, true); + + controllerManagament + .addUpdateActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.RETRIEVED)); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.PENDING, + Action.Status.RUNNING, Action.Status.RETRIEVED, true); + + controllerManagament + .addUpdateActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.WARNING)); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.PENDING, + Action.Status.RUNNING, Action.Status.WARNING, true); + } + + private void assertActionStatus(final Long actionId, final String controllerId, + final TargetUpdateStatus expectedTargetUpdateStatus, final Action.Status expectedActionActionStatus, + final Action.Status expectedActionStatus, final boolean actionActive) { + final TargetUpdateStatus targetStatus = targetManagement.findTargetByControllerID(controllerId).getTargetInfo() + .getUpdateStatus(); + assertThat(targetStatus).isEqualTo(expectedTargetUpdateStatus); + final Action action = deploymentManagement.findAction(actionId); + assertThat(action.getStatus()).isEqualTo(expectedActionActionStatus); + assertThat(action.isActive()).isEqualTo(actionActive); + final List actionStatusList = deploymentManagement.findActionStatusByAction(pageReq, actionId) + .getContent(); + assertThat(actionStatusList.get(actionStatusList.size() - 1).getStatus()).isEqualTo(expectedActionStatus); - assertThat(actionStatusRepository.findAll(pageReq).getNumberOfElements()).isEqualTo(3); - assertThat(deploymentManagement.findActionStatusByAction(pageReq, savedAction.getId()).getNumberOfElements()) - .isEqualTo(3); } @Test @@ -123,7 +346,7 @@ public class ControllerManagementTest extends AbstractJpaIntegrationTest { @Test @Description("Register a controller which does not exist") - public void testfindOrRegisterTargetIfItDoesNotexist() { + public void findOrRegisterTargetIfItDoesNotexist() { final Target target = controllerManagament.findOrRegisterTargetIfItDoesNotexist("AA", null); assertThat(target).as("target should not be null").isNotNull(); @@ -142,47 +365,94 @@ public class ControllerManagementTest extends AbstractJpaIntegrationTest { @Test @Description("Controller trys to finish an update process after it has been finished by an error action status.") - public void tryToFinishUpdateProcessMoreThanOnce() { - final DistributionSet ds = testdataFactory.createDistributionSet(""); - Target savedTarget = testdataFactory.createTarget(); - savedTarget = assignDistributionSet(ds.getId(), savedTarget.getControllerId()).getAssignedEntity().iterator() - .next(); - Action savedAction = deploymentManagement.findActiveActionsByTarget(savedTarget.getControllerId()).get(0); + @ExpectEvents({ @Expect(type = TargetCreatedEvent.class, count = 1), + @Expect(type = DistributionSetCreatedEvent.class, count = 1), + @Expect(type = ActionCreatedEvent.class, count = 1), @Expect(type = ActionUpdatedEvent.class, count = 1), + @Expect(type = TargetUpdatedEvent.class, count = 2), + @Expect(type = TargetAssignDistributionSetEvent.class, count = 1), + @Expect(type = SoftwareModuleCreatedEvent.class, count = 3) }) + public void tryToFinishWithErrorUpdateProcessMoreThanOnce() { + final Long actionId = createTargetAndAssignDs(); // test and verify - savedAction = controllerManagament.addUpdateActionStatus( - entityFactory.actionStatus().create(savedAction.getId()).status(Action.Status.RUNNING)); - assertThat(targetManagement.findTargetByControllerID(TestdataFactory.DEFAULT_CONTROLLER_ID).getTargetInfo() - .getUpdateStatus()).isEqualTo(TargetUpdateStatus.PENDING); + controllerManagament + .addUpdateActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.RUNNING)); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.PENDING, + Action.Status.RUNNING, Action.Status.RUNNING, true); - savedAction = controllerManagament.addUpdateActionStatus( - entityFactory.actionStatus().create(savedAction.getId()).status(Action.Status.ERROR)); - assertThat(targetManagement.findTargetByControllerID(TestdataFactory.DEFAULT_CONTROLLER_ID).getTargetInfo() - .getUpdateStatus()).isEqualTo(TargetUpdateStatus.ERROR); + controllerManagament + .addUpdateActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.ERROR)); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.ERROR, + Action.Status.ERROR, Action.Status.ERROR, false); // try with disabled late feedback repositoryProperties.setRejectActionStatusForClosedAction(true); - savedAction = controllerManagament.addUpdateActionStatus( - entityFactory.actionStatus().create(savedAction.getId()).status(Action.Status.FINISHED)); + controllerManagament + .addUpdateActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.FINISHED)); // test - assertThat(targetManagement.findTargetByControllerID(TestdataFactory.DEFAULT_CONTROLLER_ID).getTargetInfo() - .getUpdateStatus()).isEqualTo(TargetUpdateStatus.ERROR); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.ERROR, + Action.Status.ERROR, Action.Status.ERROR, false); - // try with enabled late feedback + // try with enabled late feedback - should not make a difference as it + // only allows intermediate feedbacks and not multiple close repositoryProperties.setRejectActionStatusForClosedAction(false); - controllerManagament.addUpdateActionStatus( - entityFactory.actionStatus().create(savedAction.getId()).status(Action.Status.FINISHED)); + controllerManagament + .addUpdateActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.FINISHED)); // test - assertThat(targetManagement.findTargetByControllerID(TestdataFactory.DEFAULT_CONTROLLER_ID).getTargetInfo() - .getUpdateStatus()).isEqualTo(TargetUpdateStatus.ERROR); + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.ERROR, + Action.Status.ERROR, Action.Status.ERROR, false); + + assertThat(actionStatusRepository.count()).isEqualTo(3); + assertThat(deploymentManagement.findActionStatusByAction(pageReq, actionId).getNumberOfElements()).isEqualTo(3); + + } + + @Test + @Description("Controller trys to finish an update process after it has been finished by an FINISHED action status.") + @ExpectEvents({ @Expect(type = TargetCreatedEvent.class, count = 1), + @Expect(type = DistributionSetCreatedEvent.class, count = 1), + @Expect(type = ActionCreatedEvent.class, count = 1), @Expect(type = ActionUpdatedEvent.class, count = 1), + @Expect(type = TargetUpdatedEvent.class, count = 2), + @Expect(type = TargetAssignDistributionSetEvent.class, count = 1), + @Expect(type = SoftwareModuleCreatedEvent.class, count = 3) }) + public void tryToFinishUpdateProcessMoreThanOnce() { + final Long actionId = prepareFinishedUpdate().getId(); + + // try with disabled late feedback + repositoryProperties.setRejectActionStatusForClosedAction(true); + controllerManagament + .addUpdateActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.FINISHED)); + + // test + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.IN_SYNC, + Action.Status.FINISHED, Action.Status.FINISHED, false); + + // try with enabled late feedback - should not make a difference as it + // only allows intermediate feedbacks and not multiple close + repositoryProperties.setRejectActionStatusForClosedAction(false); + controllerManagament + .addUpdateActionStatus(entityFactory.actionStatus().create(actionId).status(Action.Status.FINISHED)); + + // test + assertActionStatus(actionId, TestdataFactory.DEFAULT_CONTROLLER_ID, TargetUpdateStatus.IN_SYNC, + Action.Status.FINISHED, Action.Status.FINISHED, false); + + assertThat(actionStatusRepository.count()).isEqualTo(3); + assertThat(deploymentManagement.findActionStatusByAction(pageReq, actionId).getNumberOfElements()).isEqualTo(3); } @Test @Description("Controller trys to send an update feedback after it has been finished which is reject as the repository is " + "configured to reject that.") + @ExpectEvents({ @Expect(type = TargetCreatedEvent.class, count = 1), + @Expect(type = DistributionSetCreatedEvent.class, count = 1), + @Expect(type = ActionCreatedEvent.class, count = 1), @Expect(type = ActionUpdatedEvent.class, count = 1), + @Expect(type = TargetUpdatedEvent.class, count = 2), + @Expect(type = TargetAssignDistributionSetEvent.class, count = 1), + @Expect(type = SoftwareModuleCreatedEvent.class, count = 3) }) public void sendUpdatesForFinishUpdateProcessDropedIfDisabled() { repositoryProperties.setRejectActionStatusForClosedAction(true); @@ -194,14 +464,21 @@ public class ControllerManagementTest extends AbstractJpaIntegrationTest { // nothing changed as "feedback after close" is disabled assertThat(targetManagement.findTargetByControllerID(TestdataFactory.DEFAULT_CONTROLLER_ID).getTargetInfo() .getUpdateStatus()).isEqualTo(TargetUpdateStatus.IN_SYNC); - assertThat(actionStatusRepository.findAll(pageReq).getNumberOfElements()).isEqualTo(3); + + assertThat(actionStatusRepository.count()).isEqualTo(3); assertThat(deploymentManagement.findActionStatusByAction(pageReq, action.getId()).getNumberOfElements()) .isEqualTo(3); } @Test - @Description("Controller trys to send an update feedback after it has been finished which is actepted as the repository is " + @Description("Controller trys to send an update feedback after it has been finished which is accepted as the repository is " + "configured to accept them.") + @ExpectEvents({ @Expect(type = TargetCreatedEvent.class, count = 1), + @Expect(type = DistributionSetCreatedEvent.class, count = 1), + @Expect(type = ActionCreatedEvent.class, count = 1), @Expect(type = ActionUpdatedEvent.class, count = 1), + @Expect(type = TargetUpdatedEvent.class, count = 2), + @Expect(type = TargetAssignDistributionSetEvent.class, count = 1), + @Expect(type = SoftwareModuleCreatedEvent.class, count = 3) }) public void sendUpdatesForFinishUpdateProcessAcceptedIfEnabled() { repositoryProperties.setRejectActionStatusForClosedAction(false); @@ -212,9 +489,58 @@ public class ControllerManagementTest extends AbstractJpaIntegrationTest { // nothing changed as "feedback after close" is disabled assertThat(targetManagement.findTargetByControllerID(TestdataFactory.DEFAULT_CONTROLLER_ID).getTargetInfo() .getUpdateStatus()).isEqualTo(TargetUpdateStatus.IN_SYNC); + + // however, additional action status has been stored assertThat(actionStatusRepository.findAll(pageReq).getNumberOfElements()).isEqualTo(4); assertThat(deploymentManagement.findActionStatusByAction(pageReq, action.getId()).getNumberOfElements()) .isEqualTo(4); } + @Test + @Description("Ensures that target attribute update is reflected by the repository.") + @ExpectEvents({ @Expect(type = TargetCreatedEvent.class, count = 1), + @Expect(type = TargetUpdatedEvent.class, count = 3) }) + public void updateTargetAttributes() { + final String controllerId = "test123"; + testdataFactory.createTarget(controllerId); + addAttributeAndVerify(controllerId); + addSecondAttributeAndVerify(controllerId); + updateAttributeAndVerify(controllerId); + } + + @Step + private void addAttributeAndVerify(final String controllerId) { + final Map testData = Maps.newHashMapWithExpectedSize(1); + testData.put("test1", "testdata1"); + controllerManagament.updateControllerAttributes(controllerId, testData); + + final Target target = targetManagement.findTargetByControllerIDWithDetails(controllerId); + assertThat(target.getTargetInfo().getControllerAttributes()).as("Controller Attributes are wrong") + .isEqualTo(testData); + } + + @Step + private void addSecondAttributeAndVerify(final String controllerId) { + final Map testData = Maps.newHashMapWithExpectedSize(2); + testData.put("test2", "testdata20"); + controllerManagament.updateControllerAttributes(controllerId, testData); + + final Target target = targetManagement.findTargetByControllerIDWithDetails(controllerId); + testData.put("test1", "testdata1"); + assertThat(target.getTargetInfo().getControllerAttributes()).as("Controller Attributes are wrong") + .isEqualTo(testData); + } + + @Step + private void updateAttributeAndVerify(final String controllerId) { + final Map testData = Maps.newHashMapWithExpectedSize(2); + testData.put("test1", "testdata12"); + + controllerManagament.updateControllerAttributes(controllerId, testData); + + final Target target = targetManagement.findTargetByControllerIDWithDetails(controllerId); + testData.put("test2", "testdata20"); + assertThat(target.getTargetInfo().getControllerAttributes()).as("Controller Attributes are wrong") + .isEqualTo(testData); + } } diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/TargetManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/TargetManagementTest.java index 1c410ab35..24c9df37a 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/TargetManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/TargetManagementTest.java @@ -54,11 +54,9 @@ import org.springframework.data.domain.PageRequest; import com.google.common.collect.Iterables; import com.google.common.collect.Lists; -import com.google.common.collect.Maps; import ru.yandex.qatools.allure.annotations.Description; import ru.yandex.qatools.allure.annotations.Features; -import ru.yandex.qatools.allure.annotations.Step; import ru.yandex.qatools.allure.annotations.Stories; @Features("Component Tests - Repository") @@ -245,54 +243,6 @@ public class TargetManagementTest extends AbstractJpaIntegrationTest { assertThat(targetManagement.countTargetsAll()).as("target count is wrong").isEqualTo(0); } - @Test - @Description("Ensures that target attribute update is reflected by the repository.") - @ExpectEvents({ @Expect(type = TargetCreatedEvent.class, count = 1), - @Expect(type = TargetUpdatedEvent.class, count = 3) }) - public void updateTargetAttributes() { - final String controllerId = "test123"; - testdataFactory.createTarget(controllerId); - addAttributeAndVerify(controllerId); - addSecondAttributeAndVerify(controllerId); - updateAttributeAndVerify(controllerId); - } - - @Step - private void addAttributeAndVerify(final String controllerId) { - final Map testData = Maps.newHashMapWithExpectedSize(1); - testData.put("test1", "testdata1"); - controllerManagament.updateControllerAttributes(controllerId, testData); - - final Target target = targetManagement.findTargetByControllerIDWithDetails(controllerId); - assertThat(target.getTargetInfo().getControllerAttributes()).as("Controller Attributes are wrong") - .isEqualTo(testData); - } - - @Step - private void addSecondAttributeAndVerify(final String controllerId) { - final Map testData = Maps.newHashMapWithExpectedSize(2); - testData.put("test2", "testdata20"); - controllerManagament.updateControllerAttributes(controllerId, testData); - - final Target target = targetManagement.findTargetByControllerIDWithDetails(controllerId); - testData.put("test1", "testdata1"); - assertThat(target.getTargetInfo().getControllerAttributes()).as("Controller Attributes are wrong") - .isEqualTo(testData); - } - - @Step - private void updateAttributeAndVerify(final String controllerId) { - final Map testData = Maps.newHashMapWithExpectedSize(2); - testData.put("test1", "testdata12"); - - controllerManagament.updateControllerAttributes(controllerId, testData); - - final Target target = targetManagement.findTargetByControllerIDWithDetails(controllerId); - testData.put("test2", "testdata20"); - assertThat(target.getTargetInfo().getControllerAttributes()).as("Controller Attributes are wrong") - .isEqualTo(testData); - } - private Target createTargetWithAttributes(final String controllerId) { final Map testData = new HashMap<>(); testData.put("test1", "testdata1"); diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTest.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTest.java index 356e12e65..556be5fcc 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTest.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTest.java @@ -78,6 +78,8 @@ import org.springframework.core.env.Environment; import org.springframework.data.auditing.AuditingHandler; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.domain.Sort.Direction; import org.springframework.hateoas.MediaTypes; import org.springframework.test.annotation.DirtiesContext; import org.springframework.test.annotation.DirtiesContext.ClassMode; @@ -104,7 +106,7 @@ import com.google.common.collect.Lists; public abstract class AbstractIntegrationTest implements EnvironmentAware { private static final Logger LOG = LoggerFactory.getLogger(AbstractIntegrationTest.class); - protected static final Pageable pageReq = new PageRequest(0, 400); + protected static final Pageable pageReq = new PageRequest(0, 400, new Sort(Direction.ASC, "id")); /** * Constant for MediaType HAL with encoding UTF-8. Necessary since Spring diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestdataFactory.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestdataFactory.java index 645b749f1..fd9892a0b 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestdataFactory.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestdataFactory.java @@ -8,6 +8,8 @@ */ package org.eclipse.hawkbit.repository.test.util; +import static org.assertj.core.api.Assertions.assertThat; + import java.io.InputStream; import java.nio.charset.Charset; import java.security.SecureRandom; @@ -44,6 +46,7 @@ import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.repository.model.TargetTag; +import org.eclipse.hawkbit.repository.model.TargetUpdateStatus; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; @@ -498,7 +501,9 @@ public class TestdataFactory { * @return persisted {@link Target} */ public Target createTarget(final String controllerId) { - return targetManagement.createTarget(entityFactory.target().create().controllerId(controllerId)); + final Target target = targetManagement.createTarget(entityFactory.target().create().controllerId(controllerId)); + assertThat(target.getTargetInfo().getUpdateStatus()).isEqualTo(TargetUpdateStatus.UNKNOWN); + return target; } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/actionhistory/ActionHistoryTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/actionhistory/ActionHistoryTable.java index 3d9b39f15..0ef2635fb 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/actionhistory/ActionHistoryTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/actionhistory/ActionHistoryTable.java @@ -33,6 +33,7 @@ import org.eclipse.hawkbit.ui.management.state.ManagementUIState; import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPDateTimeUtil; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; +import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions; import org.eclipse.hawkbit.ui.utils.UIComponentIdProvider; import org.eclipse.hawkbit.ui.utils.UINotification; import org.slf4j.Logger; @@ -72,7 +73,6 @@ public class ActionHistoryTable extends TreeTable { private static final Logger LOG = LoggerFactory.getLogger(ActionHistoryTable.class); private static final String BUTTON_CANCEL = "button.cancel"; private static final String BUTTON_OK = "button.ok"; - private static final String STATUS_ICON_GREEN = "statusIconGreen"; private final I18N i18n; private final transient DeploymentManagement deploymentManagement; @@ -504,50 +504,21 @@ public class ActionHistoryTable extends TreeTable { */ private Label getStatusIcon(final Action.Status status) { final Label label = new LabelBuilder().name("").buildLabel(); - final String statusIconPending = "statusIconPending"; label.setContentMode(ContentMode.HTML); - if (Action.Status.FINISHED == status) { - label.setDescription(i18n.get("label.finished")); - label.setStyleName(STATUS_ICON_GREEN); - label.setValue(FontAwesome.CHECK_CIRCLE.getHtml()); - } else if (Action.Status.ERROR == status) { - label.setDescription(i18n.get("label.error")); - label.setStyleName("statusIconRed"); - label.setValue(FontAwesome.EXCLAMATION_CIRCLE.getHtml()); - } else if (Action.Status.WARNING == status) { - label.setStyleName("statusIconOrange"); - label.setDescription(i18n.get("label.warning")); - label.setValue(FontAwesome.EXCLAMATION_CIRCLE.getHtml()); - } else if (Action.Status.RUNNING == status) { - // dynamic spinner - label.setStyleName(statusIconPending); - label.setDescription(i18n.get("label.running")); - label.setValue(FontAwesome.ADJUST.getHtml()); - } else if (Action.Status.CANCELING == status) { - label.setStyleName(statusIconPending); - label.setDescription(i18n.get("label.cancelling")); - label.setValue(FontAwesome.TIMES_CIRCLE.getHtml()); - } else if (Action.Status.CANCELED == status) { - label.setStyleName(statusIconPending); - label.setDescription(i18n.get("label.cancelled")); - label.setStyleName(STATUS_ICON_GREEN); - label.setValue(FontAwesome.TIMES_CIRCLE.getHtml()); - } else if (Action.Status.RETRIEVED == status) { - label.setStyleName(statusIconPending); - label.setDescription(i18n.get("label.retrieved")); - label.setValue(FontAwesome.CIRCLE_O.getHtml()); - } else if (Action.Status.DOWNLOAD == status) { - label.setStyleName(statusIconPending); - label.setDescription(i18n.get("label.download")); - label.setValue(FontAwesome.CLOUD_DOWNLOAD.getHtml()); - } else if (Action.Status.SCHEDULED == status) { - label.setStyleName(statusIconPending); - label.setDescription(i18n.get("label.scheduled")); - label.setValue(FontAwesome.HOURGLASS_1.getHtml()); - } else { + + final ActionStatusIconMapper mapping = ActionStatusIconMapper.MAPPINGS.get(status); + + if (mapping == null) { + LOG.error("Unknown status icon mapping"); label.setDescription(""); label.setValue(""); + return label; } + + label.setDescription(i18n.get(mapping.getDescriptionI18N())); + label.setStyleName(mapping.getStyleName()); + label.setValue(mapping.getIcon().getHtml()); + return label; } @@ -568,7 +539,7 @@ public class ActionHistoryTable extends TreeTable { if (actionWithActiveStatus.isHitAutoForceTime(currentTimeMillis)) { autoForceLabel.setDescription("autoforced"); - autoForceLabel.setStyleName(STATUS_ICON_GREEN); + autoForceLabel.setStyleName(SPUIStyleDefinitions.STATUS_ICON_GREEN); autoForceLabel.setDescription("auto forced since " + SPDateTimeUtil .getDurationFormattedString(actionWithActiveStatus.getForcedTime(), currentTimeMillis, i18n)); } else { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/actionhistory/ActionStatusIconMapper.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/actionhistory/ActionStatusIconMapper.java new file mode 100644 index 000000000..e8f75e52c --- /dev/null +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/actionhistory/ActionStatusIconMapper.java @@ -0,0 +1,75 @@ +/** + * Copyright (c) 2015 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.ui.management.actionhistory; + +import java.util.Map; + +import org.eclipse.hawkbit.repository.model.Action; +import org.eclipse.hawkbit.repository.model.ActionStatus; +import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions; + +import com.google.common.collect.Maps; +import com.vaadin.server.FontAwesome; + +/** + * Mapping utility for {@link ActionStatus} to icon in action history table. + * + */ +public final class ActionStatusIconMapper { + static final Map MAPPINGS = Maps.newHashMapWithExpectedSize(10); + + static { + MAPPINGS.put(Action.Status.FINISHED, new ActionStatusIconMapper("label.finished", + SPUIStyleDefinitions.STATUS_ICON_GREEN, FontAwesome.CHECK_CIRCLE)); + MAPPINGS.put(Action.Status.CANCELED, new ActionStatusIconMapper("label.cancelled", + SPUIStyleDefinitions.STATUS_ICON_GREEN, FontAwesome.TIMES_CIRCLE)); + + MAPPINGS.put(Action.Status.ERROR, new ActionStatusIconMapper("label.error", + SPUIStyleDefinitions.STATUS_ICON_RED, FontAwesome.EXCLAMATION_CIRCLE)); + + MAPPINGS.put(Action.Status.WARNING, new ActionStatusIconMapper("label.warning", + SPUIStyleDefinitions.STATUS_ICON_ORANGE, FontAwesome.EXCLAMATION_CIRCLE)); + MAPPINGS.put(Action.Status.CANCEL_REJECTED, new ActionStatusIconMapper("label.warning", + SPUIStyleDefinitions.STATUS_ICON_ORANGE, FontAwesome.EXCLAMATION_CIRCLE)); + + MAPPINGS.put(Action.Status.RUNNING, new ActionStatusIconMapper("label.running", + SPUIStyleDefinitions.STATUS_ICON_PENDING, FontAwesome.ADJUST)); + MAPPINGS.put(Action.Status.CANCELING, new ActionStatusIconMapper("label.cancelling", + SPUIStyleDefinitions.STATUS_ICON_PENDING, FontAwesome.TIMES_CIRCLE)); + MAPPINGS.put(Action.Status.RETRIEVED, new ActionStatusIconMapper("label.retrieved", + SPUIStyleDefinitions.STATUS_ICON_PENDING, FontAwesome.CIRCLE_O)); + MAPPINGS.put(Action.Status.DOWNLOAD, new ActionStatusIconMapper("label.download", + SPUIStyleDefinitions.STATUS_ICON_PENDING, FontAwesome.CLOUD_DOWNLOAD)); + MAPPINGS.put(Action.Status.SCHEDULED, new ActionStatusIconMapper("label.scheduled", + SPUIStyleDefinitions.STATUS_ICON_PENDING, FontAwesome.HOURGLASS_1)); + } + + private final String descriptionI18N; + private final String styleName; + private final FontAwesome icon; + + private ActionStatusIconMapper(final String descriptionI18N, final String styleName, final FontAwesome icon) { + this.descriptionI18N = descriptionI18N; + this.styleName = styleName; + this.icon = icon; + } + + String getDescriptionI18N() { + return descriptionI18N; + } + + String getStyleName() { + return styleName; + } + + FontAwesome getIcon() { + return icon; + } + +} diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIStyleDefinitions.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIStyleDefinitions.java index d7fd5216b..57791cfdd 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIStyleDefinitions.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/utils/SPUIStyleDefinitions.java @@ -183,6 +183,11 @@ public final class SPUIStyleDefinitions { */ public static final String STATUS_ICON_RED = "statusIconRed"; + /** + * Status icon style - orange color. + */ + public static final String STATUS_ICON_ORANGE = "statusIconOrange"; + /** * Status icon style - green color. */