|
|
|
@ -21,11 +21,13 @@ import com.fasterxml.jackson.databind.node.ObjectNode; |
|
|
|
import org.junit.Before; |
|
|
|
import org.junit.Test; |
|
|
|
import org.junit.function.ThrowingRunnable; |
|
|
|
import org.mockito.MockedStatic; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.data.util.Pair; |
|
|
|
import org.springframework.test.context.TestPropertySource; |
|
|
|
import org.springframework.test.context.bean.override.mockito.MockitoSpyBean; |
|
|
|
import org.thingsboard.common.util.JacksonUtil; |
|
|
|
import org.thingsboard.common.util.SystemUtil; |
|
|
|
import org.thingsboard.server.cache.limits.RateLimitService; |
|
|
|
import org.thingsboard.server.common.data.AttributeScope; |
|
|
|
import org.thingsboard.server.common.data.Device; |
|
|
|
@ -108,6 +110,7 @@ import java.lang.reflect.Method; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.List; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.Optional; |
|
|
|
import java.util.Set; |
|
|
|
import java.util.UUID; |
|
|
|
import java.util.concurrent.Callable; |
|
|
|
@ -120,6 +123,7 @@ import static org.assertj.core.api.Assertions.assertThat; |
|
|
|
import static org.assertj.core.api.Assertions.offset; |
|
|
|
import static org.assertj.core.api.InstanceOfAssertFactories.type; |
|
|
|
import static org.awaitility.Awaitility.await; |
|
|
|
import static org.mockito.Mockito.mockStatic; |
|
|
|
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; |
|
|
|
import static org.thingsboard.server.common.data.notification.rule.trigger.config.AlarmAssignmentNotificationRuleTriggerConfig.Action.ASSIGNED; |
|
|
|
import static org.thingsboard.server.common.data.notification.rule.trigger.config.AlarmAssignmentNotificationRuleTriggerConfig.Action.UNASSIGNED; |
|
|
|
@ -796,9 +800,14 @@ public class NotificationRuleApiTest extends AbstractNotificationApiTest { |
|
|
|
createNotificationRule(triggerConfig, "Warning: ${resource} shortage", "${resource} shortage", createNotificationTarget(tenantAdminUserId).getId()); |
|
|
|
loginTenantAdmin(); |
|
|
|
|
|
|
|
Method method = DefaultSystemInfoService.class.getDeclaredMethod("saveCurrentMonolithSystemInfo"); |
|
|
|
method.setAccessible(true); |
|
|
|
method.invoke(systemInfoService); |
|
|
|
// Mock SystemUtil to return 15% memory usage (exceeds 1% threshold)
|
|
|
|
try (MockedStatic<SystemUtil> mockedSystemUtil = mockStatic(SystemUtil.class)) { |
|
|
|
mockedSystemUtil.when(SystemUtil::getMemoryUsage).thenReturn(Optional.of(15)); |
|
|
|
|
|
|
|
Method method = DefaultSystemInfoService.class.getDeclaredMethod("saveCurrentMonolithSystemInfo"); |
|
|
|
method.setAccessible(true); |
|
|
|
method.invoke(systemInfoService); |
|
|
|
} |
|
|
|
|
|
|
|
await().atMost(10, TimeUnit.SECONDS).until(() -> getMyNotifications(false, 100).size() == 1); |
|
|
|
Notification notification = getMyNotifications(false, 100).get(0); |
|
|
|
@ -853,9 +862,17 @@ public class NotificationRuleApiTest extends AbstractNotificationApiTest { |
|
|
|
NotificationRule rule = createNotificationRule(triggerConfig, "Warning: ${resource} shortage", "${resource} shortage", createNotificationTarget(tenantAdminUserId).getId()); |
|
|
|
loginTenantAdmin(); |
|
|
|
|
|
|
|
Method method = DefaultSystemInfoService.class.getDeclaredMethod("saveCurrentMonolithSystemInfo"); |
|
|
|
method.setAccessible(true); |
|
|
|
method.invoke(systemInfoService); |
|
|
|
// Mock SystemUtil to return 15% usages (not exceeds 100% threshold)
|
|
|
|
Method method; |
|
|
|
try (MockedStatic<SystemUtil> mockedSystemUtil = mockStatic(SystemUtil.class)) { |
|
|
|
mockedSystemUtil.when(SystemUtil::getMemoryUsage).thenReturn(Optional.of(15)); |
|
|
|
mockedSystemUtil.when(SystemUtil::getCpuUsage).thenReturn(Optional.of(15)); |
|
|
|
mockedSystemUtil.when(SystemUtil::getDiscSpaceUsage).thenReturn(Optional.of(15L)); |
|
|
|
|
|
|
|
method = DefaultSystemInfoService.class.getDeclaredMethod("saveCurrentMonolithSystemInfo"); |
|
|
|
method.setAccessible(true); |
|
|
|
method.invoke(systemInfoService); |
|
|
|
} |
|
|
|
|
|
|
|
TimeUnit.SECONDS.sleep(5); |
|
|
|
assertThat(getMyNotifications(false, 100)).size().isZero(); |
|
|
|
|