private List<CheckpointService.CheckpointState> queryCheckpoints(String checkpointServiceLink) { QueryTask.Query booleanClause = QueryTask.Query.Builder.create() .addKindFieldClause(CheckpointService.CheckpointState.class) .addFieldClause(ServiceDocument.FIELD_NAME_SELF_LINK, checkpointServiceLink) .build(); QueryTask task = QueryTask.Builder.createDirectTask() .setQuery(booleanClause) .addOption(QueryTask.QuerySpecification.QueryOption.EXPAND_CONTENT) .build(); List<Operation> ops = new ArrayList<>(); for (ServiceHost h : this.host.getInProcessHostMap().values()) { ops.add(Operation.createPost(h, ServiceUriPaths.CORE_LOCAL_QUERY_TASKS).setBody(task).setReferer(this.host.getUri())); } List<QueryTask> tasks = this.host.getTestRequestSender().sendAndWait(ops, QueryTask.class); return tasks.stream().filter(t -> t.results.documentCount.equals(1L)) .map(t -> t.results.documents.values().iterator().next()) .map(d -> Utils.fromJson(d, CheckpointService.CheckpointState.class)) .collect(Collectors.toList()); } }
private List<CheckpointService.CheckpointState> queryCheckpoints(String checkpointServiceLink) { QueryTask.Query booleanClause = QueryTask.Query.Builder.create() .addKindFieldClause(CheckpointService.CheckpointState.class) .addFieldClause(ServiceDocument.FIELD_NAME_SELF_LINK, checkpointServiceLink) .build(); QueryTask task = QueryTask.Builder.createDirectTask() .setQuery(booleanClause) .addOption(QueryTask.QuerySpecification.QueryOption.EXPAND_CONTENT) .build(); List<Operation> ops = new ArrayList<>(); for (ServiceHost h : this.host.getInProcessHostMap().values()) { ops.add(Operation.createPost(h, ServiceUriPaths.CORE_LOCAL_QUERY_TASKS).setBody(task).setReferer(this.host.getUri())); } List<QueryTask> tasks = this.host.getTestRequestSender().sendAndWait(ops, QueryTask.class); return tasks.stream().filter(t -> t.results.documentCount.equals(1L)) .map(t -> t.results.documents.values().iterator().next()) .map(d -> Utils.fromJson(d, CheckpointService.CheckpointState.class)) .collect(Collectors.toList()); } }
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; }
public void sumAccounts(String transactionId, double expected) throws Throwable { Query.Builder queryBuilder = Query.Builder.create() .addKindFieldClause(BankAccountServiceState.class) .addFieldClause(ServiceDocument.FIELD_NAME_SELF_LINK, BankAccountService.FACTORY_LINK + UriUtils.URI_PATH_CHAR + this.baseAccountId + UriUtils.URI_WILDCARD_CHAR, MatchType.WILDCARD); if (transactionId != null) { queryBuilder.addFieldClause(ServiceDocument.FIELD_NAME_TRANSACTION_ID, transactionId); } QueryTask task = QueryTask.Builder.createDirectTask().setQuery(queryBuilder.build()) .build(); this.defaultHost.createQueryTaskService(task, false, true, task, null); double sum = 0; for (String serviceSelfLink : task.results.documentLinks) { String accountId = UriUtils.getLastPathSegment(serviceSelfLink); BankAccountServiceState account = getAccount(transactionId, accountId); sum += account.balance; } assertEquals(expected, sum, 0); }
public static void logVersionInfoForService(TestRequestSender s, URI serviceUri, long targetVersion) { URI indexUri = UriUtils.buildUri(serviceUri, ServiceUriPaths.CORE_DOCUMENT_INDEX); indexUri = UriUtils.extendUriWithQuery(indexUri, ServiceDocument.FIELD_NAME_SELF_LINK, serviceUri.getPath(), ServiceDocument.FIELD_NAME_VERSION, Long.toString(targetVersion)); Operation rop = s.sendAndWait(Operation.createGet(indexUri)); Logger.getAnonymousLogger() .info("GET " + indexUri + " " + Utils.toJsonHtml(rop.getBodyRaw())); Query qs = Query.Builder.create() .addFieldClause(ServiceDocument.FIELD_NAME_SELF_LINK, serviceUri.getPath()) .build(); QueryTask q = QueryTask.Builder.createDirectTask() .addOption(QueryOption.INCLUDE_ALL_VERSIONS) .addOption(QueryOption.EXPAND_CONTENT) .setQuery(qs) .build(); URI queryUri = UriUtils.buildUri(serviceUri, ServiceUriPaths.CORE_LOCAL_QUERY_TASKS); Operation queryOp = s.sendAndWait(Operation.createPost(queryUri).setBody(q)); Logger.getAnonymousLogger().info(Utils.toJsonHtml(queryOp.getBodyRaw())); }
private void processDoStuffStage(DemoTaskState currentState) { QueryTask.Query query = QueryTask.Query.Builder.create() .addKindFieldClause(ExampleService.ExampleServiceState.class) .build(); QueryTask queryTask = QueryTask.Builder.createDirectTask() .setQuery(query) .build(); Operation queryPostOp = Operation .createPost(this, ServiceUriPaths.CORE_QUERY_TASKS) .setBody(queryTask) .setCompletion((Operation op, Throwable ex) -> { if (ex != null) { failTask(currentState, ex); return; } QueryTask queryResult = op.getBody(QueryTask.class); processQueryResults(currentState, queryResult); }); sendRequest(queryPostOp); }
@Test public void maxExpirationTimeForGroupByQuery() throws Throwable { setUpHost(false); Query query = Query.Builder.create() .addFieldClause(ServiceDocument.FIELD_NAME_KIND, Utils.buildKind(ExampleServiceState.class)) .build(); // create a group by paginated query with MAX expiration time QueryTask queryTask = QueryTask.Builder.createDirectTask() .addOption(QueryOption.GROUP_BY) .setGroupResultLimit(10) .orderAscending(ExampleServiceState.FIELD_NAME_ID, TypeName.STRING) .groupOrder(ExampleServiceState.FIELD_NAME_NAME, TypeName.STRING, SortOrder.ASC) .setQuery(query).build(); queryTask.documentExpirationTimeMicros = Long.MAX_VALUE; this.host.createQueryTaskService(queryTask, false, true, queryTask, null); assertThat(this.indexService.getPaginatedSearchersByExpirationTime()) .hasSize(1) .containsOnlyKeys(Long.MAX_VALUE); }
private static Operation buildLatestNonTransactionQueryTaskOp(StatefulService s, AuthorizationContext authContext) { Query.Builder queryBuilder = Query.Builder.create(); queryBuilder.addFieldClause(ServiceDocument.FIELD_NAME_SELF_LINK, s.getSelfLink()); queryBuilder.addFieldClause(ServiceDocument.FIELD_NAME_TRANSACTION_ID, "*", MatchType.WILDCARD, Occurance.MUST_NOT_OCCUR); QueryTask.Builder queryTaskBuilder = QueryTask.Builder.createDirectTask() .setQuery(queryBuilder.build()); queryTaskBuilder.addOption(QueryOption.EXPAND_CONTENT); queryTaskBuilder.addOption(QueryOption.INCLUDE_ALL_VERSIONS); queryTaskBuilder.orderDescending(ServiceDocument.FIELD_NAME_VERSION, TypeName.LONG); QueryTask task = queryTaskBuilder.build(); Operation returnOp = Operation .createPost(s.getHost(), ServiceUriPaths.CORE_QUERY_TASKS) .setBody(task); returnOp.setAuthorizationContext(authContext); return returnOp; }
private Operation createEpzQueryOperation(String resourcePoolLink, boolean expandContent) { Query epzQuery = Query.Builder.create() .addKindFieldClause(ElasticPlacementZoneState.class) .addFieldClause(ElasticPlacementZoneState.FIELD_NAME_RESOURCE_POOL_LINK, resourcePoolLink) .build(); QueryTask.Builder epzQueryTaskBuilder = QueryTask.Builder.createDirectTask() .setQuery(epzQuery); if (expandContent) { epzQueryTaskBuilder.addOption(QueryOption.EXPAND_CONTENT); } Operation queryEpzOp = Operation .createPost(getHost(), ServiceUriPaths.CORE_QUERY_TASKS) .setBody(epzQueryTaskBuilder.build()) .setReferer(getUri()); return queryEpzOp; }
private static Operation buildLatestInTransactionQueryTaskOp(StatefulService s, String txid, AuthorizationContext authContext) { Query.Builder queryBuilder = Query.Builder.create(); queryBuilder.addFieldClause(ServiceDocument.FIELD_NAME_SELF_LINK, s.getSelfLink()); queryBuilder.addFieldClause(ServiceDocument.FIELD_NAME_TRANSACTION_ID, txid); QueryTask.Builder queryTaskBuilder = QueryTask.Builder.createDirectTask() .setQuery(queryBuilder.build()); queryTaskBuilder.addOption(QueryOption.EXPAND_CONTENT); queryTaskBuilder.addOption(QueryOption.INCLUDE_ALL_VERSIONS); queryTaskBuilder.orderDescending(ServiceDocument.FIELD_NAME_VERSION, TypeName.LONG); QueryTask task = queryTaskBuilder.build(); Operation returnOp = Operation .createPost(s.getHost(), ServiceUriPaths.CORE_QUERY_TASKS) .setBody(task); returnOp.setAuthorizationContext(authContext); return returnOp; }
private QueryTask makeQueryTask() { return QueryTask.Builder.createDirectTask() .setQuery(QueryTask.Query.Builder.create() .addKindFieldClause(ExampleServiceState.class) .addFieldClause(ExampleServiceState.FIELD_NAME_NAME, "a", MatchType.WILDCARD, Occurance.MUST_NOT_OCCUR) .addFieldClause(ExampleServiceState.FIELD_NAME_NAME, "c", MatchType.WILDCARD, Occurance.MUST_NOT_OCCUR) .addFieldClause(ExampleServiceState.FIELD_NAME_NAME, "5", MatchType.WILDCARD, Occurance.MUST_NOT_OCCUR) .build()) .setResultLimit(50) .build(); }
private QueryTask makeQueryTask() { return QueryTask.Builder.createDirectTask() .setQuery(QueryTask.Query.Builder.create() .addKindFieldClause(ExampleServiceState.class) .addFieldClause(ExampleServiceState.FIELD_NAME_NAME, "a", MatchType.WILDCARD, Occurance.MUST_NOT_OCCUR) .addFieldClause(ExampleServiceState.FIELD_NAME_NAME, "c", MatchType.WILDCARD, Occurance.MUST_NOT_OCCUR) .addFieldClause(ExampleServiceState.FIELD_NAME_NAME, "5", MatchType.WILDCARD, Occurance.MUST_NOT_OCCUR) .build()) .setResultLimit(50) .build(); }
@Test public void maxExpirationTimeForPaginatedQuery() throws Throwable { setUpHost(false); Query query = Query.Builder.create() .addFieldClause(ServiceDocument.FIELD_NAME_KIND, Utils.buildKind(ExampleServiceState.class)) .build(); // create a paginated query with MAX expiration time QueryTask queryTask = QueryTask.Builder.createDirectTask().setQuery(query).setResultLimit(2).build(); queryTask.documentExpirationTimeMicros = Long.MAX_VALUE; this.host.createQueryTaskService(queryTask, false, true, queryTask, null); assertThat(this.indexService.getPaginatedSearchersByExpirationTime()) .hasSize(1) .containsOnlyKeys(Long.MAX_VALUE); }
public QueryTask createTagsQueryTask(boolean deletedTags) { Query.Builder query = Query.Builder.create() .addKindFieldClause(TagState.class); if (deletedTags) { query.addFieldClause(TagState.FIELD_NAME_DELETED, Boolean.TRUE); } else { query.addFieldClause(TagState.FIELD_NAME_DELETED, Boolean.FALSE); } return QueryTask.Builder.createDirectTask() .addOption(QueryOption.EXPAND_CONTENT) .setQuery(query.build()) .build(); }
private Long getDocumentCount(VerificationHost host, String factoryLink) { QueryTask queryTask = QueryTask.Builder .createDirectTask() .addOption(QueryOption.INCLUDE_ALL_VERSIONS) .addOption(QueryOption.COUNT) .setQuery( Query.Builder.create().addFieldClause(ServiceDocument.FIELD_NAME_SELF_LINK, factoryLink, MatchType.PREFIX).build()) .build(); host.createQueryTaskService(queryTask, false, true, queryTask, null); return queryTask.results.documentCount; } }
private void doThroughputPostWithNoQueryResults(boolean interleaveQueries, URI factoryUri) throws Throwable { // Create a query which will match no documents. This code path is designed to simulate // the cost of queries on the index without incurring the cost of processing results. QueryTask queryTask = QueryTask.Builder.createDirectTask() .setQuery(Query.Builder.create() .addFieldClause(ExampleServiceState.FIELD_NAME_ID, "saffsdfs") .build()) .build(); queryTask.indexLink = this.indexLink; doThroughputPost(interleaveQueries, factoryUri, null, queryTask); }
private void doThroughputPostWithNoQueryResults(boolean interleaveQueries, URI factoryUri) throws Throwable { // Create a query which will match no documents. This code path is designed to simulate // the cost of queries on the index without incurring the cost of processing results. QueryTask queryTask = QueryTask.Builder.createDirectTask() .setQuery(Query.Builder.create() .addFieldClause(ExampleServiceState.FIELD_NAME_ID, "saffsdfs") .build()) .build(); queryTask.indexLink = this.indexLink; doThroughputPost(interleaveQueries, factoryUri, null, queryTask); }
/** * Descendants might override this method to customize the default query task build logic. * For example add option such as {@link QueryOption#TOP_RESULTS}. */ protected QueryTask.Builder newQueryTaskBuilder() { return QueryTask.Builder.createDirectTask() .setQuery(this.query) .setResultLimit(getResultLimit()); }
private void assertDocumentCount(long expectedCount, Collection<String> documentLinks) throws Throwable { Query query = Query.Builder.create() .addInClause(ServiceDocument.FIELD_NAME_SELF_LINK, documentLinks).build(); QueryTask queryTask = QueryTask.Builder.createDirectTask().setQuery(query) .addOption(QueryOption.COUNT).build(); QueryTask returnedTask = querySynchronously(queryTask); assertThat(returnedTask.results.documentCount, is(expectedCount)); }
/** * Descendants might override this method to customize the default query task build logic. * For example add option such as {@link QueryOption#TOP_RESULTS}. */ protected QueryTask.Builder newQueryTaskBuilder() { QueryTask.Builder qtBuilder = this.isDirectQuery ? QueryTask.Builder.createDirectTask() : QueryTask.Builder.create(); return qtBuilder .setQuery(this.query) .setResultLimit(getResultLimit()); }