private void checkMetricInfoAgainstPreparedMessages(MetricInfoListResult metInfo, List<KapuaDataMessage> msgLst) { Set<String> msgMetrics = new HashSet<>(); Set<String> msgClients = new HashSet<>(); Set<String> infoMetrics = new HashSet<>(); Set<String> infoClients = new HashSet<>(); assertNotNull("No channel info data!", metInfo); assertNotNull("No messages to compare to!", msgLst); for (KapuaDataMessage tmpMsg : msgLst) { msgClients.add(tmpMsg.getClientId()); for (String tmpMet : tmpMsg.getPayload().getMetrics().keySet()) { msgMetrics.add(tmpMet); } } for (MetricInfo tmpMet : metInfo.getItems()) { infoClients.add(tmpMet.getClientId()); infoMetrics.add(tmpMet.getName()); } assertEquals("The number of clients does not match!", msgClients.size(), infoClients.size()); assertEquals("The number of topics does not match!", msgMetrics.size(), infoMetrics.size()); for (String tmpMetric : msgMetrics) { assertTrue(String.format("The topic [%s] is not found in the info list!", tmpMetric), infoMetrics.contains(tmpMetric)); } for (String tmpClient : msgClients) { assertTrue(String.format("The client id [%s] is not found in the info list!", tmpClient), infoClients.contains(tmpClient)); } }
tmpMsg.setSentOn(sentOn); tmpMsg.setReceivedOn(receivedOn); tmpMsg.getPayload().getMetrics().put(metrics[0], metricsValuesDate[i % metricsValuesDate.length]); tmpMsg.getPayload().getMetrics().put(metrics[1], metricsValuesString[i % metricsValuesString.length]); tmpMsg.getPayload().getMetrics().put(metrics[2], metricsValuesInt[i % metricsValuesInt.length]); tmpMsg.getPayload().getMetrics().put(metrics[3], metricsValuesFloat[i % metricsValuesFloat.length]); tmpMsg.getPayload().getMetrics().put(metrics[4], metricsValuesBoolean[i % metricsValuesBoolean.length]); tmpMsg.getPayload().getMetrics().put(metrics[5], metricsValuesDouble[i % metricsValuesDouble.length]); tmpList.add(tmpMsg);
@And("^I set the following metrics to the message (\\d+) from the list \"(.+)\"$") public void appendMetricsToSelectedMessage(int idx, String lstKey, List<TestMetric> metLst) throws Exception { List<KapuaDataMessage> tmpMsgLst = (List<KapuaDataMessage>) stepData.get(lstKey); KapuaDataMessage tmpMsg = tmpMsgLst.get(idx); tmpMsg.setPayload(new KapuaDataPayloadImpl()); for (TestMetric tmpMet : metLst) { switch (tmpMet.getType().trim().toLowerCase()) { case "string": { tmpMsg.getPayload().getMetrics().put(tmpMet.getMetric(), tmpMet.getValue()); break; } case "int": { tmpMsg.getPayload().getMetrics().put(tmpMet.getMetric(), Integer.valueOf(tmpMet.getValue())); break; } case "double": { tmpMsg.getPayload().getMetrics().put(tmpMet.getMetric(), Double.valueOf(tmpMet.getValue())); break; } case "bool": { tmpMsg.getPayload().getMetrics().put(tmpMet.getMetric(), Boolean.valueOf(tmpMet.getValue().trim().toUpperCase())); break; } default: { fail(String.format("Unknown metric type [%s]", tmpMet.getType())); break; } } } }
private boolean checkThatTheInsertedMessageMatchesTheOriginal(KapuaDataMessage origMsg, DatastoreMessage foundMsg) throws KapuaException { assertTrue(areSemanticPartsEqual(origMsg.getChannel().getSemanticParts(), foundMsg.getChannel().getSemanticParts())); if (origMsg.getPayload() != null) { assertArrayEquals(origMsg.getPayload().getBody(), foundMsg.getPayload().getBody()); assertTrue(areMetricsEqual(origMsg.getPayload().getMetrics(), foundMsg.getPayload().getMetrics())); } assertTrue(arePositionsEqual(origMsg.getPosition(), foundMsg.getPosition())); assertTrue(foundMsg.getTimestamp().compareTo(origMsg.getReceivedOn()) >= 0); assertTrue(foundMsg.getTimestamp().compareTo(new Date(origMsg.getReceivedOn().getTime() + 10000)) <= 0); assertEquals(origMsg.getCapturedOn(), foundMsg.getCapturedOn()); assertEquals(origMsg.getSentOn(), foundMsg.getSentOn()); assertEquals(origMsg.getReceivedOn(), foundMsg.getReceivedOn()); return true; }
@Override public KuraDataMessage translate(KapuaDataMessage kapuaDataMessage) throws KapuaException { KapuaLocator locator = KapuaLocator.getInstance(); AccountService accountService = locator.getService(AccountService.class); Account account = accountService.find(kapuaDataMessage.getScopeId()); if (account == null) { throw new KapuaEntityNotFoundException(Account.TYPE, kapuaDataMessage.getScopeId()); } // // Kapua Channel KuraDataChannel kuraDataChannel = translate(kapuaDataMessage.getChannel()); kuraDataChannel.setClientId(kapuaDataMessage.getClientId()); kuraDataChannel.setScope(account.getName()); // // Kapua payload KuraDataPayload kuraDataPayload = translate(kapuaDataMessage.getPayload()); kuraDataPayload.setBody(kapuaDataMessage.getPayload().getBody()); kuraDataPayload.setMetrics(kapuaDataMessage.getPayload().getMetrics()); kuraDataPayload.setPosition(TranslatorKapuaKuraUtils.translate(kapuaDataMessage.getPosition())); kuraDataPayload.setTimestamp(kapuaDataMessage.getSentOn()); // // Kapua message KuraDataMessage kuraDataMessage = new KuraDataMessage(); kuraDataMessage.setChannel(kuraDataChannel); kuraDataMessage.setPayload(kuraDataPayload); // Return Kapua Message return kuraDataMessage; }
@Override public KuraDataMessage translate(KapuaDataMessage kapuaDataMessage) throws KapuaException { KapuaLocator locator = KapuaLocator.getInstance(); AccountService accountService = locator.getService(AccountService.class); Account account = accountService.find(kapuaDataMessage.getScopeId()); if (account == null) { throw new KapuaEntityNotFoundException(Account.TYPE, kapuaDataMessage.getScopeId()); } // // Kapua Channel KuraDataChannel kuraDataChannel = translate(kapuaDataMessage.getChannel()); kuraDataChannel.setClientId(kapuaDataMessage.getClientId()); kuraDataChannel.setScope(account.getName()); // // Kapua payload KuraDataPayload kuraDataPayload = translate(kapuaDataMessage.getPayload()); kuraDataPayload.setBody(kapuaDataMessage.getPayload().getBody()); kuraDataPayload.setMetrics(kapuaDataMessage.getPayload().getMetrics()); kuraDataPayload.setPosition(TranslatorKapuaKuraUtils.translate(kapuaDataMessage.getPosition())); kuraDataPayload.setTimestamp(kapuaDataMessage.getSentOn()); // // Kapua message KuraDataMessage kuraDataMessage = new KuraDataMessage(); kuraDataMessage.setChannel(kuraDataChannel); kuraDataMessage.setPayload(kuraDataPayload); // Return Kapua Message return kuraDataMessage; }
@Then("^The datastore message \"(.*)\" matches the prepared message \"(.*)\"$") public void checkThatTheStoredMessageMatchesTheOriginal(String datastoreMsgKey, String originalMsgKey) throws KapuaException { KapuaDataMessage origMsg = (KapuaDataMessage) stepData.get(originalMsgKey); DatastoreMessage foundMsg = (DatastoreMessage) stepData.get(datastoreMsgKey); checkThatTheInsertedMessageMatchesTheOriginal(origMsg, foundMsg); isChannelForFirstMessageInStoreOK(foundMsg.getDatastoreId(), foundMsg.getTimestamp()); isClientForFirstMessageInStoreOK(foundMsg.getDatastoreId(), foundMsg.getTimestamp()); if (origMsg.getPayload() != null) { isMetricForFirstMessageInStoreOK(foundMsg.getDatastoreId(), foundMsg.getTimestamp()); } }
public JsonKapuaDataMessage(KapuaDataMessage kapuaDataMessage) { setId(kapuaDataMessage.getId()); setScopeId(kapuaDataMessage.getScopeId()); setDeviceId(kapuaDataMessage.getDeviceId()); setClientId(kapuaDataMessage.getClientId()); setReceivedOn(kapuaDataMessage.getReceivedOn()); setSentOn(kapuaDataMessage.getSentOn()); setCapturedOn(kapuaDataMessage.getCapturedOn()); setPosition(kapuaDataMessage.getPosition()); setChannel(kapuaDataMessage.getChannel()); setPayload(kapuaDataMessage.getPayload()); }