Skip to content

Commit 8803e0b

Browse files
artur-ciocanuArtur Ciocanusalaboy
authored
Adding logger to WorkflowActivityContext (#1534)
* Adding logger to WorkflowActivityContext Signed-off-by: Artur Ciocanu <[email protected]> * Fixing a styling issue Signed-off-by: Artur Ciocanu <[email protected]> * Add unit tests for workflow activity context Signed-off-by: Artur Ciocanu <[email protected]> * Add more unit tests to make Codecov happy Signed-off-by: Artur Ciocanu <[email protected]> * Add more unit tests Signed-off-by: Artur Ciocanu <[email protected]> * Improve code coverage Signed-off-by: Artur Ciocanu <[email protected]> * Improve test names Signed-off-by: Artur Ciocanu <[email protected]> --------- Signed-off-by: Artur Ciocanu <[email protected]> Co-authored-by: Artur Ciocanu <[email protected]> Co-authored-by: salaboy <[email protected]>
1 parent 8fa4e9d commit 8803e0b

File tree

5 files changed

+110
-2
lines changed

5 files changed

+110
-2
lines changed

dapr-spring/dapr-spring-boot-autoconfigure/src/test/java/io/dapr/spring/boot/autoconfigure/client/DaprClientAutoConfigurationTest.java

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@
2525
import org.springframework.boot.autoconfigure.AutoConfigurations;
2626
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2727

28-
import java.util.Map;
29-
3028
import static org.assertj.core.api.Assertions.assertThat;
3129
import static org.mockito.Mockito.verify;
3230
import static org.mockito.Mockito.when;
@@ -111,6 +109,18 @@ void shouldOverrideGrpcPortIfExists() {
111109
verify(builder).withPropertyOverride(Properties.GRPC_PORT, String.valueOf(grpcPort));
112110
}
113111

112+
@Test
113+
@DisplayName("Should override API token if it exists")
114+
void shouldOverrideApiTokenIfExists() {
115+
String apiToken = "token";
116+
117+
when(connectionDetails.getApiToken()).thenReturn(apiToken);
118+
119+
configuration.daprClientBuilder(connectionDetails);
120+
121+
verify(builder).withPropertyOverride(Properties.API_TOKEN, apiToken);
122+
}
123+
114124
@Test
115125
@DisplayName("Should override HTTP endpoint in properties if it exists")
116126
void shouldOverrideHttpEndpointInPropertiesIfExists() {
@@ -159,6 +169,18 @@ void shouldOverrideGrpcPortPropertiesIfExists() {
159169
assertThat(result.getValue(Properties.GRPC_PORT)).isEqualTo(grpcPort);
160170
}
161171

172+
@Test
173+
@DisplayName("Should override API token in properties if it exists")
174+
void shouldOverrideApiTokenPropertiesIfExists() {
175+
String apiToken = "token";
176+
177+
when(connectionDetails.getApiToken()).thenReturn(apiToken);
178+
179+
Properties result = configuration.createPropertiesFromConnectionDetails(connectionDetails);
180+
181+
assertThat(result.getValue(Properties.API_TOKEN)).isEqualTo(apiToken);
182+
}
183+
162184
private static class TestDaprClientAutoConfiguration extends DaprClientAutoConfiguration {
163185

164186
private final DaprClientBuilder daprClientBuilder;

sdk-workflows/src/main/java/io/dapr/workflows/WorkflowActivityContext.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,12 @@
1313

1414
package io.dapr.workflows;
1515

16+
import org.slf4j.Logger;
17+
1618
public interface WorkflowActivityContext {
1719

20+
Logger getLogger();
21+
1822
String getName();
1923

2024
String getTaskExecutionId();

sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowActivityContext.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,15 @@
1515

1616
import io.dapr.durabletask.TaskActivityContext;
1717
import io.dapr.workflows.WorkflowActivityContext;
18+
import org.slf4j.Logger;
19+
import org.slf4j.LoggerFactory;
1820

1921
/**
2022
* Wrapper for Durable Task Framework {@link TaskActivityContext}.
2123
*/
2224
class DefaultWorkflowActivityContext implements WorkflowActivityContext {
2325
private final TaskActivityContext innerContext;
26+
private final Logger logger;
2427

2528
/**
2629
* Constructor for WorkflowActivityContext.
@@ -29,10 +32,36 @@ class DefaultWorkflowActivityContext implements WorkflowActivityContext {
2932
* @throws IllegalArgumentException if context is null
3033
*/
3134
public DefaultWorkflowActivityContext(TaskActivityContext context) throws IllegalArgumentException {
35+
this(context, LoggerFactory.getLogger(WorkflowActivityContext.class));
36+
}
37+
38+
/**
39+
* Constructor for WorkflowActivityContext.
40+
*
41+
* @param context TaskActivityContext
42+
* @throws IllegalArgumentException if context is null
43+
*/
44+
public DefaultWorkflowActivityContext(TaskActivityContext context, Logger logger) throws IllegalArgumentException {
3245
if (context == null) {
3346
throw new IllegalArgumentException("Context cannot be null");
3447
}
48+
49+
if (logger == null) {
50+
throw new IllegalArgumentException("Logger cannot be null");
51+
}
52+
3553
this.innerContext = context;
54+
this.logger = logger;
55+
}
56+
57+
/**
58+
* Gets the logger for the current activity.
59+
*
60+
* @return the logger for the current activity
61+
*/
62+
@Override
63+
public Logger getLogger() {
64+
return this.logger;
3665
}
3766

3867
/**

sdk-workflows/src/main/java/io/dapr/workflows/runtime/DefaultWorkflowContext.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public DefaultWorkflowContext(TaskOrchestrationContext context, Logger logger)
6363
if (context == null) {
6464
throw new IllegalArgumentException("Context cannot be null");
6565
}
66+
6667
if (logger == null) {
6768
throw new IllegalArgumentException("Logger cannot be null");
6869
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package io.dapr.workflows.runtime;
2+
3+
import io.dapr.durabletask.TaskActivityContext;
4+
import org.junit.jupiter.api.DisplayName;
5+
import org.junit.jupiter.api.Test;
6+
7+
import static org.junit.jupiter.api.Assertions.*;
8+
import static org.mockito.ArgumentMatchers.any;
9+
import static org.mockito.Mockito.mock;
10+
import static org.mockito.Mockito.when;
11+
12+
class DefaultWorkflowActivityContextTest {
13+
14+
@Test
15+
@DisplayName("Should successfully create context and return correct values for all methods")
16+
void shouldSuccessfullyCreateContextAndReturnCorrectValuesForAllMethods() {
17+
TaskActivityContext mockInnerContext = mock(TaskActivityContext.class);
18+
DefaultWorkflowActivityContext context = new DefaultWorkflowActivityContext(mockInnerContext);
19+
20+
when(mockInnerContext.getName()).thenReturn("TestActivity");
21+
when(mockInnerContext.getInput(any())).thenReturn("TestInput");
22+
when(mockInnerContext.getTaskExecutionId()).thenReturn("TestExecutionId");
23+
24+
assertNotNull(context.getLogger());
25+
assertEquals("TestActivity", context.getName());
26+
27+
String input = context.getInput(String.class);
28+
29+
assertEquals("TestInput", input);
30+
assertEquals("TestExecutionId", context.getTaskExecutionId());
31+
}
32+
33+
@Test
34+
@DisplayName("Should throw IllegalArgumentException when context parameter is null")
35+
void shouldThrowIllegalArgumentExceptionWhenContextParameterIsNull() {
36+
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> {
37+
new DefaultWorkflowActivityContext(null);
38+
});
39+
assertEquals("Context cannot be null", exception.getMessage());
40+
}
41+
42+
@Test
43+
@DisplayName("Should throw IllegalArgumentException when logger parameter is null")
44+
void shouldThrowIllegalArgumentExceptionWhenLoggerParameterIsNull() {
45+
TaskActivityContext mockInnerContext = mock(TaskActivityContext.class);
46+
47+
IllegalArgumentException exception = assertThrows(IllegalArgumentException.class, () -> {
48+
new DefaultWorkflowActivityContext(mockInnerContext, null);
49+
});
50+
assertEquals("Logger cannot be null", exception.getMessage());
51+
}
52+
}

0 commit comments

Comments
 (0)