From f6e7668ebaf0831796cb43466a5ed8cea0b2b549 Mon Sep 17 00:00:00 2001 From: mp-loki Date: Mon, 26 Jun 2017 20:34:50 -0400 Subject: [PATCH] JPA Dao tests fixed --- .../server/dao/JpaDaoTestSuite.java | 2 +- .../dao/sql/event/JpaBaseEventDaoTest.java | 70 +++++++++++++------ .../server/dao/sql/user/JpaUserDaoTest.java | 4 +- .../sql/widget/JpaWidgetsBundleDaoTest.java | 2 + .../resources/dbunit/user_credentials.xml | 10 --- 5 files changed, 55 insertions(+), 33 deletions(-) diff --git a/dao/src/test/java/org/thingsboard/server/dao/JpaDaoTestSuite.java b/dao/src/test/java/org/thingsboard/server/dao/JpaDaoTestSuite.java index cb24b3a9fb..7b880fa295 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/JpaDaoTestSuite.java +++ b/dao/src/test/java/org/thingsboard/server/dao/JpaDaoTestSuite.java @@ -25,7 +25,7 @@ import java.util.Arrays; @RunWith(ClasspathSuite.class) @ClassnameFilters({ // "org.thingsboard.server.dao.sql.alarm.", - "org.thingsboard.server.dao.sql.alarm.JpaAlarmDaoTest" + "org.thingsboard.server.dao.sql.*Test", }) public class JpaDaoTestSuite { diff --git a/dao/src/test/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDaoTest.java b/dao/src/test/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDaoTest.java index b0af98013c..3c414cd626 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDaoTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/sql/event/JpaBaseEventDaoTest.java @@ -37,6 +37,7 @@ import java.util.Optional; import java.util.UUID; import static org.junit.Assert.*; +import static org.thingsboard.server.common.data.DataConstants.ALARM; import static org.thingsboard.server.common.data.DataConstants.STATS; /** @@ -50,7 +51,6 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest { private EventDao eventDao; @Test - @DatabaseSetup("classpath:dbunit/empty_dataset.xml") public void testSaveIfNotExists() { UUID eventId = UUIDs.timeBased(); UUID tenantId = UUIDs.timeBased(); @@ -58,7 +58,7 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest { Event event = getEvent(eventId, tenantId, entityId); Optional optEvent1 = eventDao.saveIfNotExists(event); assertTrue("Optional is expected to be non-empty", optEvent1.isPresent()); - assertEquals(optEvent1.get(), event); + assertEquals(event, optEvent1.get()); Optional optEvent2 = eventDao.saveIfNotExists(event); assertFalse("Optional is expected to be empty", optEvent2.isPresent()); } @@ -77,16 +77,12 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest { } @Test - @DatabaseSetup("classpath:dbunit/empty_dataset.xml") public void findEventsByEntityIdAndPageLink() { UUID tenantId = UUIDs.timeBased(); UUID entityId1 = UUIDs.timeBased(); UUID entityId2 = UUIDs.timeBased(); long startTime = System.currentTimeMillis(); long endTime = createEventsTwoEntities(tenantId, entityId1, entityId2, startTime, 20); - List allEvents = eventDao.find(); - - assertEquals(20, allEvents.size()); TimePageLink pageLink1 = new TimePageLink(30, null, null, true); List events1 = eventDao.findEvents(tenantId, new DeviceId(entityId1), pageLink1); @@ -111,31 +107,65 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest { } - private long createEventsTwoEntities(UUID tenantId, UUID entityId1, UUID entityId2, long startTime, int count) { - // Generate #count events for two entities with timestamps from an hour ago till now + @Test + public void findEventsByEntityIdAndEventTypeAndPageLink() { + UUID tenantId = UUIDs.timeBased(); + UUID entityId1 = UUIDs.timeBased(); + UUID entityId2 = UUIDs.timeBased(); + long startTime = System.currentTimeMillis(); + long endTime = createEventsTwoEntitiesTwoTypes(tenantId, entityId1, entityId2, startTime, 20); - // Distribute events uniformly - long step = HOUR_MILLISECONDS / count; - long timestamp = startTime; + TimePageLink pageLink1 = new TimePageLink(30, null, null, true); + List events1 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink1); + assertEquals(5, events1.size()); + + TimePageLink pageLink2 = new TimePageLink(30, startTime, null, true); + List events2 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink2); + assertEquals(5, events2.size()); + + TimePageLink pageLink3 = new TimePageLink(30, startTime, endTime, true); + List events3 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink3); + assertEquals(5, events3.size()); + + TimePageLink pageLink4 = new TimePageLink(4, startTime, endTime, true); + List events4 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink4); + assertEquals(4, events4.size()); + + UUID idOffset = events3.get(2).getId().getId(); + TimePageLink pageLink5 = new TimePageLink(10, startTime, endTime, true, idOffset); + List events5 = eventDao.findEvents(tenantId, new DeviceId(entityId1), ALARM, pageLink5); + assertEquals(2, events5.size()); + } + + private long createEventsTwoEntitiesTwoTypes(UUID tenantId, UUID entityId1, UUID entityId2, long startTime, int count) { + for (int i = 0; i < count / 2; i++) { + String type = i % 2 == 0 ? STATS : ALARM; + UUID eventId1 = UUIDs.timeBased(); + Event event1 = getEvent(eventId1, tenantId, entityId1, type); + eventDao.save(event1); + UUID eventId2 = UUIDs.timeBased(); + Event event2 = getEvent(eventId2, tenantId, entityId2, type); + eventDao.save(event2); + } + return System.currentTimeMillis(); + } + + private long createEventsTwoEntities(UUID tenantId, UUID entityId1, UUID entityId2, long startTime, int count) { for (int i = 0; i < count / 2; i++) { - //UUID eventId1 = UUIDs.startOf(timestamp); UUID eventId1 = UUIDs.timeBased(); Event event1 = getEvent(eventId1, tenantId, entityId1); eventDao.save(event1); - timestamp += step; - //UUID eventId2 = UUIDs.startOf(timestamp); UUID eventId2 = UUIDs.timeBased(); Event event2 = getEvent(eventId2, tenantId, entityId2); eventDao.save(event2); - timestamp += step; } return System.currentTimeMillis(); } - @Test - @DatabaseSetup("classpath:dbunit/empty_dataset.xml") - public void findEventsByEntityIdAndEventTypeAndPageLink() { - + private Event getEvent(UUID eventId, UUID tenantId, UUID entityId, String type) { + Event event = getEvent(eventId, tenantId, entityId); + event.setType(type); + return event; } private Event getEvent(UUID eventId, UUID tenantId, UUID entityId) { @@ -144,7 +174,7 @@ public class JpaBaseEventDaoTest extends AbstractJpaDaoTest { event.setTenantId(new TenantId(tenantId)); EntityId deviceId = new DeviceId(entityId); event.setEntityId(deviceId); - event.setUid(entityId.toString()); + event.setUid(event.getId().getId().toString()); event.setType(STATS); ObjectMapper mapper = new ObjectMapper(); try { diff --git a/dao/src/test/java/org/thingsboard/server/dao/sql/user/JpaUserDaoTest.java b/dao/src/test/java/org/thingsboard/server/dao/sql/user/JpaUserDaoTest.java index 745d672eb1..37407d5bf1 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/sql/user/JpaUserDaoTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/sql/user/JpaUserDaoTest.java @@ -132,10 +132,10 @@ public class JpaUserDaoTest extends AbstractJpaDaoTest { UUID id = UUIDs.timeBased(); user.setId(new UserId(id)); user.setTenantId(new TenantId(tenantId)); - if (customerId == null) { + user.setCustomerId(new CustomerId(customerId)); + if (customerId == NULL_UUID) { user.setAuthority(Authority.TENANT_ADMIN); } else { - user.setCustomerId(new CustomerId(customerId)); user.setAuthority(Authority.CUSTOMER_USER); } String idString = id.toString(); diff --git a/dao/src/test/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDaoTest.java b/dao/src/test/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDaoTest.java index 46fc7edf27..1bd4d54e10 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDaoTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/sql/widget/JpaWidgetsBundleDaoTest.java @@ -32,6 +32,7 @@ import java.util.List; import java.util.UUID; import static org.junit.Assert.*; +import static org.thingsboard.server.dao.model.ModelConstants.NULL_UUID; /** * Created by Valerii Sosliuk on 4/23/2017. @@ -160,6 +161,7 @@ public class JpaWidgetsBundleDaoTest extends AbstractJpaDaoTest { WidgetsBundle widgetsBundle = new WidgetsBundle(); widgetsBundle.setAlias(prefix + i); widgetsBundle.setTitle(prefix + i); + widgetsBundle.setTenantId(new TenantId(NULL_UUID)); widgetsBundle.setId(new WidgetsBundleId(UUIDs.timeBased())); widgetsBundleDao.save(widgetsBundle); } diff --git a/dao/src/test/resources/dbunit/user_credentials.xml b/dao/src/test/resources/dbunit/user_credentials.xml index 76a2138a14..7b74de0337 100644 --- a/dao/src/test/resources/dbunit/user_credentials.xml +++ b/dao/src/test/resources/dbunit/user_credentials.xml @@ -15,14 +15,4 @@ activate_token="ACTIVATE_TOKEN_2" reset_token="RESET_TOKEN_2" /> - \ No newline at end of file