Browse Source

Merge pull request #192 from volodymyr-babak/sql-dao-improvements

Unifying SQL DAO
pull/198/head
VoBa 9 years ago
committed by GitHub
parent
commit
f274c72f14
  1. 1
      .mvn/jvm.config
  2. 4
      application/pom.xml
  3. 3
      application/src/main/resources/thingsboard.yml
  4. 1
      application/src/test/java/org/thingsboard/server/controller/AbstractControllerTest.java
  5. 2
      application/src/test/java/org/thingsboard/server/controller/BaseAdminControllerTest.java
  6. 2
      application/src/test/java/org/thingsboard/server/controller/BaseAssetControllerTest.java
  7. 2
      application/src/test/java/org/thingsboard/server/controller/BaseAuthControllerTest.java
  8. 2
      application/src/test/java/org/thingsboard/server/controller/BaseComponentDescriptorControllerTest.java
  9. 2
      application/src/test/java/org/thingsboard/server/controller/BaseCustomerControllerTest.java
  10. 2
      application/src/test/java/org/thingsboard/server/controller/BaseDashboardControllerTest.java
  11. 2
      application/src/test/java/org/thingsboard/server/controller/BaseDeviceControllerTest.java
  12. 6
      application/src/test/java/org/thingsboard/server/controller/BasePluginControllerTest.java
  13. 2
      application/src/test/java/org/thingsboard/server/controller/BaseRuleControllerTest.java
  14. 4
      application/src/test/java/org/thingsboard/server/controller/BaseTenantControllerTest.java
  15. 2
      application/src/test/java/org/thingsboard/server/controller/BaseUserControllerTest.java
  16. 2
      application/src/test/java/org/thingsboard/server/controller/BaseWidgetTypeControllerTest.java
  17. 2
      application/src/test/java/org/thingsboard/server/controller/BaseWidgetsBundleControllerTest.java
  18. 4
      application/src/test/java/org/thingsboard/server/controller/ControllerNoSqlTestSuite.java
  19. 36
      application/src/test/java/org/thingsboard/server/controller/ControllerSqlTestSuite.java
  20. 26
      application/src/test/java/org/thingsboard/server/controller/nosql/AdminControllerNoSqlTest.java
  21. 27
      application/src/test/java/org/thingsboard/server/controller/nosql/AssetControllerNoSqlTest.java
  22. 26
      application/src/test/java/org/thingsboard/server/controller/nosql/AuthControllerNoSqlTest.java
  23. 26
      application/src/test/java/org/thingsboard/server/controller/nosql/ComponentDescriptorControllerNoSqlTest.java
  24. 26
      application/src/test/java/org/thingsboard/server/controller/nosql/CustomerControllerNoSqlTest.java
  25. 26
      application/src/test/java/org/thingsboard/server/controller/nosql/DashboardControllerNoSqlTest.java
  26. 26
      application/src/test/java/org/thingsboard/server/controller/nosql/DeviceControllerNoSqlTest.java
  27. 26
      application/src/test/java/org/thingsboard/server/controller/nosql/PluginControllerNoSqlTest.java
  28. 26
      application/src/test/java/org/thingsboard/server/controller/nosql/RuleControllerNoSqlTest.java
  29. 26
      application/src/test/java/org/thingsboard/server/controller/nosql/TenantControllerNoSqlTest.java
  30. 26
      application/src/test/java/org/thingsboard/server/controller/nosql/UserControllerNoSqlTest.java
  31. 26
      application/src/test/java/org/thingsboard/server/controller/nosql/WidgetTypeControllerNoSqlTest.java
  32. 26
      application/src/test/java/org/thingsboard/server/controller/nosql/WidgetsBundleControllerNoSqlTest.java
  33. 26
      application/src/test/java/org/thingsboard/server/controller/sql/AdminControllerSqlTest.java
  34. 26
      application/src/test/java/org/thingsboard/server/controller/sql/AssetControllerSqlTest.java
  35. 26
      application/src/test/java/org/thingsboard/server/controller/sql/AuthControllerSqlTest.java
  36. 26
      application/src/test/java/org/thingsboard/server/controller/sql/ComponentDescriptorControllerSqlTest.java
  37. 26
      application/src/test/java/org/thingsboard/server/controller/sql/CustomerControllerSqlTest.java
  38. 26
      application/src/test/java/org/thingsboard/server/controller/sql/DashboardControllerSqlTest.java
  39. 26
      application/src/test/java/org/thingsboard/server/controller/sql/DeviceControllerSqlTest.java
  40. 26
      application/src/test/java/org/thingsboard/server/controller/sql/PluginControllerSqlTest.java
  41. 26
      application/src/test/java/org/thingsboard/server/controller/sql/RuleControllerSqlTest.java
  42. 26
      application/src/test/java/org/thingsboard/server/controller/sql/TenantControllerSqlTest.java
  43. 26
      application/src/test/java/org/thingsboard/server/controller/sql/UserControllerSqlTest.java
  44. 26
      application/src/test/java/org/thingsboard/server/controller/sql/WidgetTypeControllerSqlTest.java
  45. 26
      application/src/test/java/org/thingsboard/server/controller/sql/WidgetsBundleControllerSqlTest.java
  46. 9
      application/src/test/java/org/thingsboard/server/system/SystemSqlTestSuite.java
  47. 2
      application/src/test/java/org/thingsboard/server/system/sql/DeviceApiSqlTest.java
  48. 4
      dao/pom.xml
  49. 5
      dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDao.java
  50. 1
      dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java
  51. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java
  52. 2
      dao/src/main/java/org/thingsboard/server/dao/sql/relation/JpaRelationDao.java
  53. 6
      dao/src/main/java/org/thingsboard/server/dao/sql/relation/RelationRepository.java
  54. 2
      dao/src/main/java/org/thingsboard/server/dao/util/SqlDao.java
  55. 0
      dao/src/main/resources/sql/demo-data.sql
  56. 37
      dao/src/main/resources/sql/schema.sql
  57. 0
      dao/src/main/resources/sql/system-data.sql
  58. 81
      dao/src/test/java/org/thingsboard/server/dao/CustomSqlUnit.java
  59. 10
      dao/src/test/java/org/thingsboard/server/dao/JpaDaoTestSuite.java
  60. 3
      dao/src/test/java/org/thingsboard/server/dao/JpaDbunitTestConfig.java
  61. 8
      dao/src/test/java/org/thingsboard/server/dao/SqlDaoServiceTestSuite.java
  62. 5
      dao/src/test/resources/postgres-embedded-test.properties
  63. 10
      dao/src/test/resources/sql-test.properties
  64. 20
      dao/src/test/resources/sql/drop-all-tables.sql
  65. 0
      dao/src/test/resources/sql/system-test.sql
  66. 7
      pom.xml

1
.mvn/jvm.config

@ -1 +0,0 @@
-Xmx4096m -Xms1024m

4
application/pom.xml

@ -250,8 +250,8 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>ru.yandex.qatools.embed</groupId>
<artifactId>postgresql-embedded</artifactId>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

3
application/src/main/resources/thingsboard.yml

@ -106,7 +106,7 @@ coap:
timeout: "${COAP_TIMEOUT:10000}"
database:
type: "${DATABASE_TYPE:cassandra}" # cassandra OR postgres
type: "${DATABASE_TYPE:cassandra}" # cassandra OR sql
# Cassandra driver configuration parameters
cassandra:
@ -233,7 +233,6 @@ spring:
enabled: "true"
jpa:
show-sql: "false"
generate-ddl: "true"
database-platform: "org.hibernate.dialect.PostgreSQLDialect"
hibernate:
ddl-auto: "validate"

1
application/src/test/java/org/thingsboard/server/controller/AbstractControllerTest.java

@ -80,7 +80,6 @@ import static org.springframework.test.web.servlet.setup.MockMvcBuilders.webAppC
@ActiveProfiles("test")
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = AbstractControllerTest.class, loader = SpringBootContextLoader.class)
@TestPropertySource(locations = {"classpath:cassandra-test.properties", "classpath:application-test.properties", "classpath:nosql-test.properties"})
@DirtiesContext(classMode = DirtiesContext.ClassMode.AFTER_CLASS)
@Configuration
@ComponentScan({"org.thingsboard.server"})

2
application/src/test/java/org/thingsboard/server/controller/AdminControllerTest.java → application/src/test/java/org/thingsboard/server/controller/BaseAdminControllerTest.java

@ -29,7 +29,7 @@ import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ObjectNode;
public class AdminControllerTest extends AbstractControllerTest {
public abstract class BaseAdminControllerTest extends AbstractControllerTest {
@Test
public void testFindAdminSettingsByKey() throws Exception {

2
application/src/test/java/org/thingsboard/server/controller/AssetControllerTest.java → application/src/test/java/org/thingsboard/server/controller/BaseAssetControllerTest.java

@ -40,7 +40,7 @@ import org.junit.Test;
import com.datastax.driver.core.utils.UUIDs;
import com.fasterxml.jackson.core.type.TypeReference;
public class AssetControllerTest extends AbstractControllerTest {
public abstract class BaseAssetControllerTest extends AbstractControllerTest {
private IdComparator<Asset> idComparator = new IdComparator<>();

2
application/src/test/java/org/thingsboard/server/controller/AuthControllerTest.java → application/src/test/java/org/thingsboard/server/controller/BaseAuthControllerTest.java

@ -22,7 +22,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
import org.thingsboard.server.common.data.security.Authority;
import org.junit.Test;
public class AuthControllerTest extends AbstractControllerTest {
public abstract class BaseAuthControllerTest extends AbstractControllerTest {
@Test
public void testGetUser() throws Exception {

2
application/src/test/java/org/thingsboard/server/controller/ComponentDescriptorControllerTest.java → application/src/test/java/org/thingsboard/server/controller/BaseComponentDescriptorControllerTest.java

@ -33,7 +33,7 @@ import java.util.List;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
public class ComponentDescriptorControllerTest extends AbstractControllerTest {
public abstract class BaseComponentDescriptorControllerTest extends AbstractControllerTest {
private static final int AMOUNT_OF_DEFAULT_PLUGINS_DESCRIPTORS = 5;
private Tenant savedTenant;

2
application/src/test/java/org/thingsboard/server/controller/CustomerControllerTest.java → application/src/test/java/org/thingsboard/server/controller/BaseCustomerControllerTest.java

@ -35,7 +35,7 @@ import org.junit.Test;
import com.fasterxml.jackson.core.type.TypeReference;
public class CustomerControllerTest extends AbstractControllerTest {
public abstract class BaseCustomerControllerTest extends AbstractControllerTest {
private IdComparator<Customer> idComparator = new IdComparator<>();

2
application/src/test/java/org/thingsboard/server/controller/DashboardControllerTest.java → application/src/test/java/org/thingsboard/server/controller/BaseDashboardControllerTest.java

@ -38,7 +38,7 @@ import org.junit.Test;
import com.fasterxml.jackson.core.type.TypeReference;
public class DashboardControllerTest extends AbstractControllerTest {
public abstract class BaseDashboardControllerTest extends AbstractControllerTest {
private IdComparator<DashboardInfo> idComparator = new IdComparator<>();

2
application/src/test/java/org/thingsboard/server/controller/DeviceControllerTest.java → application/src/test/java/org/thingsboard/server/controller/BaseDeviceControllerTest.java

@ -42,7 +42,7 @@ import org.junit.Test;
import com.fasterxml.jackson.core.type.TypeReference;
public class DeviceControllerTest extends AbstractControllerTest {
public abstract class BaseDeviceControllerTest extends AbstractControllerTest {
private IdComparator<Device> idComparator = new IdComparator<>();

6
application/src/test/java/org/thingsboard/server/controller/PluginControllerTest.java → application/src/test/java/org/thingsboard/server/controller/BasePluginControllerTest.java

@ -37,7 +37,7 @@ import java.util.stream.Collectors;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
public class PluginControllerTest extends AbstractControllerTest {
public abstract class BasePluginControllerTest extends AbstractControllerTest {
private IdComparator<PluginMetaData> idComparator = new IdComparator<>();
@ -130,7 +130,7 @@ public class PluginControllerTest extends AbstractControllerTest {
doPost("/api/plugin/" + savedPlugin.getId().getId().toString() + "/activate").andExpect(status().isOk());
RuleMetaData rule = RuleControllerTest.createRuleMetaData(savedPlugin);
RuleMetaData rule = BaseRuleControllerTest.createRuleMetaData(savedPlugin);
RuleMetaData savedRule = doPost("/api/rule", rule, RuleMetaData.class);
doPost("/api/rule/" + savedRule.getId().getId().toString() + "/activate").andExpect(status().isOk());
@ -151,7 +151,7 @@ public class PluginControllerTest extends AbstractControllerTest {
PluginMetaData savedPlugin = doPost("/api/plugin", plugin, PluginMetaData.class);
RuleMetaData rule = RuleControllerTest.createRuleMetaData(savedPlugin);
RuleMetaData rule = BaseRuleControllerTest.createRuleMetaData(savedPlugin);
RuleMetaData savedRule = doPost("/api/rule", rule, RuleMetaData.class);
doDelete("/api/plugin/" + savedPlugin.getId().getId()).andExpect(status().isBadRequest());

2
application/src/test/java/org/thingsboard/server/controller/RuleControllerTest.java → application/src/test/java/org/thingsboard/server/controller/BaseRuleControllerTest.java

@ -38,7 +38,7 @@ import java.util.stream.Collectors;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
public class RuleControllerTest extends AbstractControllerTest {
public abstract class BaseRuleControllerTest extends AbstractControllerTest {
private IdComparator<RuleMetaData> idComparator = new IdComparator<>();

4
application/src/test/java/org/thingsboard/server/controller/TenantControllerTest.java → application/src/test/java/org/thingsboard/server/controller/BaseTenantControllerTest.java

@ -31,7 +31,7 @@ import org.junit.Test;
import com.fasterxml.jackson.core.type.TypeReference;
public class TenantControllerTest extends AbstractControllerTest {
public abstract class BaseTenantControllerTest extends AbstractControllerTest {
private IdComparator<Tenant> idComparator = new IdComparator<>();
@ -107,7 +107,7 @@ public class TenantControllerTest extends AbstractControllerTest {
Assert.assertFalse(pageData.hasNext());
Assert.assertEquals(1, pageData.getData().size());
tenants.addAll(pageData.getData());
for (int i=0;i<56;i++) {
Tenant tenant = new Tenant();
tenant.setTitle("Tenant"+i);

2
application/src/test/java/org/thingsboard/server/controller/UserControllerTest.java → application/src/test/java/org/thingsboard/server/controller/BaseUserControllerTest.java

@ -39,7 +39,7 @@ import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.is;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
public class UserControllerTest extends AbstractControllerTest {
public abstract class BaseUserControllerTest extends AbstractControllerTest {
private IdComparator<User> idComparator = new IdComparator<>();

2
application/src/test/java/org/thingsboard/server/controller/WidgetTypeControllerTest.java → application/src/test/java/org/thingsboard/server/controller/BaseWidgetTypeControllerTest.java

@ -35,7 +35,7 @@ import java.util.List;
import static org.hamcrest.Matchers.containsString;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
public class WidgetTypeControllerTest extends AbstractControllerTest {
public abstract class BaseWidgetTypeControllerTest extends AbstractControllerTest {
private IdComparator<WidgetType> idComparator = new IdComparator<>();

2
application/src/test/java/org/thingsboard/server/controller/WidgetsBundleControllerTest.java → application/src/test/java/org/thingsboard/server/controller/BaseWidgetsBundleControllerTest.java

@ -34,7 +34,7 @@ import java.util.List;
import static org.hamcrest.Matchers.containsString;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
public class WidgetsBundleControllerTest extends AbstractControllerTest {
public abstract class BaseWidgetsBundleControllerTest extends AbstractControllerTest {
private IdComparator<WidgetsBundle> idComparator = new IdComparator<>();

4
application/src/test/java/org/thingsboard/server/controller/ControllerTestSuite.java → application/src/test/java/org/thingsboard/server/controller/ControllerNoSqlTestSuite.java

@ -25,8 +25,8 @@ import java.util.Arrays;
@RunWith(ClasspathSuite.class)
@ClasspathSuite.ClassnameFilters({
"org.thingsboard.server.controller.*Test"})
public class ControllerTestSuite {
"org.thingsboard.server.controller.nosql.*Test"})
public class ControllerNoSqlTestSuite {
@ClassRule
public static CustomCassandraCQLUnit cassandraUnit =

36
application/src/test/java/org/thingsboard/server/controller/ControllerSqlTestSuite.java

@ -0,0 +1,36 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller;
import org.junit.ClassRule;
import org.junit.extensions.cpsuite.ClasspathSuite;
import org.junit.runner.RunWith;
import org.thingsboard.server.dao.CustomSqlUnit;
import java.util.Arrays;
@RunWith(ClasspathSuite.class)
@ClasspathSuite.ClassnameFilters({
"org.thingsboard.server.controller.sql.*SqlTest",
})
public class ControllerSqlTestSuite {
@ClassRule
public static CustomSqlUnit sqlUnit = new CustomSqlUnit(
Arrays.asList("sql/schema.sql", "sql/system-data.sql"),
"sql/drop-all-tables.sql",
"sql-test.properties");
}

26
application/src/test/java/org/thingsboard/server/controller/nosql/AdminControllerNoSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.nosql;
import org.thingsboard.server.controller.BaseAdminControllerTest;
import org.thingsboard.server.dao.service.DaoNoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoNoSqlTest
public class AdminControllerNoSqlTest extends BaseAdminControllerTest {
}

27
application/src/test/java/org/thingsboard/server/controller/nosql/AssetControllerNoSqlTest.java

@ -0,0 +1,27 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.nosql;
import org.thingsboard.server.controller.BaseAssetControllerTest;
import org.thingsboard.server.dao.service.DaoNoSqlTest;
import org.thingsboard.server.dao.util.NoSqlDao;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoNoSqlTest
public class AssetControllerNoSqlTest extends BaseAssetControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/nosql/AuthControllerNoSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.nosql;
import org.thingsboard.server.controller.BaseAuthControllerTest;
import org.thingsboard.server.dao.service.DaoNoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoNoSqlTest
public class AuthControllerNoSqlTest extends BaseAuthControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/nosql/ComponentDescriptorControllerNoSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.nosql;
import org.thingsboard.server.controller.BaseComponentDescriptorControllerTest;
import org.thingsboard.server.dao.service.DaoNoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoNoSqlTest
public class ComponentDescriptorControllerNoSqlTest extends BaseComponentDescriptorControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/nosql/CustomerControllerNoSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.nosql;
import org.thingsboard.server.controller.BaseCustomerControllerTest;
import org.thingsboard.server.dao.service.DaoNoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoNoSqlTest
public class CustomerControllerNoSqlTest extends BaseCustomerControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/nosql/DashboardControllerNoSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.nosql;
import org.thingsboard.server.controller.BaseDashboardControllerTest;
import org.thingsboard.server.dao.service.DaoNoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoNoSqlTest
public class DashboardControllerNoSqlTest extends BaseDashboardControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/nosql/DeviceControllerNoSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.nosql;
import org.thingsboard.server.controller.BaseDeviceControllerTest;
import org.thingsboard.server.dao.service.DaoNoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoNoSqlTest
public class DeviceControllerNoSqlTest extends BaseDeviceControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/nosql/PluginControllerNoSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.nosql;
import org.thingsboard.server.controller.BasePluginControllerTest;
import org.thingsboard.server.dao.service.DaoNoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoNoSqlTest
public class PluginControllerNoSqlTest extends BasePluginControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/nosql/RuleControllerNoSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.nosql;
import org.thingsboard.server.controller.BaseRuleControllerTest;
import org.thingsboard.server.dao.service.DaoNoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoNoSqlTest
public class RuleControllerNoSqlTest extends BaseRuleControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/nosql/TenantControllerNoSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.nosql;
import org.thingsboard.server.controller.BaseTenantControllerTest;
import org.thingsboard.server.dao.service.DaoNoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoNoSqlTest
public class TenantControllerNoSqlTest extends BaseTenantControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/nosql/UserControllerNoSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.nosql;
import org.thingsboard.server.controller.BaseUserControllerTest;
import org.thingsboard.server.dao.service.DaoNoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoNoSqlTest
public class UserControllerNoSqlTest extends BaseUserControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/nosql/WidgetTypeControllerNoSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.nosql;
import org.thingsboard.server.controller.BaseWidgetTypeControllerTest;
import org.thingsboard.server.dao.service.DaoNoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoNoSqlTest
public class WidgetTypeControllerNoSqlTest extends BaseWidgetTypeControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/nosql/WidgetsBundleControllerNoSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.nosql;
import org.thingsboard.server.controller.BaseWidgetsBundleControllerTest;
import org.thingsboard.server.dao.service.DaoNoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoNoSqlTest
public class WidgetsBundleControllerNoSqlTest extends BaseWidgetsBundleControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/sql/AdminControllerSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.sql;
import org.thingsboard.server.controller.BaseAdminControllerTest;
import org.thingsboard.server.dao.service.DaoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoSqlTest
public class AdminControllerSqlTest extends BaseAdminControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/sql/AssetControllerSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.sql;
import org.thingsboard.server.controller.BaseAssetControllerTest;
import org.thingsboard.server.dao.service.DaoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoSqlTest
public class AssetControllerSqlTest extends BaseAssetControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/sql/AuthControllerSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.sql;
import org.thingsboard.server.controller.BaseAuthControllerTest;
import org.thingsboard.server.dao.service.DaoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoSqlTest
public class AuthControllerSqlTest extends BaseAuthControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/sql/ComponentDescriptorControllerSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.sql;
import org.thingsboard.server.controller.BaseComponentDescriptorControllerTest;
import org.thingsboard.server.dao.service.DaoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoSqlTest
public class ComponentDescriptorControllerSqlTest extends BaseComponentDescriptorControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/sql/CustomerControllerSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.sql;
import org.thingsboard.server.controller.BaseCustomerControllerTest;
import org.thingsboard.server.dao.service.DaoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoSqlTest
public class CustomerControllerSqlTest extends BaseCustomerControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/sql/DashboardControllerSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.sql;
import org.thingsboard.server.controller.BaseDashboardControllerTest;
import org.thingsboard.server.dao.service.DaoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoSqlTest
public class DashboardControllerSqlTest extends BaseDashboardControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/sql/DeviceControllerSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.sql;
import org.thingsboard.server.controller.BaseDeviceControllerTest;
import org.thingsboard.server.dao.service.DaoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoSqlTest
public class DeviceControllerSqlTest extends BaseDeviceControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/sql/PluginControllerSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.sql;
import org.thingsboard.server.controller.BasePluginControllerTest;
import org.thingsboard.server.dao.service.DaoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoSqlTest
public class PluginControllerSqlTest extends BasePluginControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/sql/RuleControllerSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.sql;
import org.thingsboard.server.controller.BaseRuleControllerTest;
import org.thingsboard.server.dao.service.DaoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoSqlTest
public class RuleControllerSqlTest extends BaseRuleControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/sql/TenantControllerSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.sql;
import org.thingsboard.server.controller.BaseTenantControllerTest;
import org.thingsboard.server.dao.service.DaoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoSqlTest
public class TenantControllerSqlTest extends BaseTenantControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/sql/UserControllerSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.sql;
import org.thingsboard.server.controller.BaseUserControllerTest;
import org.thingsboard.server.dao.service.DaoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoSqlTest
public class UserControllerSqlTest extends BaseUserControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/sql/WidgetTypeControllerSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.sql;
import org.thingsboard.server.controller.BaseWidgetTypeControllerTest;
import org.thingsboard.server.dao.service.DaoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoSqlTest
public class WidgetTypeControllerSqlTest extends BaseWidgetTypeControllerTest {
}

26
application/src/test/java/org/thingsboard/server/controller/sql/WidgetsBundleControllerSqlTest.java

@ -0,0 +1,26 @@
/**
* Copyright © 2016-2017 The Thingsboard Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.thingsboard.server.controller.sql;
import org.thingsboard.server.controller.BaseWidgetsBundleControllerTest;
import org.thingsboard.server.dao.service.DaoSqlTest;
/**
* Created by Valerii Sosliuk on 6/28/2017.
*/
@DaoSqlTest
public class WidgetsBundleControllerSqlTest extends BaseWidgetsBundleControllerTest {
}

9
application/src/test/java/org/thingsboard/server/system/SystemSqlTestSuite.java

@ -18,7 +18,7 @@ package org.thingsboard.server.system;
import org.junit.ClassRule;
import org.junit.extensions.cpsuite.ClasspathSuite;
import org.junit.runner.RunWith;
import org.thingsboard.server.dao.CustomPostgresUnit;
import org.thingsboard.server.dao.CustomSqlUnit;
import java.util.Arrays;
@ -30,9 +30,10 @@ import java.util.Arrays;
public class SystemSqlTestSuite {
@ClassRule
public static CustomPostgresUnit postgresUnit = new CustomPostgresUnit(
Arrays.asList("postgres/schema.sql", "postgres/system-data.sql"),
"postgres-embedded-test.properties");
public static CustomSqlUnit sqlUnit = new CustomSqlUnit(
Arrays.asList("sql/schema.sql", "sql/system-data.sql"),
"sql/drop-all-tables.sql",
"sql-test.properties");
}

2
application/src/test/java/org/thingsboard/server/system/sql/DeviceApiSqlTest.java

@ -22,5 +22,5 @@ import org.thingsboard.server.system.BaseHttpDeviceApiTest;
* Created by Valerii Sosliuk on 6/27/2017.
*/
@DaoSqlTest
public class DeviceApiSqlTest extends BaseHttpDeviceApiTest{
public class DeviceApiSqlTest extends BaseHttpDeviceApiTest {
}

4
dao/pom.xml

@ -170,8 +170,8 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>ru.yandex.qatools.embed</groupId>
<artifactId>postgresql-embedded</artifactId>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

5
dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDao.java

@ -45,7 +45,7 @@ public abstract class JpaAbstractDao<E extends BaseEntity<D>, D>
protected void setSearchText(E entity) {}
@Override
@Transactional(propagation = REQUIRES_NEW)
@Transactional
public D save(D domain) {
E entity;
try {
@ -64,7 +64,6 @@ public abstract class JpaAbstractDao<E extends BaseEntity<D>, D>
}
@Override
@Transactional(propagation = REQUIRES_NEW)
public D findById(UUID key) {
log.debug("Get entity by key {}", key);
E entity = getCrudRepository().findOne(key);
@ -78,7 +77,7 @@ public abstract class JpaAbstractDao<E extends BaseEntity<D>, D>
}
@Override
@Transactional(propagation = REQUIRES_NEW)
@Transactional
public boolean removeById(UUID key) {
getCrudRepository().delete(key);
log.debug("Remove request: {}", key);

1
dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java

@ -73,7 +73,6 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
}
@Override
@Transactional(propagation = REQUIRES_NEW)
public ListenableFuture<Alarm> findLatestByOriginatorAndType(TenantId tenantId, EntityId originator, String type) {
return service.submit(() -> {
List<AlarmEntity> latest = alarmRepository.findLatestByOriginatorAndType(

2
dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java

@ -80,7 +80,5 @@ public interface DeviceRepository extends CrudRepository<DeviceEntity, UUID> {
List<DeviceEntity> findDevicesByTenantIdAndCustomerIdAndIdIn(UUID tenantId, UUID customerId, List<UUID> deviceIds);
List<DeviceEntity> findDevicesByTenantId(UUID tenantId);
List<DeviceEntity> findDevicesByTenantIdAndIdIn(UUID tenantId, List<UUID> deviceIds);
}

2
dao/src/main/java/org/thingsboard/server/dao/sql/relation/JpaRelationDao.java

@ -30,12 +30,12 @@ import org.thingsboard.server.common.data.page.TimePageLink;
import org.thingsboard.server.common.data.relation.EntityRelation;
import org.thingsboard.server.common.data.relation.RelationTypeGroup;
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.util.SqlDao;
import org.thingsboard.server.dao.model.sql.RelationCompositeKey;
import org.thingsboard.server.dao.model.sql.RelationEntity;
import org.thingsboard.server.dao.relation.RelationDao;
import org.thingsboard.server.dao.sql.JpaAbstractDaoListeningExecutorService;
import org.thingsboard.server.dao.sql.JpaAbstractSearchTimeDao;
import org.thingsboard.server.dao.util.SqlDao;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;

6
dao/src/main/java/org/thingsboard/server/dao/sql/relation/RelationRepository.java

@ -17,11 +17,11 @@ package org.thingsboard.server.dao.sql.relation;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.repository.CrudRepository;
import org.thingsboard.server.dao.util.SqlDao;
import org.springframework.transaction.annotation.Transactional;
import org.thingsboard.server.dao.model.sql.RelationCompositeKey;
import org.thingsboard.server.dao.model.sql.RelationEntity;
import org.thingsboard.server.dao.util.SqlDao;
import javax.transaction.Transactional;
import java.util.List;
import java.util.UUID;
@ -51,5 +51,5 @@ public interface RelationRepository
String fromType);
@Transactional
List<RelationEntity> deleteByFromIdAndFromType(UUID fromId, String fromType);
void deleteByFromIdAndFromType(UUID fromId, String fromType);
}

2
dao/src/main/java/org/thingsboard/server/dao/util/SqlDao.java

@ -17,6 +17,6 @@ package org.thingsboard.server.dao.util;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@ConditionalOnProperty(prefix = "database", value = "type", havingValue = "postgres")
@ConditionalOnProperty(prefix = "database", value = "type", havingValue = "sql")
public @interface SqlDao {
}

0
dao/src/main/resources/postgres/demo-data.sql → dao/src/main/resources/sql/demo-data.sql

37
dao/src/main/resources/postgres/schema.sql → dao/src/main/resources/sql/schema.sql

@ -17,7 +17,7 @@
CREATE TABLE IF NOT EXISTS admin_settings (
id uuid NOT NULL CONSTRAINT admin_settings_pkey PRIMARY KEY,
json_value text,
json_value varchar,
key character varying(255)
);
@ -25,7 +25,7 @@ CREATE TABLE IF NOT EXISTS alarm (
id uuid NOT NULL CONSTRAINT alarm_pkey PRIMARY KEY,
ack_ts bigint,
clear_ts bigint,
additional_info text,
additional_info varchar,
end_ts bigint,
originator_id uuid,
originator_type integer,
@ -39,7 +39,7 @@ CREATE TABLE IF NOT EXISTS alarm (
CREATE TABLE IF NOT EXISTS asset (
id uuid NOT NULL CONSTRAINT asset_pkey PRIMARY KEY,
additional_info text,
additional_info varchar,
customer_id uuid,
name character varying(255),
search_text character varying(255),
@ -64,7 +64,7 @@ CREATE TABLE IF NOT EXISTS component_descriptor (
id uuid NOT NULL CONSTRAINT component_descriptor_pkey PRIMARY KEY,
actions character varying(255),
clazz character varying(255),
configuration_descriptor text,
configuration_descriptor varchar,
name character varying(255),
scope character varying(255),
search_text character varying(255),
@ -73,7 +73,7 @@ CREATE TABLE IF NOT EXISTS component_descriptor (
CREATE TABLE IF NOT EXISTS customer (
id uuid NOT NULL CONSTRAINT customer_pkey PRIMARY KEY,
additional_info text,
additional_info varchar,
address character varying(255),
address2 character varying(255),
city character varying(255),
@ -89,7 +89,7 @@ CREATE TABLE IF NOT EXISTS customer (
CREATE TABLE IF NOT EXISTS dashboard (
id uuid NOT NULL CONSTRAINT dashboard_pkey PRIMARY KEY,
configuration text,
configuration varchar,
customer_id uuid,
search_text character varying(255),
tenant_id uuid,
@ -98,7 +98,7 @@ CREATE TABLE IF NOT EXISTS dashboard (
CREATE TABLE IF NOT EXISTS device (
id uuid NOT NULL CONSTRAINT device_pkey PRIMARY KEY,
additional_info text,
additional_info varchar,
customer_id uuid,
type character varying(255),
name character varying(255),
@ -116,7 +116,7 @@ CREATE TABLE IF NOT EXISTS device_credentials (
CREATE TABLE IF NOT EXISTS event (
id uuid NOT NULL CONSTRAINT event_pkey PRIMARY KEY,
body text,
body varchar,
entity_id uuid,
entity_type character varying(255),
event_type character varying(255),
@ -127,10 +127,10 @@ CREATE TABLE IF NOT EXISTS event (
CREATE TABLE IF NOT EXISTS plugin (
id uuid NOT NULL CONSTRAINT plugin_pkey PRIMARY KEY,
additional_info text,
additional_info varchar,
api_token character varying(255),
plugin_class character varying(255),
configuration text,
configuration varchar,
name character varying(255),
public_access boolean,
search_text character varying(255),
@ -145,18 +145,18 @@ CREATE TABLE IF NOT EXISTS relation (
to_type character varying(255),
relation_type_group character varying(255),
relation_type character varying(255),
additional_info text,
additional_info varchar,
CONSTRAINT relation_unq_key UNIQUE (from_id, from_type, relation_type_group, relation_type, to_id, to_type)
);
CREATE TABLE IF NOT EXISTS rule (
id uuid NOT NULL CONSTRAINT rule_pkey PRIMARY KEY,
action text,
additional_info text,
filters text,
action varchar,
additional_info varchar,
filters varchar,
name character varying(255),
plugin_token character varying(255),
processor text,
processor varchar,
search_text character varying(255),
state character varying(255),
tenant_id uuid,
@ -165,7 +165,7 @@ CREATE TABLE IF NOT EXISTS rule (
CREATE TABLE IF NOT EXISTS tb_user (
id uuid NOT NULL CONSTRAINT tb_user_pkey PRIMARY KEY,
additional_info text,
additional_info varchar,
authority character varying(255),
customer_id uuid,
email character varying(255) UNIQUE,
@ -177,7 +177,7 @@ CREATE TABLE IF NOT EXISTS tb_user (
CREATE TABLE IF NOT EXISTS tenant (
id uuid NOT NULL CONSTRAINT tenant_pkey PRIMARY KEY,
additional_info text,
additional_info varchar,
address character varying(255),
address2 character varying(255),
city character varying(255),
@ -228,7 +228,7 @@ CREATE TABLE IF NOT EXISTS widget_type (
id uuid NOT NULL CONSTRAINT widget_type_pkey PRIMARY KEY,
alias character varying(255),
bundle_alias character varying(255),
descriptor text,
descriptor varchar(1000000),
name character varying(255),
tenant_id uuid
);
@ -236,7 +236,6 @@ CREATE TABLE IF NOT EXISTS widget_type (
CREATE TABLE IF NOT EXISTS widgets_bundle (
id uuid NOT NULL CONSTRAINT widgets_bundle_pkey PRIMARY KEY,
alias character varying(255),
image bytea,
search_text character varying(255),
tenant_id uuid,
title character varying(255)

0
dao/src/main/resources/postgres/system-data.sql → dao/src/main/resources/sql/system-data.sql

81
dao/src/test/java/org/thingsboard/server/dao/CustomPostgresUnit.java → dao/src/test/java/org/thingsboard/server/dao/CustomSqlUnit.java

@ -19,7 +19,6 @@ import com.google.common.base.Charsets;
import com.google.common.io.Resources;
import lombok.extern.slf4j.Slf4j;
import org.junit.rules.ExternalResource;
import ru.yandex.qatools.embed.postgresql.EmbeddedPostgres;
import java.io.IOException;
import java.io.InputStream;
@ -30,58 +29,47 @@ import java.sql.SQLException;
import java.util.List;
import java.util.Properties;
import static ru.yandex.qatools.embed.postgresql.distribution.Version.Main.V9_6;
/**
* Created by Valerii Sosliuk on 6/24/2017.
*/
@Slf4j
public class CustomPostgresUnit extends ExternalResource {
public class CustomSqlUnit extends ExternalResource {
private static final String HOST = "host";
private static final String PORT = "port";
private static final String DATABASE = "database";
private static final String USERNAME = "username";
private static final String PASSWORD = "password";
private final List<String> sqlFiles;
private final String dropAllTablesSqlFile;
private final String dbUrl;
private final String dbUserName;
private final String dbPassword;
private List<String> sqlFiles;
private Properties properties;
private EmbeddedPostgres postgres;
public CustomPostgresUnit(List<String> sqlFiles, String configurationFileName) {
public CustomSqlUnit(List<String> sqlFiles, String dropAllTablesSqlFile, String configurationFileName) {
this.sqlFiles = sqlFiles;
this.properties = loadProperties(configurationFileName);
this.dropAllTablesSqlFile = dropAllTablesSqlFile;
final Properties properties = new Properties();
try (final InputStream stream = this.getClass().getClassLoader().getResourceAsStream(configurationFileName)) {
properties.load(stream);
this.dbUrl = properties.getProperty("spring.datasource.url");
this.dbUserName = properties.getProperty("spring.datasource.username");
this.dbPassword = properties.getProperty("spring.datasource.password");
} catch (IOException e) {
throw new RuntimeException(e.getMessage(), e);
}
}
@Override
public void before() {
postgres = new EmbeddedPostgres(V9_6);
load();
}
cleanUpDb();
@Override
public void after() {
postgres.stop();
}
private void load() {
Connection conn = null;
try {
String url = postgres.start(properties.getProperty(HOST),
Integer.parseInt(properties.getProperty(PORT)),
properties.getProperty(DATABASE),
properties.getProperty(USERNAME),
properties.getProperty(PASSWORD));
conn = DriverManager.getConnection(url);
conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword);
for (String sqlFile : sqlFiles) {
URL sqlFileUrl = Resources.getResource(sqlFile);
String sql = Resources.toString(sqlFileUrl, Charsets.UTF_8);
conn.createStatement().execute(sql);
}
} catch (IOException | SQLException e) {
throw new RuntimeException("Unable to start embedded postgres. Reason: " + e.getMessage(), e);
throw new RuntimeException("Unable to start embedded hsqldb. Reason: " + e.getMessage(), e);
} finally {
if (conn != null) {
try {
@ -93,13 +81,28 @@ public class CustomPostgresUnit extends ExternalResource {
}
}
private Properties loadProperties(String fileName) {
final Properties properties = new Properties();
try (final InputStream stream = this.getClass().getClassLoader().getResourceAsStream(fileName)) {
properties.load(stream);
return properties;
} catch (IOException e) {
throw new RuntimeException(e.getMessage(), e);
@Override
public void after() {
cleanUpDb();
}
private void cleanUpDb() {
Connection conn = null;
try {
conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword);
URL dropAllTableSqlFileUrl = Resources.getResource(dropAllTablesSqlFile);
String dropAllTablesSql = Resources.toString(dropAllTableSqlFileUrl, Charsets.UTF_8);
conn.createStatement().execute(dropAllTablesSql);
} catch (IOException | SQLException e) {
throw new RuntimeException("Unable to clean up embedded hsqldb. Reason: " + e.getMessage(), e);
} finally {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
log.error(e.getMessage(), e);
}
}
}
}
}

10
dao/src/test/java/org/thingsboard/server/dao/JpaDaoTestSuite.java

@ -24,13 +24,15 @@ import java.util.Arrays;
@RunWith(ClasspathSuite.class)
@ClassnameFilters({
"org.thingsboard.server.dao.sql.*Test"
"org.thingsboard.server.dao.sql.*AASDTest"
})
public class JpaDaoTestSuite {
@ClassRule
public static CustomPostgresUnit postgresUnit = new CustomPostgresUnit(
Arrays.asList("postgres/schema.sql", "postgres/system-data.sql"),
"postgres-embedded-test.properties");
public static CustomSqlUnit sqlUnit = new CustomSqlUnit(
Arrays.asList("sql/schema.sql", "sql/system-data.sql"),
"sql/drop-all-tables.sql",
"sql-test.properties"
);
}

3
dao/src/test/java/org/thingsboard/server/dao/JpaDbunitTestConfig.java

@ -18,6 +18,7 @@ package org.thingsboard.server.dao;
import com.github.springtestdbunit.bean.DatabaseConfigBean;
import com.github.springtestdbunit.bean.DatabaseDataSourceConnectionFactoryBean;
import org.dbunit.DatabaseUnitException;
import org.dbunit.ext.hsqldb.HsqldbDataTypeFactory;
import org.dbunit.ext.postgresql.PostgresqlDataTypeFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
@ -41,7 +42,7 @@ public class JpaDbunitTestConfig {
@Bean
public DatabaseConfigBean databaseConfigBean() {
DatabaseConfigBean databaseConfigBean = new DatabaseConfigBean();
databaseConfigBean.setDatatypeFactory(new PostgresqlDataTypeFactory());
databaseConfigBean.setDatatypeFactory(new HsqldbDataTypeFactory());
return databaseConfigBean;
}

8
dao/src/test/java/org/thingsboard/server/dao/SqlDaoServiceTestSuite.java

@ -29,8 +29,10 @@ import java.util.Arrays;
public class SqlDaoServiceTestSuite {
@ClassRule
public static CustomPostgresUnit postgresUnit = new CustomPostgresUnit(
Arrays.asList("postgres/schema.sql", "postgres/system-data.sql", "postgres/system-test.sql"),
"postgres-embedded-test.properties");
public static CustomSqlUnit sqlUnit = new CustomSqlUnit(
Arrays.asList("sql/schema.sql", "sql/system-data.sql", "sql/system-test.sql"),
"sql/drop-all-tables.sql",
"sql-test.properties"
);
}

5
dao/src/test/resources/postgres-embedded-test.properties

@ -1,5 +0,0 @@
host: localhost
port: 5433
database: thingsboard-test
username: postgres
password: postgres

10
dao/src/test/resources/sql-test.properties

@ -1,8 +1,10 @@
database.type=postgres
database.type=sql
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=validate
spring.jpa.database-platform=org.hibernate.dialect.HSQLDialect
spring.datasource.url=jdbc:postgresql://localhost:5433/thingsboard-test
spring.datasource.username=postgres
spring.datasource.password=postgres
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.url=jdbc:hsqldb:file:/tmp/testDb;sql.enforce_size=false
spring.datasource.driverClassName=org.hsqldb.jdbc.JDBCDriver

20
dao/src/test/resources/sql/drop-all-tables.sql

@ -0,0 +1,20 @@
TRUNCATE TABLE admin_settings;
TRUNCATE TABLE alarm;
TRUNCATE TABLE asset;
TRUNCATE TABLE attribute_kv;
TRUNCATE TABLE component_descriptor;
TRUNCATE TABLE customer;
TRUNCATE TABLE dashboard;
TRUNCATE TABLE device;
TRUNCATE TABLE device_credentials;
TRUNCATE TABLE event;
TRUNCATE TABLE plugin;
TRUNCATE TABLE relation;
TRUNCATE TABLE rule;
TRUNCATE TABLE tb_user;
TRUNCATE TABLE tenant;
TRUNCATE TABLE ts_kv;
TRUNCATE TABLE ts_kv_latest;
TRUNCATE TABLE user_credentials;
TRUNCATE TABLE widget_type;
TRUNCATE TABLE widgets_bundle;

0
dao/src/test/resources/postgres/system-test.sql → dao/src/test/resources/sql/system-test.sql

7
pom.xml

@ -71,6 +71,7 @@
<springfox-swagger.version>2.6.1</springfox-swagger.version>
<bouncycastle.version>1.56</bouncycastle.version>
<winsw.version>2.0.1</winsw.version>
<hsqldb.version>2.4.0</hsqldb.version>
<dbunit.version>2.5.3</dbunit.version>
<spring-test-dbunit.version>1.2.1</spring-test-dbunit.version>
<postgresql.driver.version>9.4.1211</postgresql.driver.version>
@ -746,6 +747,12 @@
<artifactId>bcpkix-jdk15on</artifactId>
<version>${bouncycastle.version}</version>
</dependency>
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>${hsqldb.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ru.yandex.qatools.embed</groupId>
<artifactId>postgresql-embedded</artifactId>

Loading…
Cancel
Save