Commit e559107704421f2458d0a539b246175f613cd500

Authored by Volodymyr Babak
2 parents ca8eaf70 f6e7668e

Merge remote-tracking branch 'upstream/dao-refactoring-vs' into dao-refactoring-vs

... ... @@ -25,7 +25,7 @@ import java.util.Arrays;
25 25 @RunWith(ClasspathSuite.class)
26 26 @ClassnameFilters({
27 27 // "org.thingsboard.server.dao.sql.alarm.",
28   - "org.thingsboard.server.dao.sql.alarm.JpaAlarmDaoTest"
  28 + "org.thingsboard.server.dao.sql.*Test",
29 29 })
30 30 public class JpaDaoTestSuite {
31 31
... ...
... ... @@ -37,6 +37,7 @@ import java.util.Optional;
37 37 import java.util.UUID;
38 38
39 39 import static org.junit.Assert.*;
  40 +import static org.thingsboard.server.common.data.DataConstants.ALARM;
40 41 import static org.thingsboard.server.common.data.DataConstants.STATS;
41 42
42 43 /**
... ... @@ -50,7 +51,6 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest {
50 51 private EventDao eventDao;
51 52
52 53 @Test
53   - @DatabaseSetup("classpath:dbunit/empty_dataset.xml")
54 54 public void testSaveIfNotExists() {
55 55 UUID eventId = UUIDs.timeBased();
56 56 UUID tenantId = UUIDs.timeBased();
... ... @@ -58,7 +58,7 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest {
58 58 Event event = getEvent(eventId, tenantId, entityId);
59 59 Optional<Event> optEvent1 = eventDao.saveIfNotExists(event);
60 60 assertTrue("Optional is expected to be non-empty", optEvent1.isPresent());
61   - assertEquals(optEvent1.get(), event);
  61 + assertEquals(event, optEvent1.get());
62 62 Optional<Event> optEvent2 = eventDao.saveIfNotExists(event);
63 63 assertFalse("Optional is expected to be empty", optEvent2.isPresent());
64 64 }
... ... @@ -77,16 +77,12 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest {
77 77 }
78 78
79 79 @Test
80   - @DatabaseSetup("classpath:dbunit/empty_dataset.xml")
81 80 public void findEventsByEntityIdAndPageLink() {
82 81 UUID tenantId = UUIDs.timeBased();
83 82 UUID entityId1 = UUIDs.timeBased();
84 83 UUID entityId2 = UUIDs.timeBased();
85 84 long startTime = System.currentTimeMillis();
86 85 long endTime = createEventsTwoEntities(tenantId, entityId1, entityId2, startTime, 20);
87   - List<Event> allEvents = eventDao.find();
88   -
89   - assertEquals(20, allEvents.size());
90 86
91 87 TimePageLink pageLink1 = new TimePageLink(30, null, null, true);
92 88 List<Event> events1 = eventDao.findEvents(tenantId, new DeviceId(entityId1), pageLink1);
... ... @@ -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 154 for (int i = 0; i < count / 2; i++) {
121   - //UUID eventId1 = UUIDs.startOf(timestamp);
122 155 UUID eventId1 = UUIDs.timeBased();
123 156 Event event1 = getEvent(eventId1, tenantId, entityId1);
124 157 eventDao.save(event1);
125   - timestamp += step;
126   - //UUID eventId2 = UUIDs.startOf(timestamp);
127 158 UUID eventId2 = UUIDs.timeBased();
128 159 Event event2 = getEvent(eventId2, tenantId, entityId2);
129 160 eventDao.save(event2);
130   - timestamp += step;
131 161 }
132 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 171 private Event getEvent(UUID eventId, UUID tenantId, UUID entityId) {
... ... @@ -144,7 +174,7 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest {
144 174 event.setTenantId(new TenantId(tenantId));
145 175 EntityId deviceId = new DeviceId(entityId);
146 176 event.setEntityId(deviceId);
147   - event.setUid(entityId.toString());
  177 + event.setUid(event.getId().getId().toString());
148 178 event.setType(STATS);
149 179 ObjectMapper mapper = new ObjectMapper();
150 180 try {
... ...
... ... @@ -132,10 +132,10 @@ public class JpaUserDaoTest extends AbstractJpaDaoTest {
132 132 UUID id = UUIDs.timeBased();
133 133 user.setId(new UserId(id));
134 134 user.setTenantId(new TenantId(tenantId));
135   - if (customerId == null) {
  135 + user.setCustomerId(new CustomerId(customerId));
  136 + if (customerId == NULL_UUID) {
136 137 user.setAuthority(Authority.TENANT_ADMIN);
137 138 } else {
138   - user.setCustomerId(new CustomerId(customerId));
139 139 user.setAuthority(Authority.CUSTOMER_USER);
140 140 }
141 141 String idString = id.toString();
... ...
... ... @@ -32,6 +32,7 @@ import java.util.List;
32 32 import java.util.UUID;
33 33
34 34 import static org.junit.Assert.*;
  35 +import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID;
35 36
36 37 /**
37 38 * Created by Valerii Sosliuk on 4/23/2017.
... ... @@ -160,6 +161,7 @@ public class JpaWidgetsBundleDaoTest extends AbstractJpaDaoTest {
160 161 WidgetsBundle widgetsBundle = new WidgetsBundle();
161 162 widgetsBundle.setAlias(prefix + i);
162 163 widgetsBundle.setTitle(prefix + i);
  164 + widgetsBundle.setTenantId(new TenantId(NULL_UUID));
163 165 widgetsBundle.setId(new WidgetsBundleId(UUIDs.timeBased()));
164 166 widgetsBundleDao.save(widgetsBundle);
165 167 }
... ...
... ... @@ -15,14 +15,4 @@
15 15 activate_token="ACTIVATE_TOKEN_2"
16 16 reset_token="RESET_TOKEN_2"
17 17 />
18   - <!--
19   - <user_credentials
20   - id=""
21   - user_id=""
22   - enabled="true"
23   - password="password"
24   - activate_token=""
25   - reset_token=""
26   - />
27   - -->
28 18 </dataset>
\ No newline at end of file
... ...