public static QueryTask createQueryTaskForProjectAssociatedWithPlacement(ResourceState project, Query query) { QueryTask queryTask = null; if (query != null) { queryTask = QueryTask.Builder.createDirectTask().setQuery(query).build(); } else if (project != null && project.documentSelfLink != null) { queryTask = QueryUtil.buildQuery(GroupResourcePlacementState.class, true, QueryUtil.addTenantAndGroupClause(Arrays.asList(project.documentSelfLink))); } if (queryTask != null) { QueryUtil.addCountOption(queryTask); } return queryTask; }
@Test public void testAddTenantAndGroupClauseWhenTenantAndSubTenantAreSet() { List<String> tenantLinks = Arrays.asList(TENANT_ID, GROUP_ID); Query query = QueryUtil.addTenantAndGroupClause(tenantLinks); Query tenantQuery = query.booleanClauses.stream() .filter(l -> l.term.matchValue.contains(TENANT_ID)).findFirst().get(); Query subTenantQuery = query.booleanClauses.stream() .filter(l -> l.term.matchValue.contains(GROUP_ID)).findFirst().get(); assertNotNull(tenantQuery); assertNotNull(subTenantQuery); assertEquals(tenantQuery.occurance, Occurance.MUST_OCCUR); assertEquals(subTenantQuery.occurance, Occurance.MUST_OCCUR); }
@Test public void testAddTenantAndGroupClauseWhenTenantAndSubtenantAndUserAreSet() { List<String> tenantLinks = Arrays.asList(TENANT_ID, GROUP_ID, USER_ID); Query query = QueryUtil.addTenantAndGroupClause(tenantLinks); Query tenantQuery = query.booleanClauses.stream() .filter(l -> l.term.matchValue.contains(TENANT_ID)).findFirst().get(); Query subTenantQuery = query.booleanClauses.stream() .filter(l -> l.term.matchValue.contains(GROUP_ID)).findFirst().get(); Optional<Query> userOptional = query.booleanClauses.stream() .filter(l -> l.term.matchValue.contains(USER_ID)).findFirst(); assertNotNull(tenantQuery); assertNotNull(subTenantQuery); assertEquals(Optional.empty(), userOptional); assertEquals(tenantQuery.occurance, Occurance.MUST_OCCUR); assertEquals(subTenantQuery.occurance, Occurance.MUST_OCCUR); }
@Test public void testAddTenantAndGroupClauseWhenTenantAndUserAreSet() { List<String> tenantLinks = Arrays.asList(TENANT_ID, USER_ID); Query query = QueryUtil.addTenantAndGroupClause(tenantLinks); assertNull("assumtion failed for query being single", query.booleanClauses); assertTrue(query.term.matchValue.contains(TENANT_ID)); }
private void handleQueryServices(ServiceDocumentDeleteTaskState task) { QueryTask query = QueryUtil.buildQuery(task.deleteDocumentKind, false); query.querySpec.options = EnumSet.of(QueryOption.TOP_RESULTS); query.querySpec.resultLimit = 50; query.documentExpirationTimeMicros = Utils.fromNowMicrosUtc( TimeUnit.HOURS.toMicros(5)); if (task.tenantLinks != null) { // Delete documents only in current tenant and group query.querySpec.query.addBooleanClause(QueryUtil.addTenantAndGroupClause(task.tenantLinks)); } List<String> documents = new ArrayList<String>(); new ServiceDocumentQuery<ServiceDocument>(getHost(), ServiceDocument.class) .query(query, (r) -> { if (r.hasException()) { logWarning("Query failed, task will not finish: %s", r.getException().getMessage()); failTask(String.format("Could not get %s, task failed", task.deleteDocumentKind), r.getException()); return; } else if (r.hasResult() && documents.size() < r.getCount()) { documents.add(r.getDocumentSelfLink()); } else { handleDeleteServices(task, documents); } }); }
@Test public void testAddTenantAndGroupClauseWhenOnlyTenantIsSet() { List<String> tenantLinks = Arrays.asList(TENANT_ID); Query query = QueryUtil.addTenantAndGroupClause(tenantLinks); assertNotNull(query); assertEquals(query.occurance, Occurance.MUST_OCCUR); assertEquals(query.term.matchValue, TENANT_ID); }
@Test public void testAddGroupTagWhenOnlyTenantIsSet() { String groupTag = "group-tag1"; List<String> tenantLinks = Arrays.asList(groupTag); Query query = QueryUtil.addTenantAndGroupClause(tenantLinks); assertNotNull(query); assertEquals(query.occurance, Occurance.MUST_OCCUR); assertEquals(query.term.matchValue, groupTag); }
@Test public void testAddTenantAndGroupClauseWhenTenantLinksIsNull() { List<String> tenantLinks = null; Query query = QueryUtil.addTenantAndGroupClause(tenantLinks); assertNotNull(query); assertEquals(query.occurance, Occurance.MUST_NOT_OCCUR); assertEquals(query.term.matchValue, UriUtils.URI_WILDCARD_CHAR); assertEquals(query.term.matchType, MatchType.WILDCARD); }
+ " count: [%s]..", state.resourceDescriptionLink, state.resourceCount); Query tenantLinksQuery = QueryUtil.addTenantAndGroupClause(null); q.querySpec.query.addBooleanClause(tenantLinksQuery); } else { state.tenantLinks, state.resourceDescriptionLink, state.resourceCount); Query tenantLinksQuery = QueryUtil.addTenantAndGroupClause(state.tenantLinks); q.querySpec.query.addBooleanClause(tenantLinksQuery);
Query tenantLinksQuery = QueryUtil.addTenantAndGroupClause(null); q.querySpec.query.addBooleanClause(tenantLinksQuery);