diff --git a/application/src/test/java/org/thingsboard/server/controller/BaseEntityViewControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseEntityViewControllerTest.java
index 0daaeca..a877cbf 100644
--- a/application/src/test/java/org/thingsboard/server/controller/BaseEntityViewControllerTest.java
+++ b/application/src/test/java/org/thingsboard/server/controller/BaseEntityViewControllerTest.java
@@ -319,12 +319,62 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes
}
@Test
- public void testTheCopyOfAttrsThatMatchWithDeviceCriteriaForTheView() throws Exception {
+ public void testTheCopyOfAttrsIntoTSForTheView() throws Exception {
+ Set<String> actualAttributesSet =
+ getAttributesByKeys("{\"caValue1\":\"value1\", \"caValue2\":true, \"caValue3\":42.0, \"caValue4\":73}");
- String viewDeviceId = testDevice.getId().getId().toString();
- DeviceCredentials deviceCredentials
- = doGet("/api/device/" + viewDeviceId + "/credentials", DeviceCredentials.class);
+ Set<String> expectedActualAttributesSet =
+ new HashSet<>(Arrays.asList("caValue1", "caValue2", "caValue3", "caValue4"));
+ assertTrue(actualAttributesSet.containsAll(expectedActualAttributesSet));
+ Thread.sleep(1000);
+
+ EntityView savedView = getNewSavedEntityView("Test entity view");
+ String urlOfTelemetryValues = "/api/plugins/telemetry/ENTITY_VIEW/" + savedView.getId().getId().toString() +
+ "/values/attributes?keys=" + String.join(",", actualAttributesSet);
+ List<Map<String, Object>> values = doGetAsync(urlOfTelemetryValues, List.class);
+
+ assertEquals("value1", getValue(values, "caValue1"));
+ assertEquals(true, getValue(values, "caValue2"));
+ assertEquals(42.0, getValue(values, "caValue3"));
+ assertEquals(73, getValue(values, "caValue4"));
+ }
+
+ @Test
+ public void testTheCopyOfAttrsOutOfTSForTheView() throws Exception {
+ Set<String> actualAttributesSet =
+ getAttributesByKeys("{\"caValue1\":\"value1\", \"caValue2\":true, \"caValue3\":42.0, \"caValue4\":73}");
+
+ Set<String> expectedActualAttributesSet = new HashSet<>(Arrays.asList("caValue1", "caValue2", "caValue3", "caValue4"));
+ assertTrue(actualAttributesSet.containsAll(expectedActualAttributesSet));
+ Thread.sleep(1000);
+
+ List<Map<String, Object>> values = doGetAsync("/api/plugins/telemetry/DEVICE/" + testDevice.getId().getId().toString() +
+ "/values/attributes?keys=" + String.join(",", actualAttributesSet), List.class);
+
+ EntityView view = new EntityView();
+ view.setEntityId(testDevice.getId());
+ view.setTenantId(savedTenant.getId());
+ view.setName("Test entity view");
+ view.setKeys(telemetry);
+ view.setStartTimeMs((long) getValue(values, "lastUpdateTs") * 10);
+ view.setEndTimeMs((long) getValue(values, "lastUpdateTs") / 10);
+ EntityView savedView = doPost("/api/entityView", view, EntityView.class);
+
+ String urlOfTelemetryValues = "/api/plugins/telemetry/ENTITY_VIEW/" + savedView.getId().getId().toString() +
+ "/values/attributes?keys=" + String.join(",", actualAttributesSet);
+ values = doGetAsync(urlOfTelemetryValues, List.class);
+
+ assertEquals("value1", getValue(values, "caValue1"));
+ assertEquals(true, getValue(values, "caValue2"));
+ assertEquals(42.0, getValue(values, "caValue3"));
+ assertEquals(73, getValue(values, "caValue4"));
+ }
+
+ private Set<String> getAttributesByKeys(String stringKV) throws Exception {
+ String viewDeviceId = testDevice.getId().getId().toString();
+ DeviceCredentials deviceCredentials =
+ doGet("/api/device/" + viewDeviceId + "/credentials", DeviceCredentials.class);
assertEquals(testDevice.getId(), deviceCredentials.getDeviceId());
String accessToken = deviceCredentials.getCredentialsId();
@@ -339,31 +389,19 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes
Thread.sleep(3000);
MqttMessage message = new MqttMessage();
- message.setPayload(("{\"caValue1\":\"value1\", \"caValue2\":true, \"caValue3\":42.0, \"caValue4\":73}").getBytes());
+ message.setPayload((stringKV).getBytes());
client.publish("v1/devices/me/attributes", message);
Thread.sleep(1000);
- List<String> actualAttributes =
- doGetAsync("/api/plugins/telemetry/DEVICE/" + viewDeviceId + "/keys/attributes", List.class);
- Set<String> actualAttributesSet = new HashSet<>(actualAttributes);
-
- List<String> expectedActualAttributes = Arrays.asList("caValue1", "caValue2", "caValue3", "caValue4");
- Set<String> expectedActualAttributesSet = new HashSet<>(expectedActualAttributes);
- assertTrue(actualAttributesSet.containsAll(expectedActualAttributesSet));
- Thread.sleep(1000);
-
- EntityView savedView = getNewSavedEntityView("Test entity view");
- String urlOfTelemetryValues = "/api/plugins/telemetry/ENTITY_VIEW/" + savedView.getId().getId().toString() +
- "/values/attributes?keys=" + String.join(",", actualAttributesSet);
- List<Map<String, Object>> values = doGetAsync(urlOfTelemetryValues, List.class);
-
- assertEquals("value1", getValueOfMap(values, "caValue1"));
- assertEquals(true, getValueOfMap(values, "caValue2"));
- assertEquals(42.0, getValueOfMap(values, "caValue3"));
- assertEquals(73, getValueOfMap(values, "caValue4"));
+ return new HashSet<>(doGetAsync("/api/plugins/telemetry/DEVICE/" + viewDeviceId + "/keys/attributes", List.class));
}
- private Object getValueOfMap(List<Map<String, Object>> values, String stringValue) {
+ /*private Object getLastTs(List<Map<String, Object>> values) {
+ return values.stream()
+ .filter(value -> value.get("key");
+ }
+*/
+ private Object getValue(List<Map<String, Object>> values, String stringValue) {
return values.stream()
.filter(value -> value.get("key").equals(stringValue))
.findFirst().get().get("value");