From 20c940d38b22ce78e5014eb046177efd36e44376 Mon Sep 17 00:00:00 2001 From: huangguojie2024 <503601315@qq.com> Date: Sat, 8 Feb 2025 23:55:36 +0800 Subject: [PATCH] Add and optimize ut cases for agent module. --- .../grpc/interceptor/TaskInterceptor.java | 4 +- .../manager/agent/AgentApplicationTest.java | 102 +++++++++++++ .../grpc/interceptor/TaskInterceptorTest.java | 138 ++++++++++++++++++ .../service/HostCheckServiceGrpcImplTest.java | 131 +++++++++++++++++ .../service/JobCacheServiceGrpcImplTest.java | 25 +++- .../agent/holder/SpringContextHolderTest.java | 24 +-- .../agent/metrics/MetricsCollectorTest.java | 62 ++++++++ .../monitoring/AgentHostMonitoringTest.java | 28 ++++ 8 files changed, 495 insertions(+), 19 deletions(-) create mode 100644 bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/AgentApplicationTest.java create mode 100644 bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/grpc/interceptor/TaskInterceptorTest.java create mode 100644 bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/grpc/service/HostCheckServiceGrpcImplTest.java create mode 100644 bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/metrics/MetricsCollectorTest.java diff --git a/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/grpc/interceptor/TaskInterceptor.java b/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/grpc/interceptor/TaskInterceptor.java index 99fdb709..c2550509 100644 --- a/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/grpc/interceptor/TaskInterceptor.java +++ b/bigtop-manager-agent/src/main/java/org/apache/bigtop/manager/agent/grpc/interceptor/TaskInterceptor.java @@ -88,7 +88,7 @@ public void onReady() { }; } - private void truncateLogFile(Long taskId) { + protected void truncateLogFile(Long taskId) { String filePath = ProjectPathUtils.getLogFilePath(taskId); File file = new File(filePath); if (file.exists()) { @@ -100,7 +100,7 @@ private void truncateLogFile(Long taskId) { } } - private Boolean isTaskRequest(Object obj) { + protected Boolean isTaskRequest(Object obj) { if (obj == null) { return false; } diff --git a/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/AgentApplicationTest.java b/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/AgentApplicationTest.java new file mode 100644 index 00000000..0d0eb16f --- /dev/null +++ b/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/AgentApplicationTest.java @@ -0,0 +1,102 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.bigtop.manager.agent; + +import org.apache.bigtop.manager.agent.monitoring.AgentHostMonitoring; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockedStatic; +import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.boot.SpringApplication; + +import io.micrometer.core.instrument.MeterRegistry; +import io.micrometer.core.instrument.MultiGauge; + +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.when; + +@ExtendWith(MockitoExtension.class) +public class AgentApplicationTest { + + @Mock + private MeterRegistry meterRegistry; + + @Mock + private MultiGauge diskMultiGauge; + + @Mock + private MultiGauge cpuMultiGauge; + + @Mock + private MultiGauge memMultiGauge; + + @Mock + private MultiGauge diskIOMultiGauge; + + @InjectMocks + private AgentApplication agentApplication; + + @Test + public void testDiskMultiGaugeBean() { + try (MockedStatic mockedStatic = mockStatic(AgentHostMonitoring.class)) { + when(AgentHostMonitoring.newDiskMultiGauge(meterRegistry)).thenReturn(diskMultiGauge); + MultiGauge result = agentApplication.diskMultiGauge(meterRegistry); + assertNotNull(result); + } + } + + @Test + public void testCPUMultiGaugeBean() { + try (MockedStatic mockedStatic = mockStatic(AgentHostMonitoring.class)) { + when(AgentHostMonitoring.newCPUMultiGauge(meterRegistry)).thenReturn(cpuMultiGauge); + MultiGauge result = agentApplication.cpuMultiGauge(meterRegistry); + assertNotNull(result); + } + } + + @Test + public void testMemMultiGaugeBean() { + try (MockedStatic mockedStatic = mockStatic(AgentHostMonitoring.class)) { + when(AgentHostMonitoring.newMemMultiGauge(meterRegistry)).thenReturn(memMultiGauge); + MultiGauge result = agentApplication.memMultiGauge(meterRegistry); + assertNotNull(result); + } + } + + @Test + public void testDiskIOMultiGaugeBean() { + try (MockedStatic mockedStatic = mockStatic(AgentHostMonitoring.class)) { + when(AgentHostMonitoring.newDiskIOMultiGauge(meterRegistry)).thenReturn(diskIOMultiGauge); + MultiGauge result = agentApplication.diskIOMultiGauge(meterRegistry); + assertNotNull(result); + } + } + + @Test + public void testMainMethod() { + try (MockedStatic mockedStatic = mockStatic(SpringApplication.class)) { + AgentApplication.main(new String[] {}); + mockedStatic.verify(() -> SpringApplication.run(AgentApplication.class, new String[] {})); + } + } +} diff --git a/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/grpc/interceptor/TaskInterceptorTest.java b/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/grpc/interceptor/TaskInterceptorTest.java new file mode 100644 index 00000000..f9425578 --- /dev/null +++ b/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/grpc/interceptor/TaskInterceptorTest.java @@ -0,0 +1,138 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.bigtop.manager.agent.grpc.interceptor; + +import org.apache.bigtop.manager.common.utils.ProjectPathUtils; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.MockedStatic; +import org.mockito.junit.jupiter.MockitoExtension; +import org.slf4j.Logger; + +import java.io.File; +import java.io.IOException; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verifyNoInteractions; + +@ExtendWith(MockitoExtension.class) +public class TaskInterceptorTest { + + @Mock + private Logger log; + + private TaskInterceptor taskInterceptor; + private File tempFile; + + @BeforeEach + public void setUp() { + taskInterceptor = new TaskInterceptor(); + } + + @AfterEach + public void tearDown() { + if (tempFile != null && tempFile.exists()) { + tempFile.delete(); + } + } + + @Test + public void testTruncateLogFileFileExists() throws IOException { + Long taskId = 1L; + tempFile = File.createTempFile("logfile", ".log"); + + try (MockedStatic projectPathUtils = mockStatic(ProjectPathUtils.class)) { + projectPathUtils.when(() -> ProjectPathUtils.getLogFilePath(taskId)).thenReturn(tempFile.getAbsolutePath()); + + taskInterceptor.truncateLogFile(taskId); + + projectPathUtils.verify(() -> ProjectPathUtils.getLogFilePath(taskId), times(1)); + assertTrue(tempFile.exists()); + assertTrue(tempFile.length() == 0); + } + } + + @Test + public void testTruncateLogFileFileDoesNotExist() throws IOException { + Long taskId = 1L; + String filePath = "path/to/nonexistentfile.log"; + + try (MockedStatic projectPathUtils = mockStatic(ProjectPathUtils.class)) { + projectPathUtils.when(() -> ProjectPathUtils.getLogFilePath(taskId)).thenReturn(filePath); + + taskInterceptor.truncateLogFile(taskId); + + projectPathUtils.verify(() -> ProjectPathUtils.getLogFilePath(taskId), times(1)); + verifyNoInteractions(log); + } + } + + @Test + public void testIsTaskRequestTaskRequest() { + TaskLogRequest taskLogRequest = new TaskLogRequest(); + + Boolean result = taskInterceptor.isTaskRequest(taskLogRequest); + + assertTrue(result); + } + + @Test + public void testIsTaskRequestTaskWithGetTaskIdMethod() { + Task task = new Task(); + + Boolean result = taskInterceptor.isTaskRequest(task); + + assertTrue(result); + } + + @Test + public void testIsTaskRequestTaskWithoutGetTaskIdMethod() { + Object obj = new Object(); + + Boolean result = taskInterceptor.isTaskRequest(obj); + + assertFalse(result); + } + + @Test + public void testIsTaskRequestNullObject() { + Boolean result = taskInterceptor.isTaskRequest(null); + + assertFalse(result); + } + + private static class Task { + public Long getTaskId() { + return 1L; + } + } + + private static class TaskLogRequest { + public Long getTaskId() { + return 1L; + } + } +} diff --git a/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/grpc/service/HostCheckServiceGrpcImplTest.java b/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/grpc/service/HostCheckServiceGrpcImplTest.java new file mode 100644 index 00000000..b6622ff6 --- /dev/null +++ b/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/grpc/service/HostCheckServiceGrpcImplTest.java @@ -0,0 +1,131 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.bigtop.manager.agent.grpc.service; + +import org.apache.bigtop.manager.common.shell.ShellResult; +import org.apache.bigtop.manager.common.utils.Environments; +import org.apache.bigtop.manager.common.utils.os.TimeSyncDetection; +import org.apache.bigtop.manager.grpc.generated.HostCheckReply; +import org.apache.bigtop.manager.grpc.generated.HostCheckRequest; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mock; +import org.mockito.junit.jupiter.MockitoExtension; + +import io.grpc.stub.StreamObserver; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.BDDMockito.then; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.mockStatic; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.times; + +@ExtendWith(MockitoExtension.class) +public class HostCheckServiceGrpcImplTest { + + @Mock + private StreamObserver responseObserver; + + private HostCheckServiceGrpcImpl hostCheckServiceGrpcImpl; + + @BeforeEach + public void setUp() { + hostCheckServiceGrpcImpl = new HostCheckServiceGrpcImpl(); + } + + @Test + public void testCheckInDevMode() { + try (var environmentsMockedStatic = mockStatic(Environments.class)) { + // Mock environment in development mode + environmentsMockedStatic.when(Environments::isDevMode).thenReturn(true); + + // Call check method + hostCheckServiceGrpcImpl.check(mock(HostCheckRequest.class), responseObserver); + + // Verify responseObserver is correctly called + then(responseObserver).should(times(1)).onNext(any()); + then(responseObserver).should(times(1)).onCompleted(); + then(responseObserver).should(never()).onError(any()); + } + } + + @Test + public void testCheckInNonDevModeWithSuccess() { + try (var environmentsMockedStatic = mockStatic(Environments.class); + var timeSyncDetectionMockedStatic = mockStatic(TimeSyncDetection.class)) { + // Mock environment not in development mode + environmentsMockedStatic.when(Environments::isDevMode).thenReturn(false); + // Mock successful time synchronization check + timeSyncDetectionMockedStatic + .when(TimeSyncDetection::checkTimeSync) + .thenReturn(ShellResult.success("test")); + + // Call check method + hostCheckServiceGrpcImpl.check(mock(HostCheckRequest.class), responseObserver); + + // Verify responseObserver is correctly called + then(responseObserver).should(times(1)).onNext(any()); + then(responseObserver).should(times(1)).onCompleted(); + then(responseObserver).should(never()).onError(any()); + } + } + + @Test + public void testCheckInNonDevModeWithError() { + try (var environmentsMockedStatic = mockStatic(Environments.class); + var timeSyncDetectionMockedStatic = mockStatic(TimeSyncDetection.class)) { + // Mock environment not in development mode + environmentsMockedStatic.when(Environments::isDevMode).thenReturn(false); + // Mock failed time synchronization check + timeSyncDetectionMockedStatic.when(TimeSyncDetection::checkTimeSync).thenReturn(ShellResult.fail("test")); + + // Call check method + hostCheckServiceGrpcImpl.check(mock(HostCheckRequest.class), responseObserver); + + // Verify responseObserver is correctly called + then(responseObserver).should(times(1)).onNext(any()); + then(responseObserver).should(times(1)).onCompleted(); + then(responseObserver).should(never()).onError(any()); + } + } + + @Test + public void testCheckWithError() { + try (var environmentsMockedStatic = mockStatic(Environments.class); + var timeSyncDetectionMockedStatic = mockStatic(TimeSyncDetection.class)) { + // Mock environment not in development mode + environmentsMockedStatic.when(Environments::isDevMode).thenReturn(false); + // Mock a runtime exception during check execution + timeSyncDetectionMockedStatic + .when(TimeSyncDetection::checkTimeSync) + .thenThrow(new RuntimeException("Test Simulated Error")); + + // Call check method + hostCheckServiceGrpcImpl.check(mock(HostCheckRequest.class), responseObserver); + + // Verify responseObserver is correctly called + then(responseObserver).should(never()).onNext(any()); + then(responseObserver).should(never()).onCompleted(); + then(responseObserver).should(times(1)).onError(any()); + } + } +} diff --git a/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/grpc/service/JobCacheServiceGrpcImplTest.java b/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/grpc/service/JobCacheServiceGrpcImplTest.java index bcf5f551..e5ff466e 100644 --- a/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/grpc/service/JobCacheServiceGrpcImplTest.java +++ b/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/grpc/service/JobCacheServiceGrpcImplTest.java @@ -22,6 +22,7 @@ import org.apache.bigtop.manager.grpc.generated.JobCacheReply; import org.apache.bigtop.manager.grpc.generated.JobCacheRequest; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -46,18 +47,31 @@ public class JobCacheServiceGrpcImplTest { @Mock private StreamObserver responseObserver; + private Path cacheDirPath; + @BeforeEach - public void setUp() { - // Initialize mock objects + public void setUp() throws Exception { + // Create a real temporary directory for testing + cacheDirPath = Files.createTempDirectory("test-cache-dir"); jobCacheServiceGrpcImpl = new JobCacheServiceGrpcImpl(); } + @AfterEach + public void tearDown() throws Exception { + // Delete the test directory after each test + if (cacheDirPath != null) { + Files.walk(cacheDirPath) + .sorted((p1, p2) -> -p1.compareTo(p2)) + .map(Path::toFile) + .forEach(java.io.File::delete); + } + } + @Test public void testSaveSuccess() { // Mock the static behavior of ProjectPathUtils.getAgentCachePath method try (MockedStatic mockedStatic = mockStatic(ProjectPathUtils.class)) { - String cacheDir = "mock/cache/dir"; - mockedStatic.when(ProjectPathUtils::getAgentCachePath).thenReturn(cacheDir); + mockedStatic.when(ProjectPathUtils::getAgentCachePath).thenReturn(cacheDirPath.toString()); // Construct JobCacheRequest String payloadJson = "{\"configurations\": {\"configKey\": {\"subKey\": \"subValue\"}}}"; @@ -79,8 +93,7 @@ public void testSaveSuccess() { public void testSaveDirectoryCreationFailure() { // Mock the static behavior of ProjectPathUtils.getAgentCachePath method try (MockedStatic mockedStatic = mockStatic(ProjectPathUtils.class)) { - String cacheDir = "mock/cache/dir"; - mockedStatic.when(ProjectPathUtils::getAgentCachePath).thenReturn(cacheDir); + mockedStatic.when(ProjectPathUtils::getAgentCachePath).thenReturn(cacheDirPath.toString()); // Mock Files.createDirectories to throw an exception try (MockedStatic mockedFiles = mockStatic(Files.class)) { diff --git a/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/holder/SpringContextHolderTest.java b/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/holder/SpringContextHolderTest.java index e8fdd9d1..b8dd23e1 100644 --- a/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/holder/SpringContextHolderTest.java +++ b/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/holder/SpringContextHolderTest.java @@ -18,25 +18,27 @@ */ package org.apache.bigtop.manager.agent.holder; -import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.MockitoAnnotations; +import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.context.ApplicationContext; -import java.lang.reflect.Field; +import static org.junit.jupiter.api.Assertions.assertEquals; +@ExtendWith(MockitoExtension.class) public class SpringContextHolderTest { @Mock - private ApplicationContext mockApplicationContext; + private ApplicationContext applicationContext; - @BeforeEach - public void setUp() throws Exception { - MockitoAnnotations.openMocks(this); + @InjectMocks + private SpringContextHolder springContextHolder; - // Use reflection to set the static variable applicationContext - Field field = SpringContextHolder.class.getDeclaredField("applicationContext"); - field.setAccessible(true); - field.set(null, mockApplicationContext); + @Test + public void testSetApplicationContext() { + springContextHolder.setApplicationContext(applicationContext); + assertEquals(applicationContext, SpringContextHolder.getApplicationContext()); } } diff --git a/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/metrics/MetricsCollectorTest.java b/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/metrics/MetricsCollectorTest.java new file mode 100644 index 00000000..6450e6aa --- /dev/null +++ b/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/metrics/MetricsCollectorTest.java @@ -0,0 +1,62 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.bigtop.manager.agent.metrics; + +import org.apache.bigtop.manager.agent.monitoring.AgentHostMonitoring; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.MockedStatic; +import org.mockito.junit.jupiter.MockitoExtension; + +import io.micrometer.core.instrument.MultiGauge; + +import static org.mockito.Mockito.mockStatic; + +@ExtendWith(MockitoExtension.class) +public class MetricsCollectorTest { + + @Mock + private MultiGauge diskMultiGauge; + + @Mock + private MultiGauge memMultiGauge; + + @Mock + private MultiGauge cpuMultiGauge; + + @Mock + private MultiGauge diskIOMultiGauge; + + @InjectMocks + private MetricsCollector metricsCollector; + + @Test + public void testCollect() { + try (MockedStatic mockedStatic = mockStatic(AgentHostMonitoring.class)) { + metricsCollector.collect(); + mockedStatic.verify(() -> AgentHostMonitoring.diskMultiGaugeUpdateData(diskMultiGauge)); + mockedStatic.verify(() -> AgentHostMonitoring.memMultiGaugeUpdateData(memMultiGauge)); + mockedStatic.verify(() -> AgentHostMonitoring.cpuMultiGaugeUpdateData(cpuMultiGauge)); + mockedStatic.verify(() -> AgentHostMonitoring.diskIOMultiGaugeUpdateData(diskIOMultiGauge)); + } + } +} diff --git a/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/monitoring/AgentHostMonitoringTest.java b/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/monitoring/AgentHostMonitoringTest.java index 8fcb8cbc..fa1afeff 100644 --- a/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/monitoring/AgentHostMonitoringTest.java +++ b/bigtop-manager-agent/src/test/java/org/apache/bigtop/manager/agent/monitoring/AgentHostMonitoringTest.java @@ -27,6 +27,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; +import io.micrometer.core.instrument.MeterRegistry; import io.micrometer.core.instrument.MultiGauge; import oshi.SystemInfo; import oshi.hardware.GlobalMemory; @@ -73,6 +74,9 @@ class AgentHostMonitoringTest { @Mock private MultiGauge diskIOMultiGauge; + @Mock + private MeterRegistry registry; + @BeforeEach void setUp() { MockitoAnnotations.openMocks(this); @@ -175,6 +179,30 @@ void testGetMEMGauge() { assertFalse(memGauge.isEmpty()); } + @Test + public void testNewDiskMultiGauge() { + MultiGauge result = AgentHostMonitoring.newDiskMultiGauge(registry); + assertNotNull(result); + } + + @Test + public void testNewMemMultiGauge() { + MultiGauge result = AgentHostMonitoring.newMemMultiGauge(registry); + assertNotNull(result); + } + + @Test + public void testNewCPUMultiGauge() { + MultiGauge result = AgentHostMonitoring.newCPUMultiGauge(registry); + assertNotNull(result); + } + + @Test + public void testNewDiskIOMultiGauge() { + MultiGauge result = AgentHostMonitoring.newDiskIOMultiGauge(registry); + assertNotNull(result); + } + @Test void testMultiGaugeUpdateData() { // Create a mock Map object