Skip to content

Commit bbdb99b

Browse files
authored
build: add exports/opens to run tests on Module Path (foundation) (#18923)
Signed-off-by: Jendrik Johannes <[email protected]>
1 parent 2c0110b commit bbdb99b

File tree

19 files changed

+85
-19
lines changed

19 files changed

+85
-19
lines changed

platform-sdk/swirlds-base/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ tasks.withType<JavaCompile>().configureEach {
1414
}
1515

1616
testModuleInfo {
17+
requires("com.swirlds.base.test.fixtures")
1718
requires("org.junit.jupiter.api")
1819
requires("org.assertj.core")
1920
requires("org.mockito")

platform-sdk/swirlds-base/src/main/java/module-info.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
com.swirlds.config.api,
1717
com.swirlds.config.api.test.fixtures,
1818
com.swirlds.config.impl,
19-
com.swirlds.config.exceptions,
2019
com.swirlds.config.extensions.test.fixtures,
2120
com.swirlds.logging,
2221
com.swirlds.logging.test.fixtures,
@@ -27,12 +26,13 @@
2726
com.swirlds.common,
2827
com.swirlds.config.api,
2928
com.swirlds.config.api.test.fixtures,
30-
com.swirlds.config.exceptions,
3129
com.swirlds.config.extensions.test.fixtures,
3230
com.swirlds.config.impl,
3331
com.swirlds.logging,
3432
com.swirlds.logging.test.fixtures,
3533
com.swirlds.metrics.api;
34+
exports com.swirlds.base.time.internal to
35+
org.hiero.consensus.event.creator.impl; // used in TransactionPoolNexusTest
3636

3737
requires static transitive com.github.spotbugs.annotations;
3838
}

platform-sdk/swirlds-base/src/testFixtures/java/module-info.java

+2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
// SPDX-License-Identifier: Apache-2.0
22
open module com.swirlds.base.test.fixtures {
3+
exports com.swirlds.base.test.fixtures.assertions;
34
exports com.swirlds.base.test.fixtures.context;
45
exports com.swirlds.base.test.fixtures.time;
56
exports com.swirlds.base.test.fixtures.io;
67
exports com.swirlds.base.test.fixtures.util;
78
exports com.swirlds.base.test.fixtures.concurrent;
9+
exports com.swirlds.base.test.fixtures.concurrent.internal;
810

911
requires transitive com.swirlds.base;
1012
requires transitive org.junit.jupiter.api;

platform-sdk/swirlds-config-extensions/build.gradle.kts

+3
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ plugins {
77

88
testModuleInfo {
99
runtimeOnly("com.swirlds.config.impl")
10+
requires("com.swirlds.config.extensions.test.fixtures")
1011
requires("org.junit.jupiter.api")
1112
requires("org.assertj.core")
13+
14+
exportsTo("com.swirlds.config.impl") // for ConfigExportTest
1215
}

platform-sdk/swirlds-config-impl/build.gradle.kts

+2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ testModuleInfo {
1212
requires("org.junit.jupiter.params")
1313
requires("com.swirlds.common")
1414
runtimeOnly("com.swirlds.platform.core")
15+
16+
exportsTo("com.swirlds.config.extensions")
1517
}
1618

1719
jmhModuleInfo {

platform-sdk/swirlds-logging/build.gradle.kts

+4
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ testModuleInfo {
2828
requires("com.swirlds.base.test.fixtures")
2929
requires("com.swirlds.common.test.fixtures")
3030
requires("jakarta.inject")
31+
32+
opensTo("com.swirlds.base.test.fixtures") // injection via reflection
3133
}
3234

3335
timingSensitiveModuleInfo {
@@ -38,6 +40,8 @@ timingSensitiveModuleInfo {
3840
requires("org.assertj.core")
3941
requires("org.junit.jupiter.api")
4042
runtimeOnly("com.swirlds.common.test.fixtures")
43+
44+
opensTo("com.swirlds.base.test.fixtures") // injection via reflection
4145
}
4246

4347
jmhModuleInfo {

platform-sdk/swirlds-logging/src/main/java/com/swirlds/logging/api/internal/format/StackTracePrinter.java

+5
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,15 @@ public static void print(final @NonNull StringBuilder writer, final @Nullable Th
5151
for (int i = 0; i <= m; i++) {
5252
final StackTraceElement stackTraceElement = stackTrace[i];
5353
final String moduleName = stackTraceElement.getModuleName();
54+
final String moduleVersion = stackTraceElement.getModuleVersion();
5455
final String fileName = stackTraceElement.getFileName();
5556
writer.append("\tat ");
5657
if (moduleName != null) {
5758
writer.append(moduleName);
59+
if (moduleVersion != null) {
60+
writer.append("@");
61+
writer.append(moduleVersion);
62+
}
5863
writer.append("/");
5964
}
6065
writer.append(stackTraceElement.getClassName());

platform-sdk/swirlds-logging/src/test/java/com/swirlds/logging/api/internal/format/StackTracePrinterTest.java

+8-2
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ void printShouldBehaveAsPrintStackTrace() throws IOException {
3737
// Then
3838
final StringWriter stringWriter = new StringWriter();
3939
deepThrowable.printStackTrace(new PrintWriter(stringWriter));
40-
assertEquals(stringWriter.toString(), writer.toString());
40+
assertEquals(stringWriter.toString(), removeJavaBaseVersion(writer.toString()));
4141
}
4242

4343
@Test
@@ -57,7 +57,7 @@ void printCircularReferenceShouldBehaveAsPrintStackTrace() throws IOException {
5757
// Then
5858
final StringWriter stringWriter = new StringWriter();
5959
deepThrowable3.printStackTrace(new PrintWriter(stringWriter));
60-
assertEquals(stringWriter.toString(), writer.toString());
60+
assertEquals(stringWriter.toString(), removeJavaBaseVersion(writer.toString()));
6161
}
6262

6363
@Test
@@ -85,4 +85,10 @@ private static int countMatches(final String stackTrace, final String regex) {
8585
}
8686
return count;
8787
}
88+
89+
private String removeJavaBaseVersion(String trace) {
90+
// Java's printStackTrace() skips the versions of JDK core modules (like java.base).
91+
// We don't to avoid special handling of them in StackTracePrinter.
92+
return trace.replaceAll("java.base@[0-9.]+/", "java.base/");
93+
}
8894
}
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: Apache-2.0
2-
package com.swirlds.logging.test.fixtures.internal;
2+
package com.swirlds.logging.test.internal;
33

44
import static org.assertj.core.api.Assertions.assertThat;
55

platform-sdk/swirlds-logging/src/testFixtures/java/com/swirlds/logging/test/fixtures/util/Throwables.java

+32-6
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,38 @@
66
*/
77
public class Throwables {
88

9-
public static final String METHOD_SIGNATURE_PATTERN =
10-
"\\tat " + Throwables.class.getName().replace(".", "\\.") + "\\.createThrowableWithDeepCause\\("
11-
+ Throwables.class.getSimpleName() + "\\.java:\\d+\\)";
12-
public static final String CAUSE_METHOD_SIGNATURE_PATTERN =
13-
"\\tat " + Throwables.class.getName().replace(".", "\\.") + "\\.createDeepThrowable\\("
14-
+ Throwables.class.getSimpleName() + "\\.java:\\d+\\)";
9+
private static String methodSignaturePatternModulePath() {
10+
return "\\tat " + Throwables.class.getModule().getName() + "@"
11+
+ Throwables.class.getModule().getDescriptor().version().orElseThrow() + "/"
12+
+ Throwables.class.getName().replace(".", "\\.") + "\\.createThrowableWithDeepCause\\("
13+
+ Throwables.class.getSimpleName() + "\\.java:\\d+\\)";
14+
}
15+
16+
private static String methodSignaturePatternClasspath() {
17+
return "\\tat " + Throwables.class.getName().replace(".", "\\.") + "\\.createThrowableWithDeepCause\\("
18+
+ Throwables.class.getSimpleName() + "\\.java:\\d+\\)";
19+
}
20+
21+
private static String causeMethodSignaturePatternModulePath() {
22+
return "\\tat " + Throwables.class.getModule().getName() + "@"
23+
+ Throwables.class.getModule().getDescriptor().version().orElseThrow() + "/"
24+
+ Throwables.class.getName().replace(".", "\\.") + "\\.createDeepThrowable\\("
25+
+ Throwables.class.getSimpleName() + "\\.java:\\d+\\)";
26+
}
27+
28+
private static String causeMethodSignaturePatternClasspath() {
29+
return "\\tat " + Throwables.class.getName().replace(".", "\\.") + "\\.createDeepThrowable\\("
30+
+ Throwables.class.getSimpleName() + "\\.java:\\d+\\)";
31+
}
32+
33+
public static String METHOD_SIGNATURE_PATTERN = Throwables.class.getModule().isNamed()
34+
? methodSignaturePatternModulePath()
35+
: methodSignaturePatternClasspath();
36+
37+
public static String CAUSE_METHOD_SIGNATURE_PATTERN =
38+
Throwables.class.getModule().isNamed()
39+
? causeMethodSignaturePatternModulePath()
40+
: causeMethodSignaturePatternClasspath();
1541

1642
private Throwables() {}
1743

Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
// SPDX-License-Identifier: Apache-2.0
22
open module com.swirlds.logging.test.fixtures {
33
exports com.swirlds.logging.test.fixtures;
4+
exports com.swirlds.logging.test.fixtures.util;
5+
exports com.swirlds.logging.test.fixtures.internal to
6+
com.swirlds.logging; // for testing the fixture itself
47

58
requires transitive com.swirlds.config.api;
9+
requires transitive com.swirlds.config.extensions.test.fixtures;
610
requires transitive com.swirlds.logging;
711
requires transitive org.junit.jupiter.api;
812
requires com.swirlds.base.test.fixtures;
9-
requires com.swirlds.config.extensions.test.fixtures;
1013
requires static transitive com.github.spotbugs.annotations;
1114
}

platform-sdk/swirlds-merkle/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ plugins {
99
testModuleInfo {
1010
requires("com.swirlds.base")
1111
requires("com.swirlds.common.test.fixtures")
12+
requires("com.swirlds.merkle.test.fixtures")
1213
requires("org.hiero.base.concurrent")
1314
requires("org.hiero.base.crypto.test.fixtures")
1415
requires("org.hiero.base.utility.test.fixtures")

platform-sdk/swirlds-merkle/src/testFixtures/java/module-info.java

+5-2
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,17 @@
44
*/
55
open module com.swirlds.merkle.test.fixtures {
66
exports com.swirlds.merkle.test.fixtures;
7+
exports com.swirlds.merkle.test.fixtures.map.benchmark;
8+
exports com.swirlds.merkle.test.fixtures.map.benchmark.operations;
9+
exports com.swirlds.merkle.test.fixtures.map.dummy;
710
exports com.swirlds.merkle.test.fixtures.map.lifecycle;
811
exports com.swirlds.merkle.test.fixtures.map.pta;
912
exports com.swirlds.merkle.test.fixtures.map.util;
1013

1114
requires transitive com.swirlds.common.test.fixtures;
1215
requires transitive com.swirlds.common;
16+
requires transitive com.swirlds.fchashmap;
17+
requires transitive com.swirlds.fcqueue;
1318
requires transitive com.swirlds.merkle;
1419
requires transitive org.hiero.base.crypto;
1520
requires transitive org.hiero.base.utility;
@@ -18,8 +23,6 @@
1823
requires transitive com.fasterxml.jackson.databind;
1924
requires com.hedera.pbj.runtime;
2025
requires com.swirlds.base;
21-
requires com.swirlds.fchashmap;
22-
requires com.swirlds.fcqueue;
2326
requires com.swirlds.logging;
2427
requires org.hiero.base.utility.test.fixtures;
2528
requires org.apache.logging.log4j.core;

platform-sdk/swirlds-merkle/src/timingSensitive/java/com/swirlds/merkle/test/MerkleSerializationTests.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import com.swirlds.common.merkle.MerkleNode;
2323
import com.swirlds.common.merkle.route.MerkleRouteFactory;
2424
import com.swirlds.common.merkle.utility.MerkleLong;
25-
import com.swirlds.common.test.fixtures.io.ResourceLoader;
2625
import com.swirlds.common.test.fixtures.merkle.TestMerkleCryptoFactory;
2726
import com.swirlds.common.test.fixtures.merkle.dummy.DummyMerkleInternal;
2827
import com.swirlds.common.test.fixtures.merkle.dummy.DummyMerkleLeaf;
@@ -169,7 +168,7 @@ void deserializeTreeFromFile() throws IOException, URISyntaxException {
169168
final Path dir = getFile("merkle/serialized-tree-v3");
170169

171170
final MerkleDataInputStream dataStream = new MerkleDataInputStream(
172-
ResourceLoader.loadFileAsStream("merkle/serialized-tree-v3/serialized-tree-v3.dat"));
171+
getClass().getResourceAsStream("/merkle/serialized-tree-v3/serialized-tree-v3.dat"));
173172
dataStream.readProtocolVersion();
174173
final DummyMerkleNode tree = dataStream.readMerkleTree(dir, Integer.MAX_VALUE);
175174
assertTrue(
@@ -240,7 +239,7 @@ void deserializeInvalidTrees() throws IOException {
240239
void testHashFromFile() throws IOException {
241240
// writeTreeToFile(MerkleTestUtils.buildLessSimpleTree(), "hashed-tree-merkle-v1.dat");
242241
final DataInputStream dataStream =
243-
new DataInputStream(ResourceLoader.loadFileAsStream("merkle/hashed-tree-merkle-v1.dat"));
242+
new DataInputStream(getClass().getResourceAsStream("/merkle/hashed-tree-merkle-v1.dat"));
244243

245244
final Hash oldHash = new Hash(dataStream.readAllBytes(), DigestType.SHA_384);
246245
final MerkleNode tree = buildLessSimpleTree();

platform-sdk/swirlds-merkledb/build.gradle.kts

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ jmhModuleInfo { requires("jmh.core") }
2121
testModuleInfo {
2222
requires("com.swirlds.common.test.fixtures")
2323
requires("com.swirlds.config.extensions.test.fixtures")
24+
requires("com.swirlds.merkledb.test.fixtures")
2425
requires("org.hiero.base.utility.test.fixtures")
2526
requires("org.hiero.consensus.model")
2627
requires("org.junit.jupiter.api")

platform-sdk/swirlds-merkledb/src/testFixtures/java/module-info.java

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// SPDX-License-Identifier: Apache-2.0
22
module com.swirlds.merkledb.test.fixtures {
33
exports com.swirlds.merkledb.test.fixtures;
4+
exports com.swirlds.merkledb.test.fixtures.files;
45

56
requires transitive com.hedera.pbj.runtime;
67
requires transitive com.swirlds.common;

platform-sdk/swirlds-state-impl/src/main/java/module-info.java

+4
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@
66
exports com.swirlds.state.merkle.disk;
77
exports com.swirlds.state.merkle;
88

9+
// allow reflective access for tests
10+
opens com.swirlds.state.merkle.disk to
11+
com.hedera.node.app;
12+
913
requires transitive com.hedera.pbj.runtime;
1014
requires transitive com.swirlds.base;
1115
requires transitive com.swirlds.common;

platform-sdk/swirlds-virtualmap/src/main/java/module-info.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -13,19 +13,24 @@
1313

1414
// Testing-only exports
1515
exports com.swirlds.virtualmap.internal to
16+
com.swirlds.merkle,
17+
com.swirlds.merkledb,
1618
com.swirlds.virtualmap.test.fixtures;
19+
exports com.swirlds.virtualmap.internal.pipeline to
20+
com.swirlds.merkle;
1721
exports com.swirlds.virtualmap.internal.cache to
22+
com.swirlds.merkledb,
1823
com.swirlds.virtualmap.test.fixtures,
1924
com.swirlds.platform.core.test.fixtures;
2025

2126
requires transitive com.hedera.pbj.runtime;
27+
requires transitive com.swirlds.base;
2228
requires transitive com.swirlds.common;
2329
requires transitive com.swirlds.config.api;
2430
requires transitive com.swirlds.metrics.api;
2531
requires transitive org.hiero.base.concurrent;
2632
requires transitive org.hiero.base.crypto;
2733
requires transitive org.hiero.base.utility;
28-
requires com.swirlds.base;
2934
requires com.swirlds.config.extensions;
3035
requires com.swirlds.logging;
3136
requires java.management; // Test dependency

platform-sdk/swirlds-virtualmap/src/testFixtures/java/module-info.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// SPDX-License-Identifier: Apache-2.0
2-
module com.swirlds.virtualmap.test.fixtures {
2+
open module com.swirlds.virtualmap.test.fixtures {
33
exports com.swirlds.virtualmap.test.fixtures;
44

55
requires transitive com.hedera.pbj.runtime;

0 commit comments

Comments
 (0)