added base tests for queue
This commit is contained in:
parent
4512185cad
commit
fd53d3aeb4
@ -142,6 +142,10 @@ public class TenantServiceImpl extends AbstractEntityService implements TenantSe
|
|||||||
if (tenant.getId() == null) {
|
if (tenant.getId() == null) {
|
||||||
deviceProfileService.createDefaultDeviceProfile(savedTenant.getId());
|
deviceProfileService.createDefaultDeviceProfile(savedTenant.getId());
|
||||||
apiUsageStateService.createDefaultApiUsageState(savedTenant.getId(), null);
|
apiUsageStateService.createDefaultApiUsageState(savedTenant.getId(), null);
|
||||||
|
TenantProfile tenantProfile = tenantProfileService.findTenantProfileById(TenantId.SYS_TENANT_ID, savedTenant.getTenantProfileId());
|
||||||
|
if(tenantProfile.isIsolatedTbRuleEngine()) {
|
||||||
|
queueService.createDefaultMainQueue(tenantProfile, savedTenant.getTenantId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return savedTenant;
|
return savedTenant;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -57,6 +57,7 @@ import org.thingsboard.server.dao.entity.EntityService;
|
|||||||
import org.thingsboard.server.dao.entityview.EntityViewService;
|
import org.thingsboard.server.dao.entityview.EntityViewService;
|
||||||
import org.thingsboard.server.dao.event.EventService;
|
import org.thingsboard.server.dao.event.EventService;
|
||||||
import org.thingsboard.server.dao.ota.OtaPackageService;
|
import org.thingsboard.server.dao.ota.OtaPackageService;
|
||||||
|
import org.thingsboard.server.dao.queue.QueueService;
|
||||||
import org.thingsboard.server.dao.relation.RelationService;
|
import org.thingsboard.server.dao.relation.RelationService;
|
||||||
import org.thingsboard.server.dao.resource.ResourceService;
|
import org.thingsboard.server.dao.resource.ResourceService;
|
||||||
import org.thingsboard.server.dao.rule.RuleChainService;
|
import org.thingsboard.server.dao.rule.RuleChainService;
|
||||||
@ -163,6 +164,9 @@ public abstract class AbstractServiceTest {
|
|||||||
@Autowired
|
@Autowired
|
||||||
protected OtaPackageService otaPackageService;
|
protected OtaPackageService otaPackageService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
protected QueueService queueService;
|
||||||
|
|
||||||
public class IdComparator<D extends HasId> implements Comparator<D> {
|
public class IdComparator<D extends HasId> implements Comparator<D> {
|
||||||
@Override
|
@Override
|
||||||
public int compare(D o1, D o2) {
|
public int compare(D o1, D o2) {
|
||||||
|
|||||||
@ -0,0 +1,491 @@
|
|||||||
|
/**
|
||||||
|
* Copyright © 2016-2022 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.dao.service;
|
||||||
|
|
||||||
|
import org.junit.After;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Before;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.thingsboard.server.common.data.Tenant;
|
||||||
|
import org.thingsboard.server.common.data.TenantProfile;
|
||||||
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
|
import org.thingsboard.server.common.data.id.TenantProfileId;
|
||||||
|
import org.thingsboard.server.common.data.page.PageData;
|
||||||
|
import org.thingsboard.server.common.data.page.PageLink;
|
||||||
|
import org.thingsboard.server.common.data.queue.ProcessingStrategy;
|
||||||
|
import org.thingsboard.server.common.data.queue.ProcessingStrategyType;
|
||||||
|
import org.thingsboard.server.common.data.queue.Queue;
|
||||||
|
import org.thingsboard.server.common.data.queue.SubmitStrategy;
|
||||||
|
import org.thingsboard.server.common.data.queue.SubmitStrategyType;
|
||||||
|
import org.thingsboard.server.dao.exception.DataValidationException;
|
||||||
|
import org.thingsboard.server.dao.tenant.TenantServiceImpl;
|
||||||
|
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class BaseQueueServiceTest extends AbstractServiceTest {
|
||||||
|
|
||||||
|
private IdComparator<Queue> idComparator = new IdComparator<>();
|
||||||
|
|
||||||
|
private TenantId tenantId;
|
||||||
|
private TenantProfileId tenantProfileId;
|
||||||
|
|
||||||
|
@Before
|
||||||
|
public void before() throws NoSuchFieldException, IllegalAccessException {
|
||||||
|
Field zkEnabled = TenantServiceImpl.class.getDeclaredField("zkEnabled");
|
||||||
|
zkEnabled.setAccessible(true);
|
||||||
|
zkEnabled.set(tenantService, Boolean.TRUE);
|
||||||
|
|
||||||
|
TenantProfile tenantProfile = new TenantProfile();
|
||||||
|
tenantProfile.setDefault(false);
|
||||||
|
tenantProfile.setName("Isolated TB Rule Engine");
|
||||||
|
tenantProfile.setDescription("Isolated TB Rule Engine tenant profile");
|
||||||
|
tenantProfile.setIsolatedTbCore(false);
|
||||||
|
tenantProfile.setIsolatedTbRuleEngine(true);
|
||||||
|
tenantProfile.setMaxNumberOfQueues(10);
|
||||||
|
tenantProfile.setMaxNumberOfPartitionsPerQueue(10);
|
||||||
|
|
||||||
|
TenantProfile savedTenantProfile = tenantProfileService.saveTenantProfile(TenantId.SYS_TENANT_ID, tenantProfile);
|
||||||
|
Assert.assertNotNull(savedTenantProfile);
|
||||||
|
tenantProfileId = savedTenantProfile.getId();
|
||||||
|
|
||||||
|
Tenant tenant = new Tenant();
|
||||||
|
tenant.setTitle("My tenant");
|
||||||
|
tenant.setTenantProfileId(tenantProfileId);
|
||||||
|
Tenant savedTenant = tenantService.saveTenant(tenant);
|
||||||
|
Assert.assertNotNull(savedTenant);
|
||||||
|
tenantId = savedTenant.getId();
|
||||||
|
}
|
||||||
|
|
||||||
|
@After
|
||||||
|
public void after() {
|
||||||
|
tenantService.deleteTenant(tenantId);
|
||||||
|
tenantProfileService.deleteTenantProfile(TenantId.SYS_TENANT_ID, tenantProfileId);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ProcessingStrategy createTestProcessingStrategy() {
|
||||||
|
ProcessingStrategy processingStrategy = new ProcessingStrategy();
|
||||||
|
processingStrategy.setType(ProcessingStrategyType.SKIP_ALL_FAILURES);
|
||||||
|
processingStrategy.setRetries(3);
|
||||||
|
processingStrategy.setFailurePercentage(0);
|
||||||
|
processingStrategy.setPauseBetweenRetries(3);
|
||||||
|
processingStrategy.setMaxPauseBetweenRetries(3);
|
||||||
|
return processingStrategy;
|
||||||
|
}
|
||||||
|
|
||||||
|
private SubmitStrategy createTestSubmitStrategy() {
|
||||||
|
SubmitStrategy submitStrategy = new SubmitStrategy();
|
||||||
|
submitStrategy.setType(SubmitStrategyType.BURST);
|
||||||
|
submitStrategy.setBatchSize(1000);
|
||||||
|
return submitStrategy;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testSaveQueue() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
Queue savedQueue = queueService.saveQueue(queue);
|
||||||
|
|
||||||
|
Assert.assertNotNull(savedQueue);
|
||||||
|
Assert.assertNotNull(savedQueue.getId());
|
||||||
|
Assert.assertTrue(savedQueue.getCreatedTime() > 0);
|
||||||
|
Assert.assertEquals(queue.getTenantId(), savedQueue.getTenantId());
|
||||||
|
Assert.assertEquals(queue.getName(), queue.getName());
|
||||||
|
|
||||||
|
savedQueue.setPollInterval(100);
|
||||||
|
|
||||||
|
queueService.saveQueue(savedQueue);
|
||||||
|
Queue foundQueue = queueService.findQueueById(tenantId, savedQueue.getId());
|
||||||
|
Assert.assertEquals(foundQueue.getPollInterval(), savedQueue.getPollInterval());
|
||||||
|
|
||||||
|
queueService.deleteQueue(tenantId, foundQueue.getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = DataValidationException.class)
|
||||||
|
public void testSaveQueueWithEmptyName() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
queueService.saveQueue(queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = DataValidationException.class)
|
||||||
|
public void testSaveQueueWithEmptyTopic() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
queueService.saveQueue(queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = DataValidationException.class)
|
||||||
|
public void testSaveQueueWithEmptyPoolInterval() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
queueService.saveQueue(queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = DataValidationException.class)
|
||||||
|
public void testSaveQueueWithEmptyPartitions() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
queueService.saveQueue(queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = DataValidationException.class)
|
||||||
|
public void testSaveQueueWithEmptyPackProcessingTimeout() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
queueService.saveQueue(queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = DataValidationException.class)
|
||||||
|
public void testSaveQueueWithEmptySubmitStrategy() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
queueService.saveQueue(queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = DataValidationException.class)
|
||||||
|
public void testSaveQueueWithEmptyProcessingStrategy() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queueService.saveQueue(queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = DataValidationException.class)
|
||||||
|
public void testSaveQueueWithEmptySubmitStrategyType() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.getSubmitStrategy().setType(null);
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
queueService.saveQueue(queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = DataValidationException.class)
|
||||||
|
public void testSaveQueueWithEmptySubmitStrategyBatchSize() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.getSubmitStrategy().setType(SubmitStrategyType.BATCH);
|
||||||
|
queue.getSubmitStrategy().setBatchSize(0);
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
queueService.saveQueue(queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = DataValidationException.class)
|
||||||
|
public void testSaveQueueWithEmptyProcessingStrategyType() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
queue.getProcessingStrategy().setType(null);
|
||||||
|
queueService.saveQueue(queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = DataValidationException.class)
|
||||||
|
public void testSaveQueueWithNegativeProcessingStrategyRetries() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
queue.getProcessingStrategy().setRetries(-1);
|
||||||
|
queueService.saveQueue(queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = DataValidationException.class)
|
||||||
|
public void testSaveQueueWithNegativeProcessingStrategyFailurePercentage() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
queue.getProcessingStrategy().setFailurePercentage(-1);
|
||||||
|
queueService.saveQueue(queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = DataValidationException.class)
|
||||||
|
public void testSaveQueueWithNegativeProcessingStrategyPauseBetweenRetries() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
queue.getProcessingStrategy().setPauseBetweenRetries(-1);
|
||||||
|
queueService.saveQueue(queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = DataValidationException.class)
|
||||||
|
public void testSaveQueueWithProcessingStrategyPauseBetweenRetriesBiggerThenMaxPauseBetweenRetries() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
queue.getProcessingStrategy().setPauseBetweenRetries(100);
|
||||||
|
queueService.saveQueue(queue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = DataValidationException.class)
|
||||||
|
public void testSaveQueueWithNotIsolatedTenant() {
|
||||||
|
Tenant tenant = new Tenant();
|
||||||
|
tenant.setTitle("Not isolated tenant");
|
||||||
|
Tenant savedTenant = tenantService.saveTenant(tenant);
|
||||||
|
Assert.assertNotNull(savedTenant);
|
||||||
|
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(savedTenant.getId());
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
try {
|
||||||
|
queueService.saveQueue(queue);
|
||||||
|
} finally {
|
||||||
|
tenantService.deleteTenant(savedTenant.getId());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(expected = DataValidationException.class)
|
||||||
|
public void testSaveQueueWithExceededLimitPerTenant() {
|
||||||
|
for (int i = 1; i <= 10; i++) {
|
||||||
|
//main queue created automatically
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test" + i);
|
||||||
|
queue.setTopic("tb_rule_engine.test" + i);
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
queueService.saveQueue(queue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateQueue() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
Queue savedQueue = queueService.saveQueue(queue);
|
||||||
|
|
||||||
|
Assert.assertNotNull(savedQueue);
|
||||||
|
|
||||||
|
queue.setPollInterval(1000);
|
||||||
|
|
||||||
|
queueService.saveQueue(savedQueue);
|
||||||
|
|
||||||
|
Queue foundQueue = queueService.findQueueById(tenantId, savedQueue.getId());
|
||||||
|
|
||||||
|
Assert.assertEquals(savedQueue, foundQueue);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFindQueueById() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
Queue savedQueue = queueService.saveQueue(queue);
|
||||||
|
Queue foundQueue = queueService.findQueueById(tenantId, savedQueue.getId());
|
||||||
|
Assert.assertNotNull(foundQueue);
|
||||||
|
Assert.assertEquals(savedQueue, foundQueue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testDeleteQueue() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
Queue savedQueue = queueService.saveQueue(queue);
|
||||||
|
Queue foundQueue = queueService.findQueueById(tenantId, savedQueue.getId());
|
||||||
|
Assert.assertNotNull(foundQueue);
|
||||||
|
queueService.deleteQueue(tenantId, savedQueue.getId());
|
||||||
|
foundQueue = queueService.findQueueById(tenantId, savedQueue.getId());
|
||||||
|
Assert.assertNull(foundQueue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFindQueueByTenantIdAndName() {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test");
|
||||||
|
queue.setTopic("tb_rule_engine.test");
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
Queue savedQueue = queueService.saveQueue(queue);
|
||||||
|
Queue foundQueue = queueService.findQueueByTenantIdAndName(tenantId, savedQueue.getName());
|
||||||
|
|
||||||
|
Assert.assertNotNull(foundQueue);
|
||||||
|
Assert.assertEquals(savedQueue, foundQueue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testFindQueuesByTenantId() {
|
||||||
|
List<Queue> queues = new ArrayList<>();
|
||||||
|
for (int i = 1; i < 10; i++) {
|
||||||
|
Queue queue = new Queue();
|
||||||
|
queue.setTenantId(tenantId);
|
||||||
|
queue.setName("Test" + i);
|
||||||
|
queue.setTopic("tb_rule_engine.test" + i);
|
||||||
|
queue.setPollInterval(25);
|
||||||
|
queue.setPartitions(1);
|
||||||
|
queue.setPackProcessingTimeout(2000);
|
||||||
|
queue.setSubmitStrategy(createTestSubmitStrategy());
|
||||||
|
queue.setProcessingStrategy(createTestProcessingStrategy());
|
||||||
|
|
||||||
|
queues.add(queueService.saveQueue(queue));
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Queue> loadedQueues = new ArrayList<>();
|
||||||
|
PageLink pageLink = new PageLink(3);
|
||||||
|
PageData<Queue> pageData = null;
|
||||||
|
do {
|
||||||
|
pageData = queueService.findQueuesByTenantId(tenantId, pageLink);
|
||||||
|
loadedQueues.addAll(pageData.getData());
|
||||||
|
if (pageData.hasNext()) {
|
||||||
|
pageLink = pageLink.nextPageLink();
|
||||||
|
}
|
||||||
|
} while (pageData.hasNext());
|
||||||
|
|
||||||
|
for (int i = 0; i < loadedQueues.size(); i++) {
|
||||||
|
Queue queue = loadedQueues.get(i);
|
||||||
|
if (queue.getName().equals("Main")) {
|
||||||
|
loadedQueues.remove(queue);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Collections.sort(queues, idComparator);
|
||||||
|
Collections.sort(loadedQueues, idComparator);
|
||||||
|
|
||||||
|
Assert.assertEquals(queues, loadedQueues);
|
||||||
|
|
||||||
|
queueService.deleteQueuesByTenantId(tenantId);
|
||||||
|
|
||||||
|
pageLink = new PageLink(33);
|
||||||
|
pageData = queueService.findQueuesByTenantId(tenantId, pageLink);
|
||||||
|
Assert.assertFalse(pageData.hasNext());
|
||||||
|
Assert.assertTrue(pageData.getData().isEmpty());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,23 @@
|
|||||||
|
/**
|
||||||
|
* Copyright © 2016-2022 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.dao.service.sql;
|
||||||
|
|
||||||
|
import org.thingsboard.server.dao.service.BaseQueueServiceTest;
|
||||||
|
import org.thingsboard.server.dao.service.DaoSqlTest;
|
||||||
|
|
||||||
|
@DaoSqlTest
|
||||||
|
public class QueueServiceSqlTest extends BaseQueueServiceTest {
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user