Fix RSQL duplicate entries (#645)

* Add more tests and and fix distinct problem.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Correct test numbers.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>

* Fix tests.

Signed-off-by: kaizimmerm <kai.zimmermann@bosch-si.com>
This commit is contained in:
Kai Zimmermann
2018-03-01 14:36:15 +01:00
committed by GitHub
parent 2c00e68825
commit c17f6c0d24
8 changed files with 53 additions and 19 deletions

View File

@@ -165,6 +165,7 @@ public final class RSQLUtility {
@Override @Override
public Predicate toPredicate(final Root<T> root, final CriteriaQuery<?> query, final CriteriaBuilder cb) { public Predicate toPredicate(final Root<T> root, final CriteriaQuery<?> query, final CriteriaBuilder cb) {
final Node rootNode = parseRsql(rsql); final Node rootNode = parseRsql(rsql);
query.distinct(true);
final JpqQueryRSQLVisitor<A, T> jpqQueryRSQLVisitor = new JpqQueryRSQLVisitor<>(root, cb, enumType, final JpqQueryRSQLVisitor<A, T> jpqQueryRSQLVisitor = new JpqQueryRSQLVisitor<>(root, cb, enumType,
virtualPropertyReplacer); virtualPropertyReplacer);

View File

@@ -66,6 +66,7 @@ public class RSQLActionFieldsTest extends AbstractJpaIntegrationTest {
@Description("Test filter action by id") @Description("Test filter action by id")
public void testFilterByParameterId() { public void testFilterByParameterId() {
assertRSQLQuery(ActionFields.ID.name() + "==" + action.getId(), 1); assertRSQLQuery(ActionFields.ID.name() + "==" + action.getId(), 1);
assertRSQLQuery(ActionFields.ID.name() + "!=" + action.getId(), 10);
assertRSQLQuery(ActionFields.ID.name() + "==noExist*", 0); assertRSQLQuery(ActionFields.ID.name() + "==noExist*", 0);
assertRSQLQuery(ActionFields.ID.name() + "=in=(" + action.getId() + ",1000000)", 1); assertRSQLQuery(ActionFields.ID.name() + "=in=(" + action.getId() + ",1000000)", 1);
assertRSQLQuery(ActionFields.ID.name() + "=out=(" + action.getId() + ",1000000)", 10); assertRSQLQuery(ActionFields.ID.name() + "=out=(" + action.getId() + ",1000000)", 10);
@@ -75,6 +76,7 @@ public class RSQLActionFieldsTest extends AbstractJpaIntegrationTest {
@Description("Test action by status") @Description("Test action by status")
public void testFilterByParameterStatus() { public void testFilterByParameterStatus() {
assertRSQLQuery(ActionFields.STATUS.name() + "==pending", 5); assertRSQLQuery(ActionFields.STATUS.name() + "==pending", 5);
assertRSQLQuery(ActionFields.STATUS.name() + "!=pending", 6);
assertRSQLQuery(ActionFields.STATUS.name() + "=in=(pending)", 5); assertRSQLQuery(ActionFields.STATUS.name() + "=in=(pending)", 5);
assertRSQLQuery(ActionFields.STATUS.name() + "=out=(pending)", 6); assertRSQLQuery(ActionFields.STATUS.name() + "=out=(pending)", 6);

View File

@@ -63,6 +63,7 @@ public class RSQLDistributionSetFieldTest extends AbstractJpaIntegrationTest {
@Description("Test filter distribution set by name") @Description("Test filter distribution set by name")
public void testFilterByParameterName() { public void testFilterByParameterName() {
assertRSQLQuery(DistributionSetFields.NAME.name() + "==DS", 1); assertRSQLQuery(DistributionSetFields.NAME.name() + "==DS", 1);
assertRSQLQuery(DistributionSetFields.NAME.name() + "!=DS", 3);
assertRSQLQuery(DistributionSetFields.NAME.name() + "==*DS", 4); assertRSQLQuery(DistributionSetFields.NAME.name() + "==*DS", 4);
assertRSQLQuery(DistributionSetFields.NAME.name() + "==noExist*", 0); assertRSQLQuery(DistributionSetFields.NAME.name() + "==noExist*", 0);
assertRSQLQuery(DistributionSetFields.NAME.name() + "=in=(DS,notexist)", 1); assertRSQLQuery(DistributionSetFields.NAME.name() + "=in=(DS,notexist)", 1);
@@ -73,6 +74,7 @@ public class RSQLDistributionSetFieldTest extends AbstractJpaIntegrationTest {
@Description("Test filter distribution set by description") @Description("Test filter distribution set by description")
public void testFilterByParameterDescription() { public void testFilterByParameterDescription() {
assertRSQLQuery(DistributionSetFields.DESCRIPTION.name() + "==DS", 1); assertRSQLQuery(DistributionSetFields.DESCRIPTION.name() + "==DS", 1);
assertRSQLQuery(DistributionSetFields.DESCRIPTION.name() + "!=DS", 3);
assertRSQLQuery(DistributionSetFields.DESCRIPTION.name() + "==DS*", 2); assertRSQLQuery(DistributionSetFields.DESCRIPTION.name() + "==DS*", 2);
assertRSQLQuery(DistributionSetFields.DESCRIPTION.name() + "==DS%", 1); assertRSQLQuery(DistributionSetFields.DESCRIPTION.name() + "==DS%", 1);
assertRSQLQuery(DistributionSetFields.DESCRIPTION.name() + "==noExist*", 0); assertRSQLQuery(DistributionSetFields.DESCRIPTION.name() + "==noExist*", 0);
@@ -108,10 +110,12 @@ public class RSQLDistributionSetFieldTest extends AbstractJpaIntegrationTest {
@Description("Test filter distribution set by tag") @Description("Test filter distribution set by tag")
public void testFilterByTag() { public void testFilterByTag() {
assertRSQLQuery(DistributionSetFields.TAG.name() + "==Tag1", 2); assertRSQLQuery(DistributionSetFields.TAG.name() + "==Tag1", 2);
// does not include untagged sets
assertRSQLQuery(DistributionSetFields.TAG.name() + "!=Tag1", 0);
assertRSQLQuery(DistributionSetFields.TAG.name() + "==T*", 2); assertRSQLQuery(DistributionSetFields.TAG.name() + "==T*", 2);
assertRSQLQuery(DistributionSetFields.TAG.name() + "==noExist*", 0); assertRSQLQuery(DistributionSetFields.TAG.name() + "==noExist*", 0);
assertRSQLQuery(DistributionSetFields.TAG.name() + "=in=(Tag1,notexist)", 2); assertRSQLQuery(DistributionSetFields.TAG.name() + "=in=(Tag1,notexist)", 2);
assertRSQLQuery(DistributionSetFields.TAG.name() + "=out=(Tag1,notexist)", 0); assertRSQLQuery(DistributionSetFields.TAG.name() + "=out=(null)", 2);
} }
@Test @Test

View File

@@ -41,14 +41,14 @@ public class RSQLRolloutGroupFields extends AbstractJpaIntegrationTest {
rollout = createRollout("rollout1", 4, dsA.getId(), "controllerId==rollout*"); rollout = createRollout("rollout1", 4, dsA.getId(), "controllerId==rollout*");
rollout = rolloutManagement.get(rollout.getId()).get(); rollout = rolloutManagement.get(rollout.getId()).get();
this.rolloutGroupId = rolloutGroupManagement.findByRollout(PAGE, rollout.getId()).getContent() this.rolloutGroupId = rolloutGroupManagement.findByRollout(PAGE, rollout.getId()).getContent().get(0).getId();
.get(0).getId();
} }
@Test @Test
@Description("Test filter rollout group by id") @Description("Test filter rollout group by id")
public void testFilterByParameterId() { public void testFilterByParameterId() {
assertRSQLQuery(RolloutGroupFields.ID.name() + "==" + rolloutGroupId, 1); assertRSQLQuery(RolloutGroupFields.ID.name() + "==" + rolloutGroupId, 1);
assertRSQLQuery(RolloutGroupFields.ID.name() + "!=" + rolloutGroupId, 3);
assertRSQLQuery(RolloutGroupFields.ID.name() + "==noExist*", 0); assertRSQLQuery(RolloutGroupFields.ID.name() + "==noExist*", 0);
assertRSQLQuery(RolloutGroupFields.ID.name() + "=in=(" + rolloutGroupId + ")", 1); assertRSQLQuery(RolloutGroupFields.ID.name() + "=in=(" + rolloutGroupId + ")", 1);
assertRSQLQuery(RolloutGroupFields.ID.name() + "=out=(" + rolloutGroupId + ")", 3); assertRSQLQuery(RolloutGroupFields.ID.name() + "=out=(" + rolloutGroupId + ")", 3);
@@ -58,6 +58,7 @@ public class RSQLRolloutGroupFields extends AbstractJpaIntegrationTest {
@Description("Test filter rollout group by name") @Description("Test filter rollout group by name")
public void testFilterByParameterName() { public void testFilterByParameterName() {
assertRSQLQuery(RolloutGroupFields.NAME.name() + "==group-1", 1); assertRSQLQuery(RolloutGroupFields.NAME.name() + "==group-1", 1);
assertRSQLQuery(RolloutGroupFields.NAME.name() + "!=group-1", 3);
assertRSQLQuery(RolloutGroupFields.NAME.name() + "==*", 4); assertRSQLQuery(RolloutGroupFields.NAME.name() + "==*", 4);
assertRSQLQuery(RolloutGroupFields.NAME.name() + "==noExist*", 0); assertRSQLQuery(RolloutGroupFields.NAME.name() + "==noExist*", 0);
assertRSQLQuery(RolloutGroupFields.NAME.name() + "=in=(group-1,group-2)", 2); assertRSQLQuery(RolloutGroupFields.NAME.name() + "=in=(group-1,group-2)", 2);
@@ -68,6 +69,7 @@ public class RSQLRolloutGroupFields extends AbstractJpaIntegrationTest {
@Description("Test filter rollout group by description") @Description("Test filter rollout group by description")
public void testFilterByParameterDescription() { public void testFilterByParameterDescription() {
assertRSQLQuery(RolloutGroupFields.DESCRIPTION.name() + "==group-1", 1); assertRSQLQuery(RolloutGroupFields.DESCRIPTION.name() + "==group-1", 1);
assertRSQLQuery(RolloutGroupFields.DESCRIPTION.name() + "!=group-1", 3);
assertRSQLQuery(RolloutGroupFields.DESCRIPTION.name() + "==group*", 4); assertRSQLQuery(RolloutGroupFields.DESCRIPTION.name() + "==group*", 4);
assertRSQLQuery(RolloutGroupFields.DESCRIPTION.name() + "==noExist*", 0); assertRSQLQuery(RolloutGroupFields.DESCRIPTION.name() + "==noExist*", 0);
assertRSQLQuery(RolloutGroupFields.DESCRIPTION.name() + "=in=(group-1,notexist)", 1); assertRSQLQuery(RolloutGroupFields.DESCRIPTION.name() + "=in=(group-1,notexist)", 1);
@@ -85,8 +87,7 @@ public class RSQLRolloutGroupFields extends AbstractJpaIntegrationTest {
private Rollout createRollout(final String name, final int amountGroups, final long distributionSetId, private Rollout createRollout(final String name, final int amountGroups, final long distributionSetId,
final String targetFilterQuery) { final String targetFilterQuery) {
return rolloutManagement.create( return rolloutManagement.create(
entityFactory.rollout().create() entityFactory.rollout().create().set(distributionSetManagement.get(distributionSetId).get()).name(name)
.set(distributionSetManagement.get(distributionSetId).get()).name(name)
.targetFilterQuery(targetFilterQuery), .targetFilterQuery(targetFilterQuery),
amountGroups, new RolloutGroupConditionBuilder().withDefaults() amountGroups, new RolloutGroupConditionBuilder().withDefaults()
.successCondition(RolloutGroupSuccessCondition.THRESHOLD, "100").build()); .successCondition(RolloutGroupSuccessCondition.THRESHOLD, "100").build());

View File

@@ -60,6 +60,7 @@ public class RSQLSoftwareModuleFieldTest extends AbstractJpaIntegrationTest {
@Description("Test filter software module by name") @Description("Test filter software module by name")
public void testFilterByParameterName() { public void testFilterByParameterName() {
assertRSQLQuery(SoftwareModuleFields.NAME.name() + "==agent-hub", 1); assertRSQLQuery(SoftwareModuleFields.NAME.name() + "==agent-hub", 1);
assertRSQLQuery(SoftwareModuleFields.NAME.name() + "!=agent-hub", 3);
assertRSQLQuery(SoftwareModuleFields.NAME.name() + "==agent-hub*", 2); assertRSQLQuery(SoftwareModuleFields.NAME.name() + "==agent-hub*", 2);
assertRSQLQuery(SoftwareModuleFields.NAME.name() + "!=agent-hub*", 2); assertRSQLQuery(SoftwareModuleFields.NAME.name() + "!=agent-hub*", 2);
assertRSQLQuery(SoftwareModuleFields.NAME.name() + "==noExist*", 0); assertRSQLQuery(SoftwareModuleFields.NAME.name() + "==noExist*", 0);
@@ -71,6 +72,7 @@ public class RSQLSoftwareModuleFieldTest extends AbstractJpaIntegrationTest {
@Description("Test filter software module by description") @Description("Test filter software module by description")
public void testFilterByParameterDescription() { public void testFilterByParameterDescription() {
assertRSQLQuery(SoftwareModuleFields.DESCRIPTION.name() + "==agent-hub", 1); assertRSQLQuery(SoftwareModuleFields.DESCRIPTION.name() + "==agent-hub", 1);
assertRSQLQuery(SoftwareModuleFields.DESCRIPTION.name() + "!=agent-hub", 3);
assertRSQLQuery(SoftwareModuleFields.DESCRIPTION.name() + "==noExist*", 0); assertRSQLQuery(SoftwareModuleFields.DESCRIPTION.name() + "==noExist*", 0);
assertRSQLQuery(SoftwareModuleFields.DESCRIPTION.name() + "=in=(agent-hub,notexist)", 1); assertRSQLQuery(SoftwareModuleFields.DESCRIPTION.name() + "=in=(agent-hub,notexist)", 1);
assertRSQLQuery(SoftwareModuleFields.DESCRIPTION.name() + "=out=(agent-hub,notexist)", 3); assertRSQLQuery(SoftwareModuleFields.DESCRIPTION.name() + "=out=(agent-hub,notexist)", 3);
@@ -89,6 +91,7 @@ public class RSQLSoftwareModuleFieldTest extends AbstractJpaIntegrationTest {
@Description("Test filter software module by type") @Description("Test filter software module by type")
public void testFilterByType() { public void testFilterByType() {
assertRSQLQuery(SoftwareModuleFields.TYPE.name() + "==" + TestdataFactory.SM_TYPE_APP, 2); assertRSQLQuery(SoftwareModuleFields.TYPE.name() + "==" + TestdataFactory.SM_TYPE_APP, 2);
assertRSQLQuery(SoftwareModuleFields.TYPE.name() + "!=" + TestdataFactory.SM_TYPE_APP, 2);
assertRSQLQuery(SoftwareModuleFields.TYPE.name() + "==noExist*", 0); assertRSQLQuery(SoftwareModuleFields.TYPE.name() + "==noExist*", 0);
assertRSQLQuery(SoftwareModuleFields.TYPE.name() + "=in=(" + TestdataFactory.SM_TYPE_APP + ")", 2); assertRSQLQuery(SoftwareModuleFields.TYPE.name() + "=in=(" + TestdataFactory.SM_TYPE_APP + ")", 2);
assertRSQLQuery(SoftwareModuleFields.TYPE.name() + "=out=(" + TestdataFactory.SM_TYPE_APP + ")", 2); assertRSQLQuery(SoftwareModuleFields.TYPE.name() + "=out=(" + TestdataFactory.SM_TYPE_APP + ")", 2);
@@ -98,6 +101,8 @@ public class RSQLSoftwareModuleFieldTest extends AbstractJpaIntegrationTest {
@Description("Test filter software module by metadata") @Description("Test filter software module by metadata")
public void testFilterByMetadata() { public void testFilterByMetadata() {
assertRSQLQuery(SoftwareModuleFields.METADATA.name() + ".metaKey==metaValue", 1); assertRSQLQuery(SoftwareModuleFields.METADATA.name() + ".metaKey==metaValue", 1);
assertRSQLQuery(SoftwareModuleFields.METADATA.name() + ".metaKey!=metaValue", 1);
assertRSQLQuery(SoftwareModuleFields.METADATA.name() + ".metaKey!=notexist", 2);
assertRSQLQuery(SoftwareModuleFields.METADATA.name() + ".metaKey==*v*", 2); assertRSQLQuery(SoftwareModuleFields.METADATA.name() + ".metaKey==*v*", 2);
assertRSQLQuery(SoftwareModuleFields.METADATA.name() + ".metaKey==noExist*", 0); assertRSQLQuery(SoftwareModuleFields.METADATA.name() + ".metaKey==noExist*", 0);
assertRSQLQuery(SoftwareModuleFields.METADATA.name() + ".metaKey=in=(metaValue,value)", 2); assertRSQLQuery(SoftwareModuleFields.METADATA.name() + ".metaKey=in=(metaValue,value)", 2);

View File

@@ -36,12 +36,14 @@ public class RSQLSoftwareModuleTypeFieldsTest extends AbstractJpaIntegrationTest
@Description("Test filter software module test type by name") @Description("Test filter software module test type by name")
public void testFilterByParameterName() { public void testFilterByParameterName() {
assertRSQLQuery(SoftwareModuleTypeFields.NAME.name() + "==" + Constants.SMT_DEFAULT_OS_NAME, 1); assertRSQLQuery(SoftwareModuleTypeFields.NAME.name() + "==" + Constants.SMT_DEFAULT_OS_NAME, 1);
assertRSQLQuery(SoftwareModuleTypeFields.NAME.name() + "!=" + Constants.SMT_DEFAULT_OS_NAME, 2);
} }
@Test @Test
@Description("Test filter software module test type by description") @Description("Test filter software module test type by description")
public void testFilterByParameterDescription() { public void testFilterByParameterDescription() {
assertRSQLQuery(SoftwareModuleTypeFields.DESCRIPTION.name() + "==Updated*", 3); assertRSQLQuery(SoftwareModuleTypeFields.DESCRIPTION.name() + "==Updated*", 3);
assertRSQLQuery(SoftwareModuleTypeFields.DESCRIPTION.name() + "!=Updated*", 0);
assertRSQLQuery(SoftwareModuleTypeFields.DESCRIPTION.name() + "==noExist*", 0); assertRSQLQuery(SoftwareModuleTypeFields.DESCRIPTION.name() + "==noExist*", 0);
} }
@@ -49,6 +51,7 @@ public class RSQLSoftwareModuleTypeFieldsTest extends AbstractJpaIntegrationTest
@Description("Test filter software module test type by key") @Description("Test filter software module test type by key")
public void testFilterByParameterKey() { public void testFilterByParameterKey() {
assertRSQLQuery(SoftwareModuleTypeFields.KEY.name() + "==os", 1); assertRSQLQuery(SoftwareModuleTypeFields.KEY.name() + "==os", 1);
assertRSQLQuery(SoftwareModuleTypeFields.KEY.name() + "!=os", 2);
assertRSQLQuery(SoftwareModuleTypeFields.KEY.name() + "=in=(os)", 1); assertRSQLQuery(SoftwareModuleTypeFields.KEY.name() + "=in=(os)", 1);
assertRSQLQuery(SoftwareModuleTypeFields.KEY.name() + "=out=(os)", 2); assertRSQLQuery(SoftwareModuleTypeFields.KEY.name() + "=out=(os)", 2);
} }
@@ -57,6 +60,7 @@ public class RSQLSoftwareModuleTypeFieldsTest extends AbstractJpaIntegrationTest
@Description("Test filter software module test type by max") @Description("Test filter software module test type by max")
public void testFilterByMaxAssignment() { public void testFilterByMaxAssignment() {
assertRSQLQuery(SoftwareModuleTypeFields.MAXASSIGNMENTS.name() + "==1", 2); assertRSQLQuery(SoftwareModuleTypeFields.MAXASSIGNMENTS.name() + "==1", 2);
assertRSQLQuery(SoftwareModuleTypeFields.MAXASSIGNMENTS.name() + "!=1", 1);
} }
private void assertRSQLQuery(final String rsqlParam, final long excpectedEntity) { private void assertRSQLQuery(final String rsqlParam, final long excpectedEntity) {

View File

@@ -43,6 +43,7 @@ public class RSQLTagFieldsTest extends AbstractJpaIntegrationTest {
@Description("Test filter target tag by name") @Description("Test filter target tag by name")
public void testFilterTargetTagByParameterName() { public void testFilterTargetTagByParameterName() {
assertRSQLQueryTarget(TagFields.NAME.name() + "==1", 1); assertRSQLQueryTarget(TagFields.NAME.name() + "==1", 1);
assertRSQLQueryTarget(TagFields.NAME.name() + "!=1", 4);
assertRSQLQueryTarget(TagFields.NAME.name() + "==*", 5); assertRSQLQueryTarget(TagFields.NAME.name() + "==*", 5);
assertRSQLQueryTarget(TagFields.NAME.name() + "==noExist*", 0); assertRSQLQueryTarget(TagFields.NAME.name() + "==noExist*", 0);
assertRSQLQueryTarget(TagFields.NAME.name() + "=in=(1,notexist)", 1); assertRSQLQueryTarget(TagFields.NAME.name() + "=in=(1,notexist)", 1);
@@ -53,6 +54,7 @@ public class RSQLTagFieldsTest extends AbstractJpaIntegrationTest {
@Description("Test filter target tag by description") @Description("Test filter target tag by description")
public void testFilterTargetTagByParameterDescription() { public void testFilterTargetTagByParameterDescription() {
assertRSQLQueryTarget(TagFields.DESCRIPTION.name() + "==1", 1); assertRSQLQueryTarget(TagFields.DESCRIPTION.name() + "==1", 1);
assertRSQLQueryTarget(TagFields.DESCRIPTION.name() + "!=1", 4);
assertRSQLQueryTarget(TagFields.DESCRIPTION.name() + "==*", 5); assertRSQLQueryTarget(TagFields.DESCRIPTION.name() + "==*", 5);
assertRSQLQueryTarget(TagFields.DESCRIPTION.name() + "==noExist*", 0); assertRSQLQueryTarget(TagFields.DESCRIPTION.name() + "==noExist*", 0);
assertRSQLQueryTarget(TagFields.DESCRIPTION.name() + "=in=(1,notexist)", 1); assertRSQLQueryTarget(TagFields.DESCRIPTION.name() + "=in=(1,notexist)", 1);
@@ -63,6 +65,7 @@ public class RSQLTagFieldsTest extends AbstractJpaIntegrationTest {
@Description("Test filter target tag by colour") @Description("Test filter target tag by colour")
public void testFilterTargetTagByParameterColour() { public void testFilterTargetTagByParameterColour() {
assertRSQLQueryTarget(TagFields.COLOUR.name() + "==red", 3); assertRSQLQueryTarget(TagFields.COLOUR.name() + "==red", 3);
assertRSQLQueryTarget(TagFields.COLOUR.name() + "!=red", 2);
assertRSQLQueryTarget(TagFields.COLOUR.name() + "==r*", 3); assertRSQLQueryTarget(TagFields.COLOUR.name() + "==r*", 3);
assertRSQLQueryTarget(TagFields.COLOUR.name() + "==noExist*", 0); assertRSQLQueryTarget(TagFields.COLOUR.name() + "==noExist*", 0);
assertRSQLQueryTarget(TagFields.COLOUR.name() + "=in=(red,notexist)", 3); assertRSQLQueryTarget(TagFields.COLOUR.name() + "=in=(red,notexist)", 3);
@@ -73,6 +76,7 @@ public class RSQLTagFieldsTest extends AbstractJpaIntegrationTest {
@Description("Test filter distribution set tag by name") @Description("Test filter distribution set tag by name")
public void testFilterDistributionSetTagByParameterName() { public void testFilterDistributionSetTagByParameterName() {
assertRSQLQueryDistributionSet(TagFields.NAME.name() + "==1", 1); assertRSQLQueryDistributionSet(TagFields.NAME.name() + "==1", 1);
assertRSQLQueryDistributionSet(TagFields.NAME.name() + "!=1", 4);
assertRSQLQueryDistributionSet(TagFields.NAME.name() + "==*", 5); assertRSQLQueryDistributionSet(TagFields.NAME.name() + "==*", 5);
assertRSQLQueryDistributionSet(TagFields.NAME.name() + "==noExist*", 0); assertRSQLQueryDistributionSet(TagFields.NAME.name() + "==noExist*", 0);
assertRSQLQueryDistributionSet(TagFields.NAME.name() + "=in=(1,2)", 2); assertRSQLQueryDistributionSet(TagFields.NAME.name() + "=in=(1,2)", 2);
@@ -83,6 +87,7 @@ public class RSQLTagFieldsTest extends AbstractJpaIntegrationTest {
@Description("Test filter distribution set by description") @Description("Test filter distribution set by description")
public void testFilterDistributionSetTagByParameterDescription() { public void testFilterDistributionSetTagByParameterDescription() {
assertRSQLQueryDistributionSet(TagFields.DESCRIPTION.name() + "==1", 1); assertRSQLQueryDistributionSet(TagFields.DESCRIPTION.name() + "==1", 1);
assertRSQLQueryDistributionSet(TagFields.DESCRIPTION.name() + "!=1", 4);
assertRSQLQueryDistributionSet(TagFields.DESCRIPTION.name() + "==*", 5); assertRSQLQueryDistributionSet(TagFields.DESCRIPTION.name() + "==*", 5);
assertRSQLQueryDistributionSet(TagFields.DESCRIPTION.name() + "==noExist*", 0); assertRSQLQueryDistributionSet(TagFields.DESCRIPTION.name() + "==noExist*", 0);
assertRSQLQueryDistributionSet(TagFields.DESCRIPTION.name() + "=in=(1,2)", 2); assertRSQLQueryDistributionSet(TagFields.DESCRIPTION.name() + "=in=(1,2)", 2);
@@ -93,6 +98,7 @@ public class RSQLTagFieldsTest extends AbstractJpaIntegrationTest {
@Description("Test filter distribution set by colour") @Description("Test filter distribution set by colour")
public void testFilterDistributionSetTagByParameterColour() { public void testFilterDistributionSetTagByParameterColour() {
assertRSQLQueryDistributionSet(TagFields.COLOUR.name() + "==red", 3); assertRSQLQueryDistributionSet(TagFields.COLOUR.name() + "==red", 3);
assertRSQLQueryDistributionSet(TagFields.COLOUR.name() + "!=red", 2);
assertRSQLQueryDistributionSet(TagFields.COLOUR.name() + "==r*", 3); assertRSQLQueryDistributionSet(TagFields.COLOUR.name() + "==r*", 3);
assertRSQLQueryDistributionSet(TagFields.COLOUR.name() + "==noExist*", 0); assertRSQLQueryDistributionSet(TagFields.COLOUR.name() + "==noExist*", 0);
assertRSQLQueryDistributionSet(TagFields.COLOUR.name() + "=in=(red,notexist)", 3); assertRSQLQueryDistributionSet(TagFields.COLOUR.name() + "=in=(red,notexist)", 3);

View File

@@ -57,17 +57,23 @@ public class RSQLTargetFieldTest extends AbstractJpaIntegrationTest {
target2 = controllerManagement.updateControllerAttributes(target2.getControllerId(), attributes); target2 = controllerManagement.updateControllerAttributes(target2.getControllerId(), attributes);
target2 = controllerManagement.findOrRegisterTargetIfItDoesNotexist(target2.getControllerId(), LOCALHOST); target2 = controllerManagement.findOrRegisterTargetIfItDoesNotexist(target2.getControllerId(), LOCALHOST);
testdataFactory.createTarget("targetId1235"); final Target target3 = testdataFactory.createTarget("targetId1235");
testdataFactory.createTarget("targetId1236"); final Target target4 = testdataFactory.createTarget("targetId1236");
testdataFactory.createTarget("targetId1237");
final TargetTag targetTag = targetTagManagement.create(entityFactory.tag().create().name("Tag1")); final TargetTag targetTag = targetTagManagement.create(entityFactory.tag().create().name("Tag1"));
targetTagManagement.create(entityFactory.tag().create().name("Tag2")); final TargetTag targetTag2 = targetTagManagement.create(entityFactory.tag().create().name("Tag2"));
targetTagManagement.create(entityFactory.tag().create().name("Tag3")); final TargetTag targetTag3 = targetTagManagement.create(entityFactory.tag().create().name("Tag3"));
targetTagManagement.create(entityFactory.tag().create().name("Tag4")); targetTagManagement.create(entityFactory.tag().create().name("Tag4"));
targetManagement.assignTag(Arrays.asList(target.getControllerId(), target2.getControllerId()), targetManagement.assignTag(Arrays.asList(target.getControllerId(), target2.getControllerId()),
targetTag.getId()); targetTag.getId());
targetManagement.assignTag(Arrays.asList(target3.getControllerId(), target4.getControllerId()),
targetTag2.getId());
targetManagement.assignTag(Arrays.asList(target3.getControllerId(), target4.getControllerId()),
targetTag3.getId());
assignDistributionSet(ds.getId(), target.getControllerId()); assignDistributionSet(ds.getId(), target.getControllerId());
} }
@@ -75,20 +81,20 @@ public class RSQLTargetFieldTest extends AbstractJpaIntegrationTest {
@Description("Test filter target by (controller) id") @Description("Test filter target by (controller) id")
public void testFilterByParameterId() { public void testFilterByParameterId() {
assertRSQLQuery(TargetFields.ID.name() + "==targetId123", 1); assertRSQLQuery(TargetFields.ID.name() + "==targetId123", 1);
assertRSQLQuery(TargetFields.ID.name() + "==target*", 4); assertRSQLQuery(TargetFields.ID.name() + "==target*", 5);
assertRSQLQuery(TargetFields.ID.name() + "==noExist*", 0); assertRSQLQuery(TargetFields.ID.name() + "==noExist*", 0);
assertRSQLQuery(TargetFields.ID.name() + "=in=(targetId123,notexist)", 1); assertRSQLQuery(TargetFields.ID.name() + "=in=(targetId123,notexist)", 1);
assertRSQLQuery(TargetFields.ID.name() + "=out=(targetId123,notexist)", 3); assertRSQLQuery(TargetFields.ID.name() + "=out=(targetId123,notexist)", 4);
} }
@Test @Test
@Description("Test filter target by name") @Description("Test filter target by name")
public void testFilterByParameterName() { public void testFilterByParameterName() {
assertRSQLQuery(TargetFields.NAME.name() + "==targetName123", 1); assertRSQLQuery(TargetFields.NAME.name() + "==targetName123", 1);
assertRSQLQuery(TargetFields.NAME.name() + "==target*", 4); assertRSQLQuery(TargetFields.NAME.name() + "==target*", 5);
assertRSQLQuery(TargetFields.NAME.name() + "==noExist*", 0); assertRSQLQuery(TargetFields.NAME.name() + "==noExist*", 0);
assertRSQLQuery(TargetFields.NAME.name() + "=in=(targetName123,notexist)", 1); assertRSQLQuery(TargetFields.NAME.name() + "=in=(targetName123,notexist)", 1);
assertRSQLQuery(TargetFields.NAME.name() + "=out=(targetName123,notexist)", 3); assertRSQLQuery(TargetFields.NAME.name() + "=out=(targetName123,notexist)", 4);
} }
@Test @Test
@@ -105,17 +111,17 @@ public class RSQLTargetFieldTest extends AbstractJpaIntegrationTest {
@Description("Test filter target by controller id") @Description("Test filter target by controller id")
public void testFilterByParameterControllerId() { public void testFilterByParameterControllerId() {
assertRSQLQuery(TargetFields.CONTROLLERID.name() + "==targetId123", 1); assertRSQLQuery(TargetFields.CONTROLLERID.name() + "==targetId123", 1);
assertRSQLQuery(TargetFields.CONTROLLERID.name() + "==target*", 4); assertRSQLQuery(TargetFields.CONTROLLERID.name() + "==target*", 5);
assertRSQLQuery(TargetFields.CONTROLLERID.name() + "==noExist*", 0); assertRSQLQuery(TargetFields.CONTROLLERID.name() + "==noExist*", 0);
assertRSQLQuery(TargetFields.CONTROLLERID.name() + "=in=(targetId123,notexist)", 1); assertRSQLQuery(TargetFields.CONTROLLERID.name() + "=in=(targetId123,notexist)", 1);
assertRSQLQuery(TargetFields.CONTROLLERID.name() + "=out=(targetId123,notexist)", 3); assertRSQLQuery(TargetFields.CONTROLLERID.name() + "=out=(targetId123,notexist)", 4);
} }
@Test @Test
@Description("Test filter target by status") @Description("Test filter target by status")
public void testFilterByParameterUpdateStatus() { public void testFilterByParameterUpdateStatus() {
assertRSQLQuery(TargetFields.UPDATESTATUS.name() + "==pending", 1); assertRSQLQuery(TargetFields.UPDATESTATUS.name() + "==pending", 1);
assertRSQLQuery(TargetFields.UPDATESTATUS.name() + "!=pending", 3); assertRSQLQuery(TargetFields.UPDATESTATUS.name() + "!=pending", 4);
try { try {
assertRSQLQuery(TargetFields.UPDATESTATUS.name() + "==noExist*", 0); assertRSQLQuery(TargetFields.UPDATESTATUS.name() + "==noExist*", 0);
fail("RSQLParameterUnsupportedFieldException was expected since update status unknown"); fail("RSQLParameterUnsupportedFieldException was expected since update status unknown");
@@ -123,13 +129,14 @@ public class RSQLTargetFieldTest extends AbstractJpaIntegrationTest {
// test ok - exception was excepted // test ok - exception was excepted
} }
assertRSQLQuery(TargetFields.UPDATESTATUS.name() + "=in=(pending,error)", 1); assertRSQLQuery(TargetFields.UPDATESTATUS.name() + "=in=(pending,error)", 1);
assertRSQLQuery(TargetFields.UPDATESTATUS.name() + "=out=(pending,error)", 3); assertRSQLQuery(TargetFields.UPDATESTATUS.name() + "=out=(pending,error)", 4);
} }
@Test @Test
@Description("Test filter target by attribute") @Description("Test filter target by attribute")
public void testFilterByAttribute() { public void testFilterByAttribute() {
assertRSQLQuery(TargetFields.ATTRIBUTE.name() + ".revision==1.1", 1); assertRSQLQuery(TargetFields.ATTRIBUTE.name() + ".revision==1.1", 1);
assertRSQLQuery(TargetFields.ATTRIBUTE.name() + ".revision!=1.1", 1);
assertRSQLQuery(TargetFields.ATTRIBUTE.name() + ".revision==1*", 2); assertRSQLQuery(TargetFields.ATTRIBUTE.name() + ".revision==1*", 2);
assertRSQLQuery(TargetFields.ATTRIBUTE.name() + ".revision==noExist*", 0); assertRSQLQuery(TargetFields.ATTRIBUTE.name() + ".revision==noExist*", 0);
assertRSQLQuery(TargetFields.ATTRIBUTE.name() + ".revision=in=(1.1,notexist)", 1); assertRSQLQuery(TargetFields.ATTRIBUTE.name() + ".revision=in=(1.1,notexist)", 1);
@@ -162,10 +169,14 @@ public class RSQLTargetFieldTest extends AbstractJpaIntegrationTest {
@Description("Test filter target by tag") @Description("Test filter target by tag")
public void testFilterByTag() { public void testFilterByTag() {
assertRSQLQuery(TargetFields.TAG.name() + "==Tag1", 2); assertRSQLQuery(TargetFields.TAG.name() + "==Tag1", 2);
assertRSQLQuery(TargetFields.TAG.name() + "==T*", 2); assertRSQLQuery(TargetFields.TAG.name() + "!=Tag1", 2);
assertRSQLQuery(TargetFields.TAG.name() + "==T*", 4);
assertRSQLQuery(TargetFields.TAG.name() + "==noExist*", 0); assertRSQLQuery(TargetFields.TAG.name() + "==noExist*", 0);
assertRSQLQuery(TargetFields.TAG.name() + "!=notexist", 4);
assertRSQLQuery(TargetFields.TAG.name() + "=in=(Tag1,notexist)", 2); assertRSQLQuery(TargetFields.TAG.name() + "=in=(Tag1,notexist)", 2);
assertRSQLQuery(TargetFields.TAG.name() + "=out=(Tag1,notexist)", 0); assertRSQLQuery(TargetFields.TAG.name() + "=in=(null)", 0);
assertRSQLQuery(TargetFields.TAG.name() + "=out=(Tag1,notexist)", 2);
assertRSQLQuery(TargetFields.TAG.name() + "=out=(null)", 4);
} }
@Test @Test