Added further tests for target searches including the various filter options that we provide
This commit is contained in:
@@ -55,7 +55,7 @@ public class DistributionSetAssignmentResult extends AssignmentResult {
|
|||||||
* @return the assignedTargets
|
* @return the assignedTargets
|
||||||
*/
|
*/
|
||||||
public List<Target> getAssignedTargets() {
|
public List<Target> getAssignedTargets() {
|
||||||
return targetManagement.findTargetsByControllerID(assignedTargets);
|
return targetManagement.findTargetByControllerID(assignedTargets);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -53,7 +53,6 @@ import org.hibernate.validator.constraints.NotEmpty;
|
|||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.cache.annotation.CacheEvict;
|
import org.springframework.cache.annotation.CacheEvict;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
import org.springframework.data.domain.PageRequest;
|
|
||||||
import org.springframework.data.domain.Pageable;
|
import org.springframework.data.domain.Pageable;
|
||||||
import org.springframework.data.domain.Slice;
|
import org.springframework.data.domain.Slice;
|
||||||
import org.springframework.data.domain.SliceImpl;
|
import org.springframework.data.domain.SliceImpl;
|
||||||
@@ -155,7 +154,7 @@ public class TargetManagement {
|
|||||||
* @return List of found{@link Target}s
|
* @return List of found{@link Target}s
|
||||||
*/
|
*/
|
||||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
||||||
public List<Target> findTargetsByControllerID(@NotEmpty final Collection<String> controllerIDs) {
|
public List<Target> findTargetByControllerID(@NotEmpty final Collection<String> controllerIDs) {
|
||||||
return targetRepository.findAll(TargetSpecifications.byControllerIdWithStatusAndAssignedInJoin(controllerIDs));
|
return targetRepository.findAll(TargetSpecifications.byControllerIdWithStatusAndAssignedInJoin(controllerIDs));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -331,10 +330,10 @@ public class TargetManagement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* retrieves {@link Target}s by the assigned {@link DistributionSet} without
|
* Retrieves {@link Target}s by the assigned {@link DistributionSet} without
|
||||||
* details, i.e. NO {@link Target#getTags()} and
|
* details, i.e. NO {@link Target#getTags()} and
|
||||||
* {@link Target#getActiveActions()} possible including the filtering based
|
* {@link Target#getActiveActions()} possible including additional filtering
|
||||||
* on the given {@code spec}.
|
* based on the given {@code spec}.
|
||||||
*
|
*
|
||||||
* @param distributionSetID
|
* @param distributionSetID
|
||||||
* the ID of the {@link DistributionSet}
|
* the ID of the {@link DistributionSet}
|
||||||
@@ -374,7 +373,8 @@ public class TargetManagement {
|
|||||||
/**
|
/**
|
||||||
* retrieves {@link Target}s by the installed {@link DistributionSet}without
|
* retrieves {@link Target}s by the installed {@link DistributionSet}without
|
||||||
* details, i.e. NO {@link Target#getTags()} and
|
* details, i.e. NO {@link Target#getTags()} and
|
||||||
* {@link Target#getActiveActions()} possible.
|
* {@link Target#getActiveActions()} possible including additional filtering
|
||||||
|
* based on the given {@code spec}.
|
||||||
*
|
*
|
||||||
* @param distributionSetId
|
* @param distributionSetId
|
||||||
* the ID of the {@link DistributionSet}
|
* the ID of the {@link DistributionSet}
|
||||||
@@ -490,7 +490,7 @@ public class TargetManagement {
|
|||||||
if (!Strings.isNullOrEmpty(searchText)) {
|
if (!Strings.isNullOrEmpty(searchText)) {
|
||||||
specList.add(TargetSpecifications.likeNameOrDescriptionOrIp(searchText));
|
specList.add(TargetSpecifications.likeNameOrDescriptionOrIp(searchText));
|
||||||
}
|
}
|
||||||
if (selectTargetWithNoTag || (tagNames != null && tagNames.length > 0)) {
|
if (selectTargetWithNoTag != null && (selectTargetWithNoTag || (tagNames != null && tagNames.length > 0))) {
|
||||||
specList.add(TargetSpecifications.hasTags(tagNames, selectTargetWithNoTag));
|
specList.add(TargetSpecifications.hasTags(tagNames, selectTargetWithNoTag));
|
||||||
}
|
}
|
||||||
return specList;
|
return specList;
|
||||||
@@ -810,14 +810,12 @@ public class TargetManagement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* finds all {@link Target#getControllerId()} for all the given parameters.
|
* Finds all targets for all the given parameters but returns not the full
|
||||||
|
* target but {@link TargetIdName}.
|
||||||
*
|
*
|
||||||
* @param pageRequest
|
* @param pageRequest
|
||||||
* the pageRequest to enhance the query for paging and sorting
|
* the pageRequest to enhance the query for paging and sorting
|
||||||
* @param filterByDistributionId
|
*
|
||||||
* to find targets having the {@link DistributionSet} as
|
|
||||||
* installed or assigned. Set to <code>null</code> in case this
|
|
||||||
* is not required.
|
|
||||||
* @param filterByStatus
|
* @param filterByStatus
|
||||||
* find targets having this {@link TargetUpdateStatus}s. Set to
|
* find targets having this {@link TargetUpdateStatus}s. Set to
|
||||||
* <code>null</code> in case this is not required.
|
* <code>null</code> in case this is not required.
|
||||||
@@ -825,28 +823,38 @@ public class TargetManagement {
|
|||||||
* to find targets having the text anywhere in name or
|
* to find targets having the text anywhere in name or
|
||||||
* description. Set <code>null</code> in case this is not
|
* description. Set <code>null</code> in case this is not
|
||||||
* required.
|
* required.
|
||||||
|
* @param installedOrAssignedDistributionSetId
|
||||||
|
* to find targets having the {@link DistributionSet} as
|
||||||
|
* installed or assigned. Set to <code>null</code> in case this
|
||||||
|
* is not required.
|
||||||
* @param filterByTagNames
|
* @param filterByTagNames
|
||||||
* to find targets which are having any one in this tag names.
|
* to find targets which are having any one in this tag names.
|
||||||
* Set <code>null</code> in case this is not required.
|
* Set <code>null</code> in case this is not required.
|
||||||
* @param selectTargetWithNoTag
|
* @param selectTargetWithNoTag
|
||||||
* flag to select targets with no tag assigned
|
* flag to select targets with no tag assigned
|
||||||
*
|
*
|
||||||
* @return the found {@link Target}s
|
* @return the found {@link TargetIdName}s
|
||||||
*/
|
*/
|
||||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
||||||
public List<TargetIdName> findAllTargetIdsByFilters(final PageRequest pageRequest,
|
public List<TargetIdName> findAllTargetIdsByFilters(@NotNull final Pageable pageRequest,
|
||||||
final Long filterByDistributionId, final Collection<TargetUpdateStatus> filterByStatus,
|
final Collection<TargetUpdateStatus> filterByStatus, final String filterBySearchText,
|
||||||
final String filterBySearchText, final Boolean selectTargetWithNoTag, final String... filterByTagNames) {
|
final Long installedOrAssignedDistributionSetId, final Boolean selectTargetWithNoTag,
|
||||||
|
final String... filterByTagNames) {
|
||||||
final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
|
final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
|
||||||
final CriteriaQuery<Object[]> query = cb.createQuery(Object[].class);
|
final CriteriaQuery<Object[]> query = cb.createQuery(Object[].class);
|
||||||
final Root<Target> targetRoot = query.from(Target.class);
|
final Root<Target> targetRoot = query.from(Target.class);
|
||||||
List<Object[]> resultList;
|
List<Object[]> resultList;
|
||||||
|
|
||||||
|
String sortProperty = Target_.id.getName();
|
||||||
|
if (pageRequest.getSort() != null && pageRequest.getSort().iterator().hasNext()) {
|
||||||
|
sortProperty = pageRequest.getSort().iterator().next().getProperty();
|
||||||
|
}
|
||||||
|
|
||||||
final CriteriaQuery<Object[]> multiselect = query.multiselect(targetRoot.get(Target_.id),
|
final CriteriaQuery<Object[]> multiselect = query.multiselect(targetRoot.get(Target_.id),
|
||||||
targetRoot.get(Target_.controllerId), targetRoot.get(Target_.name),
|
targetRoot.get(Target_.controllerId), targetRoot.get(Target_.name), targetRoot.get(sortProperty));
|
||||||
targetRoot.get(pageRequest.getSort().iterator().next().getProperty()));
|
|
||||||
|
|
||||||
final Predicate[] specificationsForMultiSelect = specificationsToPredicate(
|
final Predicate[] specificationsForMultiSelect = specificationsToPredicate(
|
||||||
buildSpecificationList(filterByStatus, filterBySearchText, filterByDistributionId,
|
buildSpecificationList(filterByStatus, filterBySearchText, installedOrAssignedDistributionSetId,
|
||||||
selectTargetWithNoTag, false, filterByTagNames),
|
selectTargetWithNoTag, false, filterByTagNames),
|
||||||
targetRoot, multiselect, cb);
|
targetRoot, multiselect, cb);
|
||||||
|
|
||||||
@@ -862,24 +870,29 @@ public class TargetManagement {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Finds all {@link Target#getControllerId()} for all the given parameter
|
* Finds all targets for all the given parameter {@link TargetFilterQuery}
|
||||||
* {@link TargetFilterQuery}.
|
* and returns not the full target but {@link TargetIdName}.
|
||||||
*
|
*
|
||||||
* @param pageRequest
|
* @param pageRequest
|
||||||
* the pageRequest to enhance the query for paging and sorting
|
* the pageRequest to enhance the query for paging and sorting
|
||||||
* @param targetFilterQuery
|
* @param targetFilterQuery
|
||||||
* {@link TargetFilterQuery}
|
* {@link TargetFilterQuery}
|
||||||
* @return the found {@link Target}s
|
* @return the found {@link TargetIdName}s
|
||||||
*/
|
*/
|
||||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_TARGET)
|
||||||
public List<TargetIdName> findAllTargetIdsByTargetFilterQuery(final PageRequest pageRequest,
|
public List<TargetIdName> findAllTargetIdsByTargetFilterQuery(final Pageable pageRequest,
|
||||||
@NotNull final TargetFilterQuery targetFilterQuery) {
|
@NotNull final TargetFilterQuery targetFilterQuery) {
|
||||||
final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
|
final CriteriaBuilder cb = entityManager.getCriteriaBuilder();
|
||||||
final CriteriaQuery<Object[]> query = cb.createQuery(Object[].class);
|
final CriteriaQuery<Object[]> query = cb.createQuery(Object[].class);
|
||||||
final Root<Target> targetRoot = query.from(Target.class);
|
final Root<Target> targetRoot = query.from(Target.class);
|
||||||
|
|
||||||
|
String sortProperty = Target_.id.getName();
|
||||||
|
if (pageRequest.getSort() != null && pageRequest.getSort().iterator().hasNext()) {
|
||||||
|
sortProperty = pageRequest.getSort().iterator().next().getProperty();
|
||||||
|
}
|
||||||
|
|
||||||
final CriteriaQuery<Object[]> multiselect = query.multiselect(targetRoot.get(Target_.id),
|
final CriteriaQuery<Object[]> multiselect = query.multiselect(targetRoot.get(Target_.id),
|
||||||
targetRoot.get(Target_.controllerId), targetRoot.get(Target_.name),
|
targetRoot.get(Target_.controllerId), targetRoot.get(Target_.name), targetRoot.get(sortProperty));
|
||||||
targetRoot.get(pageRequest.getSort().iterator().next().getProperty()));
|
|
||||||
|
|
||||||
final Specification<Target> spec = RSQLUtility.parse(targetFilterQuery.getQuery(), TargetFields.class);
|
final Specification<Target> spec = RSQLUtility.parse(targetFilterQuery.getQuery(), TargetFields.class);
|
||||||
final List<Specification<Target>> specList = new ArrayList<>();
|
final List<Specification<Target>> specList = new ArrayList<>();
|
||||||
@@ -1072,7 +1085,7 @@ public class TargetManagement {
|
|||||||
return targetRepository.count(specs);
|
return targetRepository.count(specs);
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Object[]> getTargetIdNameResultSet(final PageRequest pageRequest, final CriteriaBuilder cb,
|
private List<Object[]> getTargetIdNameResultSet(final Pageable pageRequest, final CriteriaBuilder cb,
|
||||||
final Root<Target> targetRoot, final CriteriaQuery<Object[]> multiselect) {
|
final Root<Target> targetRoot, final CriteriaQuery<Object[]> multiselect) {
|
||||||
List<Object[]> resultList;
|
List<Object[]> resultList;
|
||||||
if (pageRequest.getSort() != null) {
|
if (pageRequest.getSort() != null) {
|
||||||
|
|||||||
@@ -15,18 +15,14 @@ import javax.persistence.Table;
|
|||||||
import javax.persistence.UniqueConstraint;
|
import javax.persistence.UniqueConstraint;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Stored target filter.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@Entity
|
@Entity
|
||||||
@Table(name = "sp_target_filter_query", indexes = {
|
@Table(name = "sp_target_filter_query", indexes = {
|
||||||
@Index(name = "sp_idx_target_filter_query_01", columnList = "tenant,name") }, uniqueConstraints = @UniqueConstraint(columnNames = {
|
@Index(name = "sp_idx_target_filter_query_01", columnList = "tenant,name") }, uniqueConstraints = @UniqueConstraint(columnNames = {
|
||||||
"name", "tenant" }, name = "uk_tenant_custom_filter_name") )
|
"name", "tenant" }, name = "uk_tenant_custom_filter_name"))
|
||||||
public class TargetFilterQuery extends TenantAwareBaseEntity {
|
public class TargetFilterQuery extends TenantAwareBaseEntity {
|
||||||
/**
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private static final long serialVersionUID = 7493966984413479089L;
|
private static final long serialVersionUID = 7493966984413479089L;
|
||||||
|
|
||||||
@Column(name = "name", length = 64)
|
@Column(name = "name", length = 64)
|
||||||
@@ -36,8 +32,7 @@ public class TargetFilterQuery extends TenantAwareBaseEntity {
|
|||||||
private String query;
|
private String query;
|
||||||
|
|
||||||
public TargetFilterQuery() {
|
public TargetFilterQuery() {
|
||||||
name = null;
|
// Default constructor for JPA.
|
||||||
query = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public TargetFilterQuery(final String name, final String query) {
|
public TargetFilterQuery(final String name, final String query) {
|
||||||
@@ -45,32 +40,18 @@ public class TargetFilterQuery extends TenantAwareBaseEntity {
|
|||||||
this.query = query;
|
this.query = query;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the name
|
|
||||||
*/
|
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param name
|
|
||||||
* the name to set
|
|
||||||
*/
|
|
||||||
public void setName(final String name) {
|
public void setName(final String name) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the query
|
|
||||||
*/
|
|
||||||
public String getQuery() {
|
public String getQuery() {
|
||||||
return query;
|
return query;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param query
|
|
||||||
* the query to set
|
|
||||||
*/
|
|
||||||
public void setQuery(final String query) {
|
public void setQuery(final String query) {
|
||||||
this.query = query;
|
this.query = query;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,19 +13,12 @@ import java.io.Serializable;
|
|||||||
/**
|
/**
|
||||||
* ID class of the {@link Target} which contains the
|
* ID class of the {@link Target} which contains the
|
||||||
* {@link Target#getControllerId()} and the {@link Target#getName()} in one
|
* {@link Target#getControllerId()} and the {@link Target#getName()} in one
|
||||||
* object. Often it's necessary to remeber the IDs of the {@link Target} and the
|
* object. Often it's necessary to remember the IDs of the {@link Target} and
|
||||||
* resolve for e.g. the UI the name of the target, this is very costly
|
* the resolve for e.g. the UI the name of the target, this is very costly
|
||||||
* operation, so it's much better if the ID and the name of the {@link Target}
|
* operation, so it's much better if the ID and the name of the {@link Target}
|
||||||
* is already in memory available.
|
* is already in memory available.
|
||||||
*
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class TargetIdName implements Serializable {
|
public class TargetIdName implements Serializable {
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
private final long targetId;
|
private final long targetId;
|
||||||
|
|||||||
@@ -22,10 +22,7 @@ import ru.yandex.qatools.allure.annotations.Stories;
|
|||||||
/**
|
/**
|
||||||
* Test class for {@link TargetFilterQueryManagement}.
|
* Test class for {@link TargetFilterQueryManagement}.
|
||||||
*
|
*
|
||||||
*
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@Features("Component Tests - Repository")
|
@Features("Component Tests - Repository")
|
||||||
@Stories("Target Filter Query Management")
|
@Stories("Target Filter Query Management")
|
||||||
public class TargetFilterQueryManagenmentTest extends AbstractIntegrationTest {
|
public class TargetFilterQueryManagenmentTest extends AbstractIntegrationTest {
|
||||||
|
|||||||
@@ -11,28 +11,34 @@ package org.eclipse.hawkbit.repository;
|
|||||||
import static org.fest.assertions.api.Assertions.assertThat;
|
import static org.fest.assertions.api.Assertions.assertThat;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.eclipse.hawkbit.AbstractIntegrationTest;
|
import org.eclipse.hawkbit.AbstractIntegrationTest;
|
||||||
import org.eclipse.hawkbit.TestDataUtil;
|
import org.eclipse.hawkbit.TestDataUtil;
|
||||||
import org.eclipse.hawkbit.repository.model.Action;
|
import org.eclipse.hawkbit.repository.model.Action;
|
||||||
import org.eclipse.hawkbit.repository.model.Action.Status;
|
import org.eclipse.hawkbit.repository.model.Action.Status;
|
||||||
import org.eclipse.hawkbit.repository.model.ActionStatus;
|
import org.eclipse.hawkbit.repository.model.ActionStatus;
|
||||||
import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity;
|
|
||||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||||
import org.eclipse.hawkbit.repository.model.Target;
|
import org.eclipse.hawkbit.repository.model.Target;
|
||||||
|
import org.eclipse.hawkbit.repository.model.TargetFilterQuery;
|
||||||
|
import org.eclipse.hawkbit.repository.model.TargetIdName;
|
||||||
import org.eclipse.hawkbit.repository.model.TargetTag;
|
import org.eclipse.hawkbit.repository.model.TargetTag;
|
||||||
import org.eclipse.hawkbit.repository.model.TargetUpdateStatus;
|
import org.eclipse.hawkbit.repository.model.TargetUpdateStatus;
|
||||||
|
import org.eclipse.hawkbit.repository.model.TenantAwareBaseEntity;
|
||||||
|
import org.eclipse.hawkbit.repository.specifications.TargetSpecifications;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import org.springframework.data.domain.PageRequest;
|
|
||||||
import org.springframework.data.domain.Slice;
|
import org.springframework.data.domain.Slice;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import com.google.common.primitives.Ints;
|
import com.google.common.primitives.Ints;
|
||||||
|
|
||||||
import ru.yandex.qatools.allure.annotations.Description;
|
import ru.yandex.qatools.allure.annotations.Description;
|
||||||
import ru.yandex.qatools.allure.annotations.Features;
|
import ru.yandex.qatools.allure.annotations.Features;
|
||||||
|
import ru.yandex.qatools.allure.annotations.Step;
|
||||||
import ru.yandex.qatools.allure.annotations.Stories;
|
import ru.yandex.qatools.allure.annotations.Stories;
|
||||||
|
|
||||||
@Features("Component Tests - Repository")
|
@Features("Component Tests - Repository")
|
||||||
@@ -40,152 +46,626 @@ import ru.yandex.qatools.allure.annotations.Stories;
|
|||||||
public class TargetManagementSearchTest extends AbstractIntegrationTest {
|
public class TargetManagementSearchTest extends AbstractIntegrationTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Description("Tests different parameter combinations for target search operations. That includes both the test itself as a count operation with the same filters.")
|
@Description("Tests different parameter combinations for target search operations. "
|
||||||
|
+ "That includes both the test itself, as a count operation with the same filters "
|
||||||
|
+ "and query definitions by RSQL (named and un-named).")
|
||||||
public void targetSearchWithVariousFilterCombinations() {
|
public void targetSearchWithVariousFilterCombinations() {
|
||||||
final TargetTag targTagA = tagManagement.createTargetTag(new TargetTag("TargTag-A"));
|
final TargetTag targTagX = tagManagement.createTargetTag(new TargetTag("TargTag-X"));
|
||||||
final TargetTag targTagB = tagManagement.createTargetTag(new TargetTag("TargTag-B"));
|
final TargetTag targTagY = tagManagement.createTargetTag(new TargetTag("TargTag-Y"));
|
||||||
final TargetTag targTagC = tagManagement.createTargetTag(new TargetTag("TargTag-C"));
|
final TargetTag targTagZ = tagManagement.createTargetTag(new TargetTag("TargTag-Z"));
|
||||||
final TargetTag targTagD = tagManagement.createTargetTag(new TargetTag("TargTag-D"));
|
final TargetTag targTagW = tagManagement.createTargetTag(new TargetTag("TargTag-W"));
|
||||||
|
|
||||||
// TODO kaizimmerm: test also installedDS (not only assignedDS)
|
|
||||||
|
|
||||||
final DistributionSet setA = TestDataUtil.generateDistributionSet("", softwareManagement,
|
final DistributionSet setA = TestDataUtil.generateDistributionSet("", softwareManagement,
|
||||||
distributionSetManagement);
|
distributionSetManagement);
|
||||||
|
|
||||||
|
final DistributionSet installedSet = TestDataUtil.generateDistributionSet("another", softwareManagement,
|
||||||
|
distributionSetManagement);
|
||||||
|
|
||||||
final String targetDsAIdPref = "targ-A";
|
final String targetDsAIdPref = "targ-A";
|
||||||
List<Target> targAs = targetManagement.createTargets(
|
List<Target> targAs = targetManagement.createTargets(
|
||||||
TestDataUtil.buildTargetFixtures(100, targetDsAIdPref, targetDsAIdPref.concat(" description")));
|
TestDataUtil.buildTargetFixtures(100, targetDsAIdPref, targetDsAIdPref.concat(" description")));
|
||||||
targAs = targetManagement.toggleTagAssignment(targAs, targTagA).getAssignedTargets();
|
targAs = targetManagement.toggleTagAssignment(targAs, targTagX).getAssignedTargets();
|
||||||
|
|
||||||
final String targetDsBIdPref = "targ-B";
|
final String targetDsBIdPref = "targ-B";
|
||||||
List<Target> targBs = targetManagement.createTargets(
|
List<Target> targBs = targetManagement.createTargets(
|
||||||
TestDataUtil.buildTargetFixtures(100, targetDsBIdPref, targetDsBIdPref.concat(" description")));
|
TestDataUtil.buildTargetFixtures(100, targetDsBIdPref, targetDsBIdPref.concat(" description")));
|
||||||
targBs = targetManagement.toggleTagAssignment(targBs, targTagB).getAssignedTargets();
|
targBs = targetManagement.toggleTagAssignment(targBs, targTagY).getAssignedTargets();
|
||||||
targBs = targetManagement.toggleTagAssignment(targBs, targTagD).getAssignedTargets();
|
targBs = targetManagement.toggleTagAssignment(targBs, targTagW).getAssignedTargets();
|
||||||
|
|
||||||
final String targetDsCIdPref = "targ-C";
|
final String targetDsCIdPref = "targ-C";
|
||||||
List<Target> targCs = targetManagement.createTargets(
|
List<Target> targCs = targetManagement.createTargets(
|
||||||
TestDataUtil.buildTargetFixtures(100, targetDsCIdPref, targetDsCIdPref.concat(" description")));
|
TestDataUtil.buildTargetFixtures(100, targetDsCIdPref, targetDsCIdPref.concat(" description")));
|
||||||
targCs = targetManagement.toggleTagAssignment(targCs, targTagC).getAssignedTargets();
|
targCs = targetManagement.toggleTagAssignment(targCs, targTagZ).getAssignedTargets();
|
||||||
targCs = targetManagement.toggleTagAssignment(targCs, targTagD).getAssignedTargets();
|
targCs = targetManagement.toggleTagAssignment(targCs, targTagW).getAssignedTargets();
|
||||||
|
|
||||||
final String targetDsDIdPref = "targ-D";
|
final String targetDsDIdPref = "targ-D";
|
||||||
final Iterable<Target> targDs = targetManagement.createTargets(
|
final List<Target> targDs = targetManagement.createTargets(
|
||||||
TestDataUtil.buildTargetFixtures(100, targetDsDIdPref, targetDsDIdPref.concat(" description")));
|
TestDataUtil.buildTargetFixtures(100, targetDsDIdPref, targetDsDIdPref.concat(" description")));
|
||||||
|
|
||||||
deploymentManagement.assignDistributionSet(setA.getId(), targCs.iterator().next().getControllerId());
|
final String assignedC = targCs.iterator().next().getControllerId();
|
||||||
deploymentManagement.assignDistributionSet(setA.getId(), targAs.iterator().next().getControllerId());
|
deploymentManagement.assignDistributionSet(setA.getId(), assignedC);
|
||||||
deploymentManagement.assignDistributionSet(setA.getId(), targBs.iterator().next().getControllerId());
|
final String assignedA = targAs.iterator().next().getControllerId();
|
||||||
|
deploymentManagement.assignDistributionSet(setA.getId(), assignedA);
|
||||||
|
final String assignedB = targBs.iterator().next().getControllerId();
|
||||||
|
deploymentManagement.assignDistributionSet(setA.getId(), assignedB);
|
||||||
|
final String installedC = targCs.iterator().next().getControllerId();
|
||||||
|
final Long actionId = deploymentManagement.assignDistributionSet(installedSet.getId(), assignedC).getActions()
|
||||||
|
.get(0);
|
||||||
|
|
||||||
final List<TargetUpdateStatus> unknown = new ArrayList<TargetUpdateStatus>();
|
// set one installed DS also
|
||||||
|
final Action action = deploymentManagement.findActionWithDetails(actionId);
|
||||||
|
action.setStatus(Status.FINISHED);
|
||||||
|
controllerManagament.addUpdateActionStatus(
|
||||||
|
new ActionStatus(action, Status.FINISHED, System.currentTimeMillis(), "message"), action);
|
||||||
|
deploymentManagement.assignDistributionSet(setA.getId(), installedC);
|
||||||
|
|
||||||
|
final List<TargetUpdateStatus> unknown = new ArrayList<>();
|
||||||
unknown.add(TargetUpdateStatus.UNKNOWN);
|
unknown.add(TargetUpdateStatus.UNKNOWN);
|
||||||
|
|
||||||
final List<TargetUpdateStatus> pending = new ArrayList<TargetUpdateStatus>();
|
final List<TargetUpdateStatus> pending = new ArrayList<>();
|
||||||
pending.add(TargetUpdateStatus.PENDING);
|
pending.add(TargetUpdateStatus.PENDING);
|
||||||
|
|
||||||
final List<TargetUpdateStatus> both = new ArrayList<TargetUpdateStatus>();
|
final List<TargetUpdateStatus> both = new ArrayList<>();
|
||||||
both.add(TargetUpdateStatus.UNKNOWN);
|
both.add(TargetUpdateStatus.UNKNOWN);
|
||||||
both.add(TargetUpdateStatus.PENDING);
|
both.add(TargetUpdateStatus.PENDING);
|
||||||
|
|
||||||
final PageRequest pageReq = new PageRequest(0, 500);
|
|
||||||
// try to find several targets with different filter settings
|
// try to find several targets with different filter settings
|
||||||
|
verifyThatRepositoryContains400Targets();
|
||||||
|
verifyThat200TargetsHaveTagD(targTagW, concat(targBs, targCs));
|
||||||
|
verifyThat100TargetsContainsGivenTextAndHaveTagAssigned(targTagY, targTagW, targBs);
|
||||||
|
verifyThat1TargetHasTagHasDescOrNameAndDs(targTagW, setA, targetManagement.findTargetByControllerID(assignedC));
|
||||||
|
verifyThat0TargetsWithTagAndDescOrNameHasDS(targTagW, setA);
|
||||||
|
verifyThat0TargetsWithNameOrdescAndDSHaveTag(targTagX, setA);
|
||||||
|
verifyThat3TargetsHaveDSAssigned(setA,
|
||||||
|
targetManagement.findTargetByControllerID(Lists.newArrayList(assignedA, assignedB, assignedC)));
|
||||||
|
verifyThat1TargetWithDescOrNameHasDS(setA, targetManagement.findTargetByControllerID(assignedA));
|
||||||
|
List<Target> expected = concat(targAs, targBs, targCs, targDs);
|
||||||
|
expected.removeAll(
|
||||||
|
targetManagement.findTargetByControllerID(Lists.newArrayList(assignedA, assignedB, assignedC)));
|
||||||
|
verifyThat397TargetsAreInStatusUnknown(unknown, expected);
|
||||||
|
expected = concat(targBs, targCs);
|
||||||
|
expected.removeAll(targetManagement.findTargetByControllerID(Lists.newArrayList(assignedB, assignedC)));
|
||||||
|
verifyThat198TargetsAreInStatusUnknownAndHaveGivenTags(targTagY, targTagW, unknown, expected);
|
||||||
|
verfyThat0TargetsAreInStatusUnknownAndHaveDSAssigned(setA, unknown);
|
||||||
|
expected = concat(targAs);
|
||||||
|
expected.remove(targetManagement.findTargetByControllerID(assignedA));
|
||||||
|
verifyThat99TargetsWithNameOrDescriptionAreInGivenStatus(unknown, expected);
|
||||||
|
expected = concat(targBs);
|
||||||
|
expected.remove(targetManagement.findTargetByControllerID(assignedB));
|
||||||
|
verifyThat99TargetsWithGivenNameOrDescAndTagAreInStatusUnknown(targTagW, unknown, expected);
|
||||||
|
verifyThat3TargetsAreInStatusPending(pending,
|
||||||
|
targetManagement.findTargetByControllerID(Lists.newArrayList(assignedA, assignedB, assignedC)));
|
||||||
|
verifyThat3TargetsWithGivenDSAreInPending(setA, pending,
|
||||||
|
targetManagement.findTargetByControllerID(Lists.newArrayList(assignedA, assignedB, assignedC)));
|
||||||
|
verifyThat1TargetWithGivenNameOrDescAndDSIsInPending(setA, pending,
|
||||||
|
targetManagement.findTargetByControllerID(assignedA));
|
||||||
|
verifyThat1TargetWithGivenNameOrDescAndTagAndDSIsInPending(targTagW, setA, pending,
|
||||||
|
targetManagement.findTargetByControllerID(assignedB));
|
||||||
|
verifyThat2TargetsWithGivenTagAndDSIsInPending(targTagW, setA, pending,
|
||||||
|
targetManagement.findTargetByControllerID(Lists.newArrayList(assignedB, assignedC)));
|
||||||
|
verifyThat2TargetsWithGivenTagAreInPending(targTagW, pending,
|
||||||
|
targetManagement.findTargetByControllerID(Lists.newArrayList(assignedB, assignedC)));
|
||||||
|
verifyThat200targetsWithGivenTagAreInStatusPendingorUnknown(targTagW, both, concat(targBs, targCs));
|
||||||
|
verfiyThat1TargetAIsInStatusPendingAndHasDSInstalled(installedSet, pending,
|
||||||
|
targetManagement.findTargetByControllerID(installedC));
|
||||||
|
}
|
||||||
|
|
||||||
// TODO kaizimmerm: comment and check also the content itself, not only
|
@Step
|
||||||
// the numbers
|
private void verfiyThat1TargetAIsInStatusPendingAndHasDSInstalled(final DistributionSet installedSet,
|
||||||
// (containsOnly)
|
final List<TargetUpdateStatus> pending, final Target expected) {
|
||||||
assertThat(targetManagement.countTargetsAll()).isEqualTo(400);
|
final TargetIdName expectedIdName = convertToIdName(expected);
|
||||||
|
final String query = "updatestatus==pending and installedds.name==" + installedSet.getName();
|
||||||
|
|
||||||
assertThat(targetManagement.findTargetByFilters(pageReq, null, null, null, Boolean.FALSE, targTagD.getName())
|
assertThat(targetManagement
|
||||||
.getNumberOfElements()).isEqualTo(200).isEqualTo(Ints.saturatedCast(
|
.findTargetByFilters(pageReq, pending, null, installedSet.getId(), Boolean.FALSE, new String[0])
|
||||||
targetManagement.countTargetByFilters(null, null, null, Boolean.FALSE, targTagD.getName())));
|
.getContent()).as("has number of elements").hasSize(1)
|
||||||
|
.as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(pending, null,
|
||||||
|
installedSet.getId(), Boolean.FALSE, new String[0])))
|
||||||
|
.as("and contains the following elements").containsExactly(expected)
|
||||||
|
.as("and filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent())
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent());
|
||||||
|
|
||||||
Slice<Target> x = targetManagement.findTargetByFilters(pageReq, null, "%targ-B%", null, Boolean.FALSE,
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, null, installedSet.getId(),
|
||||||
targTagB.getName(), targTagD.getName());
|
Boolean.FALSE, new String[0])).as("has number of elements").hasSize(1)
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(100).isEqualTo(Ints.saturatedCast(targetManagement
|
.as("and contains the following elements").containsExactly(expectedIdName)
|
||||||
.countTargetByFilters(null, "%targ-B%", null, Boolean.FALSE, targTagB.getName(), targTagD.getName())));
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findAllTargetIdsByTargetFilterQuery(pageReq, new TargetFilterQuery("test", query)));
|
||||||
x = targetManagement.findTargetByFilters(pageReq, null, "%targ-C%", setA.getId(), Boolean.FALSE,
|
|
||||||
targTagD.getName());
|
}
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(1).isEqualTo(Ints.saturatedCast(targetManagement
|
|
||||||
.countTargetByFilters(null, "%targ-C%", setA.getId(), Boolean.FALSE, targTagD.getName())));
|
@Step
|
||||||
|
private void verifyThat200targetsWithGivenTagAreInStatusPendingorUnknown(final TargetTag targTagW,
|
||||||
x = targetManagement.findTargetByFilters(pageReq, null, "%targ-A%", setA.getId(), Boolean.FALSE,
|
final List<TargetUpdateStatus> both, final List<Target> expected) {
|
||||||
targTagD.getName());
|
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(0).isEqualTo(Ints.saturatedCast(targetManagement
|
|
||||||
.countTargetByFilters(null, "%targ-A%", setA.getId(), Boolean.FALSE, targTagD.getName())));
|
final String query = "(updatestatus==pending or updatestatus==unknown) and tag==" + targTagW.getName();
|
||||||
|
|
||||||
x = targetManagement.findTargetByFilters(pageReq, null, "%targ-C%", setA.getId(), Boolean.FALSE,
|
assertThat(targetManagement.findTargetByFilters(pageReq, both, null, null, Boolean.FALSE, targTagW.getName())
|
||||||
targTagA.getName());
|
.getContent()).as("has number of elements").hasSize(200)
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(0).isEqualTo(Ints.saturatedCast(targetManagement
|
.as("that number is also returned by count query")
|
||||||
.countTargetByFilters(null, "%targ-C%", setA.getId(), Boolean.FALSE, targTagA.getName())));
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(both, null, null,
|
||||||
|
Boolean.FALSE, targTagW.getName())))
|
||||||
x = targetManagement.findTargetByFilters(pageReq, null, null, setA.getId(), Boolean.FALSE, null);
|
.as("and contains the following elements").containsAll(expected)
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(3).isEqualTo(Ints
|
.as("and filter query returns the same result")
|
||||||
.saturatedCast(targetManagement.countTargetByFilters(null, null, setA.getId(), Boolean.FALSE, null)));
|
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent())
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
x = targetManagement.findTargetByFilters(pageReq, null, "%targ-A%", setA.getId(), Boolean.FALSE, null);
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent());
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(1).isEqualTo(Ints.saturatedCast(
|
|
||||||
targetManagement.countTargetByFilters(null, "%targ-A%", setA.getId(), Boolean.FALSE, null)));
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, both, null, null, Boolean.FALSE,
|
||||||
|
targTagW.getName())).as("has number of elements").hasSize(200).as("and contains the following elements")
|
||||||
x = targetManagement.findTargetByFilters(pageReq, unknown, null, null, Boolean.FALSE, null);
|
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(397).isEqualTo(
|
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq,
|
||||||
Ints.saturatedCast(targetManagement.countTargetByFilters(unknown, null, null, Boolean.FALSE, null)));
|
new TargetFilterQuery("test", query)));
|
||||||
|
}
|
||||||
x = targetManagement.findTargetByFilters(pageReq, unknown, null, null, Boolean.FALSE, targTagB.getName(),
|
|
||||||
targTagD.getName());
|
private static List<TargetIdName> convertToIdNames(final List<Target> expected) {
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(198).isEqualTo(Ints.saturatedCast(targetManagement
|
return expected.stream()
|
||||||
.countTargetByFilters(unknown, null, null, Boolean.FALSE, targTagB.getName(), targTagD.getName())));
|
.map(target -> new TargetIdName(target.getId(), target.getControllerId(), target.getName()))
|
||||||
|
.collect(Collectors.toList());
|
||||||
x = targetManagement.findTargetByFilters(pageReq, unknown, null, setA.getId(), Boolean.FALSE, null);
|
}
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(0).isEqualTo(Ints.saturatedCast(
|
|
||||||
targetManagement.countTargetByFilters(unknown, null, setA.getId(), Boolean.FALSE, null)));
|
private static TargetIdName convertToIdName(final Target target) {
|
||||||
|
return new TargetIdName(target.getId(), target.getControllerId(), target.getName());
|
||||||
x = targetManagement.findTargetByFilters(pageReq, unknown, "%targ-A%", null, Boolean.FALSE, null);
|
}
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(99).isEqualTo(Ints
|
|
||||||
.saturatedCast(targetManagement.countTargetByFilters(unknown, "%targ-A%", null, Boolean.FALSE, null)));
|
@Step
|
||||||
|
private void verifyThat2TargetsWithGivenTagAreInPending(final TargetTag targTagW,
|
||||||
x = targetManagement.findTargetByFilters(pageReq, unknown, "%targ-B%", null, Boolean.FALSE, targTagD.getName());
|
final List<TargetUpdateStatus> pending, final List<Target> expected) {
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(99).isEqualTo(Ints.saturatedCast(
|
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||||
targetManagement.countTargetByFilters(unknown, "%targ-B%", null, Boolean.FALSE, targTagD.getName())));
|
final String query = "updatestatus==pending and tag==" + targTagW.getName();
|
||||||
|
|
||||||
x = targetManagement.findTargetByFilters(pageReq, unknown, null, null, Boolean.FALSE, targTagD.getName());
|
assertThat(targetManagement.findTargetByFilters(pageReq, pending, null, null, Boolean.FALSE, targTagW.getName())
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(198).isEqualTo(Ints.saturatedCast(
|
.getContent()).as("has number of elements").hasSize(2)
|
||||||
targetManagement.countTargetByFilters(unknown, null, null, Boolean.FALSE, targTagD.getName())));
|
.as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(pending, null, null,
|
||||||
x = targetManagement.findTargetByFilters(pageReq, pending, null, null, Boolean.FALSE, null);
|
Boolean.FALSE, targTagW.getName())))
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(3).isEqualTo(
|
.as("and contains the following elements").containsAll(expected)
|
||||||
Ints.saturatedCast(targetManagement.countTargetByFilters(pending, null, null, Boolean.FALSE, null)));
|
.as("and filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent())
|
||||||
x = targetManagement.findTargetByFilters(pageReq, pending, null, setA.getId(), Boolean.FALSE, null);
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(3).isEqualTo(Ints.saturatedCast(
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent());
|
||||||
targetManagement.countTargetByFilters(pending, null, setA.getId(), Boolean.FALSE, null)));
|
|
||||||
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, null, null, Boolean.FALSE,
|
||||||
x = targetManagement.findTargetByFilters(pageReq, pending, "%targ-A%", setA.getId(), Boolean.FALSE, null);
|
targTagW.getName())).as("has number of elements").hasSize(2).as("and contains the following elements")
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(1).isEqualTo(Ints.saturatedCast(
|
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||||
targetManagement.countTargetByFilters(pending, "%targ-A%", setA.getId(), Boolean.FALSE, null)));
|
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq,
|
||||||
|
new TargetFilterQuery("test", query)));
|
||||||
x = targetManagement.findTargetByFilters(pageReq, pending, "%targ-B%", setA.getId(), Boolean.FALSE,
|
}
|
||||||
targTagD.getName());
|
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(1).isEqualTo(Ints.saturatedCast(targetManagement
|
@Step
|
||||||
.countTargetByFilters(pending, "%targ-B%", setA.getId(), Boolean.FALSE, targTagD.getName())));
|
private void verifyThat2TargetsWithGivenTagAndDSIsInPending(final TargetTag targTagW, final DistributionSet setA,
|
||||||
|
final List<TargetUpdateStatus> pending, final List<Target> expected) {
|
||||||
x = targetManagement.findTargetByFilters(pageReq, pending, null, setA.getId(), Boolean.FALSE,
|
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||||
targTagD.getName());
|
final String query = "updatestatus==pending and (assignedds.name==" + setA.getName() + " or installedds.name=="
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(2).isEqualTo(Ints.saturatedCast(
|
+ setA.getName() + ") and tag==" + targTagW.getName();
|
||||||
targetManagement.countTargetByFilters(pending, null, setA.getId(), Boolean.FALSE, targTagD.getName())));
|
|
||||||
|
assertThat(targetManagement
|
||||||
x = targetManagement.findTargetByFilters(pageReq, pending, null, null, Boolean.FALSE, targTagD.getName());
|
.findTargetByFilters(pageReq, pending, null, setA.getId(), Boolean.FALSE, targTagW.getName())
|
||||||
assertThat(x.getNumberOfElements()).isEqualTo(2).isEqualTo(Ints.saturatedCast(
|
.getContent()).as("has number of elements").hasSize(2)
|
||||||
targetManagement.countTargetByFilters(pending, null, null, Boolean.FALSE, targTagD.getName())));
|
.as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(pending, null, setA.getId(),
|
||||||
// Both status: 2 pending and 198 unknown
|
Boolean.FALSE, targTagW.getName())))
|
||||||
assertThat(targetManagement.findTargetByFilters(pageReq, both, null, null, Boolean.FALSE, targTagD.getName())
|
.as("and contains the following elements").containsAll(expected)
|
||||||
.getNumberOfElements()).isEqualTo(200).isEqualTo(Ints.saturatedCast(
|
.as("and filter query returns the same result")
|
||||||
targetManagement.countTargetByFilters(both, null, null, Boolean.FALSE, targTagD.getName())));
|
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent())
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent());
|
||||||
|
|
||||||
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, null, null, Boolean.FALSE,
|
||||||
|
targTagW.getName())).as("has number of elements").hasSize(2).as("and contains the following elements")
|
||||||
|
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq,
|
||||||
|
new TargetFilterQuery("test", query)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
private void verifyThat1TargetWithGivenNameOrDescAndTagAndDSIsInPending(final TargetTag targTagW,
|
||||||
|
final DistributionSet setA, final List<TargetUpdateStatus> pending, final Target expected) {
|
||||||
|
final TargetIdName expectedIdName = convertToIdName(expected);
|
||||||
|
final String query = "updatestatus==pending and (assignedds.name==" + setA.getName() + " or installedds.name=="
|
||||||
|
+ setA.getName() + ") and (name==*targ-B* or description==*targ-B*) and tag==" + targTagW.getName();
|
||||||
|
|
||||||
|
assertThat(targetManagement
|
||||||
|
.findTargetByFilters(pageReq, pending, "%targ-B%", setA.getId(), Boolean.FALSE, targTagW.getName())
|
||||||
|
.getContent()).as("has number of elements").hasSize(1)
|
||||||
|
.as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(pending, "%targ-B%",
|
||||||
|
setA.getId(), Boolean.FALSE, targTagW.getName())))
|
||||||
|
.as("and contains the following elements").containsExactly(expected)
|
||||||
|
.as("and filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent())
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent());
|
||||||
|
|
||||||
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, "%targ-B%", setA.getId(), Boolean.FALSE,
|
||||||
|
targTagW.getName())).as("has number of elements").hasSize(1).as("and contains the following elements")
|
||||||
|
.containsExactly(expectedIdName).as("and NAMED filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq,
|
||||||
|
new TargetFilterQuery("test", query)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
private void verifyThat1TargetWithGivenNameOrDescAndDSIsInPending(final DistributionSet setA,
|
||||||
|
final List<TargetUpdateStatus> pending, final Target expected) {
|
||||||
|
final TargetIdName expectedIdName = convertToIdName(expected);
|
||||||
|
final String query = "updatestatus==pending and (assignedds.name==" + setA.getName() + " or installedds.name=="
|
||||||
|
+ setA.getName() + ") and (name==*targ-A* or description==*targ-A*)";
|
||||||
|
|
||||||
|
assertThat(targetManagement
|
||||||
|
.findTargetByFilters(pageReq, pending, "%targ-A%", setA.getId(), Boolean.FALSE, new String[0])
|
||||||
|
.getContent()).as("has number of elements").hasSize(1)
|
||||||
|
.as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(pending, "%targ-A%",
|
||||||
|
setA.getId(), Boolean.FALSE, new String[0])))
|
||||||
|
.as("and contains the following elements").containsExactly(expected)
|
||||||
|
.as("and filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent())
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent());
|
||||||
|
|
||||||
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, "%targ-A%", setA.getId(), Boolean.FALSE,
|
||||||
|
new String[0])).as("has number of elements").hasSize(1).as("and contains the following elements")
|
||||||
|
.containsExactly(expectedIdName).as("and NAMED filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq,
|
||||||
|
new TargetFilterQuery("test", query)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
private void verifyThat3TargetsWithGivenDSAreInPending(final DistributionSet setA,
|
||||||
|
final List<TargetUpdateStatus> pending, final List<Target> expected) {
|
||||||
|
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||||
|
final String query = "updatestatus==pending and (assignedds.name==" + setA.getName() + " or installedds.name=="
|
||||||
|
+ setA.getName() + ")";
|
||||||
|
|
||||||
|
assertThat(targetManagement
|
||||||
|
.findTargetByFilters(pageReq, pending, null, setA.getId(), Boolean.FALSE, new String[0]).getContent())
|
||||||
|
.as("has number of elements").hasSize(3).as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(pending, null, setA.getId(),
|
||||||
|
Boolean.FALSE, new String[0])))
|
||||||
|
.as("and contains the following elements").containsAll(expected)
|
||||||
|
.as("and filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent())
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent());
|
||||||
|
|
||||||
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, pending, null, setA.getId(), Boolean.FALSE,
|
||||||
|
new String[0])).as("has number of elements").hasSize(3).as("and contains the following elements")
|
||||||
|
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq,
|
||||||
|
new TargetFilterQuery("test", query)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
private void verifyThat3TargetsAreInStatusPending(final List<TargetUpdateStatus> pending,
|
||||||
|
final List<Target> expected) {
|
||||||
|
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||||
|
final String query = "updatestatus==pending";
|
||||||
|
|
||||||
|
assertThat(targetManagement.findTargetByFilters(pageReq, pending, null, null, Boolean.FALSE, new String[0])
|
||||||
|
.getContent()).as("has number of elements").hasSize(3)
|
||||||
|
.as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(pending, null, null,
|
||||||
|
Boolean.FALSE, new String[0])))
|
||||||
|
.as("and contains the following elements").containsAll(expected)
|
||||||
|
.as("and filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent())
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent());
|
||||||
|
|
||||||
|
assertThat(
|
||||||
|
targetManagement.findAllTargetIdsByFilters(pageReq, pending, null, null, Boolean.FALSE, new String[0]))
|
||||||
|
.as("has number of elements").hasSize(3).as("and contains the following elements")
|
||||||
|
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq,
|
||||||
|
new TargetFilterQuery("test", query)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
private void verifyThat99TargetsWithGivenNameOrDescAndTagAreInStatusUnknown(final TargetTag targTagW,
|
||||||
|
final List<TargetUpdateStatus> unknown, final List<Target> expected) {
|
||||||
|
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||||
|
final String query = "updatestatus==unknown and (name==*targ-B* or description==*targ-B*) and tag=="
|
||||||
|
+ targTagW.getName();
|
||||||
|
|
||||||
|
assertThat(targetManagement
|
||||||
|
.findTargetByFilters(pageReq, unknown, "%targ-B%", null, Boolean.FALSE, targTagW.getName())
|
||||||
|
.getContent()).as("has number of elements").hasSize(99)
|
||||||
|
.as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(unknown, "%targ-B%", null,
|
||||||
|
Boolean.FALSE, targTagW.getName())))
|
||||||
|
.as("and contains the following elements").containsAll(expected)
|
||||||
|
.as("and filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent())
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent());
|
||||||
|
|
||||||
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, unknown, "%targ-B%", null, Boolean.FALSE,
|
||||||
|
targTagW.getName())).as("has number of elements").hasSize(99).as("and contains the following elements")
|
||||||
|
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq,
|
||||||
|
new TargetFilterQuery("test", query)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
private void verifyThat99TargetsWithNameOrDescriptionAreInGivenStatus(final List<TargetUpdateStatus> unknown,
|
||||||
|
final List<Target> expected) {
|
||||||
|
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||||
|
final String query = "updatestatus==unknown and (name==*targ-A* or description==*targ-A*)";
|
||||||
|
|
||||||
|
assertThat(targetManagement
|
||||||
|
.findTargetByFilters(pageReq, unknown, "%targ-A%", null, Boolean.FALSE, new String[0]).getContent())
|
||||||
|
.as("has number of elements").hasSize(99).as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(unknown, "%targ-A%", null,
|
||||||
|
Boolean.FALSE, new String[0])))
|
||||||
|
.as("and contains the following elements").containsAll(expected)
|
||||||
|
.as("and filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent())
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent());
|
||||||
|
|
||||||
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, unknown, "%targ-A%", null, Boolean.FALSE,
|
||||||
|
new String[0])).as("has number of elements").hasSize(99).as("and contains the following elements")
|
||||||
|
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq,
|
||||||
|
new TargetFilterQuery("test", query)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
private void verfyThat0TargetsAreInStatusUnknownAndHaveDSAssigned(final DistributionSet setA,
|
||||||
|
final List<TargetUpdateStatus> unknown) {
|
||||||
|
final String query = "updatestatus==unknown and (assignedds.name==" + setA.getName() + " or installedds.name=="
|
||||||
|
+ setA.getName() + ")";
|
||||||
|
|
||||||
|
assertThat(targetManagement
|
||||||
|
.findTargetByFilters(pageReq, unknown, null, setA.getId(), Boolean.FALSE, new String[0]).getContent())
|
||||||
|
.as("has number of elements").hasSize(0).as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(unknown, null, setA.getId(),
|
||||||
|
Boolean.FALSE, new String[0])))
|
||||||
|
.as("and filter query returns the same result")
|
||||||
|
.hasSize(targetManagement.findTargetsAll(query, pageReq).getContent().size())
|
||||||
|
.as("and NAMED filter query returns the same result").hasSize(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent().size());
|
||||||
|
|
||||||
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, unknown, null, setA.getId(), Boolean.FALSE,
|
||||||
|
new String[0])).as("has number of elements").hasSize(0)
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findAllTargetIdsByTargetFilterQuery(pageReq, new TargetFilterQuery("test", query)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
private void verifyThat198TargetsAreInStatusUnknownAndHaveGivenTags(final TargetTag targTagY,
|
||||||
|
final TargetTag targTagW, final List<TargetUpdateStatus> unknown, final List<Target> expected) {
|
||||||
|
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||||
|
final String query = "updatestatus==unknown and (tag==" + targTagY.getName() + " or tag==" + targTagW.getName()
|
||||||
|
+ ")";
|
||||||
|
|
||||||
|
assertThat(targetManagement.findTargetByFilters(pageReq, unknown, null, null, Boolean.FALSE, targTagY.getName(),
|
||||||
|
targTagW.getName()).getContent()).as("has number of elements").hasSize(198)
|
||||||
|
.as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(unknown, null, null,
|
||||||
|
Boolean.FALSE, targTagY.getName(), targTagW.getName())))
|
||||||
|
.as("and contains the following elements").containsAll(expected)
|
||||||
|
.as("and filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent())
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent());
|
||||||
|
|
||||||
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, unknown, null, null, Boolean.FALSE,
|
||||||
|
targTagY.getName(), targTagW.getName())).as("has number of elements").hasSize(198)
|
||||||
|
.as("and contains the following elements").containsAll(expectedIdNames)
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findAllTargetIdsByTargetFilterQuery(pageReq, new TargetFilterQuery("test", query)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
private void verifyThat397TargetsAreInStatusUnknown(final List<TargetUpdateStatus> unknown,
|
||||||
|
final List<Target> expected) {
|
||||||
|
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||||
|
final String query = "updatestatus==unknown";
|
||||||
|
|
||||||
|
assertThat(targetManagement.findTargetByFilters(pageReq, unknown, null, null, Boolean.FALSE, new String[0])
|
||||||
|
.getContent()).as("has number of elements").hasSize(397)
|
||||||
|
.as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(unknown, null, null,
|
||||||
|
Boolean.FALSE, new String[0])))
|
||||||
|
.as("and contains the following elements").containsAll(expected)
|
||||||
|
.as("and filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent())
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent());
|
||||||
|
|
||||||
|
assertThat(
|
||||||
|
targetManagement.findAllTargetIdsByFilters(pageReq, unknown, null, null, Boolean.FALSE, new String[0]))
|
||||||
|
.as("has number of elements").hasSize(397).as("and contains the following elements")
|
||||||
|
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq,
|
||||||
|
new TargetFilterQuery("test", query)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
private void verifyThat1TargetWithDescOrNameHasDS(final DistributionSet setA, final Target expected) {
|
||||||
|
final TargetIdName expectedIdName = convertToIdName(expected);
|
||||||
|
final String query = "(name==*targ-A* or description==*targ-A*) and (assignedds.name==" + setA.getName()
|
||||||
|
+ " or installedds.name==" + setA.getName() + ")";
|
||||||
|
|
||||||
|
assertThat(targetManagement
|
||||||
|
.findTargetByFilters(pageReq, null, "%targ-A%", setA.getId(), Boolean.FALSE, new String[0])
|
||||||
|
.getContent()).as("has number of elements").hasSize(1)
|
||||||
|
.as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(null, "%targ-A%",
|
||||||
|
setA.getId(), Boolean.FALSE, new String[0])))
|
||||||
|
.as("and contains the following elements").containsExactly(expected)
|
||||||
|
.as("and filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent())
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent());
|
||||||
|
|
||||||
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, "%targ-A%", setA.getId(), Boolean.FALSE,
|
||||||
|
new String[0])).as("has number of elements").hasSize(1).as("and contains the following elements")
|
||||||
|
.containsExactly(expectedIdName).as("and NAMED filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq,
|
||||||
|
new TargetFilterQuery("test", query)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
private void verifyThat3TargetsHaveDSAssigned(final DistributionSet setA, final List<Target> expected) {
|
||||||
|
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||||
|
final String query = "assignedds.name==" + setA.getName() + " or installedds.name==" + setA.getName();
|
||||||
|
|
||||||
|
assertThat(targetManagement.findTargetByFilters(pageReq, null, null, setA.getId(), Boolean.FALSE, new String[0])
|
||||||
|
.getContent()).as("has number of elements").hasSize(3)
|
||||||
|
.as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(null, null, setA.getId(),
|
||||||
|
Boolean.FALSE, new String[0])))
|
||||||
|
.as("and contains the following elements").containsAll(expected)
|
||||||
|
.as("and filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent())
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent());
|
||||||
|
|
||||||
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, null, setA.getId(), Boolean.FALSE,
|
||||||
|
new String[0])).as("has number of elements").hasSize(3).as("and contains the following elements")
|
||||||
|
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq,
|
||||||
|
new TargetFilterQuery("test", query)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
private void verifyThat0TargetsWithNameOrdescAndDSHaveTag(final TargetTag targTagX, final DistributionSet setA) {
|
||||||
|
final String query = "(name==*targ-C* or description==*targ-C*) and tag==" + targTagX.getName()
|
||||||
|
+ " and (assignedds.name==" + setA.getName() + " or installedds.name==" + setA.getName() + ")";
|
||||||
|
assertThat(targetManagement
|
||||||
|
.findTargetByFilters(pageReq, null, "%targ-C%", setA.getId(), Boolean.FALSE, targTagX.getName())
|
||||||
|
.getContent()).as("has number of elements").hasSize(0)
|
||||||
|
.as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(null, "%targ-C%",
|
||||||
|
setA.getId(), Boolean.FALSE, targTagX.getName())))
|
||||||
|
.as("and filter query returns the same result")
|
||||||
|
.hasSize(targetManagement.findTargetsAll(query, pageReq).getContent().size())
|
||||||
|
.as("and NAMED filter query returns the same result").hasSize(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent().size());
|
||||||
|
|
||||||
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, "%targ-C%", setA.getId(), Boolean.FALSE,
|
||||||
|
targTagX.getName())).as("has number of elements").hasSize(0)
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findAllTargetIdsByTargetFilterQuery(pageReq, new TargetFilterQuery("test", query)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
private void verifyThat0TargetsWithTagAndDescOrNameHasDS(final TargetTag targTagW, final DistributionSet setA) {
|
||||||
|
final String query = "(name==*targ-A* or description==*targ-A*) and tag==" + targTagW.getName()
|
||||||
|
+ " and (assignedds.name==" + setA.getName() + " or installedds.name==" + setA.getName() + ")";
|
||||||
|
assertThat(targetManagement
|
||||||
|
.findTargetByFilters(pageReq, null, "%targ-A%", setA.getId(), Boolean.FALSE, targTagW.getName())
|
||||||
|
.getContent()).as("has number of elements").hasSize(0)
|
||||||
|
.as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(null, "%targ-A%",
|
||||||
|
setA.getId(), Boolean.FALSE, targTagW.getName())))
|
||||||
|
.as("and filter query returns the same result")
|
||||||
|
.hasSize(targetManagement.findTargetsAll(query, pageReq).getContent().size())
|
||||||
|
.as("and NAMED filter query returns the same result").hasSize(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent().size());
|
||||||
|
|
||||||
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, "%targ-A%", setA.getId(), Boolean.FALSE,
|
||||||
|
targTagW.getName())).as("has number of elements").hasSize(0)
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findAllTargetIdsByTargetFilterQuery(pageReq, new TargetFilterQuery("test", query)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
private void verifyThat1TargetHasTagHasDescOrNameAndDs(final TargetTag targTagW, final DistributionSet setA,
|
||||||
|
final Target expected) {
|
||||||
|
final TargetIdName expectedIdName = convertToIdName(expected);
|
||||||
|
final String query = "(name==*targ-c* or description==*targ-C*) and tag==" + targTagW.getName()
|
||||||
|
+ " and (assignedds.name==" + setA.getName() + " or installedds.name==" + setA.getName() + ")";
|
||||||
|
assertThat(targetManagement
|
||||||
|
.findTargetByFilters(pageReq, null, "%targ-C%", setA.getId(), Boolean.FALSE, targTagW.getName())
|
||||||
|
.getContent()).as("has number of elements").hasSize(1)
|
||||||
|
.as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(null, "%targ-C%",
|
||||||
|
setA.getId(), Boolean.FALSE, targTagW.getName())))
|
||||||
|
.as("and contains the following elements").containsExactly(expected)
|
||||||
|
.as("and filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent())
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent());
|
||||||
|
|
||||||
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, "%targ-C%", setA.getId(), Boolean.FALSE,
|
||||||
|
targTagW.getName())).as("has number of elements").hasSize(1).as("and contains the following elements")
|
||||||
|
.containsExactly(expectedIdName).as("and NAMED filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq,
|
||||||
|
new TargetFilterQuery("test", query)));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
private void verifyThat100TargetsContainsGivenTextAndHaveTagAssigned(final TargetTag targTagY,
|
||||||
|
final TargetTag targTagW, final List<Target> expected) {
|
||||||
|
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||||
|
final String query = "(name==*targ-B* or description==*targ-B*) and (tag==" + targTagY.getName() + " or tag=="
|
||||||
|
+ targTagW.getName() + ")";
|
||||||
|
assertThat(targetManagement.findTargetByFilters(pageReq, null, "%targ-B%", null, Boolean.FALSE,
|
||||||
|
targTagY.getName(), targTagW.getName()).getContent()).as("has number of elements").hasSize(100)
|
||||||
|
.as("that number is also returned by count query")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(null, "%targ-B%", null,
|
||||||
|
Boolean.FALSE, targTagY.getName(), targTagW.getName())))
|
||||||
|
.as("and contains the following elements").containsAll(expected)
|
||||||
|
.as("and filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent())
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent());
|
||||||
|
|
||||||
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, "%targ-B%", null, Boolean.FALSE,
|
||||||
|
targTagY.getName(), targTagW.getName())).as("has number of elements").hasSize(100)
|
||||||
|
.as("and contains the following elements").containsAll(expectedIdNames)
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findAllTargetIdsByTargetFilterQuery(pageReq, new TargetFilterQuery("test", query)));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@SafeVarargs
|
||||||
|
private final List<Target> concat(final List<Target>... targets) {
|
||||||
|
final List<Target> result = new ArrayList<>();
|
||||||
|
Arrays.asList(targets).forEach(result::addAll);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
private void verifyThat200TargetsHaveTagD(final TargetTag targTagD, final List<Target> expected) {
|
||||||
|
final List<TargetIdName> expectedIdNames = convertToIdNames(expected);
|
||||||
|
final String query = "tag==" + targTagD.getName();
|
||||||
|
assertThat(targetManagement.findTargetByFilters(pageReq, null, null, null, Boolean.FALSE, targTagD.getName())
|
||||||
|
.getContent()).as("Expected number of results is").hasSize(200)
|
||||||
|
.as("and is expected number of results is equal to ")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetByFilters(null, null, null,
|
||||||
|
Boolean.FALSE, targTagD.getName())))
|
||||||
|
.as("and contains the following elements").containsAll(expected)
|
||||||
|
.as("and filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findTargetsAll(query, pageReq).getContent())
|
||||||
|
.as("and NAMED filter query returns the same result").containsAll(targetManagement
|
||||||
|
.findTargetsAll(new TargetFilterQuery("test", query), pageReq).getContent());
|
||||||
|
|
||||||
|
assertThat(targetManagement.findAllTargetIdsByFilters(pageReq, null, null, null, Boolean.FALSE,
|
||||||
|
targTagD.getName())).as("has number of elements").hasSize(200).as("and contains the following elements")
|
||||||
|
.containsAll(expectedIdNames).as("and NAMED filter query returns the same result")
|
||||||
|
.containsAll(targetManagement.findAllTargetIdsByTargetFilterQuery(pageReq,
|
||||||
|
new TargetFilterQuery("test", query)));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Step
|
||||||
|
private void verifyThatRepositoryContains400Targets() {
|
||||||
|
assertThat(targetManagement.findTargetByFilters(pageReq, null, null, null, null, new String[0]).getContent())
|
||||||
|
.as("Overall we expect that many targets in the repository").hasSize(400)
|
||||||
|
.as("which is also reflected by repository count")
|
||||||
|
.hasSize(Ints.saturatedCast(targetManagement.countTargetsAll()))
|
||||||
|
.as("which is also reflected by call without specification")
|
||||||
|
.containsAll(targetManagement.findTargetsAll(pageReq).getContent());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO kaizimmerm: add filter tests
|
|
||||||
@Test
|
@Test
|
||||||
@Description("Tests the correct order of targets based on selected distribution set. The system expects to have an order based on installed, assigned DS.")
|
@Description("Tests the correct order of targets based on selected distribution set. The system expects to have an order based on installed, assigned DS.")
|
||||||
public void targetSearchWithVariousFilterCombinationsAndOrderByDistributionSet() {
|
public void targetSearchWithVariousFilterCombinationsAndOrderByDistributionSet() {
|
||||||
@@ -205,7 +685,7 @@ public class TargetManagementSearchTest extends AbstractIntegrationTest {
|
|||||||
targInstalled = sendUpdateActionStatusToTargets(ds, targInstalled, Status.FINISHED, "installed");
|
targInstalled = sendUpdateActionStatusToTargets(ds, targInstalled, Status.FINISHED, "installed");
|
||||||
|
|
||||||
final Slice<Target> result = targetManagement.findTargetsAllOrderByLinkedDistributionSet(pageReq, ds.getId(),
|
final Slice<Target> result = targetManagement.findTargetsAllOrderByLinkedDistributionSet(pageReq, ds.getId(),
|
||||||
null, null, null, Boolean.FALSE, null);
|
null, null, null, Boolean.FALSE, new String[0]);
|
||||||
|
|
||||||
final Comparator<TenantAwareBaseEntity> byId = (e1, e2) -> Long.compare(e2.getId(), e1.getId());
|
final Comparator<TenantAwareBaseEntity> byId = (e1, e2) -> Long.compare(e2.getId(), e1.getId());
|
||||||
|
|
||||||
@@ -222,6 +702,103 @@ public class TargetManagementSearchTest extends AbstractIntegrationTest {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Description("Verfies that targets with given assigned DS are returned from repository.")
|
||||||
|
public void findTargetByAssignedDistributionSet() {
|
||||||
|
final DistributionSet assignedSet = TestDataUtil.generateDistributionSet("", softwareManagement,
|
||||||
|
distributionSetManagement);
|
||||||
|
targetManagement.createTargets(TestDataUtil.generateTargets(10, "unassigned"));
|
||||||
|
final List<Target> assignedtargets = targetManagement
|
||||||
|
.createTargets(TestDataUtil.generateTargets(10, "assigned"));
|
||||||
|
|
||||||
|
deploymentManagement.assignDistributionSet(assignedSet, assignedtargets);
|
||||||
|
|
||||||
|
assertThat(targetManagement.findTargetByAssignedDistributionSet(assignedSet.getId(), pageReq))
|
||||||
|
.as("Contains the assigned targets").containsAll(assignedtargets)
|
||||||
|
.as("and that means the following expected amount").hasSize(10);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Description("Verfies that targets with given assigned DS and additonal specification are returned from repository.")
|
||||||
|
public void findTargetByAssignedDistributionSetWithAdditonalSpecification() {
|
||||||
|
final DistributionSet assignedSet = TestDataUtil.generateDistributionSet("", softwareManagement,
|
||||||
|
distributionSetManagement);
|
||||||
|
final DistributionSet installedSet = TestDataUtil.generateDistributionSet("another", softwareManagement,
|
||||||
|
distributionSetManagement);
|
||||||
|
targetManagement.createTargets(TestDataUtil.generateTargets(10, "unassigned"));
|
||||||
|
final List<Target> assignedtargets = targetManagement
|
||||||
|
.createTargets(TestDataUtil.generateTargets(10, "assigned"));
|
||||||
|
|
||||||
|
// set on installed and assign another one
|
||||||
|
deploymentManagement.assignDistributionSet(installedSet, assignedtargets).getActions().forEach(actionId -> {
|
||||||
|
final Action action = deploymentManagement.findActionWithDetails(actionId);
|
||||||
|
action.setStatus(Status.FINISHED);
|
||||||
|
controllerManagament.addUpdateActionStatus(
|
||||||
|
new ActionStatus(action, Status.FINISHED, System.currentTimeMillis(), "message"), action);
|
||||||
|
});
|
||||||
|
deploymentManagement.assignDistributionSet(assignedSet, assignedtargets);
|
||||||
|
|
||||||
|
assertThat(targetManagement.findTargetByAssignedDistributionSet(assignedSet.getId(),
|
||||||
|
TargetSpecifications.hasInstalledDistributionSet(installedSet.getId()), pageReq))
|
||||||
|
.as("Contains the assigned targets").containsAll(assignedtargets)
|
||||||
|
.as("and that means the following expected amount").hasSize(10);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Description("Verfies that targets with given installed DS are returned from repository.")
|
||||||
|
public void findTargetByInstalledDistributionSet() {
|
||||||
|
final DistributionSet assignedSet = TestDataUtil.generateDistributionSet("", softwareManagement,
|
||||||
|
distributionSetManagement);
|
||||||
|
final DistributionSet installedSet = TestDataUtil.generateDistributionSet("another", softwareManagement,
|
||||||
|
distributionSetManagement);
|
||||||
|
targetManagement.createTargets(TestDataUtil.generateTargets(10, "unassigned"));
|
||||||
|
final List<Target> installedtargets = targetManagement
|
||||||
|
.createTargets(TestDataUtil.generateTargets(10, "assigned"));
|
||||||
|
|
||||||
|
// set on installed and assign another one
|
||||||
|
deploymentManagement.assignDistributionSet(installedSet, installedtargets).getActions().forEach(actionId -> {
|
||||||
|
final Action action = deploymentManagement.findActionWithDetails(actionId);
|
||||||
|
action.setStatus(Status.FINISHED);
|
||||||
|
controllerManagament.addUpdateActionStatus(
|
||||||
|
new ActionStatus(action, Status.FINISHED, System.currentTimeMillis(), "message"), action);
|
||||||
|
});
|
||||||
|
deploymentManagement.assignDistributionSet(assignedSet, installedtargets);
|
||||||
|
|
||||||
|
assertThat(targetManagement.findTargetByInstalledDistributionSet(installedSet.getId(), pageReq))
|
||||||
|
.as("Contains the assigned targets").containsAll(installedtargets)
|
||||||
|
.as("and that means the following expected amount").hasSize(10);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Description("Verfies that targets with given installed DS and additonal specification are returned from repository.")
|
||||||
|
public void findTargetByInstalledDistributionSetWithAdditonalSpecification() {
|
||||||
|
final DistributionSet assignedSet = TestDataUtil.generateDistributionSet("", softwareManagement,
|
||||||
|
distributionSetManagement);
|
||||||
|
final DistributionSet installedSet = TestDataUtil.generateDistributionSet("another", softwareManagement,
|
||||||
|
distributionSetManagement);
|
||||||
|
targetManagement.createTargets(TestDataUtil.generateTargets(10, "unassigned"));
|
||||||
|
final List<Target> installedtargets = targetManagement
|
||||||
|
.createTargets(TestDataUtil.generateTargets(10, "assigned"));
|
||||||
|
|
||||||
|
// set on installed and assign another one
|
||||||
|
deploymentManagement.assignDistributionSet(installedSet, installedtargets).getActions().forEach(actionId -> {
|
||||||
|
final Action action = deploymentManagement.findActionWithDetails(actionId);
|
||||||
|
action.setStatus(Status.FINISHED);
|
||||||
|
controllerManagament.addUpdateActionStatus(
|
||||||
|
new ActionStatus(action, Status.FINISHED, System.currentTimeMillis(), "message"), action);
|
||||||
|
});
|
||||||
|
deploymentManagement.assignDistributionSet(assignedSet, installedtargets);
|
||||||
|
|
||||||
|
assertThat(targetManagement.findTargetByInstalledDistributionSet(installedSet.getId(),
|
||||||
|
TargetSpecifications.hasAssignedDistributionSet(assignedSet.getId()), pageReq))
|
||||||
|
.as("Contains the assigned targets").containsAll(installedtargets)
|
||||||
|
.as("and that means the following expected amount").hasSize(10);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private List<Target> sendUpdateActionStatusToTargets(final DistributionSet dsA, final Iterable<Target> targs,
|
private List<Target> sendUpdateActionStatusToTargets(final DistributionSet dsA, final Iterable<Target> targs,
|
||||||
final Status status, final String... msgs) {
|
final Status status, final String... msgs) {
|
||||||
final List<Target> result = new ArrayList<Target>();
|
final List<Target> result = new ArrayList<Target>();
|
||||||
|
|||||||
@@ -202,6 +202,12 @@ public class TargetManagementTest extends AbstractIntegrationTest {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Description("Ensures that repositoy returns null if given controller ID does not exist without exception.")
|
||||||
|
public void findTargetByControllerIDWithDetailsReturnsNullForNonexisting() {
|
||||||
|
assertThat(targetManagement.findTargetByControllerIDWithDetails("dsfsdfsdfsd")).as("Expected as").isNull();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Description("Checks if the EntityAlreadyExistsException is thrown if the targets with the same controller ID are created twice.")
|
@Description("Checks if the EntityAlreadyExistsException is thrown if the targets with the same controller ID are created twice.")
|
||||||
public void createMultipleTargetsDuplicate() {
|
public void createMultipleTargetsDuplicate() {
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ public class SystemManagementResource {
|
|||||||
.setOverallTargets(report.getOverallTargets()).setOverallTenants(report.getTenants().size());
|
.setOverallTargets(report.getOverallTargets()).setOverallTenants(report.getTenants().size());
|
||||||
|
|
||||||
result.setTenantStats(
|
result.setTenantStats(
|
||||||
report.getTenants().stream().map(tenant -> convertTenant(tenant)).collect(Collectors.toList()));
|
report.getTenants().stream().map(SystemManagementResource::convertTenant).collect(Collectors.toList()));
|
||||||
|
|
||||||
return ResponseEntity.ok(result);
|
return ResponseEntity.ok(result);
|
||||||
}
|
}
|
||||||
@@ -104,7 +104,7 @@ public class SystemManagementResource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a list of all caches containing currently.
|
* Returns a list of all caches.
|
||||||
*
|
*
|
||||||
* @return a list of caches for all tenants
|
* @return a list of caches for all tenants
|
||||||
*/
|
*/
|
||||||
@@ -112,8 +112,8 @@ public class SystemManagementResource {
|
|||||||
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_SYSTEM_ADMIN)
|
@PreAuthorize(SpringEvalExpressions.HAS_AUTH_SYSTEM_ADMIN)
|
||||||
public ResponseEntity<Collection<CacheRest>> getCaches() {
|
public ResponseEntity<Collection<CacheRest>> getCaches() {
|
||||||
final Collection<String> cacheNames = cacheManager.getCacheNames();
|
final Collection<String> cacheNames = cacheManager.getCacheNames();
|
||||||
return ResponseEntity.ok(cacheNames.stream().map(cacheName -> cacheManager.getCache(cacheName))
|
return ResponseEntity
|
||||||
.map(cache -> cacheRest(cache)).collect(Collectors.toList()));
|
.ok(cacheNames.stream().map(cacheManager::getCache).map(this::cacheRest).collect(Collectors.toList()));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ import java.util.HashMap;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
@@ -142,8 +141,6 @@ public class TargetTable extends AbstractTable implements Handler {
|
|||||||
private ShortcutAction actionSelectAll;
|
private ShortcutAction actionSelectAll;
|
||||||
private ShortcutAction actionUnSelectAll;
|
private ShortcutAction actionUnSelectAll;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@PostConstruct
|
@PostConstruct
|
||||||
protected void init() {
|
protected void init() {
|
||||||
@@ -1038,7 +1035,7 @@ public class TargetTable extends AbstractTable implements Handler {
|
|||||||
final String[] tagArray = tagList.toArray(new String[tagList.size()]);
|
final String[] tagArray = tagList.toArray(new String[tagList.size()]);
|
||||||
|
|
||||||
List<TargetIdName> targetIdList;
|
List<TargetIdName> targetIdList;
|
||||||
targetIdList = targetManagement.findAllTargetIdsByFilters(pageRequest, filterByDistId, statusList, searchText,
|
targetIdList = targetManagement.findAllTargetIdsByFilters(pageRequest, statusList, searchText, filterByDistId,
|
||||||
noTagSelected, tagList.toArray(tagArray));
|
noTagSelected, tagList.toArray(tagArray));
|
||||||
Collections.reverse(targetIdList);
|
Collections.reverse(targetIdList);
|
||||||
return targetIdList;
|
return targetIdList;
|
||||||
|
|||||||
Reference in New Issue
Block a user