This is an automated email from the ASF dual-hosted git repository.

zqr10159 pushed a commit to branch 2.0.0
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git

commit 0db1e44f4aef764559db04ab26a7051e6e373dce
Author: Logic <[email protected]>
AuthorDate: Wed Aug 26 12:20:11 2026 +0800

    test: make collector e2e portable on arm
---
 .../basic/redis/RedisCommonCollectE2eTest.java     |  3 +--
 .../collect/basic/ssh/SshCollectE2eTest.java       | 11 ++++----
 .../src/test/resources/docker/ssh/Dockerfile       | 15 +++++++++++
 .../collector/collect/AbstractCollectE2eTest.java  | 31 ++++++++++++++++++----
 4 files changed, 48 insertions(+), 12 deletions(-)

diff --git 
a/hertzbeat-e2e/hertzbeat-collector-basic-e2e/src/test/java/org/apache/hertzbeat/collector/collect/basic/redis/RedisCommonCollectE2eTest.java
 
b/hertzbeat-e2e/hertzbeat-collector-basic-e2e/src/test/java/org/apache/hertzbeat/collector/collect/basic/redis/RedisCommonCollectE2eTest.java
index 673cbb0d63..169f0c7036 100644
--- 
a/hertzbeat-e2e/hertzbeat-collector-basic-e2e/src/test/java/org/apache/hertzbeat/collector/collect/basic/redis/RedisCommonCollectE2eTest.java
+++ 
b/hertzbeat-e2e/hertzbeat-collector-basic-e2e/src/test/java/org/apache/hertzbeat/collector/collect/basic/redis/RedisCommonCollectE2eTest.java
@@ -51,7 +51,6 @@ import java.util.stream.Stream;
 @ExtendWith(MockitoExtension.class)
 public class RedisCommonCollectE2eTest extends AbstractCollectE2eTest {
     private static final String REDIS_IMAGE = "redis:7.4.2";
-    private static final String HOST = "127.0.0.1";
     private static final int REDIS_PORT = 6379;
     private static final String REDIS_PATTERN = "1";
     private static final List<String> ALLOW_EMPTY_WHITE_LIST = 
Arrays.asList("server", "errorstats", "commandstats", "keyspace");
@@ -106,7 +105,7 @@ public class RedisCommonCollectE2eTest extends 
AbstractCollectE2eTest {
     @Override
     protected Protocol buildProtocol(Metrics metricsDef) {
         RedisProtocol redisProtocol = new RedisProtocol();
-        redisProtocol.setHost(HOST);
+        redisProtocol.setHost(redisContainer.getHost());
         redisProtocol.setPort(mappedPort.toString());
         redisProtocol.setPattern(REDIS_PATTERN);
         return redisProtocol;
diff --git 
a/hertzbeat-e2e/hertzbeat-collector-basic-e2e/src/test/java/org/apache/hertzbeat/collector/collect/basic/ssh/SshCollectE2eTest.java
 
b/hertzbeat-e2e/hertzbeat-collector-basic-e2e/src/test/java/org/apache/hertzbeat/collector/collect/basic/ssh/SshCollectE2eTest.java
index 95e8a1bac7..5732694a15 100644
--- 
a/hertzbeat-e2e/hertzbeat-collector-basic-e2e/src/test/java/org/apache/hertzbeat/collector/collect/basic/ssh/SshCollectE2eTest.java
+++ 
b/hertzbeat-e2e/hertzbeat-collector-basic-e2e/src/test/java/org/apache/hertzbeat/collector/collect/basic/ssh/SshCollectE2eTest.java
@@ -34,8 +34,8 @@ import org.mockito.junit.jupiter.MockitoExtension;
 import org.testcontainers.containers.GenericContainer;
 import org.testcontainers.containers.Network;
 import org.testcontainers.containers.wait.strategy.Wait;
+import org.testcontainers.images.builder.ImageFromDockerfile;
 import org.testcontainers.lifecycle.Startables;
-import org.testcontainers.utility.DockerImageName;
 
 import java.time.Duration;
 import java.util.Arrays;
@@ -51,8 +51,9 @@ import java.util.stream.Stream;
 @Slf4j
 @ExtendWith(MockitoExtension.class)
 public class SshCollectE2eTest extends AbstractCollectE2eTest {
-    private static final String UBUNTU_IMAGE = "rastasheep/ubuntu-sshd:18.04";
-    private static final String HOST = "127.0.0.1";
+    private static final ImageFromDockerfile UBUNTU_IMAGE =
+            new ImageFromDockerfile("hertzbeat/ubuntu-sshd-e2e:24.04", false)
+                    .withFileFromClasspath("Dockerfile", 
"docker/ssh/Dockerfile");
     private static final String ROOT_USER = "root";
     private static final int SSH_PORT = 22;
     private static final int PASSWORD_LENGTH = 12;
@@ -111,7 +112,7 @@ public class SshCollectE2eTest extends 
AbstractCollectE2eTest {
     @Override
     protected Protocol buildProtocol(Metrics metricsDef) {
         SshProtocol sshProtocol = new SshProtocol();
-        sshProtocol.setHost(HOST);
+        sshProtocol.setHost(linuxContainer.getHost());
         sshProtocol.setPort(mappedPort.toString());
         sshProtocol.setUsername(ROOT_USER);
         sshProtocol.setPassword(password);
@@ -122,7 +123,7 @@ public class SshCollectE2eTest extends 
AbstractCollectE2eTest {
 
     private void setupAndStartContainer() {
         Network network = Network.builder().build();
-        linuxContainer = new 
GenericContainer<>(DockerImageName.parse(UBUNTU_IMAGE))
+        linuxContainer = new GenericContainer<>(UBUNTU_IMAGE)
                 .withExposedPorts(SSH_PORT)
                 .withNetwork(network)
                 .withNetworkAliases("ubuntu")
diff --git 
a/hertzbeat-e2e/hertzbeat-collector-basic-e2e/src/test/resources/docker/ssh/Dockerfile
 
b/hertzbeat-e2e/hertzbeat-collector-basic-e2e/src/test/resources/docker/ssh/Dockerfile
new file mode 100644
index 0000000000..744149d7d1
--- /dev/null
+++ 
b/hertzbeat-e2e/hertzbeat-collector-basic-e2e/src/test/resources/docker/ssh/Dockerfile
@@ -0,0 +1,15 @@
+FROM 
public.ecr.aws/ubuntu/ubuntu:24.04@sha256:a54764b5b6340c272ffb45e303fe4c8064bbdfb76d732b325b79ae6b92900e4c
+
+RUN apt-get update \
+    && DEBIAN_FRONTEND=noninteractive apt-get install --yes 
--no-install-recommends \
+        openssh-server \
+        procps \
+        util-linux \
+    && rm -rf /var/lib/apt/lists/* \
+    && mkdir -p /run/sshd \
+    && printf 'PermitRootLogin yes\nPasswordAuthentication yes\nUsePAM no\n' \
+        > /etc/ssh/sshd_config.d/hertzbeat-e2e.conf
+
+EXPOSE 22
+
+CMD ["/usr/sbin/sshd", "-D", "-e"]
diff --git 
a/hertzbeat-e2e/hertzbeat-collector-common-e2e/src/test/java/org/apache/hertzbeat/collector/collect/AbstractCollectE2eTest.java
 
b/hertzbeat-e2e/hertzbeat-collector-common-e2e/src/test/java/org/apache/hertzbeat/collector/collect/AbstractCollectE2eTest.java
index b58a4423cc..1550791e50 100644
--- 
a/hertzbeat-e2e/hertzbeat-collector-common-e2e/src/test/java/org/apache/hertzbeat/collector/collect/AbstractCollectE2eTest.java
+++ 
b/hertzbeat-e2e/hertzbeat-collector-common-e2e/src/test/java/org/apache/hertzbeat/collector/collect/AbstractCollectE2eTest.java
@@ -28,12 +28,19 @@ import org.apache.hertzbeat.common.entity.job.Metrics;
 import org.apache.hertzbeat.common.entity.job.protocol.Protocol;
 import org.apache.hertzbeat.common.entity.message.CollectRep;
 import org.apache.hertzbeat.manager.dao.DefineDao;
+import org.apache.hertzbeat.manager.dao.MonitorDao;
+import org.apache.hertzbeat.manager.dao.ParamDao;
+import 
org.apache.hertzbeat.manager.monitor.definition.MonitorDefinitionMutationCoordinator;
+import 
org.apache.hertzbeat.manager.monitor.definition.MonitorDefinitionStoreFactory;
+import org.apache.hertzbeat.manager.service.MonitorService;
 import org.apache.hertzbeat.manager.service.impl.AppServiceImpl;
-import org.apache.hertzbeat.manager.service.impl.ObjectStoreConfigServiceImpl;
+import org.apache.hertzbeat.manager.setup.runtime.SetupRuntimeTransition;
+import org.apache.hertzbeat.warehouse.service.WarehouseService;
 import org.junit.jupiter.api.Assertions;
-import org.mockito.InjectMocks;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.springframework.beans.factory.ObjectProvider;
+import org.springframework.test.context.bean.override.mockito.MockitoBean;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -49,7 +56,6 @@ import static org.mockito.Mockito.when;
 @Slf4j
 public abstract class AbstractCollectE2eTest {
 
-    @InjectMocks
     protected AppServiceImpl appService;
 
     protected AbstractCollect collect;
@@ -58,8 +64,16 @@ public abstract class AbstractCollectE2eTest {
 
     protected Metrics metrics;
 
+    @MockitoBean
+    protected SetupRuntimeTransition setupRuntimeTransition;
     @Mock
-    protected ObjectStoreConfigServiceImpl objectStoreConfigService;
+    private MonitorDao monitorDao;
+    @Mock
+    private ParamDao paramDao;
+    @Mock
+    private WarehouseService warehouseService;
+    @Mock
+    private ObjectProvider<MonitorService> monitorServiceProvider;
     @Mock
     private WheelTimerTask timerJob;
     @Mock
@@ -78,7 +92,14 @@ public abstract class AbstractCollectE2eTest {
         metricsCollect = new MetricsCollect(mock(Metrics.class), timeout, 
mock(CollectDataDispatch.class), null, List.of());
 
         // Initialize services and components
-        appService.afterPropertiesSet();
+        appService = new AppServiceImpl(
+                monitorDao,
+                paramDao,
+                warehouseService,
+                monitorServiceProvider,
+                new MonitorDefinitionStoreFactory(defineDao),
+                new MonitorDefinitionMutationCoordinator());
+        appService.initializeRuntimeDefinitions(null);
         metrics = new Metrics();
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to