Skip to content

Commit ef4968c

Browse files
authored
Merge branch 'master' into dependabot/gradle/com.google.errorprone-error_prone_core-2.43.0
2 parents 7c3d283 + f5709ab commit ef4968c

22 files changed

+223
-266
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ jobs:
8585
build
8686
8787
- name: Publish Test Report
88-
uses: mikepenz/action-junit-report@v5
88+
uses: mikepenz/action-junit-report@v6
8989
if: ${{ !cancelled() }} # always run even if the previous step fails
9090
with:
9191
report_paths: '**/build/test-results/test/TEST-*.xml'

gradle/libs.versions.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ jmh = "1.37"
44
[libraries]
55
assertj-core = { group = "org.assertj", name = "assertj-core", version = "3.27.6" }
66
jspecify = { group = "org.jspecify", name = "jspecify", version = "1.0.0" }
7-
jackson-databind = { group = "com.fasterxml.jackson.core", name = "jackson-databind", version = "2.20.0" }
7+
jackson-databind = { group = "tools.jackson.core", name = "jackson-databind", version = "3.0.2" }
88
junit-api = { group = "org.junit.jupiter", name = "junit-jupiter-api" }
9-
junit-bom = { group = "org.junit", name = "junit-bom", version = "6.0.0" }
9+
junit-bom = { group = "org.junit", name = "junit-bom", version = "6.0.1" }
1010
junit-platform-launcher = { group = "org.junit.platform", name = "junit-platform-launcher" }
1111
junit-params = { group = "org.junit.jupiter", name = "junit-jupiter-params" }
1212
junit-engine = { group = "org.junit.jupiter", name = "junit-jupiter-engine" }
@@ -19,5 +19,5 @@ errorprone-core = { group = "com.google.errorprone", name = "error_prone_core",
1919
jmh = { id = "me.champeau.jmh", version = "0.7.3" }
2020
nexus-publish = { id = "io.github.gradle-nexus.publish-plugin", version = "2.0.0" }
2121
test-logger = { id = "com.adarshr.test-logger", version = "4.0.0" }
22-
sonarqube = { id = "org.sonarqube", version = "7.0.0.6105" }
22+
sonarqube = { id = "org.sonarqube", version = "7.0.1.6134" }
2323
errorprone = { id = "net.ltgt.errorprone", version = "4.3.0" }

gradle/wrapper/gradle-wrapper.jar

176 Bytes
Binary file not shown.

gradle/wrapper/gradle-wrapper.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
distributionBase=GRADLE_USER_HOME
22
distributionPath=wrapper/dists
3-
distributionSha256Sum=a17ddd85a26b6a7f5ddb71ff8b05fc5104c0202c6e64782429790c933686c806
4-
distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip
3+
distributionSha256Sum=df67a32e86e3276d011735facb1535f64d0d88df84fa87521e90becc2d735444
4+
distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.0-bin.zip
55
networkTimeout=10000
66
validateDistributionUrl=true
77
zipStoreBase=GRADLE_USER_HOME

src/jmh/java/dev/blaauwendraad/masker/json/BaselineBenchmark.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ public String regexReplace(State state) {
100100

101101
@Benchmark
102102
public String jacksonParseOnly(State state) throws IOException {
103-
return ParseAndMaskUtil.DEFAULT_OBJECT_MAPPER.readTree(state.jsonString).toString();
103+
return ParseAndMaskUtil.DEFAULT_JSON_MAPPER.readTree(state.jsonString).toString();
104104
}
105105

106106
@Benchmark

src/jmh/java/dev/blaauwendraad/masker/json/InstanceCreationBenchmark.java

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
package dev.blaauwendraad.masker.json;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
4-
import com.fasterxml.jackson.databind.node.ArrayNode;
5-
63
import dev.blaauwendraad.masker.randomgen.RandomJsonGenerator;
7-
84
import org.jspecify.annotations.NullUnmarked;
95
import org.openjdk.jmh.annotations.Benchmark;
106
import org.openjdk.jmh.annotations.BenchmarkMode;
@@ -16,9 +12,10 @@
1612
import org.openjdk.jmh.annotations.Scope;
1713
import org.openjdk.jmh.annotations.Setup;
1814
import org.openjdk.jmh.annotations.Warmup;
15+
import tools.jackson.databind.json.JsonMapper;
16+
import tools.jackson.databind.node.ArrayNode;
1917

2018
import java.io.IOException;
21-
import java.net.URL;
2219
import java.util.ArrayList;
2320
import java.util.Collections;
2421
import java.util.List;
@@ -33,7 +30,7 @@
3330
@OutputTimeUnit(TimeUnit.SECONDS)
3431
@BenchmarkMode(Mode.Throughput)
3532
public class InstanceCreationBenchmark {
36-
private static final ObjectMapper objectMapper = new ObjectMapper();
33+
private static final JsonMapper jsonMapper = new JsonMapper();
3734

3835
@org.openjdk.jmh.annotations.State(Scope.Thread)
3936
@NullUnmarked
@@ -45,15 +42,19 @@ public static class State {
4542

4643
@Setup
4744
public synchronized void setup() throws IOException {
48-
URL targetKeyFileUrl = RandomJsonGenerator.class.getResource("/target_keys.json");
49-
List<String> targetKeyList = new ArrayList<>();
50-
objectMapper.readValue(targetKeyFileUrl, ArrayNode.class).forEach(t -> targetKeyList.add(t.textValue()));
51-
if (!"ALL".equals(numberOfTargetKeys) && Integer.parseInt(numberOfTargetKeys) <= targetKeyList.size()) {
52-
Collections.shuffle(targetKeyList, new Random(RandomJsonGenerator.STATIC_RANDOM_SEED));
53-
targetKeys =
54-
targetKeyList.stream().limit(Integer.parseInt(numberOfTargetKeys)).collect(Collectors.toSet());
55-
} else {
56-
targetKeys = targetKeyList.stream().collect(Collectors.toSet());
45+
try (var stream = RandomJsonGenerator.class.getResourceAsStream("/target_keys.json")) {
46+
if (stream == null) {
47+
throw new IllegalArgumentException("File not found: target_keys.json");
48+
}
49+
List<String> targetKeyList = new ArrayList<>();
50+
jsonMapper.readValue(stream, ArrayNode.class).forEach(t -> targetKeyList.add(t.asString()));
51+
if (!"ALL".equals(numberOfTargetKeys) && Integer.parseInt(numberOfTargetKeys) <= targetKeyList.size()) {
52+
Collections.shuffle(targetKeyList, new Random(RandomJsonGenerator.STATIC_RANDOM_SEED));
53+
targetKeys =
54+
targetKeyList.stream().limit(Integer.parseInt(numberOfTargetKeys)).collect(Collectors.toSet());
55+
} else {
56+
targetKeys = targetKeyList.stream().collect(Collectors.toSet());
57+
}
5758
}
5859
}
5960
}

src/test/java/dev/blaauwendraad/masker/json/FuzzingTest.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package dev.blaauwendraad.masker.json;
22

3-
import com.fasterxml.jackson.core.JsonProcessingException;
4-
import com.fasterxml.jackson.databind.JsonNode;
53
import dev.blaauwendraad.masker.json.config.JsonMaskingConfig;
64
import dev.blaauwendraad.masker.json.path.JsonPath;
75
import dev.blaauwendraad.masker.json.util.FuzzingDurationUtil;
@@ -10,6 +8,7 @@
108
import dev.blaauwendraad.masker.randomgen.RandomJsonGeneratorConfig;
119
import org.junit.jupiter.params.ParameterizedTest;
1210
import org.junit.jupiter.params.provider.MethodSource;
11+
import tools.jackson.databind.JsonNode;
1312

1413
import java.time.Duration;
1514
import java.time.Instant;
@@ -25,7 +24,7 @@ final class FuzzingTest {
2524

2625
@ParameterizedTest
2726
@MethodSource("jsonMaskingConfigs")
28-
void fuzzingAgainstParseAndMaskUsingJackson(JsonMaskingConfig jsonMaskingConfig) throws JsonProcessingException {
27+
void fuzzingAgainstParseAndMaskUsingJackson(JsonMaskingConfig jsonMaskingConfig) {
2928
long timeLimit = FuzzingDurationUtil.determineTestTimeLimit(jsonMaskingConfigs().count());
3029
Instant startTime = Instant.now();
3130
int randomTestExecuted = 0;

src/test/java/dev/blaauwendraad/masker/json/InstanceCreationMemoryUsageTest.java

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
package dev.blaauwendraad.masker.json;
22

3-
import com.fasterxml.jackson.databind.ObjectMapper;
4-
import com.fasterxml.jackson.databind.node.ArrayNode;
53
import dev.blaauwendraad.masker.json.config.JsonMaskingConfig;
64
import dev.blaauwendraad.masker.json.config.KeyMaskingConfig;
75
import dev.blaauwendraad.masker.randomgen.RandomJsonGenerator;
86
import org.assertj.core.api.Assertions;
97
import org.junit.jupiter.api.Test;
8+
import tools.jackson.databind.json.JsonMapper;
9+
import tools.jackson.databind.node.ArrayNode;
1010

1111
import java.io.IOException;
12-
import java.net.URL;
1312
import java.util.HashSet;
1413
import java.util.Set;
1514

@@ -1587,16 +1586,11 @@ public class InstanceCreationMemoryUsageTest {
15871586
);
15881587

15891588

1590-
private static final ObjectMapper objectMapper = new ObjectMapper();
1589+
private static final JsonMapper jsonMapper = new JsonMapper();
15911590

15921591
@Test
15931592
public void defaultInstanceCreation() throws IOException {
1594-
URL targetKeyFileUrl = RandomJsonGenerator.class.getResource("/target_keys.json");
1595-
if (targetKeyFileUrl == null) {
1596-
throw new IllegalStateException("target_keys.json is not found.");
1597-
}
1598-
Set<String> targetKeys = new HashSet<>();
1599-
objectMapper.readValue(targetKeyFileUrl.openStream(), ArrayNode.class).forEach(t -> targetKeys.add(t.textValue()));
1593+
var targetKeys = loadTargetKeys();
16001594

16011595
long memoryBeforeInstanceCreationKb = getCurrentRetainedMemory();
16021596

@@ -1642,4 +1636,15 @@ private long getCurrentRetainedMemory() {
16421636
private long bytesToKb(long bytes) {
16431637
return bytes / 1024;
16441638
}
1639+
1640+
private static Set<String> loadTargetKeys() throws IOException {
1641+
try (var stream = RandomJsonGenerator.class.getResourceAsStream("/target_keys.json")) {
1642+
if (stream == null) {
1643+
throw new IllegalArgumentException("File not found: target_keys.json");
1644+
}
1645+
Set<String> targetKeys = new HashSet<>();
1646+
jsonMapper.readValue(stream, ArrayNode.class).forEach(t -> targetKeys.add(t.asString()));
1647+
return targetKeys;
1648+
}
1649+
}
16451650
}

src/test/java/dev/blaauwendraad/masker/json/JSONTestSuiteTest.java

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
package dev.blaauwendraad.masker.json;
22

3-
import com.fasterxml.jackson.core.JacksonException;
43
import dev.blaauwendraad.masker.json.config.JsonMaskingConfig;
54
import org.assertj.core.api.Assertions;
65
import org.jspecify.annotations.Nullable;
76
import org.junit.jupiter.params.ParameterizedTest;
87
import org.junit.jupiter.params.provider.Arguments;
98
import org.junit.jupiter.params.provider.MethodSource;
9+
import tools.jackson.core.JacksonException;
1010

1111
import java.io.ByteArrayInputStream;
1212
import java.io.ByteArrayOutputStream;
1313
import java.io.IOException;
1414
import java.io.InputStream;
1515
import java.io.OutputStream;
16-
import java.io.UncheckedIOException;
1716
import java.nio.charset.StandardCharsets;
1817
import java.nio.file.Files;
1918
import java.nio.file.Path;
@@ -90,13 +89,9 @@ void mustPassSuiteWithNoopMaskerShouldBeEquivalentToJackson(String testName, Jso
9089
JsonMaskerTestUtil.assertJsonMaskerApiEquivalence(jsonMasker, new String(file.originalContent, StandardCharsets.UTF_8));
9190

9291
// must be equivalent to being parsed by jackson
93-
try {
94-
assertThat(ParseAndMaskUtil.DEFAULT_OBJECT_MAPPER.readTree(actual))
95-
.as("Failed for input: " + new String(actual, StandardCharsets.UTF_8))
96-
.isEqualTo(ParseAndMaskUtil.DEFAULT_OBJECT_MAPPER.readTree(file.originalContent));
97-
} catch (IOException e) {
98-
throw new UncheckedIOException(e);
99-
}
92+
assertThat(ParseAndMaskUtil.DEFAULT_JSON_MAPPER.readTree(actual))
93+
.as("Failed for input: " + new String(actual, StandardCharsets.UTF_8))
94+
.isEqualTo(ParseAndMaskUtil.DEFAULT_JSON_MAPPER.readTree(file.originalContent));
10095
}
10196

10297
@ParameterizedTest(name = "{0}")
@@ -122,14 +117,12 @@ void mayPassSuiteWithNoopMaskerShouldNotFail(String testName, JsonTestSuiteFile
122117

123118
// if jackson can parse it - out should be equivalent
124119
try {
125-
assertThat(ParseAndMaskUtil.DEFAULT_OBJECT_MAPPER.readTree(actual))
120+
assertThat(ParseAndMaskUtil.DEFAULT_JSON_MAPPER.readTree(actual))
126121
.as("Failed for input: " + new String(actual, StandardCharsets.UTF_8))
127-
.isEqualTo(ParseAndMaskUtil.DEFAULT_OBJECT_MAPPER.readTree(file.originalContent));
122+
.isEqualTo(ParseAndMaskUtil.DEFAULT_JSON_MAPPER.readTree(file.originalContent));
128123
} catch (JacksonException e) {
129124
// JsonMasker didn't fail, but jackson can't parse it, nothing to compare
130125
// suck cases are also tested by shouldMaskAllTestCasesPredictably
131-
} catch (IOException e) {
132-
throw new UncheckedIOException(e);
133126
}
134127
}
135128

0 commit comments

Comments
 (0)