Skip to content

Commit b89ef70

Browse files
committed
Remove all global state in from setProperty
Signed-off-by: Artur Souza <asouza.pro@gmail.com>
1 parent cedaebc commit b89ef70

File tree

36 files changed

+244
-254
lines changed

36 files changed

+244
-254
lines changed

.github/workflows/build.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,9 @@ jobs:
3838
GOARCH: amd64
3939
GOPROXY: https://proxy.golang.org
4040
JDK_VER: ${{ matrix.java }}
41-
DAPR_CLI_VER: 1.14.0-rc.6
42-
DAPR_RUNTIME_VER: 1.14.0-rc.6
43-
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.14.0-rc.4/install/install.sh
41+
DAPR_CLI_VER: 1.14.0
42+
DAPR_RUNTIME_VER: 1.14.4
43+
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.14.0/install/install.sh
4444
DAPR_CLI_REF:
4545
DAPR_REF:
4646
TOXIPROXY_URL: https://github.com/Shopify/toxiproxy/releases/download/v2.5.0/toxiproxy-server-linux-amd64

.github/workflows/validate.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ jobs:
3737
GOARCH: amd64
3838
GOPROXY: https://proxy.golang.org
3939
JDK_VER: ${{ matrix.java }}
40-
DAPR_CLI_VER: 1.14.0-rc.6
41-
DAPR_RUNTIME_VER: 1.14.0-rc.6
42-
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.14.0-rc.3/install/install.sh
40+
DAPR_CLI_VER: 1.14.0
41+
DAPR_RUNTIME_VER: 1.14.4
42+
DAPR_INSTALL_URL: https://raw.githubusercontent.com/dapr/cli/v1.14.0/install/install.sh
4343
DAPR_CLI_REF:
4444
DAPR_REF:
4545
steps:

dapr-spring/dapr-spring-boot-autoconfigure/src/main/java/io/dapr/spring/boot/autoconfigure/client/DaprClientAutoConfiguration.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,18 @@ DaprConnectionDetails daprConnectionDetails(DaprClientProperties properties) {
3737
@ConditionalOnMissingBean
3838
DaprClientBuilder daprClientBuilder(DaprConnectionDetails daprConnectionDetails) {
3939
DaprClientBuilder builder = new DaprClientBuilder();
40-
builder.withPropertyOverride(Properties.HTTP_ENDPOINT, daprConnectionDetails.httpEndpoint());
41-
builder.withPropertyOverride(Properties.GRPC_ENDPOINT, daprConnectionDetails.grpcEndpoint());
42-
builder.withPropertyOverride(Properties.HTTP_PORT, String.valueOf(daprConnectionDetails.httpPort()));
43-
builder.withPropertyOverride(Properties.GRPC_PORT, String.valueOf(daprConnectionDetails.grpcPort()));
40+
if (daprConnectionDetails.httpEndpoint() != null) {
41+
builder.withPropertyOverride(Properties.HTTP_ENDPOINT, daprConnectionDetails.httpEndpoint());
42+
}
43+
if (daprConnectionDetails.grpcEndpoint() != null) {
44+
builder.withPropertyOverride(Properties.GRPC_ENDPOINT, daprConnectionDetails.grpcEndpoint());
45+
}
46+
if (daprConnectionDetails.httpPort() != null) {
47+
builder.withPropertyOverride(Properties.HTTP_PORT, String.valueOf(daprConnectionDetails.httpPort()));
48+
}
49+
if (daprConnectionDetails.grpcPort() != null) {
50+
builder.withPropertyOverride(Properties.GRPC_PORT, String.valueOf(daprConnectionDetails.grpcPort()));
51+
}
4452
return builder;
4553
}
4654

sdk-actors/src/main/java/io/dapr/actors/client/ActorClient.java

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,13 @@
2020
import io.grpc.Channel;
2121
import io.grpc.ManagedChannel;
2222
import io.grpc.ManagedChannelBuilder;
23-
import org.slf4j.Logger;
24-
import org.slf4j.LoggerFactory;
2523
import reactor.core.publisher.Mono;
2624

2725
/**
2826
* Holds a client for Dapr sidecar communication. ActorClient should be reused.
2927
*/
3028
public class ActorClient implements AutoCloseable {
3129

32-
private static final Logger LOGGER = LoggerFactory.getLogger(ActorClient.class);
33-
3430
/**
3531
* gRPC channel for communication with Dapr sidecar.
3632
*/
@@ -45,16 +41,35 @@ public class ActorClient implements AutoCloseable {
4541
* Instantiates a new channel for Dapr sidecar communication.
4642
*/
4743
public ActorClient() {
48-
this(null);
44+
this(new Properties(), null);
4945
}
5046

5147
/**
5248
* Instantiates a new channel for Dapr sidecar communication.
5349
*
5450
* @param resiliencyOptions Client resiliency options.
5551
*/
56-
private ActorClient(ResiliencyOptions resiliencyOptions) {
57-
this(buildManagedChannel(), resiliencyOptions);
52+
public ActorClient(ResiliencyOptions resiliencyOptions) {
53+
this(new Properties(), resiliencyOptions);
54+
}
55+
56+
/**
57+
* Instantiates a new channel for Dapr sidecar communication.
58+
*
59+
* @param overrideProperties Override properties.
60+
*/
61+
public ActorClient(Properties overrideProperties) {
62+
this(buildManagedChannel(overrideProperties), null);
63+
}
64+
65+
/**
66+
* Instantiates a new channel for Dapr sidecar communication.
67+
*
68+
* @param overrideProperties Override properties.
69+
* @param resiliencyOptions Client resiliency options.
70+
*/
71+
public ActorClient(Properties overrideProperties, ResiliencyOptions resiliencyOptions) {
72+
this(buildManagedChannel(overrideProperties), resiliencyOptions);
5873
}
5974

6075
/**
@@ -96,15 +111,18 @@ public void close() {
96111
/**
97112
* Creates a GRPC managed channel (or null, if not applicable).
98113
*
114+
* @param overrideProperties Overrides
99115
* @return GRPC managed channel or null.
100116
*/
101-
private static ManagedChannel buildManagedChannel() {
102-
int port = Properties.GRPC_PORT.get();
117+
private static ManagedChannel buildManagedChannel(Properties overrideProperties) {
118+
int port = overrideProperties.getValue(Properties.GRPC_PORT);
103119
if (port <= 0) {
104120
throw new IllegalArgumentException("Invalid port.");
105121
}
106122

107-
return ManagedChannelBuilder.forAddress(Properties.SIDECAR_IP.get(), port)
123+
var sidecarHost = overrideProperties.getValue(Properties.SIDECAR_IP);
124+
125+
return ManagedChannelBuilder.forAddress(sidecarHost, port)
108126
.usePlaintext()
109127
.userAgent(Version.getSdkVersion())
110128
.build();

sdk-tests/src/test/java/io/dapr/it/BaseIT.java

Lines changed: 10 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
import io.dapr.actors.client.ActorClient;
1717
import io.dapr.client.resiliency.ResiliencyOptions;
18+
import io.dapr.config.Properties;
1819
import org.apache.commons.lang3.tuple.ImmutablePair;
1920
import org.junit.jupiter.api.AfterAll;
2021

@@ -46,7 +47,7 @@ protected static DaprRun startDaprApp(
4647
Class serviceClass,
4748
Boolean useAppPort,
4849
int maxWaitMilliseconds) throws Exception {
49-
return startDaprApp(testName, successMessage, serviceClass, useAppPort, maxWaitMilliseconds, GRPC);
50+
return startDaprApp(testName, successMessage, serviceClass, useAppPort, maxWaitMilliseconds, HTTP);
5051
}
5152

5253
protected static DaprRun startDaprApp(
@@ -55,7 +56,7 @@ protected static DaprRun startDaprApp(
5556
Class serviceClass,
5657
AppRun.AppProtocol appProtocol,
5758
int maxWaitMilliseconds) throws Exception {
58-
return startDaprApp(testName, successMessage, serviceClass, true, maxWaitMilliseconds, GRPC, appProtocol);
59+
return startDaprApp(testName, successMessage, serviceClass, true, maxWaitMilliseconds, appProtocol);
5960
}
6061

6162
protected static DaprRun startDaprApp(
@@ -64,25 +65,6 @@ protected static DaprRun startDaprApp(
6465
Class serviceClass,
6566
Boolean useAppPort,
6667
int maxWaitMilliseconds,
67-
AppRun.AppProtocol protocol) throws Exception {
68-
return startDaprApp(
69-
testName,
70-
successMessage,
71-
serviceClass,
72-
useAppPort,
73-
true,
74-
maxWaitMilliseconds,
75-
protocol,
76-
HTTP);
77-
}
78-
79-
protected static DaprRun startDaprApp(
80-
String testName,
81-
String successMessage,
82-
Class serviceClass,
83-
Boolean useAppPort,
84-
int maxWaitMilliseconds,
85-
AppRun.AppProtocol protocol,
8668
AppRun.AppProtocol appProtocol) throws Exception {
8769
return startDaprApp(
8870
testName,
@@ -91,7 +73,6 @@ protected static DaprRun startDaprApp(
9173
useAppPort,
9274
true,
9375
maxWaitMilliseconds,
94-
protocol,
9576
appProtocol);
9677
}
9778

@@ -105,7 +86,6 @@ protected static DaprRun startDaprApp(
10586
false,
10687
true,
10788
maxWaitMilliseconds,
108-
GRPC,
10989
HTTP);
11090
}
11191

@@ -116,7 +96,6 @@ protected static DaprRun startDaprApp(
11696
Boolean useAppPort,
11797
Boolean useDaprPorts,
11898
int maxWaitMilliseconds,
119-
AppRun.AppProtocol protocol,
12099
AppRun.AppProtocol appProtocol) throws Exception {
121100
DaprRun.Builder builder = new DaprRun.Builder(
122101
testName,
@@ -128,7 +107,6 @@ protected static DaprRun startDaprApp(
128107
TO_BE_STOPPED.add(run);
129108
DAPR_RUN_BUILDERS.put(run.getAppName(), builder);
130109
run.start();
131-
run.use();
132110
return run;
133111
}
134112

@@ -138,24 +116,12 @@ protected static ImmutablePair<AppRun, DaprRun> startSplitDaprAndApp(
138116
Class serviceClass,
139117
Boolean useAppPort,
140118
int maxWaitMilliseconds) throws Exception {
141-
return startSplitDaprAndApp(
142-
testName, successMessage, serviceClass, useAppPort, maxWaitMilliseconds, AppRun.AppProtocol.GRPC);
143-
}
144-
145-
protected static ImmutablePair<AppRun, DaprRun> startSplitDaprAndApp(
146-
String testName,
147-
String successMessage,
148-
Class serviceClass,
149-
Boolean useAppPort,
150-
int maxWaitMilliseconds,
151-
AppRun.AppProtocol protocol) throws Exception {
152119
return startSplitDaprAndApp(
153120
testName,
154121
successMessage,
155122
serviceClass,
156123
useAppPort,
157124
maxWaitMilliseconds,
158-
protocol,
159125
HTTP);
160126
}
161127

@@ -165,7 +131,6 @@ protected static ImmutablePair<AppRun, DaprRun> startSplitDaprAndApp(
165131
Class serviceClass,
166132
Boolean useAppPort,
167133
int maxWaitMilliseconds,
168-
AppRun.AppProtocol protocol,
169134
AppRun.AppProtocol appProtocol) throws Exception {
170135
DaprRun.Builder builder = new DaprRun.Builder(
171136
testName,
@@ -179,10 +144,14 @@ protected static ImmutablePair<AppRun, DaprRun> startSplitDaprAndApp(
179144
DAPR_RUN_BUILDERS.put(runs.right.getAppName(), builder);
180145
runs.left.start();
181146
runs.right.start();
182-
runs.right.use();
183147
return runs;
184148
}
185149

150+
protected static <T extends AutoCloseable> T deferClose(T object) {
151+
TO_BE_CLOSED.add(object);
152+
return object;
153+
}
154+
186155
@AfterAll
187156
public static void cleanUp() throws Exception {
188157
while (!TO_BE_CLOSED.isEmpty()) {
@@ -194,8 +163,8 @@ public static void cleanUp() throws Exception {
194163
}
195164
}
196165

197-
protected static ActorClient newActorClient() {
198-
return newActorClient(null);
166+
protected static ActorClient newActorClient(Properties properties) {
167+
return new ActorClient(properties, null);
199168
}
200169

201170
protected static ActorClient newActorClient(ResiliencyOptions resiliencyOptions) throws RuntimeException {

sdk-tests/src/test/java/io/dapr/it/DaprPorts.java

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,16 @@
1414
package io.dapr.it;
1515

1616
import io.dapr.config.Properties;
17+
import io.dapr.config.Property;
1718

1819
import java.io.IOException;
1920
import java.net.ServerSocket;
2021
import java.util.ArrayList;
22+
import java.util.Collections;
23+
import java.util.HashMap;
2124
import java.util.HashSet;
2225
import java.util.List;
26+
import java.util.Map;
2327
import java.util.Set;
2428

2529
public class DaprPorts {
@@ -30,10 +34,18 @@ public class DaprPorts {
3034

3135
private final Integer appPort;
3236

37+
private final Map<Property<?>, String> overrides;
38+
3339
private DaprPorts(Integer appPort, Integer httpPort, Integer grpcPort) {
3440
this.grpcPort = grpcPort;
3541
this.httpPort = httpPort;
3642
this.appPort = appPort;
43+
this.overrides = Collections.unmodifiableMap(new HashMap<>(){{
44+
put(Properties.GRPC_PORT, grpcPort.toString());
45+
put(Properties.HTTP_PORT, httpPort.toString());
46+
put(Properties.HTTP_ENDPOINT, "http://127.0.0.1:" + httpPort);
47+
put(Properties.GRPC_ENDPOINT, "127.0.0.1:" + grpcPort);
48+
}});
3749
}
3850

3951
public static DaprPorts build(boolean appPort, boolean httpPort, boolean grpcPort) {
@@ -48,20 +60,6 @@ public static DaprPorts build(boolean appPort, boolean httpPort, boolean grpcPor
4860
}
4961
}
5062

51-
public void use() {
52-
if (this.httpPort != null) {
53-
System.getProperties().setProperty(Properties.HTTP_PORT.getName(), String.valueOf(this.httpPort));
54-
System.getProperties().setProperty(
55-
Properties.HTTP_ENDPOINT.getName(), "http://127.0.0.1:" + this.httpPort);
56-
}
57-
58-
if (this.grpcPort != null) {
59-
System.getProperties().setProperty(Properties.GRPC_PORT.getName(), String.valueOf(this.grpcPort));
60-
System.getProperties().setProperty(
61-
Properties.GRPC_ENDPOINT.getName(), "127.0.0.1:" + this.grpcPort);
62-
}
63-
}
64-
6563
public Integer getGrpcPort() {
6664
return grpcPort;
6765
}
@@ -74,6 +72,10 @@ public Integer getAppPort() {
7472
return appPort;
7573
}
7674

75+
public Map<Property<?>, String> getPropertyOverrides() {
76+
return this.overrides;
77+
}
78+
7779
private static Set<Integer> findFreePorts(int n) throws IOException {
7880
Set<Integer> output = new HashSet<>();
7981
for (int i = 0; i < n;) {

sdk-tests/src/test/java/io/dapr/it/DaprRun.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,11 @@
1414
package io.dapr.it;
1515

1616
import com.google.protobuf.Empty;
17+
import io.dapr.actors.client.ActorClient;
18+
import io.dapr.client.DaprClientBuilder;
19+
import io.dapr.client.resiliency.ResiliencyOptions;
1720
import io.dapr.config.Properties;
21+
import io.dapr.config.Property;
1822
import io.dapr.v1.AppCallbackHealthCheckGrpc;
1923
import io.grpc.ManagedChannel;
2024
import io.grpc.ManagedChannelBuilder;
@@ -24,6 +28,7 @@
2428
import org.apache.commons.lang3.tuple.ImmutablePair;
2529

2630
import java.io.IOException;
31+
import java.util.Map;
2732
import java.util.concurrent.TimeUnit;
2833
import java.util.concurrent.atomic.AtomicBoolean;
2934
import java.util.function.Supplier;
@@ -141,8 +146,20 @@ public void stop() throws InterruptedException, IOException {
141146
}
142147
}
143148

144-
public void use() {
145-
this.ports.use();
149+
public Map<Property<?>, String> getPropertyOverrides() {
150+
return this.ports.getPropertyOverrides();
151+
}
152+
153+
public DaprClientBuilder newDaprClientBuilder() {
154+
return new DaprClientBuilder().withPropertyOverrides(this.getPropertyOverrides());
155+
}
156+
157+
public ActorClient newActorClient() {
158+
return this.newActorClient(null);
159+
}
160+
161+
public ActorClient newActorClient(ResiliencyOptions resiliencyOptions) {
162+
return new ActorClient(new Properties(this.getPropertyOverrides()), resiliencyOptions);
146163
}
147164

148165
public void waitForAppHealth(int maxWaitMilliseconds) throws InterruptedException {

0 commit comments

Comments
 (0)