Merge pull request #9582 from volodymyr-babak/edge-test-add-logging-of-failed-msgs
Added logging in case edge test failed on initial check
This commit is contained in:
		
						commit
						a8947eae9e
					
				@ -17,8 +17,10 @@ package org.thingsboard.server.edge;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import com.fasterxml.jackson.core.type.TypeReference;
 | 
					import com.fasterxml.jackson.core.type.TypeReference;
 | 
				
			||||||
import com.fasterxml.jackson.databind.JsonNode;
 | 
					import com.fasterxml.jackson.databind.JsonNode;
 | 
				
			||||||
 | 
					import com.google.protobuf.AbstractMessage;
 | 
				
			||||||
import com.google.protobuf.InvalidProtocolBufferException;
 | 
					import com.google.protobuf.InvalidProtocolBufferException;
 | 
				
			||||||
import com.google.protobuf.MessageLite;
 | 
					import com.google.protobuf.MessageLite;
 | 
				
			||||||
 | 
					import lombok.extern.slf4j.Slf4j;
 | 
				
			||||||
import org.junit.After;
 | 
					import org.junit.After;
 | 
				
			||||||
import org.junit.Assert;
 | 
					import org.junit.Assert;
 | 
				
			||||||
import org.junit.Before;
 | 
					import org.junit.Before;
 | 
				
			||||||
@ -104,6 +106,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
 | 
				
			|||||||
        "queue.rule-engine.stats.enabled=false",
 | 
					        "queue.rule-engine.stats.enabled=false",
 | 
				
			||||||
        "edges.storage.sleep_between_batches=1000"
 | 
					        "edges.storage.sleep_between_batches=1000"
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					@Slf4j
 | 
				
			||||||
abstract public class AbstractEdgeTest extends AbstractControllerTest {
 | 
					abstract public class AbstractEdgeTest extends AbstractControllerTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static final String THERMOSTAT_DEVICE_PROFILE_NAME = "Thermostat";
 | 
					    private static final String THERMOSTAT_DEVICE_PROFILE_NAME = "Thermostat";
 | 
				
			||||||
@ -223,53 +226,77 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
 | 
				
			|||||||
        validateEdgeConfiguration();
 | 
					        validateEdgeConfiguration();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 1 message from queue fetcher
 | 
					        // 1 message from queue fetcher
 | 
				
			||||||
 | 
					        validateMsgsCnt(QueueUpdateMsg.class, 1);
 | 
				
			||||||
        validateQueues();
 | 
					        validateQueues();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 1 from rule chain fetcher
 | 
					        // 1 from rule chain fetcher
 | 
				
			||||||
 | 
					        validateMsgsCnt(RuleChainUpdateMsg.class, 1);
 | 
				
			||||||
        UUID ruleChainUUID = validateRuleChains();
 | 
					        UUID ruleChainUUID = validateRuleChains();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 1 from request message
 | 
					        // 1 from request message
 | 
				
			||||||
 | 
					        validateMsgsCnt(RuleChainMetadataUpdateMsg.class, 1);
 | 
				
			||||||
        validateRuleChainMetadataUpdates(ruleChainUUID);
 | 
					        validateRuleChainMetadataUpdates(ruleChainUUID);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 4 messages
 | 
					        // 4 messages
 | 
				
			||||||
        // - 2 from fetcher - system level ('mail', 'mailTemplates')
 | 
					        // - 2 from fetcher - system level ('mail', 'mailTemplates')
 | 
				
			||||||
        // - 2 from fetcher - admin level ('mail', 'mailTemplates')
 | 
					        // - 2 from fetcher - admin level ('mail', 'mailTemplates')
 | 
				
			||||||
 | 
					        validateMsgsCnt(AdminSettingsUpdateMsg.class, 4);
 | 
				
			||||||
        validateAdminSettings();
 | 
					        validateAdminSettings();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 4 messages
 | 
					        // 4 messages
 | 
				
			||||||
        // - 1 from default profile fetcher
 | 
					        // - 1 from default profile fetcher
 | 
				
			||||||
        // - 2 from device profile fetcher (default and thermostat)
 | 
					        // - 2 from device profile fetcher (default and thermostat)
 | 
				
			||||||
        // - 1 from device fetcher
 | 
					        // - 1 from device fetcher
 | 
				
			||||||
 | 
					        validateMsgsCnt(DeviceProfileUpdateMsg.class, 4);
 | 
				
			||||||
        validateDeviceProfiles();
 | 
					        validateDeviceProfiles();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 3 messages
 | 
					        // 3 messages
 | 
				
			||||||
        // - 1 from default profile fetcher
 | 
					        // - 1 from default profile fetcher
 | 
				
			||||||
        // - 1 message from asset profile fetcher
 | 
					        // - 1 message from asset profile fetcher
 | 
				
			||||||
        // - 1 message from asset fetcher
 | 
					        // - 1 message from asset fetcher
 | 
				
			||||||
 | 
					        validateMsgsCnt(AssetProfileUpdateMsg.class, 3);
 | 
				
			||||||
        validateAssetProfiles();
 | 
					        validateAssetProfiles();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 1 from device fetcher
 | 
					        // 1 from device fetcher
 | 
				
			||||||
 | 
					        validateMsgsCnt(DeviceUpdateMsg.class, 1);
 | 
				
			||||||
        validateDevices();
 | 
					        validateDevices();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 1 from asset fetcher
 | 
					        // 1 from asset fetcher
 | 
				
			||||||
 | 
					        validateMsgsCnt(AssetUpdateMsg.class, 1);
 | 
				
			||||||
        validateAssets();
 | 
					        validateAssets();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 1 message from public customer fetcher
 | 
					        // 1 message from public customer fetcher
 | 
				
			||||||
 | 
					        validateMsgsCnt(CustomerUpdateMsg.class, 1);
 | 
				
			||||||
        validatePublicCustomer();
 | 
					        validatePublicCustomer();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 1 message from user fetcher
 | 
					        // 1 message from user fetcher
 | 
				
			||||||
 | 
					        validateMsgsCnt(UserUpdateMsg.class, 1);
 | 
				
			||||||
        validateUsers();
 | 
					        validateUsers();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 1 from tenant fetcher
 | 
					        // 1 from tenant fetcher
 | 
				
			||||||
 | 
					        validateMsgsCnt(TenantUpdateMsg.class, 1);
 | 
				
			||||||
        validateTenant();
 | 
					        validateTenant();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 1 from tenant profile fetcher
 | 
					        // 1 from tenant profile fetcher
 | 
				
			||||||
 | 
					        validateMsgsCnt(TenantProfileUpdateMsg.class, 1);
 | 
				
			||||||
        validateTenantProfile();
 | 
					        validateTenantProfile();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 1 message sync completed
 | 
					        // 1 message sync completed
 | 
				
			||||||
 | 
					        validateMsgsCnt(SyncCompletedMsg.class, 1);
 | 
				
			||||||
        validateSyncCompleted();
 | 
					        validateSyncCompleted();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private <T extends AbstractMessage> void validateMsgsCnt(Class<T> clazz, int expectedMsgCnt) {
 | 
				
			||||||
 | 
					        List<T> downlinkMsgsByType = edgeImitator.findAllMessagesByType(clazz);
 | 
				
			||||||
 | 
					        if (downlinkMsgsByType.size() != expectedMsgCnt) {
 | 
				
			||||||
 | 
					            List<AbstractMessage> downlinkMsgs = edgeImitator.getDownlinkMsgs();
 | 
				
			||||||
 | 
					            for (AbstractMessage downlinkMsg : downlinkMsgs) {
 | 
				
			||||||
 | 
					                log.error("{}\n{}", downlinkMsg.getClass(), downlinkMsg);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            Assert.fail("Unexpected message count for " + clazz + "! Expected: " + expectedMsgCnt + ", but found: " + downlinkMsgsByType.size());
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void validateEdgeConfiguration() throws Exception {
 | 
					    private void validateEdgeConfiguration() throws Exception {
 | 
				
			||||||
        EdgeConfiguration configuration = edgeImitator.getConfiguration();
 | 
					        EdgeConfiguration configuration = edgeImitator.getConfiguration();
 | 
				
			||||||
        Assert.assertNotNull(configuration);
 | 
					        Assert.assertNotNull(configuration);
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user