Skip to content

Commit 2faab1f

Browse files
authored
Creating flag to force dns server start even when in test mode #480 (#539)
* creating flag to forcec dns server start even when in test mode * testing
1 parent 2e98222 commit 2faab1f

File tree

2 files changed

+74
-5
lines changed

2 files changed

+74
-5
lines changed

src/main/java/com/mageddo/dnsproxyserver/server/Starter.java

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
import javax.inject.Inject;
1111
import javax.inject.Singleton;
12-
1312
import java.util.Set;
1413

1514
import static com.mageddo.dnsproxyserver.quarkus.Quarkus.isTest;
@@ -19,21 +18,44 @@
1918
@RequiredArgsConstructor(onConstructor = @__({@Inject}))
2019
public class Starter {
2120

21+
public static final String DNS_SERVER_MUST_START_FLAG = "mg.server.server.must-start";
2222
private final ServerStarter dnsServerStarter;
2323
private final WebServer webServer;
2424
private final Set<StartupEvent> startupEvents;
2525

2626
public void start() {
27-
if(isTest()){
28-
log.warn("status=onTest, disabled=[dnsServer, startupEvents]");
27+
if (isTest()) {
28+
log.warn("status=onTest, disabled=[startupEvents]");
2929
} else {
3030
this.startupEvents.forEach(StartupEvent::onStart);
31-
this.dnsServerStarter.start();
3231
}
32+
if (shouldStartDnsServer()) {
33+
this.startDnsServer();
34+
}
35+
this.startWebServer();
36+
}
37+
38+
void startWebServer() {
3339
this.webServer.start(Configs.getInstance().getWebServerPort());
3440
}
3541

36-
public void stop(){
42+
void startDnsServer() {
43+
this.dnsServerStarter.start();
44+
}
45+
46+
private static boolean shouldStartDnsServer() {
47+
return !isTest() || isMustStartFlagActive();
48+
}
49+
50+
private static boolean isMustStartFlagActive() {
51+
return Boolean.getBoolean(DNS_SERVER_MUST_START_FLAG);
52+
}
53+
54+
public static void setMustStartFlagActive(boolean b) {
55+
System.setProperty(DNS_SERVER_MUST_START_FLAG, String.valueOf(b));
56+
}
57+
58+
public void stop() {
3759
this.dnsServerStarter.stop();
3860
this.webServer.stop();
3961
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.mageddo.dnsproxyserver.server;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.junit.jupiter.api.extension.ExtendWith;
5+
import org.mockito.junit.jupiter.MockitoExtension;
6+
7+
import java.util.Set;
8+
9+
import static org.mockito.Mockito.doNothing;
10+
import static org.mockito.Mockito.never;
11+
import static org.mockito.Mockito.spy;
12+
import static org.mockito.Mockito.verify;
13+
14+
@ExtendWith(MockitoExtension.class)
15+
class StarterTest {
16+
17+
final Starter starter = spy(new Starter(null, null, Set.of()));
18+
19+
@Test
20+
void wontStartInTestMode() {
21+
22+
doNothing().when(this.starter).startWebServer();
23+
doNothing().when(this.starter).startDnsServer();
24+
25+
this.starter.start();
26+
27+
verify(this.starter, never()).startDnsServer();
28+
verify(this.starter).startWebServer();
29+
}
30+
31+
32+
@Test
33+
void mustStartWhenInTestModeAndFlagForced() {
34+
35+
Starter.setMustStartFlagActive(true);
36+
37+
doNothing().when(this.starter).startWebServer();
38+
doNothing().when(this.starter).startDnsServer();
39+
40+
this.starter.start();
41+
42+
verify(this.starter).startDnsServer();
43+
verify(this.starter).startWebServer();
44+
45+
Starter.setMustStartFlagActive(false);
46+
}
47+
}

0 commit comments

Comments
 (0)