@Then("^I get empty message list result$") public void getEmptyMessageListResult() { MessageListResult result = (MessageListResult) stepData.get("messageListResult"); assertTrue(result.isEmpty()); }
@When("^I pick message number (\\d+) from the list \"(.+)\" and remember it as \"(.+)\"$") public void pickADatastoreMessageFromList(int index, String lstKey, String msgKey) { MessageListResult tmpList = (MessageListResult) stepData.get(lstKey); DatastoreMessage tmpMsg = tmpList.getItem(index); stepData.put(msgKey, tmpMsg); }
result.getItems().forEach(m -> jsonDatastoreMessages.add(new JsonDatastoreMessage(m))); JsonMessageListResult jsonResult = new JsonMessageListResult(); jsonResult.addItems(jsonDatastoreMessages);
if (messageList.getSize() == 1) { lastPublishedMessageId = messageList.getFirstItem().getDatastoreId(); lastPublishedMessageTimestamp = messageList.getFirstItem().getTimestamp(); } else if (messageList.isEmpty()) {
@Then("I expect the latest captured message on channel \"(.*)\" to have the metrics") public void testMessageData(final String topic, final List<MetricEntry> expectedMetrics) throws Exception { final MessageStoreService service = KapuaLocator.getInstance().getService(MessageStoreService.class); session.withLogin(() -> { With.withUserAccount(currentDevice.getAccountName(), account -> { // start a new query final MessageQueryImpl query = new MessageQueryImpl(account.getId()); // query for client and channel final AndPredicateImpl and = new AndPredicateImpl(); and.getPredicates().add(new TermPredicateImpl(MessageField.CLIENT_ID, currentDevice.getClientId())); and.getPredicates().add(new TermPredicateImpl(MessageField.CHANNEL, topic)); query.setPredicate(and); // sort by captured time query.setSortFields(Arrays.asList(SortField.descending(MessageField.CAPTURED_ON.field()))); // perform the query final MessageListResult result = service.query(query); Assert.assertEquals(1, result.getSize()); // get the first item final DatastoreMessage message = result.getFirstItem(); Assert.assertEquals(currentDevice.getClientId(), message.getClientId()); // get payload structure final KapuaPayload payload = message.getPayload(); // assert metrics data final Map<String, Object> properties = payload.getMetrics(); Assert.assertEquals(toData(expectedMetrics), properties); }); }); }
@Then("I expect the number of messages for this device to be (\\d+)") public void expectNumberOfMessages(long numberOfMessages) throws Exception { final MessageStoreService service = KapuaLocator.getInstance().getService(MessageStoreService.class); session.withLogin(() -> { With.withUserAccount(currentDevice.getAccountName(), account -> { // create new query final MessageQueryImpl query = new MessageQueryImpl(account.getId()); // filter for client only query.setPredicate(new TermPredicateImpl(MessageField.CLIENT_ID, currentDevice.getClientId())); // set query options query.setAskTotalCount(true); query.setLimit((int)numberOfMessages); // perform query final MessageListResult result = service.query(query); // eval just the size Assert.assertEquals(numberOfMessages, result.getSize()); // eval the total count Assert.assertEquals(Long.valueOf(numberOfMessages), result.getTotalCount()); // different approach -> same result Assert.assertEquals(numberOfMessages, service.count(query)); }); }); }
if (messageList.getSize() == 1) { lastPublishedMessageId = messageList.getFirstItem().getDatastoreId(); lastPublishedMessageTimestamp = messageList.getFirstItem().getTimestamp(); } else if (messageList.isEmpty()) {
if (messageList.getSize() == 1) { lastPublishedMessageId = messageList.getFirstItem().getDatastoreId(); lastPublishedMessageTimestamp = messageList.getFirstItem().getTimestamp(); } else if (messageList.isEmpty()) {
/** * Queries the results with the given {@link MessageQuery} parameter. * * @param scopeId The {@link ScopeId} in which to search results. * @param query The {@link MessageQuery} to used to filter results. * @return The {@link MessageListResult} of all the result matching the given {@link MessageQuery} parameter. * @throws Exception Whenever something bad happens. See specific {@link KapuaService} exceptions. * @since 1.0.0 */ @POST @Path("_query") @Consumes({ MediaType.APPLICATION_JSON }) @Produces({ MediaType.APPLICATION_JSON }) @ApiOperation(nickname = "dataMessageQuery", value = "Queries the DatastoreMessages", notes = "Queries the DatastoreMessages with the given DatastoreMessageQuery parameter returning all matching DatastoreMessages", response = MessageListResult.class) public JsonMessageListResult queryJson( @ApiParam(value = "The ScopeId in which to search results", required = true, defaultValue = DEFAULT_SCOPE_ID) @PathParam("scopeId") ScopeId scopeId, @ApiParam(value = "The DatastoreMessageQuery to use to filter results", required = true) JsonMessageQuery query) throws Exception { query.setScopeId(scopeId); MessageListResult result = DATA_MESSAGES.query(scopeId, convertQuery(query)); List<JsonDatastoreMessage> jsonDatastoreMessages = new ArrayList<>(); result.getItems().forEach(m -> jsonDatastoreMessages.add(new JsonDatastoreMessage(m))); JsonMessageListResult jsonResult = new JsonMessageListResult(); jsonResult.addItems(jsonDatastoreMessages); return jsonResult; }