diff --git a/pom.xml b/pom.xml
index 2f88a1a..08b6d57 100644
--- a/pom.xml
+++ b/pom.xml
@@ -165,6 +165,16 @@
junit-jupiter
test
+
+ org.mockito
+ mockito-core
+ test
+
+
+ org.mockito
+ mockito-junit-jupiter
+ test
+
diff --git a/src/test/java/de/rub/nds/crawler/core/ControllerTest.java b/src/test/java/de/rub/nds/crawler/core/ControllerTest.java
index 16405e4..5edef61 100644
--- a/src/test/java/de/rub/nds/crawler/core/ControllerTest.java
+++ b/src/test/java/de/rub/nds/crawler/core/ControllerTest.java
@@ -8,6 +8,8 @@
*/
package de.rub.nds.crawler.core;
+import static org.mockito.Mockito.*;
+
import de.rub.nds.crawler.config.ControllerCommandConfig;
import de.rub.nds.crawler.data.ScanJobDescription;
import de.rub.nds.crawler.dummy.DummyControllerCommandConfig;
@@ -17,104 +19,155 @@
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
+import java.net.InetAddress;
import java.util.Arrays;
import java.util.List;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
+import org.mockito.MockedStatic;
class ControllerTest {
@Test
void submitting() throws IOException, InterruptedException {
- var persistenceProvider = new DummyPersistenceProvider();
- var orchestrationProvider = new DummyOrchestrationProvider();
- ControllerCommandConfig config = new DummyControllerCommandConfig();
-
- File hostlist = File.createTempFile("hosts", "txt");
- hostlist.deleteOnExit();
- FileWriter writer = new FileWriter(hostlist);
- writer.write("example.com\nexample.org:8000");
- writer.flush();
- writer.close();
-
- config.setHostFile(hostlist.getAbsolutePath());
-
- Controller controller = new Controller(config, orchestrationProvider, persistenceProvider);
- controller.start();
-
- Thread.sleep(1000);
-
- Assertions.assertEquals(2, orchestrationProvider.jobQueue.size());
- Assertions.assertEquals(0, orchestrationProvider.unackedJobs.size());
+ try (MockedStatic mockedInetAddress = mockStatic(InetAddress.class)) {
+ InetAddress mockExampleCom = mock(InetAddress.class);
+ when(mockExampleCom.getHostAddress()).thenReturn("192.0.2.1");
+ mockedInetAddress
+ .when(() -> InetAddress.getByName("example.com"))
+ .thenReturn(mockExampleCom);
+
+ InetAddress mockExampleOrg = mock(InetAddress.class);
+ when(mockExampleOrg.getHostAddress()).thenReturn("192.0.2.2");
+ mockedInetAddress
+ .when(() -> InetAddress.getByName("example.org"))
+ .thenReturn(mockExampleOrg);
+
+ var persistenceProvider = new DummyPersistenceProvider();
+ var orchestrationProvider = new DummyOrchestrationProvider();
+ ControllerCommandConfig config = new DummyControllerCommandConfig();
+
+ File hostlist = File.createTempFile("hosts", "txt");
+ hostlist.deleteOnExit();
+ FileWriter writer = new FileWriter(hostlist);
+ writer.write("example.com\nexample.org:8000");
+ writer.flush();
+ writer.close();
+
+ config.setHostFile(hostlist.getAbsolutePath());
+
+ Controller controller =
+ new Controller(config, orchestrationProvider, persistenceProvider);
+ controller.start();
+
+ Thread.sleep(1000);
+
+ Assertions.assertEquals(2, orchestrationProvider.jobQueue.size());
+ Assertions.assertEquals(0, orchestrationProvider.unackedJobs.size());
+
+ mockedInetAddress.verify(() -> InetAddress.getByName("example.com"));
+ mockedInetAddress.verify(() -> InetAddress.getByName("example.org"));
+ mockedInetAddress.verifyNoMoreInteractions();
+ }
}
@Test
void submittingWithExcludedProbes() throws IOException, InterruptedException {
- var persistenceProvider = new DummyPersistenceProvider();
- var orchestrationProvider = new DummyOrchestrationProvider();
- ControllerCommandConfig config = new DummyControllerCommandConfig();
+ try (MockedStatic mockedInetAddress = mockStatic(InetAddress.class)) {
+ InetAddress mockExampleCom = mock(InetAddress.class);
+ when(mockExampleCom.getHostAddress()).thenReturn("192.0.2.1");
+ mockedInetAddress
+ .when(() -> InetAddress.getByName("example.com"))
+ .thenReturn(mockExampleCom);
+
+ InetAddress mockExampleOrg = mock(InetAddress.class);
+ when(mockExampleOrg.getHostAddress()).thenReturn("192.0.2.2");
+ mockedInetAddress
+ .when(() -> InetAddress.getByName("example.org"))
+ .thenReturn(mockExampleOrg);
+
+ var persistenceProvider = new DummyPersistenceProvider();
+ var orchestrationProvider = new DummyOrchestrationProvider();
+ ControllerCommandConfig config = new DummyControllerCommandConfig();
+
+ File hostlist = File.createTempFile("hosts", "txt");
+ hostlist.deleteOnExit();
+ FileWriter writer = new FileWriter(hostlist);
+ writer.write("example.com\nexample.org:443");
+ writer.flush();
+ writer.close();
+
+ config.setHostFile(hostlist.getAbsolutePath());
+
+ List excludedProbes =
+ Arrays.asList(new TestProbeType("probe1"), new TestProbeType("probe2"));
+ config.setExcludedProbes(excludedProbes);
+
+ Controller controller =
+ new Controller(config, orchestrationProvider, persistenceProvider);
+ controller.start();
+
+ Thread.sleep(1000);
+
+ Assertions.assertEquals(2, orchestrationProvider.jobQueue.size());
+ Assertions.assertEquals(0, orchestrationProvider.unackedJobs.size());
+
+ for (ScanJobDescription job : orchestrationProvider.jobQueue) {
+ List jobExcludedProbes =
+ job.getBulkScanInfo().getScanConfig().getExcludedProbes();
+ Assertions.assertNotNull(jobExcludedProbes);
+ Assertions.assertEquals(2, jobExcludedProbes.size());
+ Assertions.assertEquals("probe1", jobExcludedProbes.get(0).getName());
+ Assertions.assertEquals("probe2", jobExcludedProbes.get(1).getName());
+ }
+ mockedInetAddress.verify(() -> InetAddress.getByName("example.com"));
+ mockedInetAddress.verify(() -> InetAddress.getByName("example.org"));
+ mockedInetAddress.verifyNoMoreInteractions();
+ }
+ }
- File hostlist = File.createTempFile("hosts", "txt");
- hostlist.deleteOnExit();
- FileWriter writer = new FileWriter(hostlist);
- writer.write("example.com\nexample.org:443");
- writer.flush();
- writer.close();
+ @Test
+ void submittingWithoutExcludedProbes() throws IOException, InterruptedException {
+ try (MockedStatic mockedInetAddress = mockStatic(InetAddress.class)) {
+ InetAddress mockExampleCom = mock(InetAddress.class);
+ when(mockExampleCom.getHostAddress()).thenReturn("192.0.2.1");
+ mockedInetAddress
+ .when(() -> InetAddress.getByName("example.com"))
+ .thenReturn(mockExampleCom);
- config.setHostFile(hostlist.getAbsolutePath());
+ var persistenceProvider = new DummyPersistenceProvider();
+ var orchestrationProvider = new DummyOrchestrationProvider();
+ ControllerCommandConfig config = new DummyControllerCommandConfig();
- List excludedProbes =
- Arrays.asList(new TestProbeType("probe1"), new TestProbeType("probe2"));
- config.setExcludedProbes(excludedProbes);
+ File hostlist = File.createTempFile("hosts", "txt");
+ hostlist.deleteOnExit();
+ FileWriter writer = new FileWriter(hostlist);
+ writer.write("example.com");
+ writer.flush();
+ writer.close();
- Controller controller = new Controller(config, orchestrationProvider, persistenceProvider);
- controller.start();
+ config.setHostFile(hostlist.getAbsolutePath());
- Thread.sleep(1000);
+ Controller controller =
+ new Controller(config, orchestrationProvider, persistenceProvider);
+ controller.start();
- Assertions.assertEquals(2, orchestrationProvider.jobQueue.size());
- Assertions.assertEquals(0, orchestrationProvider.unackedJobs.size());
+ Thread.sleep(1000);
- for (ScanJobDescription job : orchestrationProvider.jobQueue) {
+ Assertions.assertEquals(1, orchestrationProvider.jobQueue.size());
+
+ ScanJobDescription job = orchestrationProvider.jobQueue.peek();
List jobExcludedProbes =
job.getBulkScanInfo().getScanConfig().getExcludedProbes();
- Assertions.assertNotNull(jobExcludedProbes);
- Assertions.assertEquals(2, jobExcludedProbes.size());
- Assertions.assertEquals("probe1", jobExcludedProbes.get(0).getName());
- Assertions.assertEquals("probe2", jobExcludedProbes.get(1).getName());
- }
- }
-
- @Test
- void submittingWithoutExcludedProbes() throws IOException, InterruptedException {
- var persistenceProvider = new DummyPersistenceProvider();
- var orchestrationProvider = new DummyOrchestrationProvider();
- ControllerCommandConfig config = new DummyControllerCommandConfig();
-
- File hostlist = File.createTempFile("hosts", "txt");
- hostlist.deleteOnExit();
- FileWriter writer = new FileWriter(hostlist);
- writer.write("example.com");
- writer.flush();
- writer.close();
-
- config.setHostFile(hostlist.getAbsolutePath());
-
- Controller controller = new Controller(config, orchestrationProvider, persistenceProvider);
- controller.start();
-
- Thread.sleep(1000);
-
- Assertions.assertEquals(1, orchestrationProvider.jobQueue.size());
-
- ScanJobDescription job = orchestrationProvider.jobQueue.peek();
- List jobExcludedProbes =
- job.getBulkScanInfo().getScanConfig().getExcludedProbes();
- if (jobExcludedProbes == null) {
- Assertions.assertNull(jobExcludedProbes, "Expected excluded probes to be null");
- } else {
- Assertions.assertTrue(
- jobExcludedProbes.isEmpty(), "Expected excluded probes to be empty");
+ if (jobExcludedProbes == null) {
+ Assertions.assertNull(jobExcludedProbes, "Expected excluded probes to be null");
+ } else {
+ Assertions.assertTrue(
+ jobExcludedProbes.isEmpty(), "Expected excluded probes to be empty");
+ }
+ mockedInetAddress.verify(() -> InetAddress.getByName("example.com"));
+ mockedInetAddress.verify(() -> InetAddress.getByName("example.org"));
+ mockedInetAddress.verifyNoMoreInteractions();
}
}
}