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

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


The following commit(s) were added to refs/heads/master by this push:
     new 86ca715a6 test: add more unit tests for some services (#2653)
86ca715a6 is described below

commit 86ca715a644cf351fe224518054ecfc17566239a
Author: Rick <[email protected]>
AuthorDate: Tue Sep 3 22:40:51 2024 +0800

    test: add more unit tests for some services (#2653)
    
    Co-authored-by: rick <[email protected]>
    Co-authored-by: shown <[email protected]>
    Co-authored-by: Calvin <[email protected]>
    Co-authored-by: aias00 <[email protected]>
---
 .../collect/database/JdbcCommonCollectTest.java    | 100 +++++++++-
 .../collect/http/HttpCollectImplTest.java          |  34 +++-
 .../manager/service/impl/BulletinServiceImpl.java  |   4 +-
 .../scheduler/CollectorJobSchedulerTest.java       |  67 +++++++
 .../manager/service/BulletinServiceTest.java       | 210 +++++++++++++++++++++
 .../manager/service/CollectorServiceTest.java      |  32 +++-
 .../manager/service/DefaultPluginRunnerTest.java   |  71 +++++++
 7 files changed, 508 insertions(+), 10 deletions(-)

diff --git 
a/collector/src/test/java/org/apache/hertzbeat/collector/collect/database/JdbcCommonCollectTest.java
 
b/collector/src/test/java/org/apache/hertzbeat/collector/collect/database/JdbcCommonCollectTest.java
index 5bcad1347..92c5550d7 100644
--- 
a/collector/src/test/java/org/apache/hertzbeat/collector/collect/database/JdbcCommonCollectTest.java
+++ 
b/collector/src/test/java/org/apache/hertzbeat/collector/collect/database/JdbcCommonCollectTest.java
@@ -17,6 +17,14 @@
 
 package org.apache.hertzbeat.collector.collect.database;
 
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import org.apache.hertzbeat.collector.dispatch.DispatchConstants;
+import org.apache.hertzbeat.common.entity.job.Metrics;
+import org.apache.hertzbeat.common.entity.job.protocol.JdbcProtocol;
+import org.apache.hertzbeat.common.entity.message.CollectRep;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -24,12 +32,100 @@ import org.junit.jupiter.api.Test;
  * Test case for {@link JdbcCommonCollect}
  */
 class JdbcCommonCollectTest {
+    private JdbcCommonCollect jdbcCommonCollect;
 
     @BeforeEach
-    void setUp() {
+    void setup() {
+        jdbcCommonCollect = new JdbcCommonCollect();
+    }
+
+    @Test
+    void preCheck() {
+        assertThrows(IllegalArgumentException.class, () -> {
+            jdbcCommonCollect.preCheck(null);
+        });
+        assertThrows(IllegalArgumentException.class, () -> {
+            Metrics metrics = new Metrics();
+            jdbcCommonCollect.preCheck(metrics);
+        });
+
+        assertDoesNotThrow(() -> {
+            JdbcProtocol jdbc = new JdbcProtocol();
+            jdbc.setUrl("jdbc:mysql://localhost:3306/test");
+
+            Metrics metrics = new Metrics();
+            metrics.setJdbc(jdbc);
+            jdbcCommonCollect.preCheck(metrics);
+        });
+
+        String[] invalidKeywords = new String[]{
+            "allowLoadLocalInfile", "allowLoadLocalInfileInPath", 
"useLocalInfile"
+        };
+        for (String keyword : invalidKeywords) {
+            // contains not allowed keywords
+            assertThrows(IllegalArgumentException.class, () -> {
+                JdbcProtocol jdbc = new JdbcProtocol();
+                jdbc.setUrl("jdbc:mysql://localhost:3306/test?" + keyword);
+    
+                Metrics metrics = new Metrics();
+                metrics.setJdbc(jdbc);
+                jdbcCommonCollect.preCheck(metrics);
+            });
+        }
+    }
+
+    @Test
+    void collect() {
+        assertDoesNotThrow(() -> {
+            JdbcProtocol jdbc = new JdbcProtocol();
+            jdbc.setUrl("jdbc:mysql://localhost:3306/test");
+            jdbc.setUsername("root");
+            jdbc.setPassword("123456");
+            jdbc.setQueryType("select");
+
+            Metrics metrics = new Metrics();
+            metrics.setJdbc(jdbc);
+
+            CollectRep.MetricsData.Builder builder = 
CollectRep.MetricsData.newBuilder();
+            jdbcCommonCollect.collect(builder, 1, "test", metrics);
+        });
+
+        String[] platforms = new String[]{
+            "mysql", "mariadb",
+            "postgresql",
+            "clickhouse",
+            "sqlserver",
+            "oracle",
+            "dm"
+        };
+        for (String platform : platforms) {
+            assertDoesNotThrow(() -> {
+                JdbcProtocol jdbc = new JdbcProtocol();
+                jdbc.setPlatform(platform);
+    
+                Metrics metrics = new Metrics();
+                metrics.setJdbc(jdbc);
+    
+                CollectRep.MetricsData.Builder builder = 
CollectRep.MetricsData.newBuilder();
+                jdbcCommonCollect.collect(builder, 1, "test", metrics);
+            });
+        }
+        // invalid platform
+        assertThrows(IllegalArgumentException.class, () -> {
+            JdbcProtocol jdbc = new JdbcProtocol();
+            jdbc.setPlatform("invalid");
+
+            Metrics metrics = new Metrics();
+            metrics.setJdbc(jdbc);
+
+            CollectRep.MetricsData.Builder builder = 
CollectRep.MetricsData.newBuilder();
+            jdbcCommonCollect.collect(builder, 1, "test", metrics);
+        });
     }
 
     @Test
-    void getInstance() {
+    void supportProtocol() {
+        String protocol = jdbcCommonCollect.supportProtocol();
+        assertEquals(DispatchConstants.PROTOCOL_JDBC, protocol);
     }
 }
diff --git 
a/collector/src/test/java/org/apache/hertzbeat/collector/collect/http/HttpCollectImplTest.java
 
b/collector/src/test/java/org/apache/hertzbeat/collector/collect/http/HttpCollectImplTest.java
index 5cf86da63..e20010639 100644
--- 
a/collector/src/test/java/org/apache/hertzbeat/collector/collect/http/HttpCollectImplTest.java
+++ 
b/collector/src/test/java/org/apache/hertzbeat/collector/collect/http/HttpCollectImplTest.java
@@ -17,7 +17,11 @@
 
 package org.apache.hertzbeat.collector.collect.http;
 
-import org.junit.jupiter.api.AfterEach;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import org.apache.hertzbeat.common.entity.job.Metrics;
+import org.apache.hertzbeat.common.entity.job.protocol.HttpProtocol;
+import org.apache.hertzbeat.common.entity.message.CollectRep;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
@@ -25,20 +29,40 @@ import org.junit.jupiter.api.Test;
  * Test case for {@link HttpCollectImpl}
  */
 class HttpCollectImplTest {
+    private HttpCollectImpl httpCollectImpl;
 
     @BeforeEach
     void setUp() {
+        httpCollectImpl = new HttpCollectImpl();
     }
 
-    @AfterEach
-    void tearDown() {
+    @Test
+    void preCheck() {
+        assertThrows(IllegalArgumentException.class, () -> {
+            httpCollectImpl.preCheck(null);
+        });
+        
+        assertThrows(IllegalArgumentException.class, () -> {
+            Metrics metrics = Metrics.builder().build();
+            httpCollectImpl.preCheck(metrics);
+        });
     }
 
     @Test
-    void getInstance() {
+    void collect() {
+        HttpProtocol http = HttpProtocol.builder().build();
+        http.setMethod("POST");
+        Metrics metrics = Metrics.builder()
+                .http(http)
+                .build();
+        CollectRep.MetricsData.Builder builder = 
CollectRep.MetricsData.newBuilder();
+
+        httpCollectImpl.collect(builder, 1L, "app", metrics);
     }
 
     @Test
-    void collect() {
+    void supportProtocol() {
+        String protocol = httpCollectImpl.supportProtocol();
+        assert "http".equals(protocol);
     }
 }
\ No newline at end of file
diff --git 
a/manager/src/main/java/org/apache/hertzbeat/manager/service/impl/BulletinServiceImpl.java
 
b/manager/src/main/java/org/apache/hertzbeat/manager/service/impl/BulletinServiceImpl.java
index 6142df260..fe868521d 100644
--- 
a/manager/src/main/java/org/apache/hertzbeat/manager/service/impl/BulletinServiceImpl.java
+++ 
b/manager/src/main/java/org/apache/hertzbeat/manager/service/impl/BulletinServiceImpl.java
@@ -215,8 +215,8 @@ public class BulletinServiceImpl implements BulletinService 
{
                         fieldsList = Collections.singletonList(fields.stream()
                                 .map(field -> 
BulletinMetricsData.Field.builder()
                                         .key(field)
-                                        .unit("")
-                                        .value("NO_DATA")
+                                        .unit(EMPTY_STRING)
+                                        .value(NO_DATA)
                                         .build())
                                 .toList());
                     }
diff --git 
a/manager/src/test/java/org/apache/hertzbeat/manager/scheduler/CollectorJobSchedulerTest.java
 
b/manager/src/test/java/org/apache/hertzbeat/manager/scheduler/CollectorJobSchedulerTest.java
new file mode 100644
index 000000000..5cf96f030
--- /dev/null
+++ 
b/manager/src/test/java/org/apache/hertzbeat/manager/scheduler/CollectorJobSchedulerTest.java
@@ -0,0 +1,67 @@
+/*
+ * 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
+ *
+ *     http://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.hertzbeat.manager.scheduler;
+
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.when;
+
+import org.apache.hertzbeat.common.entity.message.CollectRep;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.hertzbeat.common.entity.job.Job;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+/**
+ * Test case for {@link CollectorJobScheduler}
+ */
+@ExtendWith(MockitoExtension.class)
+public class CollectorJobSchedulerTest {
+    @InjectMocks
+    private CollectorJobScheduler collectorJobScheduler;
+    @Mock
+    private ConsistentHash consistentHash;
+
+    @Test
+    public void testCollectSyncJobData() {
+        assertDoesNotThrow(() -> {
+            Job job = new Job();
+            
when(consistentHash.preDispatchJob(any(String.class))).thenReturn(null);
+            List<?> list = collectorJobScheduler.collectSyncJobData(job);
+            assertEquals(1, list.size());
+        });
+    }
+
+    @Test
+    public void testCollectSyncJobResource() {
+        assertDoesNotThrow(() -> {
+            collectorJobScheduler.collectSyncJobResponse(null);
+            collectorJobScheduler.collectSyncJobResponse(new ArrayList<>());
+
+            List<CollectRep.MetricsData> metricsDataList = new 
ArrayList<CollectRep.MetricsData>();
+            metricsDataList.add(CollectRep.MetricsData.newBuilder().build());
+            collectorJobScheduler.collectSyncJobResponse(metricsDataList);
+        });
+    }
+}
diff --git 
a/manager/src/test/java/org/apache/hertzbeat/manager/service/BulletinServiceTest.java
 
b/manager/src/test/java/org/apache/hertzbeat/manager/service/BulletinServiceTest.java
new file mode 100644
index 000000000..a69175eba
--- /dev/null
+++ 
b/manager/src/test/java/org/apache/hertzbeat/manager/service/BulletinServiceTest.java
@@ -0,0 +1,210 @@
+/*
+ * 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
+ *
+ *     http://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.hertzbeat.manager.service;
+
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyList;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.hertzbeat.common.entity.manager.Monitor;
+import org.apache.hertzbeat.common.entity.manager.bulletin.Bulletin;
+import org.apache.hertzbeat.common.entity.manager.bulletin.BulletinDto;
+import org.apache.hertzbeat.common.entity.manager.bulletin.BulletinMetricsData;
+import org.apache.hertzbeat.manager.dao.BulletinDao;
+import org.apache.hertzbeat.manager.service.impl.BulletinServiceImpl;
+import org.apache.hertzbeat.warehouse.store.realtime.RealTimeDataReader;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.data.jpa.domain.Specification;
+
+/**
+ * Test case for {@link BulletinService}
+ */
+@ExtendWith(MockitoExtension.class)
+public class BulletinServiceTest {
+    @InjectMocks
+    private BulletinServiceImpl bulletinService;
+
+    @Mock
+    private BulletinDao bulletinDao;
+
+    @Mock
+    private MonitorService monitorService;
+
+    @Mock
+    private RealTimeDataReader realTimeDataReader;
+
+    @Test
+    public void testValidate() throws Exception {
+        assertThrows(IllegalArgumentException.class, () -> {
+            bulletinService.validate(null);
+        });
+
+        assertThrows(IllegalArgumentException.class, () -> {
+            bulletinService.validate(new BulletinDto());
+        });
+
+        assertThrows(IllegalArgumentException.class, () -> {
+            BulletinDto obj = new BulletinDto();
+            obj.setApp("app");
+            bulletinService.validate(obj);
+        });
+
+        assertThrows(IllegalArgumentException.class, () -> {
+            Map<String, List<String>> fields = new HashMap<String, 
List<String>>();
+            fields.put("field1", null);
+
+            BulletinDto obj = new BulletinDto();
+            obj.setApp("app");
+            obj.setFields(fields);
+            bulletinService.validate(obj);
+        });
+
+        assertDoesNotThrow(() -> {
+            Map<String, List<String>> fields = new HashMap<String, 
List<String>>();
+            fields.put("field1", null);
+
+            List<Long> ids = new ArrayList<Long>();
+            ids.add((long) 1);
+
+            BulletinDto obj = new BulletinDto();
+            obj.setApp("app");
+            obj.setFields(fields);
+            obj.setMonitorIds(ids);
+            bulletinService.validate(obj);
+        });
+    }
+
+    @Test
+    public void testGetBulletinByName() throws Exception {
+        Bulletin bulletin = new Bulletin();
+
+        when(bulletinDao.findByName("test")).thenReturn(bulletin);
+        assertEquals(bulletin, bulletinService.getBulletinByName("test"));
+    }
+
+    @Test
+    public void testGetAllNames() throws Exception {
+        Bulletin bulletin = new Bulletin();
+        bulletin.setName("test");
+
+        List<Bulletin> items = new ArrayList<Bulletin>();
+        items.add(bulletin);
+
+        List<String> names = new ArrayList<String>();
+        names.add("test");
+
+        when(bulletinDao.findAll()).thenReturn(items);
+        assertEquals(names, bulletinService.getAllNames());
+    }
+
+    @Test
+    public void testAddBulletin() throws Exception {
+        Map<String, List<String>> fields = new HashMap<String, List<String>>();
+        fields.put("field1", null);
+
+        BulletinDto bulletinDto = new BulletinDto();
+        bulletinDto.setApp("app");
+        bulletinDto.setFields(fields);
+
+        assertDoesNotThrow(() -> {
+            bulletinService.addBulletin(bulletinDto);
+        });
+    }
+
+    @Test
+    public void testGetBulletins() throws Exception {
+        Bulletin bulletin = new Bulletin();
+        bulletin.setId((long) 1);
+
+        PageRequest pageRequest = PageRequest.of(0, 10);
+
+        List<Bulletin> content = Collections.singletonList(bulletin);
+        long total = 1;
+
+        Page<Bulletin> items = new PageImpl<Bulletin>(content, pageRequest, 
total);
+
+        when(bulletinDao.findAll(any(Specification.class), 
any(PageRequest.class))).thenReturn(items);
+        assertNotNull(bulletinService.getBulletins(null, pageRequest));
+    }
+
+    @Test
+    public void testBuildBulletinMetricsData() throws Exception {
+        List<Long> ids = new ArrayList<Long>();
+        ids.add((long) 1);
+
+        Bulletin bulletin = new Bulletin();
+        bulletin.setId((long) 1);
+        bulletin.setMonitorIds(ids);
+        bulletin.setFields("""
+            {"1": ["1", "2"]}
+            """);
+
+        BulletinMetricsData.BulletinMetricsDataBuilder contentBuilder = 
BulletinMetricsData.builder();
+
+        Monitor monitor = new Monitor();
+
+        when(realTimeDataReader.getCurrentMetricsData(any(), 
any(String.class))).thenReturn(null);
+        when(monitorService.getMonitor(any(Long.class))).thenReturn(monitor);
+        assertNotNull(bulletinService.buildBulletinMetricsData(contentBuilder, 
bulletin));
+    }
+
+    @Test
+    public void testGetBulletinById() throws Exception {
+        Bulletin bulletin = new Bulletin();
+        bulletin.setId((long) 1);
+
+        when(bulletinDao.findById((long) 
1)).thenReturn(java.util.Optional.of(bulletin));
+        assertEquals(bulletin, bulletinService.getBulletinById((long) 
1).get());
+    }
+
+    @Test
+    public void testDeleteBulletinByName() throws Exception {
+        List<String> names = new ArrayList<String>();
+        names.add("test");
+
+        assertDoesNotThrow(() -> {
+            bulletinService.deleteBulletinByName(names);
+        });
+
+        assertThrows(RuntimeException.class, () -> {
+            doAnswer(invocation -> {
+                throw new RuntimeException("test");
+            }).when(bulletinDao).deleteByNameIn(anyList());
+
+            bulletinService.deleteBulletinByName(null);
+        });
+    }
+}
diff --git 
a/manager/src/test/java/org/apache/hertzbeat/manager/service/CollectorServiceTest.java
 
b/manager/src/test/java/org/apache/hertzbeat/manager/service/CollectorServiceTest.java
index d98c28201..c31ec4c8b 100644
--- 
a/manager/src/test/java/org/apache/hertzbeat/manager/service/CollectorServiceTest.java
+++ 
b/manager/src/test/java/org/apache/hertzbeat/manager/service/CollectorServiceTest.java
@@ -18,11 +18,18 @@
 package org.apache.hertzbeat.manager.service;
 
 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.when;
+
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Optional;
+
+import org.apache.hertzbeat.common.entity.manager.Collector;
+import org.apache.hertzbeat.common.support.exception.CommonException;
 import org.apache.hertzbeat.manager.dao.CollectorDao;
 import org.apache.hertzbeat.manager.dao.CollectorMonitorBindDao;
 import org.apache.hertzbeat.manager.scheduler.ConsistentHash;
@@ -76,6 +83,29 @@ public class CollectorServiceTest {
 
     @Test
     public void hasCollector() {
-        collectorService.hasCollector("test");
+        
when(collectorDao.findCollectorByName("test")).thenReturn(Optional.empty());
+        assertFalse(collectorService.hasCollector("test"));
+    }
+
+    @Test
+    public void testGenerateCollectorDeployInfo() {
+        
when(collectorDao.findCollectorByName("test")).thenReturn(Optional.of(new 
Collector()));
+        assertThrows(CommonException.class, ()->{
+            collectorService.generateCollectorDeployInfo("test");
+        });
+    }
+
+    @Test
+    public void testMakeCollectorsOffline() {
+        assertDoesNotThrow(() -> {
+            collectorService.makeCollectorsOffline(new ArrayList<>());
+        });
+    }
+
+    @Test
+    public void testMakeCollectorsOnline() {
+        assertDoesNotThrow(() -> {
+            collectorService.makeCollectorsOnline(new ArrayList<>());
+        });
     }
 }
diff --git 
a/manager/src/test/java/org/apache/hertzbeat/manager/service/DefaultPluginRunnerTest.java
 
b/manager/src/test/java/org/apache/hertzbeat/manager/service/DefaultPluginRunnerTest.java
new file mode 100644
index 000000000..84d987b0a
--- /dev/null
+++ 
b/manager/src/test/java/org/apache/hertzbeat/manager/service/DefaultPluginRunnerTest.java
@@ -0,0 +1,71 @@
+/*
+ * 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
+ *
+ *     http://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.hertzbeat.manager.service;
+
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.mockito.Mockito.doAnswer;
+
+import java.util.function.BiConsumer;
+import java.util.function.Consumer;
+
+import static org.mockito.Mockito.any;
+
+import org.apache.hertzbeat.manager.service.impl.DefaultPluginRunner;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+
+/**
+ * Test case for {@link DefaultPluginRunner}
+ */
+@ExtendWith(MockitoExtension.class)
+public class DefaultPluginRunnerTest {
+    @Mock
+    private PluginService pluginService;
+    @InjectMocks
+    private DefaultPluginRunner defaultPluginRunner;
+
+    @Test
+    public void testPluginExecute() {
+        assertDoesNotThrow(() -> {
+            doAnswer(invocation -> {
+                // no nothing
+                return null;
+            }).when(pluginService).pluginExecute(any(Class.class), 
any(Consumer.class));
+            doAnswer(invocation -> {
+                // no nothing
+                return null;
+            }).when(pluginService).pluginExecute(any(Class.class), 
any(BiConsumer.class));
+            defaultPluginRunner.pluginExecute(String.class, (s) -> {});
+            defaultPluginRunner.pluginExecute(String.class, (a, b)->{});
+        });
+        
+        assertDoesNotThrow(() -> {
+            doAnswer(invocation -> {
+                throw new RuntimeException("sample");
+            }).when(pluginService).pluginExecute(any(Class.class), 
any(Consumer.class));
+            doAnswer(invocation -> {
+                throw new RuntimeException("sample");
+            }).when(pluginService).pluginExecute(any(Class.class), 
any(BiConsumer.class));
+            defaultPluginRunner.pluginExecute(String.class, (s) -> {});
+            defaultPluginRunner.pluginExecute(String.class, (a, b)->{});
+        });
+    }
+}


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

Reply via email to