Fixed alarm details on alarm clear
This commit is contained in:
		
							parent
							
								
									f1be847bfb
								
							
						
					
					
						commit
						8311017b92
					
				@ -249,15 +249,17 @@ public class ThingsboardInstallService {
 | 
			
		||||
                        case "3.4.4":
 | 
			
		||||
                            log.info("Upgrading ThingsBoard from version 3.4.4 to 3.5.0 ...");
 | 
			
		||||
                            databaseEntitiesUpgradeService.upgradeDatabase("3.4.4");
 | 
			
		||||
                            entityDatabaseSchemaService.createOrUpdateViewsAndFunctions();
 | 
			
		||||
                            entityDatabaseSchemaService.createOrUpdateDeviceInfoView(persistToTelemetry);
 | 
			
		||||
                            log.info("Updating system data...");
 | 
			
		||||
                            systemDataLoaderService.updateSystemWidgets();
 | 
			
		||||
                            if (!getEnv("SKIP_DEFAULT_NOTIFICATION_CONFIGS_CREATION", false)) {
 | 
			
		||||
                                systemDataLoaderService.createDefaultNotificationConfigs();
 | 
			
		||||
                            } else {
 | 
			
		||||
                                log.info("Skipping default notification configs creation");
 | 
			
		||||
                            }
 | 
			
		||||
                        case "3.5.0":
 | 
			
		||||
                            log.info("Upgrading ThingsBoard from version 3.5.0 to 3.5.1 ...");
 | 
			
		||||
                            entityDatabaseSchemaService.createOrUpdateViewsAndFunctions();
 | 
			
		||||
                            entityDatabaseSchemaService.createOrUpdateDeviceInfoView(persistToTelemetry);
 | 
			
		||||
                            log.info("Updating system data...");
 | 
			
		||||
                            systemDataLoaderService.updateSystemWidgets();
 | 
			
		||||
                            installScripts.loadSystemLwm2mResources();
 | 
			
		||||
                            break;
 | 
			
		||||
                        //TODO update CacheCleanupService on the next version upgrade
 | 
			
		||||
 | 
			
		||||
@ -84,7 +84,8 @@ public class DefaultCacheCleanupService implements CacheCleanupService {
 | 
			
		||||
                break;
 | 
			
		||||
            case "3.4.4":
 | 
			
		||||
                log.info("Clearing cache to upgrade from version 3.4.4 to 3.5.0");
 | 
			
		||||
                clearCacheByName("deviceProfiles");
 | 
			
		||||
                clearAll();
 | 
			
		||||
                break;
 | 
			
		||||
            default:
 | 
			
		||||
                //Do nothing, since cache cleanup is optional.
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -348,7 +348,7 @@ public class JpaAlarmDao extends JpaAbstractDao<AlarmEntity, Alarm> implements A
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public AlarmApiCallResult clearAlarm(TenantId tenantId, AlarmId id, long clearTs, JsonNode details) {
 | 
			
		||||
        return toAlarmApiResult(alarmRepository.clearAlarm(tenantId.getId(), id.getId(), clearTs, getDetailsAsString(details)));
 | 
			
		||||
        return toAlarmApiResult(alarmRepository.clearAlarm(tenantId.getId(), id.getId(), clearTs, details != null ? getDetailsAsString(details) : null));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
 | 
			
		||||
@ -226,7 +226,11 @@ BEGIN
 | 
			
		||||
    END IF;
 | 
			
		||||
    IF NOT(existing.cleared) THEN
 | 
			
		||||
        cleared = TRUE;
 | 
			
		||||
        UPDATE alarm a SET cleared = true, clear_ts = a_ts, additional_info = a_details WHERE a.id = a_id AND a.tenant_id = t_id;
 | 
			
		||||
        IF a_details IS NULL THEN
 | 
			
		||||
            UPDATE alarm a SET cleared = true, clear_ts = a_ts WHERE a.id = a_id AND a.tenant_id = t_id;
 | 
			
		||||
        ELSE
 | 
			
		||||
            UPDATE alarm a SET cleared = true, clear_ts = a_ts, additional_info = a_details WHERE a.id = a_id AND a.tenant_id = t_id;
 | 
			
		||||
        END IF;
 | 
			
		||||
    END IF;
 | 
			
		||||
    SELECT * INTO result FROM alarm_info a WHERE a.id = a_id AND a.tenant_id = t_id;
 | 
			
		||||
    RETURN json_build_object('success', true, 'cleared', cleared, 'alarm', row_to_json(result))::text;
 | 
			
		||||
 | 
			
		||||
@ -202,7 +202,34 @@ public class JpaAlarmDaoTest extends AbstractJpaDaoTest {
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testClearAlarmProcedure() {
 | 
			
		||||
        UUID tenantId = UUID.randomUUID();
 | 
			
		||||
        ;
 | 
			
		||||
        UUID originator1Id = UUID.fromString("d4b68f41-3e96-11e7-a884-898080180d6b");
 | 
			
		||||
        UUID alarm1Id = UUID.fromString("d4b68f43-3e96-11e7-a884-898080180d6b");
 | 
			
		||||
        Alarm alarm = saveAlarm(alarm1Id, tenantId, originator1Id, "TEST_ALARM");
 | 
			
		||||
        long clearTs = System.currentTimeMillis();
 | 
			
		||||
        var details = JacksonUtil.newObjectNode().put("test", 123);
 | 
			
		||||
        AlarmApiCallResult result = alarmDao.clearAlarm(alarm.getTenantId(), alarm.getId(), clearTs, details);
 | 
			
		||||
        AlarmInfo afterSave = alarmDao.findAlarmInfoById(alarm.getTenantId(), alarm.getUuidId());
 | 
			
		||||
        assertNotNull(result);
 | 
			
		||||
        assertTrue(result.isSuccessful());
 | 
			
		||||
        assertTrue(result.isCleared());
 | 
			
		||||
        assertNotNull(result.getAlarm());
 | 
			
		||||
        assertEquals(afterSave, result.getAlarm());
 | 
			
		||||
        assertEquals(clearTs, result.getAlarm().getClearTs());
 | 
			
		||||
        assertTrue(result.getAlarm().isCleared());
 | 
			
		||||
        assertEquals(details, result.getAlarm().getDetails());
 | 
			
		||||
        result = alarmDao.clearAlarm(alarm.getTenantId(), alarm.getId(), clearTs + 1, JacksonUtil.newObjectNode());
 | 
			
		||||
        assertNotNull(result);
 | 
			
		||||
        assertNotNull(result.getAlarm());
 | 
			
		||||
        assertEquals(afterSave, result.getAlarm());
 | 
			
		||||
        assertTrue(result.isSuccessful());
 | 
			
		||||
        assertFalse(result.isCleared());
 | 
			
		||||
        assertEquals(clearTs, result.getAlarm().getClearTs());
 | 
			
		||||
        assertTrue(result.getAlarm().isCleared());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Test
 | 
			
		||||
    public void testClearAlarmWithoutDetailsProcedure() {
 | 
			
		||||
        UUID tenantId = UUID.randomUUID();
 | 
			
		||||
        UUID originator1Id = UUID.fromString("d4b68f41-3e96-11e7-a884-898080180d6b");
 | 
			
		||||
        UUID alarm1Id = UUID.fromString("d4b68f43-3e96-11e7-a884-898080180d6b");
 | 
			
		||||
        Alarm alarm = saveAlarm(alarm1Id, tenantId, originator1Id, "TEST_ALARM");
 | 
			
		||||
@ -216,6 +243,7 @@ public class JpaAlarmDaoTest extends AbstractJpaDaoTest {
 | 
			
		||||
        assertEquals(afterSave, result.getAlarm());
 | 
			
		||||
        assertEquals(clearTs, result.getAlarm().getClearTs());
 | 
			
		||||
        assertTrue(result.getAlarm().isCleared());
 | 
			
		||||
        assertEquals(alarm.getDetails(), result.getAlarm().getDetails());
 | 
			
		||||
        result = alarmDao.clearAlarm(alarm.getTenantId(), alarm.getId(), clearTs + 1, JacksonUtil.newObjectNode());
 | 
			
		||||
        assertNotNull(result);
 | 
			
		||||
        assertNotNull(result.getAlarm());
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user