Code quality impovements, additional tests to find target filter queries
Signed-off-by: Dominik Herbst <dominik.herbst@bosch-si.com>
This commit is contained in:
@@ -10,14 +10,14 @@ package org.eclipse.hawkbit.mgmt.json.model.targetfilter;
|
|||||||
|
|
||||||
import org.eclipse.hawkbit.mgmt.json.model.MgmtBaseEntity;
|
import org.eclipse.hawkbit.mgmt.json.model.MgmtBaseEntity;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||||
import com.fasterxml.jackson.annotation.JsonInclude.Include;
|
import com.fasterxml.jackson.annotation.JsonInclude.Include;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A json annotated rest model for Target to RESTful API representation.
|
* A json annotated rest model for Target Filter Queries to RESTful API
|
||||||
|
* representation.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@JsonInclude(Include.ALWAYS)
|
@JsonInclude(Include.ALWAYS)
|
||||||
@@ -36,48 +36,26 @@ public class MgmtTargetFilterQuery extends MgmtBaseEntity {
|
|||||||
@JsonProperty
|
@JsonProperty
|
||||||
private Long autoAssignDistributionSet;
|
private Long autoAssignDistributionSet;
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the filterId
|
|
||||||
*/
|
|
||||||
public Long getFilterId() {
|
public Long getFilterId() {
|
||||||
return filterId;
|
return filterId;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param filterId
|
|
||||||
* the filterId to set
|
|
||||||
*/
|
|
||||||
public void setFilterId(final Long filterId) {
|
public void setFilterId(final Long filterId) {
|
||||||
this.filterId = filterId;
|
this.filterId = filterId;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @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
|
|
||||||
*/
|
|
||||||
@JsonIgnore
|
|
||||||
public void setQuery(final String query) {
|
public void setQuery(final String query) {
|
||||||
this.query = query;
|
this.query = query;
|
||||||
}
|
}
|
||||||
@@ -86,7 +64,6 @@ public class MgmtTargetFilterQuery extends MgmtBaseEntity {
|
|||||||
return autoAssignDistributionSet;
|
return autoAssignDistributionSet;
|
||||||
}
|
}
|
||||||
|
|
||||||
@JsonIgnore
|
|
||||||
public void setAutoAssignDistributionSet(final Long autoAssignDistributionSet) {
|
public void setAutoAssignDistributionSet(final Long autoAssignDistributionSet) {
|
||||||
this.autoAssignDistributionSet = autoAssignDistributionSet;
|
this.autoAssignDistributionSet = autoAssignDistributionSet;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,9 +32,8 @@ public class MgmtTargetFilterQueryRequestBody {
|
|||||||
* @param name
|
* @param name
|
||||||
* the name to set
|
* the name to set
|
||||||
*/
|
*/
|
||||||
public MgmtTargetFilterQueryRequestBody setName(final String name) {
|
public void setName(final String name) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -236,8 +236,6 @@ public class MgmtDistributionSetResource implements MgmtDistributionSetRestApi {
|
|||||||
@RequestParam(value = MgmtRestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = MgmtRestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) int pagingLimitParam,
|
@RequestParam(value = MgmtRestConstants.REQUEST_PARAMETER_PAGING_LIMIT, defaultValue = MgmtRestConstants.REQUEST_PARAMETER_PAGING_DEFAULT_LIMIT) int pagingLimitParam,
|
||||||
@RequestParam(value = MgmtRestConstants.REQUEST_PARAMETER_SORTING, required = false) String sortParam,
|
@RequestParam(value = MgmtRestConstants.REQUEST_PARAMETER_SORTING, required = false) String sortParam,
|
||||||
@RequestParam(value = MgmtRestConstants.REQUEST_PARAMETER_SEARCH, required = false) String rsqlParam) {
|
@RequestParam(value = MgmtRestConstants.REQUEST_PARAMETER_SEARCH, required = false) String rsqlParam) {
|
||||||
// check if distribution set exists otherwise throw exception
|
|
||||||
// immediately
|
|
||||||
DistributionSet distributionSet = findDistributionSetWithExceptionIfNotFound(distributionSetId);
|
DistributionSet distributionSet = findDistributionSetWithExceptionIfNotFound(distributionSetId);
|
||||||
|
|
||||||
final int sanitizedOffsetParam = PagingUtility.sanitizeOffsetParam(pagingOffsetParam);
|
final int sanitizedOffsetParam = PagingUtility.sanitizeOffsetParam(pagingOffsetParam);
|
||||||
@@ -247,10 +245,10 @@ public class MgmtDistributionSetResource implements MgmtDistributionSetRestApi {
|
|||||||
final Pageable pageable = new OffsetBasedPageRequest(sanitizedOffsetParam, sanitizedLimitParam, sorting);
|
final Pageable pageable = new OffsetBasedPageRequest(sanitizedOffsetParam, sanitizedLimitParam, sorting);
|
||||||
final Page<TargetFilterQuery> targetFilterQueries;
|
final Page<TargetFilterQuery> targetFilterQueries;
|
||||||
if (rsqlParam != null) {
|
if (rsqlParam != null) {
|
||||||
targetFilterQueries = this.targetFilterQueryManagement.findTargetFilterQueryByAutoAssignDS(pageable,
|
targetFilterQueries = targetFilterQueryManagement.findTargetFilterQueryByAutoAssignDS(pageable,
|
||||||
distributionSet, rsqlParam);
|
distributionSet, rsqlParam);
|
||||||
} else {
|
} else {
|
||||||
targetFilterQueries = this.targetFilterQueryManagement.findTargetFilterQueryByAutoAssignDS(pageable,
|
targetFilterQueries = targetFilterQueryManagement.findTargetFilterQueryByAutoAssignDS(pageable,
|
||||||
distributionSet);
|
distributionSet);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -11,8 +11,9 @@ package org.eclipse.hawkbit.mgmt.rest.resource;
|
|||||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.linkTo;
|
||||||
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
|
import static org.springframework.hateoas.mvc.ControllerLinkBuilder.methodOn;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.eclipse.hawkbit.mgmt.json.model.targetfilter.MgmtTargetFilterQuery;
|
import org.eclipse.hawkbit.mgmt.json.model.targetfilter.MgmtTargetFilterQuery;
|
||||||
import org.eclipse.hawkbit.mgmt.json.model.targetfilter.MgmtTargetFilterQueryRequestBody;
|
import org.eclipse.hawkbit.mgmt.json.model.targetfilter.MgmtTargetFilterQueryRequestBody;
|
||||||
@@ -20,6 +21,7 @@ import org.eclipse.hawkbit.mgmt.rest.api.MgmtTargetFilterQueryRestApi;
|
|||||||
import org.eclipse.hawkbit.repository.EntityFactory;
|
import org.eclipse.hawkbit.repository.EntityFactory;
|
||||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||||
import org.eclipse.hawkbit.repository.model.TargetFilterQuery;
|
import org.eclipse.hawkbit.repository.model.TargetFilterQuery;
|
||||||
|
import org.springframework.util.CollectionUtils;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A mapper which maps repository model to RESTful model representation and
|
* A mapper which maps repository model to RESTful model representation and
|
||||||
@@ -33,34 +35,27 @@ public final class MgmtTargetFilterQueryMapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a response for targets.
|
* Create a response for target filter queries.
|
||||||
*
|
*
|
||||||
* @param filters
|
* @param filters
|
||||||
* list of targets
|
* list of targets
|
||||||
* @return the response
|
* @return the response
|
||||||
*/
|
*/
|
||||||
public static List<MgmtTargetFilterQuery> toResponse(final Iterable<TargetFilterQuery> filters) {
|
public static List<MgmtTargetFilterQuery> toResponse(final List<TargetFilterQuery> filters) {
|
||||||
final List<MgmtTargetFilterQuery> mappedList = new ArrayList<>();
|
if (CollectionUtils.isEmpty(filters)) {
|
||||||
if (filters != null) {
|
return Collections.emptyList();
|
||||||
for (final TargetFilterQuery filter : filters) {
|
|
||||||
final MgmtTargetFilterQuery response = toResponse(filter);
|
|
||||||
mappedList.add(response);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return mappedList;
|
return filters.stream().map(MgmtTargetFilterQueryMapper::toResponse).collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a response for target.
|
* Create a response for target filter query.
|
||||||
*
|
*
|
||||||
* @param filter
|
* @param filter
|
||||||
* the target
|
* the target
|
||||||
* @return the response
|
* @return the response
|
||||||
*/
|
*/
|
||||||
public static MgmtTargetFilterQuery toResponse(final TargetFilterQuery filter) {
|
public static MgmtTargetFilterQuery toResponse(final TargetFilterQuery filter) {
|
||||||
if (filter == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
final MgmtTargetFilterQuery targetRest = new MgmtTargetFilterQuery();
|
final MgmtTargetFilterQuery targetRest = new MgmtTargetFilterQuery();
|
||||||
targetRest.setFilterId(filter.getId());
|
targetRest.setFilterId(filter.getId());
|
||||||
targetRest.setName(filter.getName());
|
targetRest.setName(filter.getName());
|
||||||
@@ -78,7 +73,9 @@ public final class MgmtTargetFilterQueryMapper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
targetRest.add(linkTo(methodOn(MgmtTargetFilterQueryRestApi.class).getFilter(filter.getId())).withRel("self"));
|
targetRest.add(linkTo(methodOn(MgmtTargetFilterQueryRestApi.class).getFilter(filter.getId())).withRel("self"));
|
||||||
targetRest.add(linkTo(methodOn(MgmtTargetFilterQueryRestApi.class).postAssignedDistributionSet(filter.getId(),null)).withRel("autoAssignDS"));
|
targetRest.add(
|
||||||
|
linkTo(methodOn(MgmtTargetFilterQueryRestApi.class).postAssignedDistributionSet(filter.getId(), null))
|
||||||
|
.withRel("autoAssignDS"));
|
||||||
|
|
||||||
return targetRest;
|
return targetRest;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -78,13 +78,13 @@ public class MgmtTargetFilterQueryResource implements MgmtTargetFilterQueryRestA
|
|||||||
final Slice<TargetFilterQuery> findTargetFiltersAll;
|
final Slice<TargetFilterQuery> findTargetFiltersAll;
|
||||||
final Long countTargetsAll;
|
final Long countTargetsAll;
|
||||||
if (rsqlParam != null) {
|
if (rsqlParam != null) {
|
||||||
final Page<TargetFilterQuery> findFilterPage = this.filterManagement
|
final Page<TargetFilterQuery> findFilterPage = filterManagement
|
||||||
.findTargetFilterQueryByFilter(pageable, rsqlParam);
|
.findTargetFilterQueryByFilter(pageable, rsqlParam);
|
||||||
countTargetsAll = findFilterPage.getTotalElements();
|
countTargetsAll = findFilterPage.getTotalElements();
|
||||||
findTargetFiltersAll = findFilterPage;
|
findTargetFiltersAll = findFilterPage;
|
||||||
} else {
|
} else {
|
||||||
findTargetFiltersAll = this.filterManagement.findAllTargetFilterQuery(pageable);
|
findTargetFiltersAll = filterManagement.findAllTargetFilterQuery(pageable);
|
||||||
countTargetsAll = this.filterManagement.countAllTargetFilterQuery();
|
countTargetsAll = filterManagement.countAllTargetFilterQuery();
|
||||||
}
|
}
|
||||||
|
|
||||||
final List<MgmtTargetFilterQuery> rest = MgmtTargetFilterQueryMapper
|
final List<MgmtTargetFilterQuery> rest = MgmtTargetFilterQueryMapper
|
||||||
@@ -94,7 +94,7 @@ public class MgmtTargetFilterQueryResource implements MgmtTargetFilterQueryRestA
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ResponseEntity<MgmtTargetFilterQuery> createFilter(@RequestBody MgmtTargetFilterQueryRequestBody filter) {
|
public ResponseEntity<MgmtTargetFilterQuery> createFilter(@RequestBody MgmtTargetFilterQueryRequestBody filter) {
|
||||||
final TargetFilterQuery createdTarget = this.filterManagement
|
final TargetFilterQuery createdTarget = filterManagement
|
||||||
.createTargetFilterQuery(MgmtTargetFilterQueryMapper.fromRequest(entityFactory, filter));
|
.createTargetFilterQuery(MgmtTargetFilterQueryMapper.fromRequest(entityFactory, filter));
|
||||||
|
|
||||||
return new ResponseEntity<>(MgmtTargetFilterQueryMapper.toResponse(createdTarget), HttpStatus.CREATED);
|
return new ResponseEntity<>(MgmtTargetFilterQueryMapper.toResponse(createdTarget), HttpStatus.CREATED);
|
||||||
@@ -113,7 +113,7 @@ public class MgmtTargetFilterQueryResource implements MgmtTargetFilterQueryRestA
|
|||||||
existingFilter.setQuery(targetFilterRest.getQuery());
|
existingFilter.setQuery(targetFilterRest.getQuery());
|
||||||
}
|
}
|
||||||
|
|
||||||
final TargetFilterQuery updateFilter = this.filterManagement.updateTargetFilterQuery(existingFilter);
|
final TargetFilterQuery updateFilter = filterManagement.updateTargetFilterQuery(existingFilter);
|
||||||
|
|
||||||
return new ResponseEntity<>(MgmtTargetFilterQueryMapper.toResponse(updateFilter), HttpStatus.OK);
|
return new ResponseEntity<>(MgmtTargetFilterQueryMapper.toResponse(updateFilter), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
@@ -121,7 +121,7 @@ public class MgmtTargetFilterQueryResource implements MgmtTargetFilterQueryRestA
|
|||||||
@Override
|
@Override
|
||||||
public ResponseEntity<Void> deleteFilter(@PathVariable("filterId") Long filterId) {
|
public ResponseEntity<Void> deleteFilter(@PathVariable("filterId") Long filterId) {
|
||||||
final TargetFilterQuery filter = findFilterWithExceptionIfNotFound(filterId);
|
final TargetFilterQuery filter = findFilterWithExceptionIfNotFound(filterId);
|
||||||
this.filterManagement.deleteTargetFilterQuery(filter.getId());
|
filterManagement.deleteTargetFilterQuery(filter.getId());
|
||||||
LOG.debug("{} target filter query deleted, return status {}", filterId, HttpStatus.OK);
|
LOG.debug("{} target filter query deleted, return status {}", filterId, HttpStatus.OK);
|
||||||
return new ResponseEntity<>(HttpStatus.OK);
|
return new ResponseEntity<>(HttpStatus.OK);
|
||||||
}
|
}
|
||||||
@@ -139,7 +139,7 @@ public class MgmtTargetFilterQueryResource implements MgmtTargetFilterQueryRestA
|
|||||||
|
|
||||||
filter.setAutoAssignDistributionSet(distributionSet);
|
filter.setAutoAssignDistributionSet(distributionSet);
|
||||||
|
|
||||||
final TargetFilterQuery updateFilter = this.filterManagement.updateTargetFilterQuery(filter);
|
final TargetFilterQuery updateFilter = filterManagement.updateTargetFilterQuery(filter);
|
||||||
|
|
||||||
return new ResponseEntity<>(MgmtTargetFilterQueryMapper.toResponse(updateFilter), HttpStatus.OK);
|
return new ResponseEntity<>(MgmtTargetFilterQueryMapper.toResponse(updateFilter), HttpStatus.OK);
|
||||||
}
|
}
|
||||||
@@ -149,12 +149,7 @@ public class MgmtTargetFilterQueryResource implements MgmtTargetFilterQueryRestA
|
|||||||
final TargetFilterQuery filter = findFilterWithExceptionIfNotFound(filterId);
|
final TargetFilterQuery filter = findFilterWithExceptionIfNotFound(filterId);
|
||||||
DistributionSet autoAssignDistributionSet = filter.getAutoAssignDistributionSet();
|
DistributionSet autoAssignDistributionSet = filter.getAutoAssignDistributionSet();
|
||||||
MgmtDistributionSet distributionSetRest = MgmtDistributionSetMapper.toResponse(autoAssignDistributionSet);
|
MgmtDistributionSet distributionSetRest = MgmtDistributionSetMapper.toResponse(autoAssignDistributionSet);
|
||||||
final HttpStatus retStatus;
|
final HttpStatus retStatus = distributionSetRest == null ? HttpStatus.NO_CONTENT : HttpStatus.OK;
|
||||||
if (distributionSetRest == null) {
|
|
||||||
retStatus = HttpStatus.NO_CONTENT;
|
|
||||||
} else {
|
|
||||||
retStatus = HttpStatus.OK;
|
|
||||||
}
|
|
||||||
return new ResponseEntity<>(distributionSetRest, retStatus);
|
return new ResponseEntity<>(distributionSetRest, retStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -164,13 +159,13 @@ public class MgmtTargetFilterQueryResource implements MgmtTargetFilterQueryRestA
|
|||||||
|
|
||||||
filter.setAutoAssignDistributionSet(null);
|
filter.setAutoAssignDistributionSet(null);
|
||||||
|
|
||||||
this.filterManagement.updateTargetFilterQuery(filter);
|
filterManagement.updateTargetFilterQuery(filter);
|
||||||
|
|
||||||
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
return new ResponseEntity<>(HttpStatus.NO_CONTENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
private TargetFilterQuery findFilterWithExceptionIfNotFound(final Long filterId) {
|
private TargetFilterQuery findFilterWithExceptionIfNotFound(final Long filterId) {
|
||||||
final TargetFilterQuery filter = this.filterManagement.findTargetFilterQueryById(filterId);
|
final TargetFilterQuery filter = filterManagement.findTargetFilterQueryById(filterId);
|
||||||
if (filter == null) {
|
if (filter == null) {
|
||||||
throw new EntityNotFoundException("TargetFilterQuery with Id {" + filterId + "} does not exist");
|
throw new EntityNotFoundException("TargetFilterQuery with Id {" + filterId + "} does not exist");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -302,9 +302,9 @@ public class MgmtDistributionSetResourceTest extends AbstractRestIntegrationTest
|
|||||||
final Set<DistributionSet> createDistributionSetsAlphabetical = createDistributionSetsAlphabetical(1);
|
final Set<DistributionSet> createDistributionSetsAlphabetical = createDistributionSetsAlphabetical(1);
|
||||||
final DistributionSet createdDs = createDistributionSetsAlphabetical.iterator().next();
|
final DistributionSet createdDs = createDistributionSetsAlphabetical.iterator().next();
|
||||||
|
|
||||||
final TargetFilterQuery tfq = targetFilterQueryManagement
|
targetFilterQueryManagement
|
||||||
.createTargetFilterQuery(entityFactory.generateTargetFilterQuery(knownFilterName, "x==y", createdDs));
|
.createTargetFilterQuery(entityFactory.generateTargetFilterQuery(knownFilterName, "x==y", createdDs));
|
||||||
// create some dummy targets which are not assigned or installed
|
// create some dummy target filter queries
|
||||||
targetFilterQueryManagement.createTargetFilterQuery(entityFactory.generateTargetFilterQuery("b", "x==y"));
|
targetFilterQueryManagement.createTargetFilterQuery(entityFactory.generateTargetFilterQuery("b", "x==y"));
|
||||||
targetFilterQueryManagement.createTargetFilterQuery(entityFactory.generateTargetFilterQuery("c", "x==y"));
|
targetFilterQueryManagement.createTargetFilterQuery(entityFactory.generateTargetFilterQuery("c", "x==y"));
|
||||||
|
|
||||||
@@ -313,6 +313,65 @@ public class MgmtDistributionSetResourceTest extends AbstractRestIntegrationTest
|
|||||||
.andExpect(jsonPath("$.content[0].name", equalTo(knownFilterName)));
|
.andExpect(jsonPath("$.content[0].name", equalTo(knownFilterName)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Description("Ensures that an error is returned when the query is invalid.")
|
||||||
|
public void getAutoAssignTargetFiltersOfDSWithInvalidFilter() throws Exception {
|
||||||
|
// prepare distribution set
|
||||||
|
final Set<DistributionSet> createDistributionSetsAlphabetical = createDistributionSetsAlphabetical(1);
|
||||||
|
final DistributionSet createdDs = createDistributionSetsAlphabetical.iterator().next();
|
||||||
|
final String invalidQuery = "unknownField=le=42";
|
||||||
|
|
||||||
|
mvc.perform(get(MgmtRestConstants.DISTRIBUTIONSET_V1_REQUEST_MAPPING + "/" + createdDs.getId()
|
||||||
|
+ "/autoAssignTargetFilters").param(MgmtRestConstants.REQUEST_PARAMETER_SEARCH, invalidQuery))
|
||||||
|
.andExpect(status().isBadRequest());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Description("Ensures that target filters with auto assign DS are returned according to the query.")
|
||||||
|
public void getMultipleAutoAssignTargetFiltersOfDistributionSet() throws Exception {
|
||||||
|
final String filterNamePrefix = "filter-";
|
||||||
|
final Set<DistributionSet> createDistributionSetsAlphabetical = createDistributionSetsAlphabetical(1);
|
||||||
|
final DistributionSet createdDs = createDistributionSetsAlphabetical.iterator().next();
|
||||||
|
final String query = "name==" + filterNamePrefix + "*";
|
||||||
|
|
||||||
|
// create target filter queries that should be found
|
||||||
|
targetFilterQueryManagement.createTargetFilterQuery(
|
||||||
|
entityFactory.generateTargetFilterQuery(filterNamePrefix + "1", "x==y", createdDs));
|
||||||
|
targetFilterQueryManagement.createTargetFilterQuery(
|
||||||
|
entityFactory.generateTargetFilterQuery(filterNamePrefix + "2", "x==z", createdDs));
|
||||||
|
// create some dummy target filter queries
|
||||||
|
targetFilterQueryManagement.createTargetFilterQuery(entityFactory.generateTargetFilterQuery("b", "x==y"));
|
||||||
|
targetFilterQueryManagement.createTargetFilterQuery(entityFactory.generateTargetFilterQuery("c", "x==y"));
|
||||||
|
|
||||||
|
mvc.perform(get(MgmtRestConstants.DISTRIBUTIONSET_V1_REQUEST_MAPPING + "/" + createdDs.getId()
|
||||||
|
+ "/autoAssignTargetFilters").param(MgmtRestConstants.REQUEST_PARAMETER_SEARCH, query))
|
||||||
|
.andExpect(status().isOk()).andExpect(jsonPath("$.size", equalTo(2)))
|
||||||
|
.andExpect(jsonPath("$.content[0].name", equalTo(filterNamePrefix + "1")))
|
||||||
|
.andExpect(jsonPath("$.content[1].name", equalTo(filterNamePrefix + "2")));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Description("Ensures that no target filters are returned according to the non matching query.")
|
||||||
|
public void getEmptyAutoAssignTargetFiltersOfDistributionSet() throws Exception {
|
||||||
|
final String filterNamePrefix = "filter-";
|
||||||
|
final Set<DistributionSet> createDistributionSetsAlphabetical = createDistributionSetsAlphabetical(1);
|
||||||
|
final DistributionSet createdDs = createDistributionSetsAlphabetical.iterator().next();
|
||||||
|
final String query = "name==doesNotExist";
|
||||||
|
|
||||||
|
// create target filter queries that should be found
|
||||||
|
targetFilterQueryManagement.createTargetFilterQuery(
|
||||||
|
entityFactory.generateTargetFilterQuery(filterNamePrefix + "1", "x==y", createdDs));
|
||||||
|
targetFilterQueryManagement.createTargetFilterQuery(
|
||||||
|
entityFactory.generateTargetFilterQuery(filterNamePrefix + "2", "x==z", createdDs));
|
||||||
|
// create some dummy target filter queries
|
||||||
|
targetFilterQueryManagement.createTargetFilterQuery(entityFactory.generateTargetFilterQuery("b", "x==y"));
|
||||||
|
targetFilterQueryManagement.createTargetFilterQuery(entityFactory.generateTargetFilterQuery("c", "x==y"));
|
||||||
|
|
||||||
|
mvc.perform(get(MgmtRestConstants.DISTRIBUTIONSET_V1_REQUEST_MAPPING + "/" + createdDs.getId()
|
||||||
|
+ "/autoAssignTargetFilters").param(MgmtRestConstants.REQUEST_PARAMETER_SEARCH, query))
|
||||||
|
.andExpect(status().isOk()).andExpect(jsonPath("$.size", equalTo(0)));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Description("Ensures that DS in repository are listed with proper paging properties.")
|
@Description("Ensures that DS in repository are listed with proper paging properties.")
|
||||||
public void getDistributionSetsWithoutAddtionalRequestParameters() throws Exception {
|
public void getDistributionSetsWithoutAddtionalRequestParameters() throws Exception {
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ package org.eclipse.hawkbit.repository.jpa;
|
|||||||
|
|
||||||
import org.eclipse.hawkbit.repository.TargetFilterQueryManagement;
|
import org.eclipse.hawkbit.repository.TargetFilterQueryManagement;
|
||||||
import org.eclipse.hawkbit.repository.exception.EntityAlreadyExistsException;
|
import org.eclipse.hawkbit.repository.exception.EntityAlreadyExistsException;
|
||||||
|
import org.eclipse.hawkbit.repository.exception.RSQLParameterUnsupportedFieldException;
|
||||||
import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSet;
|
import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSet;
|
||||||
import org.eclipse.hawkbit.repository.jpa.model.JpaTargetFilterQuery;
|
import org.eclipse.hawkbit.repository.jpa.model.JpaTargetFilterQuery;
|
||||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||||
@@ -35,7 +36,7 @@ import static org.junit.Assert.*;
|
|||||||
*/
|
*/
|
||||||
@Features("Component Tests - Repository")
|
@Features("Component Tests - Repository")
|
||||||
@Stories("Target Filter Query Management")
|
@Stories("Target Filter Query Management")
|
||||||
public class TargetFilterQueryManagenmentTest extends AbstractJpaIntegrationTest {
|
public class TargetFilterQueryManagementTest extends AbstractJpaIntegrationTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Description("Test creation of target filter query.")
|
@Description("Test creation of target filter query.")
|
||||||
@@ -63,6 +64,15 @@ public class TargetFilterQueryManagenmentTest extends AbstractJpaIntegrationTest
|
|||||||
assertEquals("Retrieved newly created custom target filter", targetFilterQuery, results.get(0));
|
assertEquals("Retrieved newly created custom target filter", targetFilterQuery, results.get(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test(expected = RSQLParameterUnsupportedFieldException.class)
|
||||||
|
@Description("Test searching a target filter query with an invalid filter.")
|
||||||
|
public void searchTargetFilterQueryInvalidField() {
|
||||||
|
// Should throw an exception
|
||||||
|
targetFilterQueryManagement.findTargetFilterQueryByFilter(new PageRequest(0, 10), "unknownField==testValue")
|
||||||
|
.getContent();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Description("Checks if the EntityAlreadyExistsException is thrown if a targetfilterquery with the same name are created more than once.")
|
@Description("Checks if the EntityAlreadyExistsException is thrown if a targetfilterquery with the same name are created more than once.")
|
||||||
public void createDuplicateTargetFilterQuery() {
|
public void createDuplicateTargetFilterQuery() {
|
||||||
@@ -10,19 +10,16 @@ package org.eclipse.hawkbit.repository.jpa.autoassign;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
import org.eclipse.hawkbit.repository.jpa.AbstractJpaIntegrationTest;
|
import org.eclipse.hawkbit.repository.jpa.AbstractJpaIntegrationTest;
|
||||||
import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSet;
|
import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSet;
|
||||||
import org.eclipse.hawkbit.repository.jpa.model.JpaTargetFilterQuery;
|
import org.eclipse.hawkbit.repository.jpa.model.JpaTargetFilterQuery;
|
||||||
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
import org.eclipse.hawkbit.repository.model.DistributionSet;
|
||||||
import org.eclipse.hawkbit.repository.model.DistributionSetType;
|
|
||||||
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.TargetFilterQuery;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.domain.Page;
|
|
||||||
import org.springframework.data.domain.PageRequest;
|
import org.springframework.data.domain.PageRequest;
|
||||||
import org.springframework.data.domain.Slice;
|
import org.springframework.data.domain.Slice;
|
||||||
import ru.yandex.qatools.allure.annotations.Description;
|
import ru.yandex.qatools.allure.annotations.Description;
|
||||||
@@ -154,4 +151,4 @@ public class AutoAssignCheckerTest extends AbstractJpaIntegrationTest {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ public class TargetFilterQueryDetailsTable extends Table {
|
|||||||
*/
|
*/
|
||||||
public void populateTableByDistributionSet(final DistributionSet distributionSet) {
|
public void populateTableByDistributionSet(final DistributionSet distributionSet) {
|
||||||
removeAllItems();
|
removeAllItems();
|
||||||
if (null == distributionSet) {
|
if (distributionSet == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -41,12 +41,12 @@ public class ManageDistBeanQuery extends AbstractBeanQuery<ProxyDistribution> {
|
|||||||
|
|
||||||
private static final long serialVersionUID = 5176481314404662215L;
|
private static final long serialVersionUID = 5176481314404662215L;
|
||||||
private Sort sort = new Sort(Direction.ASC, "createdAt");
|
private Sort sort = new Sort(Direction.ASC, "createdAt");
|
||||||
private String searchText = null;
|
private String searchText;
|
||||||
private transient DistributionSetManagement distributionSetManagement;
|
private transient DistributionSetManagement distributionSetManagement;
|
||||||
private transient Page<DistributionSet> firstPageDistributionSets = null;
|
private transient Page<DistributionSet> firstPageDistributionSets;
|
||||||
|
|
||||||
private DistributionSetType distributionSetType = null;
|
private DistributionSetType distributionSetType;
|
||||||
private Boolean dsComplete = null;
|
private Boolean dsComplete;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user