diff --git a/.mvn/jvm.config b/.mvn/jvm.config
deleted file mode 100644
index 4dd7491565..0000000000
--- a/.mvn/jvm.config
+++ /dev/null
@@ -1 +0,0 @@
--Xmx4096m -Xms1024m
\ No newline at end of file
diff --git a/application/pom.xml b/application/pom.xml
index abd3615c95..5c4146b262 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -250,8 +250,8 @@
test
- ru.yandex.qatools.embed
- postgresql-embedded
+ org.hsqldb
+ hsqldb
test
diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml
index 456f8602de..5d5dac1717 100644
--- a/application/src/main/resources/thingsboard.yml
+++ b/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"
diff --git a/application/src/test/java/org/thingsboard/server/controller/AbstractControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/AbstractControllerTest.java
index 052b61ac6b..8be6105e35 100644
--- a/application/src/test/java/org/thingsboard/server/controller/AbstractControllerTest.java
+++ b/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"})
diff --git a/application/src/test/java/org/thingsboard/server/controller/AdminControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseAdminControllerTest.java
similarity index 98%
rename from application/src/test/java/org/thingsboard/server/controller/AdminControllerTest.java
rename to application/src/test/java/org/thingsboard/server/controller/BaseAdminControllerTest.java
index 8f6bef66a7..5047c36189 100644
--- a/application/src/test/java/org/thingsboard/server/controller/AdminControllerTest.java
+++ b/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 {
diff --git a/application/src/test/java/org/thingsboard/server/controller/AssetControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseAssetControllerTest.java
similarity index 99%
rename from application/src/test/java/org/thingsboard/server/controller/AssetControllerTest.java
rename to application/src/test/java/org/thingsboard/server/controller/BaseAssetControllerTest.java
index d15023b91f..1350aaed4a 100644
--- a/application/src/test/java/org/thingsboard/server/controller/AssetControllerTest.java
+++ b/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 idComparator = new IdComparator<>();
diff --git a/application/src/test/java/org/thingsboard/server/controller/AuthControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseAuthControllerTest.java
similarity index 97%
rename from application/src/test/java/org/thingsboard/server/controller/AuthControllerTest.java
rename to application/src/test/java/org/thingsboard/server/controller/BaseAuthControllerTest.java
index fad9e54039..ba7f90dc64 100644
--- a/application/src/test/java/org/thingsboard/server/controller/AuthControllerTest.java
+++ b/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 {
diff --git a/application/src/test/java/org/thingsboard/server/controller/ComponentDescriptorControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseComponentDescriptorControllerTest.java
similarity index 97%
rename from application/src/test/java/org/thingsboard/server/controller/ComponentDescriptorControllerTest.java
rename to application/src/test/java/org/thingsboard/server/controller/BaseComponentDescriptorControllerTest.java
index 0cf7c1f446..175c1387f1 100644
--- a/application/src/test/java/org/thingsboard/server/controller/ComponentDescriptorControllerTest.java
+++ b/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;
diff --git a/application/src/test/java/org/thingsboard/server/controller/CustomerControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseCustomerControllerTest.java
similarity index 99%
rename from application/src/test/java/org/thingsboard/server/controller/CustomerControllerTest.java
rename to application/src/test/java/org/thingsboard/server/controller/BaseCustomerControllerTest.java
index b1076e0413..f4ed22898e 100644
--- a/application/src/test/java/org/thingsboard/server/controller/CustomerControllerTest.java
+++ b/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 idComparator = new IdComparator<>();
diff --git a/application/src/test/java/org/thingsboard/server/controller/DashboardControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseDashboardControllerTest.java
similarity index 99%
rename from application/src/test/java/org/thingsboard/server/controller/DashboardControllerTest.java
rename to application/src/test/java/org/thingsboard/server/controller/BaseDashboardControllerTest.java
index dda68a64ef..bb064116f1 100644
--- a/application/src/test/java/org/thingsboard/server/controller/DashboardControllerTest.java
+++ b/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 idComparator = new IdComparator<>();
diff --git a/application/src/test/java/org/thingsboard/server/controller/DeviceControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseDeviceControllerTest.java
similarity index 99%
rename from application/src/test/java/org/thingsboard/server/controller/DeviceControllerTest.java
rename to application/src/test/java/org/thingsboard/server/controller/BaseDeviceControllerTest.java
index ad2993d6fe..3713fc45a1 100644
--- a/application/src/test/java/org/thingsboard/server/controller/DeviceControllerTest.java
+++ b/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 idComparator = new IdComparator<>();
diff --git a/application/src/test/java/org/thingsboard/server/controller/PluginControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BasePluginControllerTest.java
similarity index 97%
rename from application/src/test/java/org/thingsboard/server/controller/PluginControllerTest.java
rename to application/src/test/java/org/thingsboard/server/controller/BasePluginControllerTest.java
index 65f9840cb9..6933c5eb13 100644
--- a/application/src/test/java/org/thingsboard/server/controller/PluginControllerTest.java
+++ b/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 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());
diff --git a/application/src/test/java/org/thingsboard/server/controller/RuleControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseRuleControllerTest.java
similarity index 99%
rename from application/src/test/java/org/thingsboard/server/controller/RuleControllerTest.java
rename to application/src/test/java/org/thingsboard/server/controller/BaseRuleControllerTest.java
index 8a52216e99..bb4cc4994a 100644
--- a/application/src/test/java/org/thingsboard/server/controller/RuleControllerTest.java
+++ b/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 idComparator = new IdComparator<>();
diff --git a/application/src/test/java/org/thingsboard/server/controller/TenantControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseTenantControllerTest.java
similarity index 99%
rename from application/src/test/java/org/thingsboard/server/controller/TenantControllerTest.java
rename to application/src/test/java/org/thingsboard/server/controller/BaseTenantControllerTest.java
index dc4a4228f3..770e02f9b1 100644
--- a/application/src/test/java/org/thingsboard/server/controller/TenantControllerTest.java
+++ b/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 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);
diff --git a/application/src/test/java/org/thingsboard/server/controller/UserControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseUserControllerTest.java
similarity index 99%
rename from application/src/test/java/org/thingsboard/server/controller/UserControllerTest.java
rename to application/src/test/java/org/thingsboard/server/controller/BaseUserControllerTest.java
index d57871bba9..8dac038772 100644
--- a/application/src/test/java/org/thingsboard/server/controller/UserControllerTest.java
+++ b/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 idComparator = new IdComparator<>();
diff --git a/application/src/test/java/org/thingsboard/server/controller/WidgetTypeControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseWidgetTypeControllerTest.java
similarity index 99%
rename from application/src/test/java/org/thingsboard/server/controller/WidgetTypeControllerTest.java
rename to application/src/test/java/org/thingsboard/server/controller/BaseWidgetTypeControllerTest.java
index fbeaa8f826..08720e2dce 100644
--- a/application/src/test/java/org/thingsboard/server/controller/WidgetTypeControllerTest.java
+++ b/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 idComparator = new IdComparator<>();
diff --git a/application/src/test/java/org/thingsboard/server/controller/WidgetsBundleControllerTest.java b/application/src/test/java/org/thingsboard/server/controller/BaseWidgetsBundleControllerTest.java
similarity index 99%
rename from application/src/test/java/org/thingsboard/server/controller/WidgetsBundleControllerTest.java
rename to application/src/test/java/org/thingsboard/server/controller/BaseWidgetsBundleControllerTest.java
index f8e89db52f..5a9a2bf114 100644
--- a/application/src/test/java/org/thingsboard/server/controller/WidgetsBundleControllerTest.java
+++ b/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 idComparator = new IdComparator<>();
diff --git a/application/src/test/java/org/thingsboard/server/controller/ControllerTestSuite.java b/application/src/test/java/org/thingsboard/server/controller/ControllerNoSqlTestSuite.java
similarity index 93%
rename from application/src/test/java/org/thingsboard/server/controller/ControllerTestSuite.java
rename to application/src/test/java/org/thingsboard/server/controller/ControllerNoSqlTestSuite.java
index 84e9ecdb33..b773eab87c 100644
--- a/application/src/test/java/org/thingsboard/server/controller/ControllerTestSuite.java
+++ b/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 =
diff --git a/application/src/test/java/org/thingsboard/server/controller/ControllerSqlTestSuite.java b/application/src/test/java/org/thingsboard/server/controller/ControllerSqlTestSuite.java
new file mode 100644
index 0000000000..b9692272aa
--- /dev/null
+++ b/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");
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/nosql/AdminControllerNoSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/nosql/AdminControllerNoSqlTest.java
new file mode 100644
index 0000000000..6ec28e7ccd
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/nosql/AssetControllerNoSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/nosql/AssetControllerNoSqlTest.java
new file mode 100644
index 0000000000..a4bd152f07
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/nosql/AuthControllerNoSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/nosql/AuthControllerNoSqlTest.java
new file mode 100644
index 0000000000..4896d22aad
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/nosql/ComponentDescriptorControllerNoSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/nosql/ComponentDescriptorControllerNoSqlTest.java
new file mode 100644
index 0000000000..f3aa3e8d95
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/nosql/CustomerControllerNoSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/nosql/CustomerControllerNoSqlTest.java
new file mode 100644
index 0000000000..2fa306797d
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/nosql/DashboardControllerNoSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/nosql/DashboardControllerNoSqlTest.java
new file mode 100644
index 0000000000..2a7af40c03
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/nosql/DeviceControllerNoSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/nosql/DeviceControllerNoSqlTest.java
new file mode 100644
index 0000000000..47f1c9e376
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/nosql/PluginControllerNoSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/nosql/PluginControllerNoSqlTest.java
new file mode 100644
index 0000000000..c25eca170d
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/nosql/RuleControllerNoSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/nosql/RuleControllerNoSqlTest.java
new file mode 100644
index 0000000000..3bf64fbe54
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/nosql/TenantControllerNoSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/nosql/TenantControllerNoSqlTest.java
new file mode 100644
index 0000000000..7cb34d3117
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/nosql/UserControllerNoSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/nosql/UserControllerNoSqlTest.java
new file mode 100644
index 0000000000..6540347f52
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/nosql/WidgetTypeControllerNoSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/nosql/WidgetTypeControllerNoSqlTest.java
new file mode 100644
index 0000000000..852f453af1
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/nosql/WidgetsBundleControllerNoSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/nosql/WidgetsBundleControllerNoSqlTest.java
new file mode 100644
index 0000000000..02b4c07639
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/sql/AdminControllerSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/sql/AdminControllerSqlTest.java
new file mode 100644
index 0000000000..2491c32a1b
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/sql/AssetControllerSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/sql/AssetControllerSqlTest.java
new file mode 100644
index 0000000000..519cc382f2
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/sql/AuthControllerSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/sql/AuthControllerSqlTest.java
new file mode 100644
index 0000000000..cb2b1f0346
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/sql/ComponentDescriptorControllerSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/sql/ComponentDescriptorControllerSqlTest.java
new file mode 100644
index 0000000000..d96b3dd764
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/sql/CustomerControllerSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/sql/CustomerControllerSqlTest.java
new file mode 100644
index 0000000000..8d3ba4906a
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/sql/DashboardControllerSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/sql/DashboardControllerSqlTest.java
new file mode 100644
index 0000000000..7ce48c747f
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/sql/DeviceControllerSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/sql/DeviceControllerSqlTest.java
new file mode 100644
index 0000000000..8505e642d3
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/sql/PluginControllerSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/sql/PluginControllerSqlTest.java
new file mode 100644
index 0000000000..3d750c596c
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/sql/RuleControllerSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/sql/RuleControllerSqlTest.java
new file mode 100644
index 0000000000..d70d55042e
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/sql/TenantControllerSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/sql/TenantControllerSqlTest.java
new file mode 100644
index 0000000000..582dc610fd
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/sql/UserControllerSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/sql/UserControllerSqlTest.java
new file mode 100644
index 0000000000..9b7fc3bee7
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/sql/WidgetTypeControllerSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/sql/WidgetTypeControllerSqlTest.java
new file mode 100644
index 0000000000..db0cd3ac0b
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/controller/sql/WidgetsBundleControllerSqlTest.java b/application/src/test/java/org/thingsboard/server/controller/sql/WidgetsBundleControllerSqlTest.java
new file mode 100644
index 0000000000..7e2e48137d
--- /dev/null
+++ b/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 {
+}
diff --git a/application/src/test/java/org/thingsboard/server/system/SystemSqlTestSuite.java b/application/src/test/java/org/thingsboard/server/system/SystemSqlTestSuite.java
index 726b2052aa..21667a77ec 100644
--- a/application/src/test/java/org/thingsboard/server/system/SystemSqlTestSuite.java
+++ b/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");
}
diff --git a/application/src/test/java/org/thingsboard/server/system/sql/DeviceApiSqlTest.java b/application/src/test/java/org/thingsboard/server/system/sql/DeviceApiSqlTest.java
index bf533132c7..23430874df 100644
--- a/application/src/test/java/org/thingsboard/server/system/sql/DeviceApiSqlTest.java
+++ b/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 {
}
diff --git a/dao/pom.xml b/dao/pom.xml
index 2bb77511bb..ff4237c1da 100644
--- a/dao/pom.xml
+++ b/dao/pom.xml
@@ -170,8 +170,8 @@
test
- ru.yandex.qatools.embed
- postgresql-embedded
+ org.hsqldb
+ hsqldb
test
diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDao.java
index 8abab4a135..2fd6c97689 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/sql/JpaAbstractDao.java
@@ -45,7 +45,7 @@ public abstract class JpaAbstractDao, 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, 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, D>
}
@Override
- @Transactional(propagation = REQUIRES_NEW)
+ @Transactional
public boolean removeById(UUID key) {
getCrudRepository().delete(key);
log.debug("Remove request: {}", key);
diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java
index 5f902bfa6c..79779e8e1e 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmDao.java
@@ -73,7 +73,6 @@ public class JpaAlarmDao extends JpaAbstractDao implements A
}
@Override
- @Transactional(propagation = REQUIRES_NEW)
public ListenableFuture findLatestByOriginatorAndType(TenantId tenantId, EntityId originator, String type) {
return service.submit(() -> {
List latest = alarmRepository.findLatestByOriginatorAndType(
diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java
index 56eb5e8b8b..feae4a6b24 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java
+++ b/dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceRepository.java
@@ -80,7 +80,5 @@ public interface DeviceRepository extends CrudRepository {
List findDevicesByTenantIdAndCustomerIdAndIdIn(UUID tenantId, UUID customerId, List deviceIds);
- List findDevicesByTenantId(UUID tenantId);
-
List findDevicesByTenantIdAndIdIn(UUID tenantId, List deviceIds);
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/relation/JpaRelationDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/relation/JpaRelationDao.java
index e6a5c79c25..1c4122b361 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/sql/relation/JpaRelationDao.java
+++ b/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;
diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/relation/RelationRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/relation/RelationRepository.java
index 6abbbbd610..2c2e63687e 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/sql/relation/RelationRepository.java
+++ b/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 deleteByFromIdAndFromType(UUID fromId, String fromType);
+ void deleteByFromIdAndFromType(UUID fromId, String fromType);
}
diff --git a/dao/src/main/java/org/thingsboard/server/dao/util/SqlDao.java b/dao/src/main/java/org/thingsboard/server/dao/util/SqlDao.java
index 88a107b3eb..1ebc271706 100644
--- a/dao/src/main/java/org/thingsboard/server/dao/util/SqlDao.java
+++ b/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 {
}
diff --git a/dao/src/main/resources/postgres/demo-data.sql b/dao/src/main/resources/sql/demo-data.sql
similarity index 100%
rename from dao/src/main/resources/postgres/demo-data.sql
rename to dao/src/main/resources/sql/demo-data.sql
diff --git a/dao/src/main/resources/postgres/schema.sql b/dao/src/main/resources/sql/schema.sql
similarity index 93%
rename from dao/src/main/resources/postgres/schema.sql
rename to dao/src/main/resources/sql/schema.sql
index 038f25adaf..9e1143f6eb 100644
--- a/dao/src/main/resources/postgres/schema.sql
+++ b/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)
diff --git a/dao/src/main/resources/postgres/system-data.sql b/dao/src/main/resources/sql/system-data.sql
similarity index 100%
rename from dao/src/main/resources/postgres/system-data.sql
rename to dao/src/main/resources/sql/system-data.sql
diff --git a/dao/src/test/java/org/thingsboard/server/dao/CustomPostgresUnit.java b/dao/src/test/java/org/thingsboard/server/dao/CustomSqlUnit.java
similarity index 56%
rename from dao/src/test/java/org/thingsboard/server/dao/CustomPostgresUnit.java
rename to dao/src/test/java/org/thingsboard/server/dao/CustomSqlUnit.java
index feaaa6b1fa..9649ad8f8d 100644
--- a/dao/src/test/java/org/thingsboard/server/dao/CustomPostgresUnit.java
+++ b/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 sqlFiles;
+ private final String dropAllTablesSqlFile;
+ private final String dbUrl;
+ private final String dbUserName;
+ private final String dbPassword;
- private List sqlFiles;
- private Properties properties;
-
- private EmbeddedPostgres postgres;
-
- public CustomPostgresUnit(List sqlFiles, String configurationFileName) {
+ public CustomSqlUnit(List 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);
+ }
+ }
}
}
}
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 c74aeeff27..decd74b95b 100644
--- a/dao/src/test/java/org/thingsboard/server/dao/JpaDaoTestSuite.java
+++ b/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"
+ );
}
diff --git a/dao/src/test/java/org/thingsboard/server/dao/JpaDbunitTestConfig.java b/dao/src/test/java/org/thingsboard/server/dao/JpaDbunitTestConfig.java
index 0a0f7d8dae..507eb4d4af 100644
--- a/dao/src/test/java/org/thingsboard/server/dao/JpaDbunitTestConfig.java
+++ b/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;
}
diff --git a/dao/src/test/java/org/thingsboard/server/dao/SqlDaoServiceTestSuite.java b/dao/src/test/java/org/thingsboard/server/dao/SqlDaoServiceTestSuite.java
index 6ba4e7ab45..c0ae4946d6 100644
--- a/dao/src/test/java/org/thingsboard/server/dao/SqlDaoServiceTestSuite.java
+++ b/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"
+ );
}
diff --git a/dao/src/test/resources/postgres-embedded-test.properties b/dao/src/test/resources/postgres-embedded-test.properties
deleted file mode 100644
index a7279b9996..0000000000
--- a/dao/src/test/resources/postgres-embedded-test.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-host: localhost
-port: 5433
-database: thingsboard-test
-username: postgres
-password: postgres
\ No newline at end of file
diff --git a/dao/src/test/resources/sql-test.properties b/dao/src/test/resources/sql-test.properties
index 93402cff25..0bcc789c91 100644
--- a/dao/src/test/resources/sql-test.properties
+++ b/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
\ No newline at end of file
diff --git a/dao/src/test/resources/sql/drop-all-tables.sql b/dao/src/test/resources/sql/drop-all-tables.sql
new file mode 100644
index 0000000000..610653d565
--- /dev/null
+++ b/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;
\ No newline at end of file
diff --git a/dao/src/test/resources/postgres/system-test.sql b/dao/src/test/resources/sql/system-test.sql
similarity index 100%
rename from dao/src/test/resources/postgres/system-test.sql
rename to dao/src/test/resources/sql/system-test.sql
diff --git a/pom.xml b/pom.xml
index 7b2c5f8c34..762d0dc017 100755
--- a/pom.xml
+++ b/pom.xml
@@ -71,6 +71,7 @@
2.6.1
1.56
2.0.1
+ 2.4.0
2.5.3
1.2.1
9.4.1211
@@ -746,6 +747,12 @@
bcpkix-jdk15on
${bouncycastle.version}
+
+ org.hsqldb
+ hsqldb
+ ${hsqldb.version}
+ test
+
ru.yandex.qatools.embed
postgresql-embedded