Skip to content

Commit d08699e

Browse files
committed
Simplify powertools-parameters-dynamodb GraalVM config and fix issues in unit tests.
1 parent b06bd64 commit d08699e

File tree

2 files changed

+33
-36
lines changed

2 files changed

+33
-36
lines changed

powertools-parameters/powertools-parameters-dynamodb/pom.xml

Lines changed: 18 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<project xmlns="http://maven.apache.org/POM/4.0.0"
3-
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
3+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
55
<modelVersion>4.0.0</modelVersion>
66

77
<parent>
@@ -58,6 +58,11 @@
5858
<artifactId>mockito-core</artifactId>
5959
<scope>test</scope>
6060
</dependency>
61+
<dependency>
62+
<groupId>org.mockito</groupId>
63+
<artifactId>mockito-junit-jupiter</artifactId>
64+
<scope>test</scope>
65+
</dependency>
6166
<dependency>
6267
<groupId>org.slf4j</groupId>
6368
<artifactId>slf4j-simple</artifactId>
@@ -97,7 +102,9 @@
97102
<artifactId>maven-surefire-plugin</artifactId>
98103
<version>3.5.3</version>
99104
<configuration>
100-
<argLine>-Dmockito.mock.maker=subclass -Dorg.graalvm.nativeimage.imagecode=agent -agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-parameters-dynamodb,experimental-class-define-support
105+
<argLine>
106+
-Dorg.graalvm.nativeimage.imagecode=agent
107+
-agentlib:native-image-agent=config-output-dir=src/main/resources/META-INF/native-image/software.amazon.lambda/powertools-parameters-dynamodb,experimental-class-define-support
101108
--add-opens java.base/java.util=ALL-UNNAMED
102109
--add-opens java.base/java.lang=ALL-UNNAMED
103110
</argLine>
@@ -114,6 +121,13 @@
114121
<artifactId>mockito-subclass</artifactId>
115122
<scope>test</scope>
116123
</dependency>
124+
125+
<!-- Required explicitly for @Captor ArgumentCaptor -->
126+
<dependency>
127+
<groupId>org.junit.jupiter</groupId>
128+
<artifactId>junit-jupiter-params</artifactId>
129+
<scope>test</scope>
130+
</dependency>
117131
</dependencies>
118132
<build>
119133
<plugins>
@@ -137,33 +151,11 @@
137151
<buildArg>--add-opens java.base/java.util=ALL-UNNAMED</buildArg>
138152
<buildArg>--add-opens java.base/java.lang=ALL-UNNAMED</buildArg>
139153
<buildArg>--no-fallback</buildArg>
140-
<buildArg>-Dorg.graalvm.nativeimage.imagecode=agent</buildArg>
141-
<buildArg>-H:ClassInitialization=net.bytebuddy.ClassFileVersion:rerun</buildArg>
142-
<buildArg>-H:ClassInitialization=net.bytebuddy.utility.dispatcher.JavaDispatcher:rerun</buildArg>
143-
<buildArg>-H:ClassInitialization=net.bytebuddy.utility.Invoker$Dispatcher:rerun</buildArg>
144-
<buildArg>-H:ClassInitialization=net.bytebuddy.utility.GraalImageCode:rerun</buildArg>
145-
<buildArg>--initialize-at-build-time=org.slf4j.simple.SimpleLogger</buildArg>
146-
<buildArg>--initialize-at-build-time=org.slf4j.LoggerFactory</buildArg>
147-
<buildArg>--initialize-at-build-time=org.junit.Ignore</buildArg>
148-
<buildArg>--initialize-at-build-time=java.lang.annotation.Annotation</buildArg>
149-
<buildArg>--initialize-at-build-time=org.junit.runners.model.FrameworkField</buildArg>
150-
<buildArg>--initialize-at-build-time=net.bytebuddy.description.type.TypeDescription$AbstractBase</buildArg>
151-
<buildArg>--initialize-at-build-time=net.bytebuddy.implementation.bind.annotation.Argument$BindingMechanic</buildArg>
152-
<buildArg>--initialize-at-build-time=net.bytebuddy.implementation.bind.annotation.Argument$BindingMechanic$1</buildArg>
153-
<buildArg>--initialize-at-build-time=net.bytebuddy.implementation.bind.annotation.Argument$BindingMechanic$2</buildArg>
154-
<buildArg>--initialize-at-build-time=net.bytebuddy.utility.dispatcher.JavaDispatcher$DynamicClassLoader</buildArg>
155-
<buildArg>--initialize-at-build-time=net.bytebuddy.description.method.MethodDescription$InDefinedShape$AbstractBase$ForLoadedExecutable</buildArg>
156-
<buildArg>--initialize-at-build-time=net.bytebuddy.description.type.TypeDescription$AbstractBase</buildArg>
157-
<buildArg>--initialize-at-build-time=net.bytebuddy.description.type.TypeDescription$ForLoadedType</buildArg>
158-
<buildArg>--initialize-at-build-time=net.bytebuddy.description.method.MethodDescription$ForLoadedMethod</buildArg>
159-
<buildArg>--initialize-at-build-time=net.bytebuddy.implementation.bind.annotation.Super$Instantiation$2</buildArg>
160-
<buildArg>
161-
--trace-class-initialization=net.bytebuddy.description.type.TypeDescription$ForLoadedType,net.bytebuddy.description.method.MethodDescription$ForLoadedMethod,net.bytebuddy.description.method.MethodDescription$InDefinedShape$AbstractBase$ForLoadedExecutable
162-
</buildArg>
163154
<buildArg>--verbose</buildArg>
164155
<buildArg>--native-image-info</buildArg>
165156
<buildArg>-H:+UnlockExperimentalVMOptions</buildArg>
166157
<buildArg>-H:Log=registerResource:5</buildArg>
158+
<buildArg>-H:+ReportExceptionStackTraces</buildArg>
167159
</buildArgs>
168160
</configuration>
169161
</plugin>

powertools-parameters/powertools-parameters-dynamodb/src/test/java/software/amazon/lambda/powertools/parameters/dynamodb/DynamoDbProviderTest.java

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,17 @@
2323
import java.util.HashMap;
2424
import java.util.Map;
2525
import java.util.UUID;
26+
2627
import org.junit.jupiter.api.Assertions;
2728
import org.junit.jupiter.api.BeforeEach;
2829
import org.junit.jupiter.api.Test;
30+
import org.junit.jupiter.api.extension.ExtendWith;
2931
import org.mockito.ArgumentCaptor;
3032
import org.mockito.Captor;
3133
import org.mockito.Mock;
3234
import org.mockito.Mockito;
35+
import org.mockito.junit.jupiter.MockitoExtension;
36+
3337
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
3438
import software.amazon.awssdk.services.dynamodb.model.AttributeValue;
3539
import software.amazon.awssdk.services.dynamodb.model.GetItemRequest;
@@ -40,17 +44,23 @@
4044
import software.amazon.lambda.powertools.parameters.dynamodb.exception.DynamoDbProviderSchemaException;
4145
import software.amazon.lambda.powertools.parameters.transform.TransformationManager;
4246

47+
@ExtendWith(MockitoExtension.class)
4348
public class DynamoDbProviderTest {
4449

4550
private final String tableName = "ddb-test-table";
51+
4652
@Mock
4753
DynamoDbClient client;
54+
4855
@Mock
4956
TransformationManager transformationManager;
57+
5058
@Captor
5159
ArgumentCaptor<GetItemRequest> getItemValueCaptor;
60+
5261
@Captor
5362
ArgumentCaptor<QueryRequest> queryRequestCaptor;
63+
5464
private DynamoDbProvider provider;
5565

5666
@BeforeEach
@@ -60,7 +70,6 @@ public void init() {
6070
provider = new DynamoDbProvider(cacheManager, transformationManager, client, tableName);
6171
}
6272

63-
6473
@Test
6574
public void getValue() {
6675

@@ -84,7 +93,6 @@ public void getValue() {
8493
assertThat(getItemValueCaptor.getValue().key().get("id").s()).isEqualTo(key);
8594
}
8695

87-
8896
@Test
8997
public void getValueWithNullResultsReturnsNull() {
9098
// Arrange
@@ -124,13 +132,11 @@ public void getValueWithMalformedRowThrows() {
124132
.item(responseData)
125133
.build());
126134
// Act
127-
Assertions.assertThrows(DynamoDbProviderSchemaException.class, () ->
128-
{
135+
Assertions.assertThrows(DynamoDbProviderSchemaException.class, () -> {
129136
provider.getValue(key);
130137
});
131138
}
132139

133-
134140
@Test
135141
public void getValues() {
136142

@@ -191,8 +197,7 @@ public void getMultipleValuesMissingSortKey_throwsException() {
191197
Mockito.when(client.query(queryRequestCaptor.capture())).thenReturn(response);
192198

193199
// Assert
194-
Assertions.assertThrows(DynamoDbProviderSchemaException.class, () ->
195-
{
200+
Assertions.assertThrows(DynamoDbProviderSchemaException.class, () -> {
196201
// Act
197202
provider.getMultipleValues(key);
198203
});
@@ -212,8 +217,7 @@ public void getValuesWithMalformedRowThrows() {
212217
Mockito.when(client.query(queryRequestCaptor.capture())).thenReturn(response);
213218

214219
// Assert
215-
Assertions.assertThrows(DynamoDbProviderSchemaException.class, () ->
216-
{
220+
Assertions.assertThrows(DynamoDbProviderSchemaException.class, () -> {
217221
// Act
218222
provider.getMultipleValues(key);
219223
});
@@ -227,14 +231,15 @@ public void testDynamoDBBuilderMissingTable_throwsException() {
227231
.withCacheManager(new CacheManager())
228232
.build());
229233
}
234+
230235
@Test
231236
public void testDynamoDBBuilder_withoutParameter_shouldHaveDefaultTransformationManager() {
232237

233238
// Act
234239
DynamoDbProvider dynamoDbProvider = DynamoDbProvider.builder().withTable("test-table")
235240
.build();
236241
// Assert
237-
assertDoesNotThrow(()->dynamoDbProvider.withTransformation(json));
242+
assertDoesNotThrow(() -> dynamoDbProvider.withTransformation(json));
238243
}
239244

240245
}

0 commit comments

Comments
 (0)