Commit 49a98673525407ace293bc86a14b2a44a2a88fbe

Authored by viktorbasanets
1 parent 5a65ec75

After review

... ... @@ -319,12 +319,62 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes
319 319 }
320 320
321 321 @Test
322   - public void testTheCopyOfAttrsThatMatchWithDeviceCriteriaForTheView() throws Exception {
  322 + public void testTheCopyOfAttrsIntoTSForTheView() throws Exception {
  323 + Set<String> actualAttributesSet =
  324 + getAttributesByKeys("{\"caValue1\":\"value1\", \"caValue2\":true, \"caValue3\":42.0, \"caValue4\":73}");
323 325
324   - String viewDeviceId = testDevice.getId().getId().toString();
325   - DeviceCredentials deviceCredentials
326   - = doGet("/api/device/" + viewDeviceId + "/credentials", DeviceCredentials.class);
  326 + Set<String> expectedActualAttributesSet =
  327 + new HashSet<>(Arrays.asList("caValue1", "caValue2", "caValue3", "caValue4"));
  328 + assertTrue(actualAttributesSet.containsAll(expectedActualAttributesSet));
  329 + Thread.sleep(1000);
  330 +
  331 + EntityView savedView = getNewSavedEntityView("Test entity view");
  332 + String urlOfTelemetryValues = "/api/plugins/telemetry/ENTITY_VIEW/" + savedView.getId().getId().toString() +
  333 + "/values/attributes?keys=" + String.join(",", actualAttributesSet);
  334 + List<Map<String, Object>> values = doGetAsync(urlOfTelemetryValues, List.class);
  335 +
  336 + assertEquals("value1", getValue(values, "caValue1"));
  337 + assertEquals(true, getValue(values, "caValue2"));
  338 + assertEquals(42.0, getValue(values, "caValue3"));
  339 + assertEquals(73, getValue(values, "caValue4"));
  340 + }
  341 +
  342 + @Test
  343 + public void testTheCopyOfAttrsOutOfTSForTheView() throws Exception {
  344 + Set<String> actualAttributesSet =
  345 + getAttributesByKeys("{\"caValue1\":\"value1\", \"caValue2\":true, \"caValue3\":42.0, \"caValue4\":73}");
  346 +
  347 + Set<String> expectedActualAttributesSet = new HashSet<>(Arrays.asList("caValue1", "caValue2", "caValue3", "caValue4"));
  348 + assertTrue(actualAttributesSet.containsAll(expectedActualAttributesSet));
  349 + Thread.sleep(1000);
  350 +
  351 + List<Map<String, Object>> values = doGetAsync("/api/plugins/telemetry/DEVICE/" + testDevice.getId().getId().toString() +
  352 + "/values/attributes?keys=" + String.join(",", actualAttributesSet), List.class);
  353 +
  354 + EntityView view = new EntityView();
  355 + view.setEntityId(testDevice.getId());
  356 + view.setTenantId(savedTenant.getId());
  357 + view.setName("Test entity view");
  358 + view.setKeys(telemetry);
  359 + view.setStartTimeMs((long) getValue(values, "lastUpdateTs") * 10);
  360 + view.setEndTimeMs((long) getValue(values, "lastUpdateTs") / 10);
  361 + EntityView savedView = doPost("/api/entityView", view, EntityView.class);
  362 +
  363 + String urlOfTelemetryValues = "/api/plugins/telemetry/ENTITY_VIEW/" + savedView.getId().getId().toString() +
  364 + "/values/attributes?keys=" + String.join(",", actualAttributesSet);
  365 + values = doGetAsync(urlOfTelemetryValues, List.class);
327 366
  367 +
  368 + assertEquals("value1", getValue(values, "caValue1"));
  369 + assertEquals(true, getValue(values, "caValue2"));
  370 + assertEquals(42.0, getValue(values, "caValue3"));
  371 + assertEquals(73, getValue(values, "caValue4"));
  372 + }
  373 +
  374 + private Set<String> getAttributesByKeys(String stringKV) throws Exception {
  375 + String viewDeviceId = testDevice.getId().getId().toString();
  376 + DeviceCredentials deviceCredentials =
  377 + doGet("/api/device/" + viewDeviceId + "/credentials", DeviceCredentials.class);
328 378 assertEquals(testDevice.getId(), deviceCredentials.getDeviceId());
329 379
330 380 String accessToken = deviceCredentials.getCredentialsId();
... ... @@ -339,31 +389,19 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes
339 389 Thread.sleep(3000);
340 390
341 391 MqttMessage message = new MqttMessage();
342   - message.setPayload(("{\"caValue1\":\"value1\", \"caValue2\":true, \"caValue3\":42.0, \"caValue4\":73}").getBytes());
  392 + message.setPayload((stringKV).getBytes());
343 393 client.publish("v1/devices/me/attributes", message);
344 394 Thread.sleep(1000);
345 395
346   - List<String> actualAttributes =
347   - doGetAsync("/api/plugins/telemetry/DEVICE/" + viewDeviceId + "/keys/attributes", List.class);
348   - Set<String> actualAttributesSet = new HashSet<>(actualAttributes);
349   -
350   - List<String> expectedActualAttributes = Arrays.asList("caValue1", "caValue2", "caValue3", "caValue4");
351   - Set<String> expectedActualAttributesSet = new HashSet<>(expectedActualAttributes);
352   - assertTrue(actualAttributesSet.containsAll(expectedActualAttributesSet));
353   - Thread.sleep(1000);
354   -
355   - EntityView savedView = getNewSavedEntityView("Test entity view");
356   - String urlOfTelemetryValues = "/api/plugins/telemetry/ENTITY_VIEW/" + savedView.getId().getId().toString() +
357   - "/values/attributes?keys=" + String.join(",", actualAttributesSet);
358   - List<Map<String, Object>> values = doGetAsync(urlOfTelemetryValues, List.class);
359   -
360   - assertEquals("value1", getValueOfMap(values, "caValue1"));
361   - assertEquals(true, getValueOfMap(values, "caValue2"));
362   - assertEquals(42.0, getValueOfMap(values, "caValue3"));
363   - assertEquals(73, getValueOfMap(values, "caValue4"));
  396 + return new HashSet<>(doGetAsync("/api/plugins/telemetry/DEVICE/" + viewDeviceId + "/keys/attributes", List.class));
364 397 }
365 398
366   - private Object getValueOfMap(List<Map<String, Object>> values, String stringValue) {
  399 + /*private Object getLastTs(List<Map<String, Object>> values) {
  400 + return values.stream()
  401 + .filter(value -> value.get("key");
  402 + }
  403 +*/
  404 + private Object getValue(List<Map<String, Object>> values, String stringValue) {
367 405 return values.stream()
368 406 .filter(value -> value.get("key").equals(stringValue))
369 407 .findFirst().get().get("value");
... ...
... ... @@ -233,8 +233,8 @@ public class EntityViewServiceImpl extends AbstractEntityService implements Enti
233 233 long lastUpdateTs = attributeKvEntry.getLastUpdateTs();
234 234 return startTime == 0 && endTime == 0 ||
235 235 (endTime == 0 && startTime < lastUpdateTs) ||
236   - (startTime == 0 && endTime > lastUpdateTs) ||
237   - (startTime < lastUpdateTs && endTime > lastUpdateTs);
  236 + (startTime == 0 && endTime > lastUpdateTs)
  237 + ? true : startTime < lastUpdateTs && endTime > lastUpdateTs;
238 238 }).collect(Collectors.toList());
239 239 }
240 240 try {
... ...