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:
Andrew Shvayka 2023-11-08 18:17:42 +02:00 committed by GitHub
commit a8947eae9e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -17,8 +17,10 @@ package org.thingsboard.server.edge;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.google.protobuf.AbstractMessage;
import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.MessageLite;
import lombok.extern.slf4j.Slf4j;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
@ -104,6 +106,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.
"queue.rule-engine.stats.enabled=false",
"edges.storage.sleep_between_batches=1000"
})
@Slf4j
abstract public class AbstractEdgeTest extends AbstractControllerTest {
private static final String THERMOSTAT_DEVICE_PROFILE_NAME = "Thermostat";
@ -223,53 +226,77 @@ abstract public class AbstractEdgeTest extends AbstractControllerTest {
validateEdgeConfiguration();
// 1 message from queue fetcher
validateMsgsCnt(QueueUpdateMsg.class, 1);
validateQueues();
// 1 from rule chain fetcher
validateMsgsCnt(RuleChainUpdateMsg.class, 1);
UUID ruleChainUUID = validateRuleChains();
// 1 from request message
validateMsgsCnt(RuleChainMetadataUpdateMsg.class, 1);
validateRuleChainMetadataUpdates(ruleChainUUID);
// 4 messages
// - 2 from fetcher - system level ('mail', 'mailTemplates')
// - 2 from fetcher - admin level ('mail', 'mailTemplates')
validateMsgsCnt(AdminSettingsUpdateMsg.class, 4);
validateAdminSettings();
// 4 messages
// - 1 from default profile fetcher
// - 2 from device profile fetcher (default and thermostat)
// - 1 from device fetcher
validateMsgsCnt(DeviceProfileUpdateMsg.class, 4);
validateDeviceProfiles();
// 3 messages
// - 1 from default profile fetcher
// - 1 message from asset profile fetcher
// - 1 message from asset fetcher
validateMsgsCnt(AssetProfileUpdateMsg.class, 3);
validateAssetProfiles();
// 1 from device fetcher
validateMsgsCnt(DeviceUpdateMsg.class, 1);
validateDevices();
// 1 from asset fetcher
validateMsgsCnt(AssetUpdateMsg.class, 1);
validateAssets();
// 1 message from public customer fetcher
validateMsgsCnt(CustomerUpdateMsg.class, 1);
validatePublicCustomer();
// 1 message from user fetcher
validateMsgsCnt(UserUpdateMsg.class, 1);
validateUsers();
// 1 from tenant fetcher
validateMsgsCnt(TenantUpdateMsg.class, 1);
validateTenant();
// 1 from tenant profile fetcher
validateMsgsCnt(TenantProfileUpdateMsg.class, 1);
validateTenantProfile();
// 1 message sync completed
validateMsgsCnt(SyncCompletedMsg.class, 1);
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 {
EdgeConfiguration configuration = edgeImitator.getConfiguration();
Assert.assertNotNull(configuration);