From cd0251e5f8885f63d7354354532a395460cf4faf Mon Sep 17 00:00:00 2001 From: Reynold Morel Date: Mon, 12 Aug 2024 08:43:49 -0400 Subject: [PATCH 1/3] Refactor Java version output in web3_clientVersion --- rskj-core/src/main/java/org/ethereum/rpc/Web3Impl.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/rskj-core/src/main/java/org/ethereum/rpc/Web3Impl.java b/rskj-core/src/main/java/org/ethereum/rpc/Web3Impl.java index e91d9d1eca9..81ee0fa8e9a 100644 --- a/rskj-core/src/main/java/org/ethereum/rpc/Web3Impl.java +++ b/rskj-core/src/main/java/org/ethereum/rpc/Web3Impl.java @@ -195,8 +195,12 @@ public void stop() { @Override public String web3_clientVersion() { + String javaVersion = System.getProperty("java.version"); + String javaMajorVersion = javaVersion.startsWith("1.") ? javaVersion.split("\\.")[1] : javaVersion.split("\\.")[0]; + String formattedJavaVersion = "Java" + javaMajorVersion; + String clientVersion = CLIENT_VERSION_PREFIX + "/" + config.projectVersion() + "/" + - System.getProperty("os.name") + "/Java1.8/" + + System.getProperty("os.name") + "/" + formattedJavaVersion + "/" + config.projectVersionModifier() + "-" + buildInfo.getBuildHash(); if (logger.isDebugEnabled()) { From 8564a27431789f0e1334675e114584b61a56db4b Mon Sep 17 00:00:00 2001 From: Reynold Morel Date: Mon, 12 Aug 2024 10:35:39 -0400 Subject: [PATCH 2/3] Add tests and implement method for formatting Java version --- .../main/java/org/ethereum/rpc/Web3Impl.java | 7 +++--- .../main/java/org/ethereum/util/Utils.java | 6 +++++ .../java/org/ethereum/rpc/Web3ImplTest.java | 22 +++++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/rskj-core/src/main/java/org/ethereum/rpc/Web3Impl.java b/rskj-core/src/main/java/org/ethereum/rpc/Web3Impl.java index 81ee0fa8e9a..8b8a5464036 100644 --- a/rskj-core/src/main/java/org/ethereum/rpc/Web3Impl.java +++ b/rskj-core/src/main/java/org/ethereum/rpc/Web3Impl.java @@ -63,6 +63,7 @@ import org.ethereum.rpc.exception.RskJsonRpcRequestException; import org.ethereum.rpc.parameters.*; import org.ethereum.util.BuildInfo; +import org.ethereum.util.Utils; import org.ethereum.vm.DataWord; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -195,12 +196,10 @@ public void stop() { @Override public String web3_clientVersion() { - String javaVersion = System.getProperty("java.version"); - String javaMajorVersion = javaVersion.startsWith("1.") ? javaVersion.split("\\.")[1] : javaVersion.split("\\.")[0]; - String formattedJavaVersion = "Java" + javaMajorVersion; + String javaVersion = Utils.getFormattedJavaVersion(); String clientVersion = CLIENT_VERSION_PREFIX + "/" + config.projectVersion() + "/" + - System.getProperty("os.name") + "/" + formattedJavaVersion + "/" + + System.getProperty("os.name") + "/" + javaVersion + "/" + config.projectVersionModifier() + "-" + buildInfo.getBuildHash(); if (logger.isDebugEnabled()) { diff --git a/rskj-core/src/main/java/org/ethereum/util/Utils.java b/rskj-core/src/main/java/org/ethereum/util/Utils.java index a2d23853a51..0738853cc32 100644 --- a/rskj-core/src/main/java/org/ethereum/util/Utils.java +++ b/rskj-core/src/main/java/org/ethereum/util/Utils.java @@ -254,4 +254,10 @@ public static int significantBitCount(int number) { } return result; } + + public static String getFormattedJavaVersion(){ + String javaVersion = System.getProperty("java.specification.version"); + String javaMajorVersion = javaVersion.replace("1.", ""); + return String.format("Java%s", javaMajorVersion); + } } diff --git a/rskj-core/src/test/java/org/ethereum/rpc/Web3ImplTest.java b/rskj-core/src/test/java/org/ethereum/rpc/Web3ImplTest.java index f23da51c182..a4a5b90c9cb 100644 --- a/rskj-core/src/test/java/org/ethereum/rpc/Web3ImplTest.java +++ b/rskj-core/src/test/java/org/ethereum/rpc/Web3ImplTest.java @@ -140,6 +140,28 @@ void web3_clientVersion() { assertTrue(clientVersion.toLowerCase().contains("rsk"), "client version is not including rsk!"); } + @Test + void web3_clientVersion_ShouldIncludeJava8() { + System.setProperty("java.specification.version", "1.8"); + + Web3 web3 = createWeb3(); + + String clientVersion = web3.web3_clientVersion(); + + assertTrue(clientVersion.contains("Java8"), "Java version is not Java8"); + } + + @Test + void web3_clientVersion_ShouldIncludeJava17() { + System.setProperty("java.specification.version", "17"); + + Web3 web3 = createWeb3(); + + String clientVersion = web3.web3_clientVersion(); + + assertTrue(clientVersion.contains("Java17"), "Java version is not Java17"); + } + @Test void net_version() { Web3Impl web3 = createWeb3(); From e823855dcd0a806c15b562346094191e8f011b1a Mon Sep 17 00:00:00 2001 From: Reynold Morel Date: Tue, 13 Aug 2024 15:28:09 -0400 Subject: [PATCH 3/3] Remove unused private field in Web3ImplTest --- rskj-core/src/test/java/org/ethereum/rpc/Web3ImplTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/rskj-core/src/test/java/org/ethereum/rpc/Web3ImplTest.java b/rskj-core/src/test/java/org/ethereum/rpc/Web3ImplTest.java index a4a5b90c9cb..dc651c0d29d 100644 --- a/rskj-core/src/test/java/org/ethereum/rpc/Web3ImplTest.java +++ b/rskj-core/src/test/java/org/ethereum/rpc/Web3ImplTest.java @@ -3119,14 +3119,12 @@ private void assertInvalidInput(Function toInvoke) { //Chain Param Object creations private class ChainParams { - private final World world; private final Web3Impl web3; private final String accountAddress; private final Block block; private CallArguments argsForCall; // for call tests could be null private ChainParams(World world, String accountAddress, Block block) { - this.world = world; this.web3 = createWeb3(world); this.accountAddress = accountAddress; this.block = block;