Skip to content

Commit 68a4758

Browse files
authored
Config module domain refactoring (#470)
* refactoring model entity * refactoring noRemoteServers entity model * tests adjustments * setup validations * fixing tests * fixing test * fixing test * release notes * [Gradle Release Plugin] - new version commit: '3.19.2-snapshot'.
1 parent ae5ecb2 commit 68a4758

File tree

18 files changed

+153
-47
lines changed

18 files changed

+153
-47
lines changed

RELEASE-NOTES.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
## 3.19.2
2+
* Config module domain refactoring, see #470
3+
14
## 3.19.1
25
* Resources usage optimization identified at #455
36

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
version=3.19.1-snapshot
1+
version=3.19.2-snapshot

src/main/java/com/mageddo/dnsproxyserver/config/CircuitBreaker.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,8 @@ public class CircuitBreaker {
2525
* @see dev.failsafe.CircuitBreakerBuilder#withDelay(Duration)
2626
*/
2727
private Duration testDelay;
28+
29+
public static CircuitBreaker empty() {
30+
return CircuitBreaker.builder().build();
31+
}
2832
}

src/main/java/com/mageddo/dnsproxyserver/config/Config.java

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.mageddo.dnsproxyserver.config;
22

3+
import com.fasterxml.jackson.annotation.JsonIgnore;
34
import com.mageddo.dnsserver.SimpleServer;
45
import com.mageddo.net.IP;
56
import com.mageddo.net.IpAddr;
@@ -25,7 +26,6 @@
2526
import static com.mageddo.commons.lang.Objects.mapOrNull;
2627

2728
/**
28-
*
2929
* @see com.mageddo.dnsproxyserver.config.application.ConfigService
3030
*/
3131
@Value
@@ -67,8 +67,6 @@ public class Config {
6767

6868
private Boolean resolvConfOverrideNameServers;
6969

70-
private Boolean noRemoteServers;
71-
7270
private Integer noEntriesResponseCode;
7371

7472
private Boolean dockerSolverHostMachineFallbackActive;
@@ -79,6 +77,14 @@ public class Config {
7977

8078
private SolverRemote solverRemote;
8179

80+
@JsonIgnore
81+
public Boolean isSolverRemoteActive() {
82+
if (this.solverRemote == null) {
83+
return null;
84+
}
85+
return this.solverRemote.getActive();
86+
}
87+
8288
public void resetConfigFile() {
8389
try {
8490
Files.deleteIfExists(this.getConfigPath());
@@ -87,6 +93,14 @@ public void resetConfigFile() {
8793
}
8894
}
8995

96+
@JsonIgnore
97+
public CircuitBreaker getSolverRemoteCircuitBreaker() {
98+
if (this.solverRemote == null) {
99+
return null;
100+
}
101+
return this.solverRemote.getCircuitBreaker();
102+
}
103+
90104
@Value
91105
public static class Env {
92106

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
package com.mageddo.dnsproxyserver.config;
22

33
import lombok.Builder;
4-
import lombok.NonNull;
54
import lombok.Value;
65

76
@Value
87
@Builder
98
public class SolverRemote {
10-
@NonNull
9+
10+
private Boolean active;
11+
1112
private CircuitBreaker circuitBreaker;
1213
}

src/main/java/com/mageddo/dnsproxyserver/config/dataprovider/ConfigDAOCmdArgs.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.mageddo.dnsproxyserver.config.dataprovider;
22

33
import com.mageddo.dnsproxyserver.config.Config;
4+
import com.mageddo.dnsproxyserver.config.SolverRemote;
45
import com.mageddo.dnsproxyserver.config.dataprovider.mapper.ConfigFieldsValuesMapper;
56
import com.mageddo.dnsproxyserver.config.dataprovider.vo.ConfigFlag;
7+
import com.mageddo.dnsproxyserver.utils.Booleans;
68
import com.mageddo.utils.Files;
79
import lombok.RequiredArgsConstructor;
810

@@ -42,7 +44,6 @@ static Config toConfig(ConfigFlag config) {
4244
.logLevel(ConfigFieldsValuesMapper.mapLogLevelFrom(config.getLogLevel()))
4345
.dockerHost(config.getDockerHost())
4446
.hostMachineHostname(config.getHostMachineHostname())
45-
.noRemoteServers(config.getNoRemoteServers())
4647
.dpsNetworkAutoConnect(config.getDpsNetworkAutoConnect())
4748
.noEntriesResponseCode(config.getNoEntriesResponseCode())
4849
.dockerSolverHostMachineFallbackActive(config.getDockerSolverHostMachineFallbackActive())
@@ -51,6 +52,11 @@ static Config toConfig(ConfigFlag config) {
5152
.webServerPort(config.getWebServerPort())
5253
.dnsServerPort(config.getDnsServerPort())
5354
.defaultDns(config.getDefaultDns())
55+
.solverRemote(SolverRemote
56+
.builder()
57+
.active(Booleans.reverseWhenNotNull(config.getNoRemoteServers()))
58+
.build()
59+
)
5460
.build();
5561
}
5662

src/main/java/com/mageddo/dnsproxyserver/config/dataprovider/ConfigDAOEnv.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package com.mageddo.dnsproxyserver.config.dataprovider;
22

33
import com.mageddo.dnsproxyserver.config.Config;
4+
import com.mageddo.dnsproxyserver.config.SolverRemote;
45
import com.mageddo.dnsproxyserver.config.dataprovider.mapper.ConfigFieldsValuesMapper;
56
import com.mageddo.dnsproxyserver.config.dataprovider.vo.ConfigEnv;
7+
import com.mageddo.dnsproxyserver.utils.Booleans;
68
import lombok.RequiredArgsConstructor;
79

810
import javax.inject.Inject;
@@ -34,13 +36,16 @@ static Config toConfig(ConfigEnv config) {
3436
.logLevel(ConfigFieldsValuesMapper.mapLogLevelFrom(config.getLogLevel()))
3537
.dockerHost(config.getDockerHost())
3638
.hostMachineHostname(config.getHostMachineHostname())
37-
.noRemoteServers(config.getNoRemoteServers())
3839
.dpsNetworkAutoConnect(config.getDpsNetworkAutoConnect())
3940
.noEntriesResponseCode(config.getNoEntriesResponseCode())
4041
.dockerSolverHostMachineFallbackActive(config.getDockerSolverHostMachineFallbackActive())
4142
.resolvConfOverrideNameServers(config.getResolvConfOverrideNameServers())
4243
.mustConfigureDpsNetwork(config.getDpsNetwork())
4344
.resolvConfPaths(config.getResolvConfPath())
45+
.solverRemote(SolverRemote
46+
.builder()
47+
.active(Booleans.reverseWhenNotNull(config.getNoRemoteServers()))
48+
.build())
4449
.build();
4550
}
4651

src/main/java/com/mageddo/dnsproxyserver/config/dataprovider/ConfigDAOJson.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.mageddo.dnsproxyserver.config.SolverRemote;
66
import com.mageddo.dnsproxyserver.config.dataprovider.mapper.ConfigFieldsValuesMapper;
77
import com.mageddo.dnsproxyserver.config.dataprovider.vo.ConfigJson;
8+
import com.mageddo.dnsproxyserver.utils.Booleans;
89
import com.mageddo.utils.Files;
910
import com.mageddo.utils.Runtime;
1011
import com.mageddo.utils.Tests;
@@ -80,7 +81,6 @@ Config toConfig(ConfigJson json, Path configFileAbsolutePath) {
8081
.serverProtocol(json.getServerProtocol())
8182
.dockerHost(json.getDockerHost())
8283
.resolvConfOverrideNameServers(json.getResolvConfOverrideNameServers())
83-
.noRemoteServers(json.getNoRemoteServers())
8484
.noEntriesResponseCode(json.getNoEntriesResponseCode())
8585
.dockerSolverHostMachineFallbackActive(json.getDockerSolverHostMachineFallbackActive())
8686
.configPath(configFileAbsolutePath)
@@ -99,6 +99,7 @@ static SolverRemote toSolverRemote(ConfigJson json) {
9999
}
100100
return SolverRemote
101101
.builder()
102+
.active(Booleans.reverseWhenNotNull(json.getNoRemoteServers()))
102103
.circuitBreaker(CircuitBreaker
103104
.builder()
104105
.failureThreshold(circuitBreaker.getFailureThreshold())

src/main/java/com/mageddo/dnsproxyserver/config/mapper/ConfigMapper.java

Lines changed: 10 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
import com.mageddo.dnsproxyserver.config.Config;
55
import com.mageddo.dnsproxyserver.config.SolverRemote;
66
import com.mageddo.dnsproxyserver.config.dataprovider.ConfigPropDAO;
7-
import com.mageddo.dnsserver.SimpleServer;
7+
import com.mageddo.dnsproxyserver.config.validator.ConfigValidator;
88
import com.mageddo.dnsproxyserver.utils.Numbers;
9+
import com.mageddo.dnsserver.SimpleServer;
910
import com.mageddo.net.IpAddr;
1011
import org.apache.commons.lang3.SystemUtils;
11-
import org.apache.commons.lang3.Validate;
1212

1313
import java.net.URI;
1414
import java.time.Duration;
@@ -46,12 +46,16 @@ private static Config mapFrom0(List<Config> configs) {
4646
.serverProtocol(firstNonNullRequiring(mapField(Config::getServerProtocol, configs)))
4747
.dockerHost(firstNonNullRequiring(mapField(Config::getDockerHost, configs)))
4848
.resolvConfOverrideNameServers(firstNonNullRequiring(mapField(Config::getResolvConfOverrideNameServers, configs)))
49-
.noRemoteServers(firstNonNullRequiring(mapField(Config::getNoRemoteServers, configs)))
5049
.noEntriesResponseCode(firstNonNullRequiring(mapField(Config::getNoEntriesResponseCode, configs)))
5150
.dockerSolverHostMachineFallbackActive(firstNonNullRequiring(mapField(Config::getDockerSolverHostMachineFallbackActive, configs)))
52-
.solverRemote(firstNonNullRequiring(mapField(Config::getSolverRemote, configs)))
51+
.solverRemote(SolverRemote
52+
.builder()
53+
.active(firstNonNullRequiring(mapField(Config::isSolverRemoteActive, configs)))
54+
.circuitBreaker(firstNonNullRequiring(mapField(Config::getSolverRemoteCircuitBreaker, configs)))
55+
.build()
56+
)
5357
.build();
54-
validate(config);
58+
ConfigValidator.validate(config);
5559
return config;
5660
}
5761

@@ -63,6 +67,7 @@ private static Config buildDefault() {
6367
.remoteDnsServers(Collections.singletonList(IpAddr.of("8.8.8.8:53")))
6468
.solverRemote(SolverRemote
6569
.builder()
70+
.active(true)
6671
.circuitBreaker(defaultCircuitBreaker())
6772
.build()
6873
)
@@ -79,25 +84,6 @@ public static CircuitBreaker defaultCircuitBreaker() {
7984
.build();
8085
}
8186

82-
private static void validate(Config config) {
83-
Validate.notNull(config.getVersion());
84-
Validate.notNull(config.getRemoteDnsServers());
85-
Validate.isTrue(config.getWebServerPort() != null && config.getWebServerPort() > 0);
86-
Validate.isTrue(config.getDnsServerPort() != null && config.getDnsServerPort() > 0);
87-
Validate.notNull(config.getLogFile());
88-
Validate.notNull(config.getRegisterContainerNames());
89-
Validate.notNull(config.getHostMachineHostname());
90-
Validate.notNull(config.getDomain());
91-
Validate.notNull(config.getMustConfigureDpsNetwork());
92-
Validate.notNull(config.getDpsNetworkAutoConnect());
93-
Validate.notNull(config.getResolvConfPaths());
94-
Validate.notNull(config.getSolverRemote());
95-
Validate.notNull(config.getDockerSolverHostMachineFallbackActive());
96-
Validate.notNull(config.getNoRemoteServers());
97-
Validate.notNull(config.getServerProtocol());
98-
Validate.notNull(config.getResolvConfOverrideNameServers());
99-
}
100-
10187
private static URI buildDefaultDockerHost() {
10288
if (SystemUtils.IS_OS_LINUX || SystemUtils.IS_OS_MAC) {
10389
return URI.create("unix:///var/run/docker.sock");
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.mageddo.dnsproxyserver.config.validator;
2+
3+
import com.mageddo.dnsproxyserver.config.CircuitBreaker;
4+
import org.apache.commons.lang3.Validate;
5+
6+
import static com.mageddo.dnsproxyserver.utils.Numbers.positiveOrNull;
7+
8+
public class CircuitBreakerValidator {
9+
public static void validate(CircuitBreaker circuit) {
10+
Validate.notNull(positiveOrNull(circuit.getFailureThreshold()), genMsg("failure theshold must be a positive number"));
11+
Validate.notNull(positiveOrNull(circuit.getSuccessThreshold()), genMsg("success theshold must be positive number"));
12+
Validate.notNull(positiveOrNull(circuit.getFailureThresholdCapacity()), genMsg("success theshold capacity must be positive number"));
13+
Validate.notNull(circuit.getTestDelay(), genMsg("test delay must be not null"));
14+
}
15+
16+
private static String genMsg(String msg) {
17+
return "Circuit Breaker: " + msg;
18+
}
19+
}

0 commit comments

Comments
 (0)