Fixed tests
This commit is contained in:
parent
341f0d14ab
commit
58d9c313a8
@ -47,6 +47,7 @@ import java.util.stream.Collectors;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class DefaultRuleEngineStatisticsService implements RuleEngineStatisticsService {
|
public class DefaultRuleEngineStatisticsService implements RuleEngineStatisticsService {
|
||||||
|
|
||||||
|
public static final String TB_SERVICE_QUEUE = "TbServiceQueue";
|
||||||
public static final FutureCallback<Void> CALLBACK = new FutureCallback<Void>() {
|
public static final FutureCallback<Void> CALLBACK = new FutureCallback<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(@Nullable Void result) {
|
public void onSuccess(@Nullable Void result) {
|
||||||
@ -95,7 +96,13 @@ public class DefaultRuleEngineStatisticsService implements RuleEngineStatisticsS
|
|||||||
});
|
});
|
||||||
ruleEngineStats.getTenantExceptions().forEach((tenantId, e) -> {
|
ruleEngineStats.getTenantExceptions().forEach((tenantId, e) -> {
|
||||||
TsKvEntry tsKv = new BasicTsKvEntry(ts, new JsonDataEntry("ruleEngineException", e.toJsonString()));
|
TsKvEntry tsKv = new BasicTsKvEntry(ts, new JsonDataEntry("ruleEngineException", e.toJsonString()));
|
||||||
|
try {
|
||||||
tsService.saveAndNotify(tenantId, getServiceAssetId(tenantId, queueName), Collections.singletonList(tsKv), CALLBACK);
|
tsService.saveAndNotify(tenantId, getServiceAssetId(tenantId, queueName), Collections.singletonList(tsKv), CALLBACK);
|
||||||
|
} catch (DataValidationException e2) {
|
||||||
|
if (!e2.getMessage().equalsIgnoreCase("Asset is referencing to non-existent tenant!")) {
|
||||||
|
throw e2;
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
ruleEngineStats.reset();
|
ruleEngineStats.reset();
|
||||||
}
|
}
|
||||||
@ -113,7 +120,7 @@ public class DefaultRuleEngineStatisticsService implements RuleEngineStatisticsS
|
|||||||
asset = new Asset();
|
asset = new Asset();
|
||||||
asset.setTenantId(tenantId);
|
asset.setTenantId(tenantId);
|
||||||
asset.setName(queueName + "_" + serviceInfoProvider.getServiceId());
|
asset.setName(queueName + "_" + serviceInfoProvider.getServiceId());
|
||||||
asset.setType("TbServiceQueue");
|
asset.setType(TB_SERVICE_QUEUE);
|
||||||
asset = assetService.saveAsset(asset);
|
asset = assetService.saveAsset(asset);
|
||||||
}
|
}
|
||||||
assetId = asset.getId();
|
assetId = asset.getId();
|
||||||
|
|||||||
@ -32,6 +32,7 @@ import org.thingsboard.server.common.data.page.TextPageData;
|
|||||||
import org.thingsboard.server.common.data.page.TextPageLink;
|
import org.thingsboard.server.common.data.page.TextPageLink;
|
||||||
import org.thingsboard.server.common.data.security.Authority;
|
import org.thingsboard.server.common.data.security.Authority;
|
||||||
import org.thingsboard.server.dao.model.ModelConstants;
|
import org.thingsboard.server.dao.model.ModelConstants;
|
||||||
|
import org.thingsboard.server.service.stats.DefaultRuleEngineStatisticsService;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -71,7 +72,7 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
public void afterTest() throws Exception {
|
public void afterTest() throws Exception {
|
||||||
loginSysAdmin();
|
loginSysAdmin();
|
||||||
|
|
||||||
doDelete("/api/tenant/"+savedTenant.getId().getId().toString())
|
doDelete("/api/tenant/" + savedTenant.getId().getId().toString())
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isOk());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -111,26 +112,27 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testFindAssetTypesByTenantId() throws Exception {
|
public void testFindAssetTypesByTenantId() throws Exception {
|
||||||
List<Asset> assets = new ArrayList<>();
|
List<Asset> assets = new ArrayList<>();
|
||||||
for (int i=0;i<3;i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
Asset asset = new Asset();
|
Asset asset = new Asset();
|
||||||
asset.setName("My asset B"+i);
|
asset.setName("My asset B" + i);
|
||||||
asset.setType("typeB");
|
asset.setType("typeB");
|
||||||
assets.add(doPost("/api/asset", asset, Asset.class));
|
assets.add(doPost("/api/asset", asset, Asset.class));
|
||||||
}
|
}
|
||||||
for (int i=0;i<7;i++) {
|
for (int i = 0; i < 7; i++) {
|
||||||
Asset asset = new Asset();
|
Asset asset = new Asset();
|
||||||
asset.setName("My asset C"+i);
|
asset.setName("My asset C" + i);
|
||||||
asset.setType("typeC");
|
asset.setType("typeC");
|
||||||
assets.add(doPost("/api/asset", asset, Asset.class));
|
assets.add(doPost("/api/asset", asset, Asset.class));
|
||||||
}
|
}
|
||||||
for (int i=0;i<9;i++) {
|
for (int i = 0; i < 9; i++) {
|
||||||
Asset asset = new Asset();
|
Asset asset = new Asset();
|
||||||
asset.setName("My asset A"+i);
|
asset.setName("My asset A" + i);
|
||||||
asset.setType("typeA");
|
asset.setType("typeA");
|
||||||
assets.add(doPost("/api/asset", asset, Asset.class));
|
assets.add(doPost("/api/asset", asset, Asset.class));
|
||||||
}
|
}
|
||||||
List<EntitySubtype> assetTypes = doGetTyped("/api/asset/types",
|
List<EntitySubtype> assetTypes = doGetTyped("/api/asset/types",
|
||||||
new TypeReference<List<EntitySubtype>>(){});
|
new TypeReference<List<EntitySubtype>>() {
|
||||||
|
});
|
||||||
|
|
||||||
Assert.assertNotNull(assetTypes);
|
Assert.assertNotNull(assetTypes);
|
||||||
Assert.assertEquals(3, assetTypes.size());
|
Assert.assertEquals(3, assetTypes.size());
|
||||||
@ -146,10 +148,10 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
asset.setType("default");
|
asset.setType("default");
|
||||||
Asset savedAsset = doPost("/api/asset", asset, Asset.class);
|
Asset savedAsset = doPost("/api/asset", asset, Asset.class);
|
||||||
|
|
||||||
doDelete("/api/asset/"+savedAsset.getId().getId().toString())
|
doDelete("/api/asset/" + savedAsset.getId().getId().toString())
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isOk());
|
||||||
|
|
||||||
doGet("/api/asset/"+savedAsset.getId().getId().toString())
|
doGet("/api/asset/" + savedAsset.getId().getId().toString())
|
||||||
.andExpect(status().isNotFound());
|
.andExpect(status().isNotFound());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -244,16 +246,16 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
|
|
||||||
loginSysAdmin();
|
loginSysAdmin();
|
||||||
|
|
||||||
doDelete("/api/tenant/"+savedTenant2.getId().getId().toString())
|
doDelete("/api/tenant/" + savedTenant2.getId().getId().toString())
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isOk());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testFindTenantAssets() throws Exception {
|
public void testFindTenantAssets() throws Exception {
|
||||||
List<Asset> assets = new ArrayList<>();
|
List<Asset> assets = new ArrayList<>();
|
||||||
for (int i=0;i<178;i++) {
|
for (int i = 0; i < 178; i++) {
|
||||||
Asset asset = new Asset();
|
Asset asset = new Asset();
|
||||||
asset.setName("Asset"+i);
|
asset.setName("Asset" + i);
|
||||||
asset.setType("default");
|
asset.setType("default");
|
||||||
assets.add(doPost("/api/asset", asset, Asset.class));
|
assets.add(doPost("/api/asset", asset, Asset.class));
|
||||||
}
|
}
|
||||||
@ -262,13 +264,16 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
TextPageData<Asset> pageData = null;
|
TextPageData<Asset> pageData = null;
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/assets?",
|
pageData = doGetTypedWithPageLink("/api/tenant/assets?",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink);
|
||||||
loadedAssets.addAll(pageData.getData());
|
loadedAssets.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
}
|
}
|
||||||
} while (pageData.hasNext());
|
} while (pageData.hasNext());
|
||||||
|
|
||||||
|
loadedAssets.removeIf(asset -> asset.getType().equals(DefaultRuleEngineStatisticsService.TB_SERVICE_QUEUE));
|
||||||
|
|
||||||
Collections.sort(assets, idComparator);
|
Collections.sort(assets, idComparator);
|
||||||
Collections.sort(loadedAssets, idComparator);
|
Collections.sort(loadedAssets, idComparator);
|
||||||
|
|
||||||
@ -279,10 +284,10 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
public void testFindTenantAssetsByName() throws Exception {
|
public void testFindTenantAssetsByName() throws Exception {
|
||||||
String title1 = "Asset title 1";
|
String title1 = "Asset title 1";
|
||||||
List<Asset> assetsTitle1 = new ArrayList<>();
|
List<Asset> assetsTitle1 = new ArrayList<>();
|
||||||
for (int i=0;i<143;i++) {
|
for (int i = 0; i < 143; i++) {
|
||||||
Asset asset = new Asset();
|
Asset asset = new Asset();
|
||||||
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
||||||
String name = title1+suffix;
|
String name = title1 + suffix;
|
||||||
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
||||||
asset.setName(name);
|
asset.setName(name);
|
||||||
asset.setType("default");
|
asset.setType("default");
|
||||||
@ -290,10 +295,10 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
}
|
}
|
||||||
String title2 = "Asset title 2";
|
String title2 = "Asset title 2";
|
||||||
List<Asset> assetsTitle2 = new ArrayList<>();
|
List<Asset> assetsTitle2 = new ArrayList<>();
|
||||||
for (int i=0;i<75;i++) {
|
for (int i = 0; i < 75; i++) {
|
||||||
Asset asset = new Asset();
|
Asset asset = new Asset();
|
||||||
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
||||||
String name = title2+suffix;
|
String name = title2 + suffix;
|
||||||
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
||||||
asset.setName(name);
|
asset.setName(name);
|
||||||
asset.setType("default");
|
asset.setType("default");
|
||||||
@ -305,7 +310,8 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
TextPageData<Asset> pageData = null;
|
TextPageData<Asset> pageData = null;
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/assets?",
|
pageData = doGetTypedWithPageLink("/api/tenant/assets?",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink);
|
||||||
loadedAssetsTitle1.addAll(pageData.getData());
|
loadedAssetsTitle1.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
@ -321,7 +327,8 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
pageLink = new TextPageLink(4, title2);
|
pageLink = new TextPageLink(4, title2);
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/assets?",
|
pageData = doGetTypedWithPageLink("/api/tenant/assets?",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink);
|
||||||
loadedAssetsTitle2.addAll(pageData.getData());
|
loadedAssetsTitle2.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
@ -334,24 +341,26 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
Assert.assertEquals(assetsTitle2, loadedAssetsTitle2);
|
Assert.assertEquals(assetsTitle2, loadedAssetsTitle2);
|
||||||
|
|
||||||
for (Asset asset : loadedAssetsTitle1) {
|
for (Asset asset : loadedAssetsTitle1) {
|
||||||
doDelete("/api/asset/"+asset.getId().getId().toString())
|
doDelete("/api/asset/" + asset.getId().getId().toString())
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isOk());
|
||||||
}
|
}
|
||||||
|
|
||||||
pageLink = new TextPageLink(4, title1);
|
pageLink = new TextPageLink(4, title1);
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/assets?",
|
pageData = doGetTypedWithPageLink("/api/tenant/assets?",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink);
|
||||||
Assert.assertFalse(pageData.hasNext());
|
Assert.assertFalse(pageData.hasNext());
|
||||||
Assert.assertEquals(0, pageData.getData().size());
|
Assert.assertEquals(0, pageData.getData().size());
|
||||||
|
|
||||||
for (Asset asset : loadedAssetsTitle2) {
|
for (Asset asset : loadedAssetsTitle2) {
|
||||||
doDelete("/api/asset/"+asset.getId().getId().toString())
|
doDelete("/api/asset/" + asset.getId().getId().toString())
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isOk());
|
||||||
}
|
}
|
||||||
|
|
||||||
pageLink = new TextPageLink(4, title2);
|
pageLink = new TextPageLink(4, title2);
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/assets?",
|
pageData = doGetTypedWithPageLink("/api/tenant/assets?",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink);
|
||||||
Assert.assertFalse(pageData.hasNext());
|
Assert.assertFalse(pageData.hasNext());
|
||||||
Assert.assertEquals(0, pageData.getData().size());
|
Assert.assertEquals(0, pageData.getData().size());
|
||||||
}
|
}
|
||||||
@ -361,10 +370,10 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
String title1 = "Asset title 1";
|
String title1 = "Asset title 1";
|
||||||
String type1 = "typeA";
|
String type1 = "typeA";
|
||||||
List<Asset> assetsType1 = new ArrayList<>();
|
List<Asset> assetsType1 = new ArrayList<>();
|
||||||
for (int i=0;i<143;i++) {
|
for (int i = 0; i < 143; i++) {
|
||||||
Asset asset = new Asset();
|
Asset asset = new Asset();
|
||||||
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
||||||
String name = title1+suffix;
|
String name = title1 + suffix;
|
||||||
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
||||||
asset.setName(name);
|
asset.setName(name);
|
||||||
asset.setType(type1);
|
asset.setType(type1);
|
||||||
@ -373,10 +382,10 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
String title2 = "Asset title 2";
|
String title2 = "Asset title 2";
|
||||||
String type2 = "typeB";
|
String type2 = "typeB";
|
||||||
List<Asset> assetsType2 = new ArrayList<>();
|
List<Asset> assetsType2 = new ArrayList<>();
|
||||||
for (int i=0;i<75;i++) {
|
for (int i = 0; i < 75; i++) {
|
||||||
Asset asset = new Asset();
|
Asset asset = new Asset();
|
||||||
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
||||||
String name = title2+suffix;
|
String name = title2 + suffix;
|
||||||
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
||||||
asset.setName(name);
|
asset.setName(name);
|
||||||
asset.setType(type2);
|
asset.setType(type2);
|
||||||
@ -388,7 +397,8 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
TextPageData<Asset> pageData = null;
|
TextPageData<Asset> pageData = null;
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/assets?type={type}&",
|
pageData = doGetTypedWithPageLink("/api/tenant/assets?type={type}&",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink, type1);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink, type1);
|
||||||
loadedAssetsType1.addAll(pageData.getData());
|
loadedAssetsType1.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
@ -404,7 +414,8 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
pageLink = new TextPageLink(4);
|
pageLink = new TextPageLink(4);
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/assets?type={type}&",
|
pageData = doGetTypedWithPageLink("/api/tenant/assets?type={type}&",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink, type2);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink, type2);
|
||||||
loadedAssetsType2.addAll(pageData.getData());
|
loadedAssetsType2.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
@ -417,24 +428,26 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
Assert.assertEquals(assetsType2, loadedAssetsType2);
|
Assert.assertEquals(assetsType2, loadedAssetsType2);
|
||||||
|
|
||||||
for (Asset asset : loadedAssetsType1) {
|
for (Asset asset : loadedAssetsType1) {
|
||||||
doDelete("/api/asset/"+asset.getId().getId().toString())
|
doDelete("/api/asset/" + asset.getId().getId().toString())
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isOk());
|
||||||
}
|
}
|
||||||
|
|
||||||
pageLink = new TextPageLink(4);
|
pageLink = new TextPageLink(4);
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/assets?type={type}&",
|
pageData = doGetTypedWithPageLink("/api/tenant/assets?type={type}&",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink, type1);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink, type1);
|
||||||
Assert.assertFalse(pageData.hasNext());
|
Assert.assertFalse(pageData.hasNext());
|
||||||
Assert.assertEquals(0, pageData.getData().size());
|
Assert.assertEquals(0, pageData.getData().size());
|
||||||
|
|
||||||
for (Asset asset : loadedAssetsType2) {
|
for (Asset asset : loadedAssetsType2) {
|
||||||
doDelete("/api/asset/"+asset.getId().getId().toString())
|
doDelete("/api/asset/" + asset.getId().getId().toString())
|
||||||
.andExpect(status().isOk());
|
.andExpect(status().isOk());
|
||||||
}
|
}
|
||||||
|
|
||||||
pageLink = new TextPageLink(4);
|
pageLink = new TextPageLink(4);
|
||||||
pageData = doGetTypedWithPageLink("/api/tenant/assets?type={type}&",
|
pageData = doGetTypedWithPageLink("/api/tenant/assets?type={type}&",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink, type2);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink, type2);
|
||||||
Assert.assertFalse(pageData.hasNext());
|
Assert.assertFalse(pageData.hasNext());
|
||||||
Assert.assertEquals(0, pageData.getData().size());
|
Assert.assertEquals(0, pageData.getData().size());
|
||||||
}
|
}
|
||||||
@ -447,9 +460,9 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
CustomerId customerId = customer.getId();
|
CustomerId customerId = customer.getId();
|
||||||
|
|
||||||
List<Asset> assets = new ArrayList<>();
|
List<Asset> assets = new ArrayList<>();
|
||||||
for (int i=0;i<128;i++) {
|
for (int i = 0; i < 128; i++) {
|
||||||
Asset asset = new Asset();
|
Asset asset = new Asset();
|
||||||
asset.setName("Asset"+i);
|
asset.setName("Asset" + i);
|
||||||
asset.setType("default");
|
asset.setType("default");
|
||||||
asset = doPost("/api/asset", asset, Asset.class);
|
asset = doPost("/api/asset", asset, Asset.class);
|
||||||
assets.add(doPost("/api/customer/" + customerId.getId().toString()
|
assets.add(doPost("/api/customer/" + customerId.getId().toString()
|
||||||
@ -461,7 +474,8 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
TextPageData<Asset> pageData = null;
|
TextPageData<Asset> pageData = null;
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink);
|
||||||
loadedAssets.addAll(pageData.getData());
|
loadedAssets.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
@ -483,10 +497,10 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
|
|
||||||
String title1 = "Asset title 1";
|
String title1 = "Asset title 1";
|
||||||
List<Asset> assetsTitle1 = new ArrayList<>();
|
List<Asset> assetsTitle1 = new ArrayList<>();
|
||||||
for (int i=0;i<125;i++) {
|
for (int i = 0; i < 125; i++) {
|
||||||
Asset asset = new Asset();
|
Asset asset = new Asset();
|
||||||
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
||||||
String name = title1+suffix;
|
String name = title1 + suffix;
|
||||||
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
||||||
asset.setName(name);
|
asset.setName(name);
|
||||||
asset.setType("default");
|
asset.setType("default");
|
||||||
@ -496,10 +510,10 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
}
|
}
|
||||||
String title2 = "Asset title 2";
|
String title2 = "Asset title 2";
|
||||||
List<Asset> assetsTitle2 = new ArrayList<>();
|
List<Asset> assetsTitle2 = new ArrayList<>();
|
||||||
for (int i=0;i<143;i++) {
|
for (int i = 0; i < 143; i++) {
|
||||||
Asset asset = new Asset();
|
Asset asset = new Asset();
|
||||||
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
||||||
String name = title2+suffix;
|
String name = title2 + suffix;
|
||||||
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
||||||
asset.setName(name);
|
asset.setName(name);
|
||||||
asset.setType("default");
|
asset.setType("default");
|
||||||
@ -513,7 +527,8 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
TextPageData<Asset> pageData = null;
|
TextPageData<Asset> pageData = null;
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink);
|
||||||
loadedAssetsTitle1.addAll(pageData.getData());
|
loadedAssetsTitle1.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
@ -529,7 +544,8 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
pageLink = new TextPageLink(4, title2);
|
pageLink = new TextPageLink(4, title2);
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink);
|
||||||
loadedAssetsTitle2.addAll(pageData.getData());
|
loadedAssetsTitle2.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
@ -548,7 +564,8 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
|
|
||||||
pageLink = new TextPageLink(4, title1);
|
pageLink = new TextPageLink(4, title1);
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink);
|
||||||
Assert.assertFalse(pageData.hasNext());
|
Assert.assertFalse(pageData.hasNext());
|
||||||
Assert.assertEquals(0, pageData.getData().size());
|
Assert.assertEquals(0, pageData.getData().size());
|
||||||
|
|
||||||
@ -559,7 +576,8 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
|
|
||||||
pageLink = new TextPageLink(4, title2);
|
pageLink = new TextPageLink(4, title2);
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink);
|
||||||
Assert.assertFalse(pageData.hasNext());
|
Assert.assertFalse(pageData.hasNext());
|
||||||
Assert.assertEquals(0, pageData.getData().size());
|
Assert.assertEquals(0, pageData.getData().size());
|
||||||
}
|
}
|
||||||
@ -574,10 +592,10 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
String title1 = "Asset title 1";
|
String title1 = "Asset title 1";
|
||||||
String type1 = "typeC";
|
String type1 = "typeC";
|
||||||
List<Asset> assetsType1 = new ArrayList<>();
|
List<Asset> assetsType1 = new ArrayList<>();
|
||||||
for (int i=0;i<125;i++) {
|
for (int i = 0; i < 125; i++) {
|
||||||
Asset asset = new Asset();
|
Asset asset = new Asset();
|
||||||
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
||||||
String name = title1+suffix;
|
String name = title1 + suffix;
|
||||||
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
||||||
asset.setName(name);
|
asset.setName(name);
|
||||||
asset.setType(type1);
|
asset.setType(type1);
|
||||||
@ -588,10 +606,10 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
String title2 = "Asset title 2";
|
String title2 = "Asset title 2";
|
||||||
String type2 = "typeD";
|
String type2 = "typeD";
|
||||||
List<Asset> assetsType2 = new ArrayList<>();
|
List<Asset> assetsType2 = new ArrayList<>();
|
||||||
for (int i=0;i<143;i++) {
|
for (int i = 0; i < 143; i++) {
|
||||||
Asset asset = new Asset();
|
Asset asset = new Asset();
|
||||||
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
String suffix = RandomStringUtils.randomAlphanumeric(15);
|
||||||
String name = title2+suffix;
|
String name = title2 + suffix;
|
||||||
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
name = i % 2 == 0 ? name.toLowerCase() : name.toUpperCase();
|
||||||
asset.setName(name);
|
asset.setName(name);
|
||||||
asset.setType(type2);
|
asset.setType(type2);
|
||||||
@ -605,7 +623,8 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
TextPageData<Asset> pageData = null;
|
TextPageData<Asset> pageData = null;
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?type={type}&",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?type={type}&",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink, type1);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink, type1);
|
||||||
loadedAssetsType1.addAll(pageData.getData());
|
loadedAssetsType1.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
@ -621,7 +640,8 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
pageLink = new TextPageLink(4);
|
pageLink = new TextPageLink(4);
|
||||||
do {
|
do {
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?type={type}&",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?type={type}&",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink, type2);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink, type2);
|
||||||
loadedAssetsType2.addAll(pageData.getData());
|
loadedAssetsType2.addAll(pageData.getData());
|
||||||
if (pageData.hasNext()) {
|
if (pageData.hasNext()) {
|
||||||
pageLink = pageData.getNextPageLink();
|
pageLink = pageData.getNextPageLink();
|
||||||
@ -640,7 +660,8 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
|
|
||||||
pageLink = new TextPageLink(4);
|
pageLink = new TextPageLink(4);
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?type={type}&",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?type={type}&",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink, type1);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink, type1);
|
||||||
Assert.assertFalse(pageData.hasNext());
|
Assert.assertFalse(pageData.hasNext());
|
||||||
Assert.assertEquals(0, pageData.getData().size());
|
Assert.assertEquals(0, pageData.getData().size());
|
||||||
|
|
||||||
@ -651,7 +672,8 @@ public abstract class BaseAssetControllerTest extends AbstractControllerTest {
|
|||||||
|
|
||||||
pageLink = new TextPageLink(4);
|
pageLink = new TextPageLink(4);
|
||||||
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?type={type}&",
|
pageData = doGetTypedWithPageLink("/api/customer/" + customerId.getId().toString() + "/assets?type={type}&",
|
||||||
new TypeReference<TextPageData<Asset>>(){}, pageLink, type2);
|
new TypeReference<TextPageData<Asset>>() {
|
||||||
|
}, pageLink, type2);
|
||||||
Assert.assertFalse(pageData.hasNext());
|
Assert.assertFalse(pageData.hasNext());
|
||||||
Assert.assertEquals(0, pageData.getData().size());
|
Assert.assertEquals(0, pageData.getData().size());
|
||||||
}
|
}
|
||||||
|
|||||||
@ -426,7 +426,7 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes
|
|||||||
message.setPayload(strKvs.getBytes());
|
message.setPayload(strKvs.getBytes());
|
||||||
client.publish("v1/devices/me/telemetry", message);
|
client.publish("v1/devices/me/telemetry", message);
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
// client.disconnect();
|
client.disconnect();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void awaitConnected(MqttAsyncClient client, long ms) throws InterruptedException {
|
private void awaitConnected(MqttAsyncClient client, long ms) throws InterruptedException {
|
||||||
@ -463,13 +463,13 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes
|
|||||||
MqttConnectOptions options = new MqttConnectOptions();
|
MqttConnectOptions options = new MqttConnectOptions();
|
||||||
options.setUserName(accessToken);
|
options.setUserName(accessToken);
|
||||||
client.connect(options);
|
client.connect(options);
|
||||||
Thread.sleep(3000);
|
awaitConnected(client, TimeUnit.SECONDS.toMillis(30));
|
||||||
|
|
||||||
MqttMessage message = new MqttMessage();
|
MqttMessage message = new MqttMessage();
|
||||||
message.setPayload((stringKV).getBytes());
|
message.setPayload((stringKV).getBytes());
|
||||||
client.publish("v1/devices/me/attributes", message);
|
client.publish("v1/devices/me/attributes", message);
|
||||||
Thread.sleep(1000);
|
Thread.sleep(1000);
|
||||||
|
client.disconnect();
|
||||||
return new HashSet<>(doGetAsync("/api/plugins/telemetry/DEVICE/" + viewDeviceId + "/keys/attributes", List.class));
|
return new HashSet<>(doGetAsync("/api/plugins/telemetry/DEVICE/" + viewDeviceId + "/keys/attributes", List.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -16,10 +16,12 @@
|
|||||||
package org.thingsboard.server.controller;
|
package org.thingsboard.server.controller;
|
||||||
|
|
||||||
import org.cassandraunit.dataset.cql.ClassPathCQLDataSet;
|
import org.cassandraunit.dataset.cql.ClassPathCQLDataSet;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
import org.junit.ClassRule;
|
import org.junit.ClassRule;
|
||||||
import org.junit.extensions.cpsuite.ClasspathSuite;
|
import org.junit.extensions.cpsuite.ClasspathSuite;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.thingsboard.server.dao.CustomCassandraCQLUnit;
|
import org.thingsboard.server.dao.CustomCassandraCQLUnit;
|
||||||
|
import org.thingsboard.server.queue.memory.InMemoryStorage;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@ -37,4 +39,9 @@ public class ControllerNoSqlTestSuite {
|
|||||||
new ClassPathCQLDataSet("cassandra/system-data.cql", false, false),
|
new ClassPathCQLDataSet("cassandra/system-data.cql", false, false),
|
||||||
new ClassPathCQLDataSet("cassandra/system-test.cql", false, false)),
|
new ClassPathCQLDataSet("cassandra/system-test.cql", false, false)),
|
||||||
"cassandra-test.yaml", 30000l);
|
"cassandra-test.yaml", 30000l);
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void cleanupInMemStorage(){
|
||||||
|
InMemoryStorage.getInstance().cleanup();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,10 +15,12 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.controller;
|
package org.thingsboard.server.controller;
|
||||||
|
|
||||||
|
import org.junit.BeforeClass;
|
||||||
import org.junit.ClassRule;
|
import org.junit.ClassRule;
|
||||||
import org.junit.extensions.cpsuite.ClasspathSuite;
|
import org.junit.extensions.cpsuite.ClasspathSuite;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.thingsboard.server.dao.CustomSqlUnit;
|
import org.thingsboard.server.dao.CustomSqlUnit;
|
||||||
|
import org.thingsboard.server.queue.memory.InMemoryStorage;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@ -33,4 +35,9 @@ public class ControllerSqlTestSuite {
|
|||||||
Arrays.asList("sql/schema-ts-hsql.sql", "sql/schema-entities-hsql.sql", "sql/schema-entities-idx.sql", "sql/system-data.sql"),
|
Arrays.asList("sql/schema-ts-hsql.sql", "sql/schema-entities-hsql.sql", "sql/schema-entities-idx.sql", "sql/system-data.sql"),
|
||||||
"sql/drop-all-tables.sql",
|
"sql/drop-all-tables.sql",
|
||||||
"sql-test.properties");
|
"sql-test.properties");
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void cleanupInMemStorage(){
|
||||||
|
InMemoryStorage.getInstance().cleanup();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,10 +16,12 @@
|
|||||||
package org.thingsboard.server.mqtt;
|
package org.thingsboard.server.mqtt;
|
||||||
|
|
||||||
import org.cassandraunit.dataset.cql.ClassPathCQLDataSet;
|
import org.cassandraunit.dataset.cql.ClassPathCQLDataSet;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
import org.junit.ClassRule;
|
import org.junit.ClassRule;
|
||||||
import org.junit.extensions.cpsuite.ClasspathSuite;
|
import org.junit.extensions.cpsuite.ClasspathSuite;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.thingsboard.server.dao.CustomCassandraCQLUnit;
|
import org.thingsboard.server.dao.CustomCassandraCQLUnit;
|
||||||
|
import org.thingsboard.server.queue.memory.InMemoryStorage;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@ -36,4 +38,9 @@ public class MqttNoSqlTestSuite {
|
|||||||
new ClassPathCQLDataSet("cassandra/schema-entities.cql", false, false),
|
new ClassPathCQLDataSet("cassandra/schema-entities.cql", false, false),
|
||||||
new ClassPathCQLDataSet("cassandra/system-data.cql", false, false)),
|
new ClassPathCQLDataSet("cassandra/system-data.cql", false, false)),
|
||||||
"cassandra-test.yaml", 30000l);
|
"cassandra-test.yaml", 30000l);
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void cleanupInMemStorage(){
|
||||||
|
InMemoryStorage.getInstance().cleanup();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,10 +15,12 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.mqtt;
|
package org.thingsboard.server.mqtt;
|
||||||
|
|
||||||
|
import org.junit.BeforeClass;
|
||||||
import org.junit.ClassRule;
|
import org.junit.ClassRule;
|
||||||
import org.junit.extensions.cpsuite.ClasspathSuite;
|
import org.junit.extensions.cpsuite.ClasspathSuite;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.thingsboard.server.dao.CustomSqlUnit;
|
import org.thingsboard.server.dao.CustomSqlUnit;
|
||||||
|
import org.thingsboard.server.queue.memory.InMemoryStorage;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@ -32,4 +34,9 @@ public class MqttSqlTestSuite {
|
|||||||
Arrays.asList("sql/schema-ts-hsql.sql", "sql/schema-entities-hsql.sql", "sql/system-data.sql"),
|
Arrays.asList("sql/schema-ts-hsql.sql", "sql/schema-entities-hsql.sql", "sql/system-data.sql"),
|
||||||
"sql/drop-all-tables.sql",
|
"sql/drop-all-tables.sql",
|
||||||
"sql-test.properties");
|
"sql-test.properties");
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void cleanupInMemStorage(){
|
||||||
|
InMemoryStorage.getInstance().cleanup();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,11 +16,13 @@
|
|||||||
package org.thingsboard.server.rules;
|
package org.thingsboard.server.rules;
|
||||||
|
|
||||||
import org.cassandraunit.dataset.cql.ClassPathCQLDataSet;
|
import org.cassandraunit.dataset.cql.ClassPathCQLDataSet;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
import org.junit.ClassRule;
|
import org.junit.ClassRule;
|
||||||
import org.junit.extensions.cpsuite.ClasspathSuite;
|
import org.junit.extensions.cpsuite.ClasspathSuite;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.thingsboard.server.dao.CustomCassandraCQLUnit;
|
import org.thingsboard.server.dao.CustomCassandraCQLUnit;
|
||||||
import org.thingsboard.server.dao.CustomSqlUnit;
|
import org.thingsboard.server.dao.CustomSqlUnit;
|
||||||
|
import org.thingsboard.server.queue.memory.InMemoryStorage;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@ -40,4 +42,9 @@ public class RuleEngineNoSqlTestSuite {
|
|||||||
new ClassPathCQLDataSet("cassandra/system-data.cql", false, false)),
|
new ClassPathCQLDataSet("cassandra/system-data.cql", false, false)),
|
||||||
"cassandra-test.yaml", 30000l);
|
"cassandra-test.yaml", 30000l);
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void cleanupInMemStorage(){
|
||||||
|
InMemoryStorage.getInstance().cleanup();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,10 +15,12 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.rules;
|
package org.thingsboard.server.rules;
|
||||||
|
|
||||||
|
import org.junit.BeforeClass;
|
||||||
import org.junit.ClassRule;
|
import org.junit.ClassRule;
|
||||||
import org.junit.extensions.cpsuite.ClasspathSuite;
|
import org.junit.extensions.cpsuite.ClasspathSuite;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.thingsboard.server.dao.CustomSqlUnit;
|
import org.thingsboard.server.dao.CustomSqlUnit;
|
||||||
|
import org.thingsboard.server.queue.memory.InMemoryStorage;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@ -33,4 +35,9 @@ public class RuleEngineSqlTestSuite {
|
|||||||
Arrays.asList("sql/schema-ts-hsql.sql", "sql/schema-entities-hsql.sql", "sql/system-data.sql"),
|
Arrays.asList("sql/schema-ts-hsql.sql", "sql/schema-entities-hsql.sql", "sql/system-data.sql"),
|
||||||
"sql/drop-all-tables.sql",
|
"sql/drop-all-tables.sql",
|
||||||
"sql-test.properties");
|
"sql-test.properties");
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void cleanupInMemStorage(){
|
||||||
|
InMemoryStorage.getInstance().cleanup();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,10 +16,12 @@
|
|||||||
package org.thingsboard.server.system;
|
package org.thingsboard.server.system;
|
||||||
|
|
||||||
import org.cassandraunit.dataset.cql.ClassPathCQLDataSet;
|
import org.cassandraunit.dataset.cql.ClassPathCQLDataSet;
|
||||||
|
import org.junit.BeforeClass;
|
||||||
import org.junit.ClassRule;
|
import org.junit.ClassRule;
|
||||||
import org.junit.extensions.cpsuite.ClasspathSuite;
|
import org.junit.extensions.cpsuite.ClasspathSuite;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.thingsboard.server.dao.CustomCassandraCQLUnit;
|
import org.thingsboard.server.dao.CustomCassandraCQLUnit;
|
||||||
|
import org.thingsboard.server.queue.memory.InMemoryStorage;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@ -38,4 +40,9 @@ public class SystemNoSqlTestSuite {
|
|||||||
new ClassPathCQLDataSet("cassandra/schema-entities.cql", false, false),
|
new ClassPathCQLDataSet("cassandra/schema-entities.cql", false, false),
|
||||||
new ClassPathCQLDataSet("cassandra/system-data.cql", false, false)),
|
new ClassPathCQLDataSet("cassandra/system-data.cql", false, false)),
|
||||||
"cassandra-test.yaml", 30000l);
|
"cassandra-test.yaml", 30000l);
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void cleanupInMemStorage(){
|
||||||
|
InMemoryStorage.getInstance().cleanup();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -15,10 +15,12 @@
|
|||||||
*/
|
*/
|
||||||
package org.thingsboard.server.system;
|
package org.thingsboard.server.system;
|
||||||
|
|
||||||
|
import org.junit.BeforeClass;
|
||||||
import org.junit.ClassRule;
|
import org.junit.ClassRule;
|
||||||
import org.junit.extensions.cpsuite.ClasspathSuite;
|
import org.junit.extensions.cpsuite.ClasspathSuite;
|
||||||
import org.junit.runner.RunWith;
|
import org.junit.runner.RunWith;
|
||||||
import org.thingsboard.server.dao.CustomSqlUnit;
|
import org.thingsboard.server.dao.CustomSqlUnit;
|
||||||
|
import org.thingsboard.server.queue.memory.InMemoryStorage;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@ -35,4 +37,9 @@ public class SystemSqlTestSuite {
|
|||||||
"sql/drop-all-tables.sql",
|
"sql/drop-all-tables.sql",
|
||||||
"sql-test.properties");
|
"sql-test.properties");
|
||||||
|
|
||||||
|
@BeforeClass
|
||||||
|
public static void cleanupInMemStorage(){
|
||||||
|
InMemoryStorage.getInstance().cleanup();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,11 +30,9 @@ import java.util.concurrent.TimeUnit;
|
|||||||
public final class InMemoryStorage {
|
public final class InMemoryStorage {
|
||||||
private static InMemoryStorage instance;
|
private static InMemoryStorage instance;
|
||||||
private final ConcurrentHashMap<String, BlockingQueue<TbQueueMsg>> storage;
|
private final ConcurrentHashMap<String, BlockingQueue<TbQueueMsg>> storage;
|
||||||
private volatile boolean stopped;
|
|
||||||
|
|
||||||
private InMemoryStorage() {
|
private InMemoryStorage() {
|
||||||
storage = new ConcurrentHashMap<>();
|
storage = new ConcurrentHashMap<>();
|
||||||
stopped = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static InMemoryStorage getInstance() {
|
public static InMemoryStorage getInstance() {
|
||||||
@ -52,9 +50,8 @@ public final class InMemoryStorage {
|
|||||||
return storage.computeIfAbsent(topic, (t) -> new LinkedBlockingQueue<>()).add(msg);
|
return storage.computeIfAbsent(topic, (t) -> new LinkedBlockingQueue<>()).add(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
public <T extends TbQueueMsg> List<T> get(String topic, long durationInMillis) {
|
public <T extends TbQueueMsg> List<T> get(String topic, long durationInMillis) throws InterruptedException {
|
||||||
if (storage.containsKey(topic)) {
|
if (storage.containsKey(topic)) {
|
||||||
try {
|
|
||||||
List<T> entities;
|
List<T> entities;
|
||||||
T first = (T) storage.get(topic).poll(durationInMillis, TimeUnit.MILLISECONDS);
|
T first = (T) storage.get(topic).poll(durationInMillis, TimeUnit.MILLISECONDS);
|
||||||
if (first != null) {
|
if (first != null) {
|
||||||
@ -69,16 +66,15 @@ public final class InMemoryStorage {
|
|||||||
entities = Collections.emptyList();
|
entities = Collections.emptyList();
|
||||||
}
|
}
|
||||||
return entities;
|
return entities;
|
||||||
} catch (InterruptedException e) {
|
|
||||||
if (!stopped) {
|
|
||||||
log.warn("Queue was interrupted", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void stop() {
|
/**
|
||||||
stopped = true;
|
* Used primarily for testing.
|
||||||
|
*/
|
||||||
|
public void cleanup() {
|
||||||
|
storage.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -66,7 +66,16 @@ public class InMemoryTbQueueConsumer<T extends TbQueueMsg> implements TbQueueCon
|
|||||||
if (subscribed) {
|
if (subscribed) {
|
||||||
List<T> messages = partitions
|
List<T> messages = partitions
|
||||||
.stream()
|
.stream()
|
||||||
.map(tpi -> storage.get(tpi.getFullTopicName(), durationInMillis))
|
.map(tpi -> {
|
||||||
|
try {
|
||||||
|
return storage.get(tpi.getFullTopicName(), durationInMillis);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
if (!stopped) {
|
||||||
|
log.error("Queue was interrupted.", e);
|
||||||
|
}
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
})
|
||||||
.flatMap(List::stream)
|
.flatMap(List::stream)
|
||||||
.map(msg -> (T) msg).collect(Collectors.toList());
|
.map(msg -> (T) msg).collect(Collectors.toList());
|
||||||
if (messages.size() > 0) {
|
if (messages.size() > 0) {
|
||||||
|
|||||||
@ -54,7 +54,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.cassandra</groupId>
|
<groupId>org.apache.cassandra</groupId>
|
||||||
<artifactId>cassandra-all</artifactId>
|
<artifactId>cassandra-all</artifactId>
|
||||||
<version>3.11.4</version>
|
<version>3.11.6</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.datastax.cassandra</groupId>
|
<groupId>com.datastax.cassandra</groupId>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user