|
@@ -37,6 +37,7 @@ import java.util.Optional; |
|
@@ -37,6 +37,7 @@ import java.util.Optional; |
37
|
import java.util.UUID;
|
37
|
import java.util.UUID;
|
38
|
|
38
|
|
39
|
import static org.junit.Assert.*;
|
39
|
import static org.junit.Assert.*;
|
|
|
40
|
+import static org.thingsboard.server.common.data.DataConstants.ALARM;
|
40
|
import static org.thingsboard.server.common.data.DataConstants.STATS;
|
41
|
import static org.thingsboard.server.common.data.DataConstants.STATS;
|
41
|
|
42
|
|
42
|
/**
|
43
|
/**
|
|
@@ -50,7 +51,6 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest { |
|
@@ -50,7 +51,6 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest { |
50
|
private EventDao eventDao;
|
51
|
private EventDao eventDao;
|
51
|
|
52
|
|
52
|
@Test
|
53
|
@Test
|
53
|
- @DatabaseSetup("classpath:dbunit/empty_dataset.xml")
|
|
|
54
|
public void testSaveIfNotExists() {
|
54
|
public void testSaveIfNotExists() {
|
55
|
UUID eventId = UUIDs.timeBased();
|
55
|
UUID eventId = UUIDs.timeBased();
|
56
|
UUID tenantId = UUIDs.timeBased();
|
56
|
UUID tenantId = UUIDs.timeBased();
|
|
@@ -58,7 +58,7 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest { |
|
@@ -58,7 +58,7 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest { |
58
|
Event event = getEvent(eventId, tenantId, entityId);
|
58
|
Event event = getEvent(eventId, tenantId, entityId);
|
59
|
Optional<Event> optEvent1 = eventDao.saveIfNotExists(event);
|
59
|
Optional<Event> optEvent1 = eventDao.saveIfNotExists(event);
|
60
|
assertTrue("Optional is expected to be non-empty", optEvent1.isPresent());
|
60
|
assertTrue("Optional is expected to be non-empty", optEvent1.isPresent());
|
61
|
- assertEquals(optEvent1.get(), event);
|
61
|
+ assertEquals(event, optEvent1.get());
|
62
|
Optional<Event> optEvent2 = eventDao.saveIfNotExists(event);
|
62
|
Optional<Event> optEvent2 = eventDao.saveIfNotExists(event);
|
63
|
assertFalse("Optional is expected to be empty", optEvent2.isPresent());
|
63
|
assertFalse("Optional is expected to be empty", optEvent2.isPresent());
|
64
|
}
|
64
|
}
|
|
@@ -77,16 +77,12 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest { |
|
@@ -77,16 +77,12 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest { |
77
|
}
|
77
|
}
|
78
|
|
78
|
|
79
|
@Test
|
79
|
@Test
|
80
|
- @DatabaseSetup("classpath:dbunit/empty_dataset.xml")
|
|
|
81
|
public void findEventsByEntityIdAndPageLink() {
|
80
|
public void findEventsByEntityIdAndPageLink() {
|
82
|
UUID tenantId = UUIDs.timeBased();
|
81
|
UUID tenantId = UUIDs.timeBased();
|
83
|
UUID entityId1 = UUIDs.timeBased();
|
82
|
UUID entityId1 = UUIDs.timeBased();
|
84
|
UUID entityId2 = UUIDs.timeBased();
|
83
|
UUID entityId2 = UUIDs.timeBased();
|
85
|
long startTime = System.currentTimeMillis();
|
84
|
long startTime = System.currentTimeMillis();
|
86
|
long endTime = createEventsTwoEntities(tenantId, entityId1, entityId2, startTime, 20);
|
85
|
long endTime = createEventsTwoEntities(tenantId, entityId1, entityId2, startTime, 20);
|
87
|
- List<Event> allEvents = eventDao.find();
|
|
|
88
|
-
|
|
|
89
|
- assertEquals(20, allEvents.size());
|
|
|
90
|
|
86
|
|
91
|
TimePageLink pageLink1 = new TimePageLink(30, null, null, true);
|
87
|
TimePageLink pageLink1 = new TimePageLink(30, null, null, true);
|
92
|
List<Event> events1 = eventDao.findEvents(tenantId, new DeviceId(entityId1), pageLink1);
|
88
|
List<Event> events1 = eventDao.findEvents(tenantId, new DeviceId(entityId1), pageLink1);
|
|
@@ -111,31 +107,65 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest { |
|
@@ -111,31 +107,65 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest { |
111
|
|
107
|
|
112
|
}
|
108
|
}
|
113
|
|
109
|
|
114
|
- private long createEventsTwoEntities(UUID tenantId, UUID entityId1, UUID entityId2, long startTime, int count) {
|
|
|
115
|
- // Generate #count events for two entities with timestamps from an hour ago till now
|
110
|
+ @Test
|
|
|
111
|
+ public void findEventsByEntityIdAndEventTypeAndPageLink() {
|
|
|
112
|
+ UUID tenantId = UUIDs.timeBased();
|
|
|
113
|
+ UUID entityId1 = UUIDs.timeBased();
|
|
|
114
|
+ UUID entityId2 = UUIDs.timeBased();
|
|
|
115
|
+ long startTime = System.currentTimeMillis();
|
|
|
116
|
+ long endTime = createEventsTwoEntitiesTwoTypes(tenantId, entityId1, entityId2, startTime, 20);
|
116
|
|
117
|
|
117
|
- // Distribute events uniformly
|
|
|
118
|
- long step = HOUR_MILLISECONDS / count;
|
|
|
119
|
- long timestamp = startTime;
|
118
|
+ TimePageLink pageLink1 = new TimePageLink(30, null, null, true);
|
|
|
119
|
+ List<Event> events1 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink1);
|
|
|
120
|
+ assertEquals(5, events1.size());
|
|
|
121
|
+
|
|
|
122
|
+ TimePageLink pageLink2 = new TimePageLink(30, startTime, null, true);
|
|
|
123
|
+ List<Event> events2 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink2);
|
|
|
124
|
+ assertEquals(5, events2.size());
|
|
|
125
|
+
|
|
|
126
|
+ TimePageLink pageLink3 = new TimePageLink(30, startTime, endTime, true);
|
|
|
127
|
+ List<Event> events3 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink3);
|
|
|
128
|
+ assertEquals(5, events3.size());
|
|
|
129
|
+
|
|
|
130
|
+ TimePageLink pageLink4 = new TimePageLink(4, startTime, endTime, true);
|
|
|
131
|
+ List<Event> events4 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink4);
|
|
|
132
|
+ assertEquals(4, events4.size());
|
|
|
133
|
+
|
|
|
134
|
+ UUID idOffset = events3.get(2).getId().getId();
|
|
|
135
|
+ TimePageLink pageLink5 = new TimePageLink(10, startTime, endTime, true, idOffset);
|
|
|
136
|
+ List<Event> events5 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink5);
|
|
|
137
|
+ assertEquals(2, events5.size());
|
|
|
138
|
+ }
|
|
|
139
|
+
|
|
|
140
|
+ private long createEventsTwoEntitiesTwoTypes(UUID tenantId, UUID entityId1, UUID entityId2, long startTime, int count) {
|
|
|
141
|
+ for (int i = 0; i < count / 2; i++) {
|
|
|
142
|
+ String type = i % 2 == 0 ? STATS : ALARM;
|
|
|
143
|
+ UUID eventId1 = UUIDs.timeBased();
|
|
|
144
|
+ Event event1 = getEvent(eventId1, tenantId, entityId1, type);
|
|
|
145
|
+ eventDao.save(event1);
|
|
|
146
|
+ UUID eventId2 = UUIDs.timeBased();
|
|
|
147
|
+ Event event2 = getEvent(eventId2, tenantId, entityId2, type);
|
|
|
148
|
+ eventDao.save(event2);
|
|
|
149
|
+ }
|
|
|
150
|
+ return System.currentTimeMillis();
|
|
|
151
|
+ }
|
|
|
152
|
+
|
|
|
153
|
+ private long createEventsTwoEntities(UUID tenantId, UUID entityId1, UUID entityId2, long startTime, int count) {
|
120
|
for (int i = 0; i < count / 2; i++) {
|
154
|
for (int i = 0; i < count / 2; i++) {
|
121
|
- //UUID eventId1 = UUIDs.startOf(timestamp);
|
|
|
122
|
UUID eventId1 = UUIDs.timeBased();
|
155
|
UUID eventId1 = UUIDs.timeBased();
|
123
|
Event event1 = getEvent(eventId1, tenantId, entityId1);
|
156
|
Event event1 = getEvent(eventId1, tenantId, entityId1);
|
124
|
eventDao.save(event1);
|
157
|
eventDao.save(event1);
|
125
|
- timestamp += step;
|
|
|
126
|
- //UUID eventId2 = UUIDs.startOf(timestamp);
|
|
|
127
|
UUID eventId2 = UUIDs.timeBased();
|
158
|
UUID eventId2 = UUIDs.timeBased();
|
128
|
Event event2 = getEvent(eventId2, tenantId, entityId2);
|
159
|
Event event2 = getEvent(eventId2, tenantId, entityId2);
|
129
|
eventDao.save(event2);
|
160
|
eventDao.save(event2);
|
130
|
- timestamp += step;
|
|
|
131
|
}
|
161
|
}
|
132
|
return System.currentTimeMillis();
|
162
|
return System.currentTimeMillis();
|
133
|
}
|
163
|
}
|
134
|
|
164
|
|
135
|
- @Test
|
|
|
136
|
- @DatabaseSetup("classpath:dbunit/empty_dataset.xml")
|
|
|
137
|
- public void findEventsByEntityIdAndEventTypeAndPageLink() {
|
|
|
138
|
-
|
165
|
+ private Event getEvent(UUID eventId, UUID tenantId, UUID entityId, String type) {
|
|
|
166
|
+ Event event = getEvent(eventId, tenantId, entityId);
|
|
|
167
|
+ event.setType(type);
|
|
|
168
|
+ return event;
|
139
|
}
|
169
|
}
|
140
|
|
170
|
|
141
|
private Event getEvent(UUID eventId, UUID tenantId, UUID entityId) {
|
171
|
private Event getEvent(UUID eventId, UUID tenantId, UUID entityId) {
|
|
@@ -144,7 +174,7 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest { |
|
@@ -144,7 +174,7 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest { |
144
|
event.setTenantId(new TenantId(tenantId));
|
174
|
event.setTenantId(new TenantId(tenantId));
|
145
|
EntityId deviceId = new DeviceId(entityId);
|
175
|
EntityId deviceId = new DeviceId(entityId);
|
146
|
event.setEntityId(deviceId);
|
176
|
event.setEntityId(deviceId);
|
147
|
- event.setUid(entityId.toString());
|
177
|
+ event.setUid(event.getId().getId().toString());
|
148
|
event.setType(STATS);
|
178
|
event.setType(STATS);
|
149
|
ObjectMapper mapper = new ObjectMapper();
|
179
|
ObjectMapper mapper = new ObjectMapper();
|
150
|
try {
|
180
|
try {
|