Added TenantProfileEdgeTest.testIsolatedTenantProfile
This commit is contained in:
		
							parent
							
								
									2d68bf4a52
								
							
						
					
					
						commit
						2c7e5ef5f8
					
				@ -18,11 +18,23 @@ package org.thingsboard.server.edge;
 | 
				
			|||||||
import com.google.protobuf.AbstractMessage;
 | 
					import com.google.protobuf.AbstractMessage;
 | 
				
			||||||
import org.junit.Assert;
 | 
					import org.junit.Assert;
 | 
				
			||||||
import org.junit.Test;
 | 
					import org.junit.Test;
 | 
				
			||||||
 | 
					import org.thingsboard.server.common.data.DataConstants;
 | 
				
			||||||
import org.thingsboard.server.common.data.TenantProfile;
 | 
					import org.thingsboard.server.common.data.TenantProfile;
 | 
				
			||||||
 | 
					import org.thingsboard.server.common.data.queue.ProcessingStrategy;
 | 
				
			||||||
 | 
					import org.thingsboard.server.common.data.queue.ProcessingStrategyType;
 | 
				
			||||||
 | 
					import org.thingsboard.server.common.data.queue.SubmitStrategy;
 | 
				
			||||||
 | 
					import org.thingsboard.server.common.data.queue.SubmitStrategyType;
 | 
				
			||||||
 | 
					import org.thingsboard.server.common.data.tenant.profile.TenantProfileQueueConfiguration;
 | 
				
			||||||
import org.thingsboard.server.dao.service.DaoSqlTest;
 | 
					import org.thingsboard.server.dao.service.DaoSqlTest;
 | 
				
			||||||
 | 
					import org.thingsboard.server.gen.edge.v1.QueueUpdateMsg;
 | 
				
			||||||
import org.thingsboard.server.gen.edge.v1.TenantProfileUpdateMsg;
 | 
					import org.thingsboard.server.gen.edge.v1.TenantProfileUpdateMsg;
 | 
				
			||||||
 | 
					import org.thingsboard.server.gen.edge.v1.TenantUpdateMsg;
 | 
				
			||||||
import org.thingsboard.server.gen.edge.v1.UpdateMsgType;
 | 
					import org.thingsboard.server.gen.edge.v1.UpdateMsgType;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static org.assertj.core.api.Assertions.assertThat;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@DaoSqlTest
 | 
					@DaoSqlTest
 | 
				
			||||||
public class TenantProfileEdgeTest extends AbstractEdgeTest {
 | 
					public class TenantProfileEdgeTest extends AbstractEdgeTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -51,4 +63,65 @@ public class TenantProfileEdgeTest extends AbstractEdgeTest {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        loginTenantAdmin();
 | 
					        loginTenantAdmin();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testIsolatedTenantProfile() throws Exception {
 | 
				
			||||||
 | 
					        loginSysAdmin();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        TenantProfile edgeTenantProfile = doGet("/api/tenantProfile/" + tenantProfileId.getId(), TenantProfile.class);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // set tenant profile isolated and add 2 queues - main and isolated
 | 
				
			||||||
 | 
					        edgeTenantProfile.setIsolatedTbRuleEngine(true);
 | 
				
			||||||
 | 
					        TenantProfileQueueConfiguration mainQueueConfiguration = createQueueConfig(DataConstants.MAIN_QUEUE_NAME, DataConstants.MAIN_QUEUE_TOPIC);
 | 
				
			||||||
 | 
					        TenantProfileQueueConfiguration isolatedQueueConfiguration = createQueueConfig("IsolatedHighPriority", "tb_rule_engine.isolated_hp");
 | 
				
			||||||
 | 
					        edgeTenantProfile.getProfileData().setQueueConfiguration(List.of(mainQueueConfiguration, isolatedQueueConfiguration));
 | 
				
			||||||
 | 
					        edgeImitator.expectMessageAmount(1);
 | 
				
			||||||
 | 
					        edgeTenantProfile = doPost("/api/tenantProfile", edgeTenantProfile, TenantProfile.class);
 | 
				
			||||||
 | 
					        Assert.assertTrue(edgeImitator.waitForMessages());
 | 
				
			||||||
 | 
					        AbstractMessage latestMessage = edgeImitator.getLatestMessage();
 | 
				
			||||||
 | 
					        Assert.assertTrue(latestMessage instanceof TenantProfileUpdateMsg);
 | 
				
			||||||
 | 
					        TenantProfileUpdateMsg tenantProfileUpdateMsg = (TenantProfileUpdateMsg) latestMessage;
 | 
				
			||||||
 | 
					        Assert.assertEquals(UpdateMsgType.ENTITY_UPDATED_RPC_MESSAGE, tenantProfileUpdateMsg.getMsgType());
 | 
				
			||||||
 | 
					        Assert.assertEquals(edgeTenantProfile.getUuidId().getMostSignificantBits(), tenantProfileUpdateMsg.getIdMSB());
 | 
				
			||||||
 | 
					        Assert.assertEquals(edgeTenantProfile.getUuidId().getLeastSignificantBits(), tenantProfileUpdateMsg.getIdLSB());
 | 
				
			||||||
 | 
					        Assert.assertEquals(edgeTenantProfile.getDescription(), tenantProfileUpdateMsg.getDescription());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        loginTenantAdmin();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        edgeImitator.expectMessageAmount(21);
 | 
				
			||||||
 | 
					        doPost("/api/edge/sync/" + edge.getId());
 | 
				
			||||||
 | 
					        assertThat(edgeImitator.waitForMessages()).as("await for messages after edge sync rest api call").isTrue();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        Assert.assertTrue(edgeImitator.getDownlinkMsgs().get(0) instanceof TenantUpdateMsg);
 | 
				
			||||||
 | 
					        Assert.assertTrue(edgeImitator.getDownlinkMsgs().get(1) instanceof TenantProfileUpdateMsg);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        List<QueueUpdateMsg> queueUpdateMsgs = edgeImitator.findAllMessagesByType(QueueUpdateMsg.class);
 | 
				
			||||||
 | 
					        Assert.assertEquals(2, queueUpdateMsgs.size());
 | 
				
			||||||
 | 
					        for (QueueUpdateMsg queueUpdateMsg : queueUpdateMsgs) {
 | 
				
			||||||
 | 
					            Assert.assertEquals(tenantId.getId().getMostSignificantBits(), queueUpdateMsg.getTenantIdMSB());
 | 
				
			||||||
 | 
					            Assert.assertEquals(tenantId.getId().getLeastSignificantBits(), queueUpdateMsg.getTenantIdLSB());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private TenantProfileQueueConfiguration createQueueConfig(String queueName, String queueTopic) {
 | 
				
			||||||
 | 
					        TenantProfileQueueConfiguration queueConfiguration = new TenantProfileQueueConfiguration();
 | 
				
			||||||
 | 
					        queueConfiguration.setName(queueName);
 | 
				
			||||||
 | 
					        queueConfiguration.setTopic(queueTopic);
 | 
				
			||||||
 | 
					        queueConfiguration.setPollInterval(25);
 | 
				
			||||||
 | 
					        queueConfiguration.setPartitions(10);
 | 
				
			||||||
 | 
					        queueConfiguration.setConsumerPerPartition(true);
 | 
				
			||||||
 | 
					        queueConfiguration.setPackProcessingTimeout(2000);
 | 
				
			||||||
 | 
					        SubmitStrategy mainQueueSubmitStrategy = new SubmitStrategy();
 | 
				
			||||||
 | 
					        mainQueueSubmitStrategy.setType(SubmitStrategyType.BURST);
 | 
				
			||||||
 | 
					        mainQueueSubmitStrategy.setBatchSize(1000);
 | 
				
			||||||
 | 
					        queueConfiguration.setSubmitStrategy(mainQueueSubmitStrategy);
 | 
				
			||||||
 | 
					        ProcessingStrategy mainQueueProcessingStrategy = new ProcessingStrategy();
 | 
				
			||||||
 | 
					        mainQueueProcessingStrategy.setType(ProcessingStrategyType.SKIP_ALL_FAILURES);
 | 
				
			||||||
 | 
					        mainQueueProcessingStrategy.setRetries(3);
 | 
				
			||||||
 | 
					        mainQueueProcessingStrategy.setFailurePercentage(0);
 | 
				
			||||||
 | 
					        mainQueueProcessingStrategy.setPauseBetweenRetries(3);
 | 
				
			||||||
 | 
					        mainQueueProcessingStrategy.setMaxPauseBetweenRetries(3);
 | 
				
			||||||
 | 
					        queueConfiguration.setProcessingStrategy(mainQueueProcessingStrategy);
 | 
				
			||||||
 | 
					        return queueConfiguration;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user