From 442dbf3f483b693ec25e840d7c7bb530c8dfa075 Mon Sep 17 00:00:00 2001 From: Hendrik Ebbers Date: Mon, 3 Feb 2025 13:49:28 +0100 Subject: [PATCH] test module Signed-off-by: Hendrik Ebbers --- .../hiero/base/config/NetworkSettings.java | 6 +-- .../NetworkSettingsProvider.java | 3 +- .../HederMainnetSettings.java | 2 +- .../HederTestnetSettings.java | 2 +- .../HederaNetworkSettingsProvider.java | 6 +-- .../NetworkSettingsProviderLoader.java | 4 +- .../src/main/java/module-info.java | 6 ++- hiero-enterprise-spring/pom.xml | 5 +++ .../spring/test/AccountRepositoryTest.java | 6 +-- .../hiero/spring/test/NftRepositoryTests.java | 1 + .../spring/test/ProtocolLayerClientTests.java | 1 + .../hiero/spring/test/TestConfig.java | 1 + .../spring/test/TokenRepositoryTest.java | 1 + .../resources/application-solo.properties | 1 + .../src/test/resources/application-solo.yml | 10 ----- hiero-enterprise-test/pom.xml | 45 +++++++++++++++++++ .../hiero}/test/HieroTestUtils.java | 4 +- .../hiero/test/SoloActionNetworkSettings.java | 41 +++++++++++++++++ .../SoloActionNetworkSettingsProvider.java | 21 +++++++++ .../src/main/java/module-info.java | 9 ++++ pom.xml | 6 +++ 21 files changed, 151 insertions(+), 30 deletions(-) rename hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/{provider => }/NetworkSettingsProvider.java (83%) rename hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/{provider => hedera}/HederMainnetSettings.java (95%) rename hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/{provider => hedera}/HederTestnetSettings.java (95%) rename hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/{provider/implementation => hedera}/HederaNetworkSettingsProvider.java (62%) rename hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/{provider => }/implementation/NetworkSettingsProviderLoader.java (94%) create mode 100644 hiero-enterprise-spring/src/test/resources/application-solo.properties delete mode 100644 hiero-enterprise-spring/src/test/resources/application-solo.yml create mode 100644 hiero-enterprise-test/pom.xml rename {hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring => hiero-enterprise-test/src/main/java/com/openelements/hiero}/test/HieroTestUtils.java (96%) create mode 100644 hiero-enterprise-test/src/main/java/com/openelements/hiero/test/SoloActionNetworkSettings.java create mode 100644 hiero-enterprise-test/src/main/java/com/openelements/hiero/test/implementation/SoloActionNetworkSettingsProvider.java create mode 100644 hiero-enterprise-test/src/main/java/module-info.java diff --git a/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/NetworkSettings.java b/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/NetworkSettings.java index d8408b2c..450e283a 100644 --- a/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/NetworkSettings.java +++ b/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/NetworkSettings.java @@ -1,6 +1,6 @@ package com.openelements.hiero.base.config; -import com.openelements.hiero.base.config.provider.implementation.NetworkSettingsProviderLoader; +import com.openelements.hiero.base.config.implementation.NetworkSettingsProviderLoader; import java.util.Optional; import java.util.Set; import org.jspecify.annotations.NonNull; @@ -8,9 +8,9 @@ /** * Interface that provides all needed configuration settings for a network. Operator of a Hiero based network should * implement this interface to provide the necessary configuration settings. Implementations can be provided via Java - * SPI as defined in {@link com.openelements.hiero.base.config.provider.NetworkSettingsProvider}. + * SPI as defined in {@link NetworkSettingsProvider}. * - * @see com.openelements.hiero.base.config.provider.NetworkSettingsProvider + * @see NetworkSettingsProvider * @see java.util.ServiceLoader */ public interface NetworkSettings { diff --git a/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/provider/NetworkSettingsProvider.java b/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/NetworkSettingsProvider.java similarity index 83% rename from hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/provider/NetworkSettingsProvider.java rename to hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/NetworkSettingsProvider.java index 96e29b83..3d330253 100644 --- a/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/provider/NetworkSettingsProvider.java +++ b/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/NetworkSettingsProvider.java @@ -1,6 +1,5 @@ -package com.openelements.hiero.base.config.provider; +package com.openelements.hiero.base.config; -import com.openelements.hiero.base.config.NetworkSettings; import java.util.Set; /** diff --git a/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/provider/HederMainnetSettings.java b/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/hedera/HederMainnetSettings.java similarity index 95% rename from hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/provider/HederMainnetSettings.java rename to hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/hedera/HederMainnetSettings.java index 7a15528d..b7e271e8 100644 --- a/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/provider/HederMainnetSettings.java +++ b/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/hedera/HederMainnetSettings.java @@ -1,4 +1,4 @@ -package com.openelements.hiero.base.config.provider; +package com.openelements.hiero.base.config.hedera; import com.openelements.hiero.base.config.ConsensusNode; import com.openelements.hiero.base.config.NetworkSettings; diff --git a/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/provider/HederTestnetSettings.java b/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/hedera/HederTestnetSettings.java similarity index 95% rename from hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/provider/HederTestnetSettings.java rename to hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/hedera/HederTestnetSettings.java index 3514c65e..d256e5a7 100644 --- a/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/provider/HederTestnetSettings.java +++ b/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/hedera/HederTestnetSettings.java @@ -1,4 +1,4 @@ -package com.openelements.hiero.base.config.provider; +package com.openelements.hiero.base.config.hedera; import com.openelements.hiero.base.config.ConsensusNode; import com.openelements.hiero.base.config.NetworkSettings; diff --git a/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/provider/implementation/HederaNetworkSettingsProvider.java b/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/hedera/HederaNetworkSettingsProvider.java similarity index 62% rename from hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/provider/implementation/HederaNetworkSettingsProvider.java rename to hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/hedera/HederaNetworkSettingsProvider.java index e2f05313..f3b3d4f3 100644 --- a/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/provider/implementation/HederaNetworkSettingsProvider.java +++ b/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/hedera/HederaNetworkSettingsProvider.java @@ -1,10 +1,8 @@ -package com.openelements.hiero.base.config.provider.implementation; +package com.openelements.hiero.base.config.hedera; import com.google.auto.service.AutoService; import com.openelements.hiero.base.config.NetworkSettings; -import com.openelements.hiero.base.config.provider.HederMainnetSettings; -import com.openelements.hiero.base.config.provider.HederTestnetSettings; -import com.openelements.hiero.base.config.provider.NetworkSettingsProvider; +import com.openelements.hiero.base.config.NetworkSettingsProvider; import java.util.Set; @AutoService(NetworkSettingsProvider.class) diff --git a/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/provider/implementation/NetworkSettingsProviderLoader.java b/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/implementation/NetworkSettingsProviderLoader.java similarity index 94% rename from hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/provider/implementation/NetworkSettingsProviderLoader.java rename to hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/implementation/NetworkSettingsProviderLoader.java index 00dbaca7..9c3c116a 100644 --- a/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/provider/implementation/NetworkSettingsProviderLoader.java +++ b/hiero-enterprise-base/src/main/java/com/openelements/hiero/base/config/implementation/NetworkSettingsProviderLoader.java @@ -1,7 +1,7 @@ -package com.openelements.hiero.base.config.provider.implementation; +package com.openelements.hiero.base.config.implementation; import com.openelements.hiero.base.config.NetworkSettings; -import com.openelements.hiero.base.config.provider.NetworkSettingsProvider; +import com.openelements.hiero.base.config.NetworkSettingsProvider; import java.util.Collections; import java.util.HashSet; import java.util.Objects; diff --git a/hiero-enterprise-base/src/main/java/module-info.java b/hiero-enterprise-base/src/main/java/module-info.java index 4ed0516c..c3cc0298 100644 --- a/hiero-enterprise-base/src/main/java/module-info.java +++ b/hiero-enterprise-base/src/main/java/module-info.java @@ -4,11 +4,13 @@ exports com.openelements.hiero.base.mirrornode; exports com.openelements.hiero.base.verification; exports com.openelements.hiero.base.data; + exports com.openelements.hiero.base.config; exports com.openelements.hiero.base.implementation to com.openelements.hiero.base.test; exports com.openelements.hiero.base.implementation.data to com.openelements.hiero.base.test; + exports com.openelements.hiero.base.config.implementation; - uses com.openelements.hiero.base.config.provider.NetworkSettingsProvider; - provides com.openelements.hiero.base.config.provider.NetworkSettingsProvider with com.openelements.hiero.base.config.provider.implementation.HederaNetworkSettingsProvider; + uses com.openelements.hiero.base.config.NetworkSettingsProvider; + provides com.openelements.hiero.base.config.NetworkSettingsProvider with com.openelements.hiero.base.config.hedera.HederaNetworkSettingsProvider; requires transitive sdk; //Hedera SDK requires org.slf4j; diff --git a/hiero-enterprise-spring/pom.xml b/hiero-enterprise-spring/pom.xml index 46b921b5..0a06d688 100644 --- a/hiero-enterprise-spring/pom.xml +++ b/hiero-enterprise-spring/pom.xml @@ -43,6 +43,11 @@ spring-boot-configuration-processor true + + ${project.groupId} + hiero-enterprise-test + test + io.grpc grpc-okhttp diff --git a/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/AccountRepositoryTest.java b/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/AccountRepositoryTest.java index 6a64aba9..a127b4a3 100644 --- a/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/AccountRepositoryTest.java +++ b/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/AccountRepositoryTest.java @@ -1,10 +1,11 @@ package com.openelements.hiero.spring.test; import com.hedera.hashgraph.sdk.AccountId; -import com.openelements.hiero.base.data.Account; import com.openelements.hiero.base.AccountClient; -import com.openelements.hiero.base.mirrornode.AccountRepository; +import com.openelements.hiero.base.data.Account; import com.openelements.hiero.base.data.AccountInfo; +import com.openelements.hiero.base.mirrornode.AccountRepository; +import com.openelements.hiero.test.HieroTestUtils; import java.util.Optional; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -36,6 +37,5 @@ void findById() throws Exception { //then Assertions.assertNotNull(result); Assertions.assertTrue(result.isPresent()); - } } diff --git a/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/NftRepositoryTests.java b/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/NftRepositoryTests.java index d892b24f..c0067545 100644 --- a/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/NftRepositoryTests.java +++ b/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/NftRepositoryTests.java @@ -10,6 +10,7 @@ import com.openelements.hiero.base.data.Nft; import com.openelements.hiero.base.data.Page; import com.openelements.hiero.base.mirrornode.NftRepository; +import com.openelements.hiero.test.HieroTestUtils; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; diff --git a/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/ProtocolLayerClientTests.java b/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/ProtocolLayerClientTests.java index 7064905a..67e68e91 100644 --- a/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/ProtocolLayerClientTests.java +++ b/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/ProtocolLayerClientTests.java @@ -23,6 +23,7 @@ import com.openelements.hiero.base.protocol.FileInfoResponse; import com.openelements.hiero.base.protocol.FileUpdateRequest; import com.openelements.hiero.base.protocol.ProtocolLayerClient; +import com.openelements.hiero.test.HieroTestUtils; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; diff --git a/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/TestConfig.java b/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/TestConfig.java index e62954ac..c7624680 100644 --- a/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/TestConfig.java +++ b/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/TestConfig.java @@ -3,6 +3,7 @@ import com.openelements.hiero.base.mirrornode.MirrorNodeClient; import com.openelements.hiero.base.protocol.ProtocolLayerClient; import com.openelements.hiero.spring.EnableHiero; +import com.openelements.hiero.test.HieroTestUtils; import org.springframework.boot.SpringBootConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; diff --git a/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/TokenRepositoryTest.java b/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/TokenRepositoryTest.java index 86d7c927..8f6f14ef 100644 --- a/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/TokenRepositoryTest.java +++ b/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/TokenRepositoryTest.java @@ -14,6 +14,7 @@ import com.openelements.hiero.base.data.Account; import com.openelements.hiero.base.data.Page; import com.openelements.hiero.base.mirrornode.TokenRepository; +import com.openelements.hiero.test.HieroTestUtils; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; diff --git a/hiero-enterprise-spring/src/test/resources/application-solo.properties b/hiero-enterprise-spring/src/test/resources/application-solo.properties new file mode 100644 index 00000000..e7164447 --- /dev/null +++ b/hiero-enterprise-spring/src/test/resources/application-solo.properties @@ -0,0 +1 @@ +spring.hiero.network.name:solo \ No newline at end of file diff --git a/hiero-enterprise-spring/src/test/resources/application-solo.yml b/hiero-enterprise-spring/src/test/resources/application-solo.yml deleted file mode 100644 index 5a75a893..00000000 --- a/hiero-enterprise-spring/src/test/resources/application-solo.yml +++ /dev/null @@ -1,10 +0,0 @@ -spring: - hiero: - network: - name: solo - nodes: - - ip: 127.0.0.1 - port: 50211 - account: 0.0.3 - mirrornode: http://localhost:8080 - diff --git a/hiero-enterprise-test/pom.xml b/hiero-enterprise-test/pom.xml new file mode 100644 index 00000000..cef30c82 --- /dev/null +++ b/hiero-enterprise-test/pom.xml @@ -0,0 +1,45 @@ + + + 4.0.0 + + + com.open-elements.hiero + hiero-enterprise + 0.17.0-SNAPSHOT + ../pom.xml + + + hiero-enterprise-test + + Hiero Enterprise Test + Base Library that makes it easier to create tests for Hiero + https://github.com/OpenElements/hiero-enterprise-java + + + + ${project.groupId} + hiero-enterprise-base + + + + + + + org.apache.maven.plugins + maven-deploy-plugin + + true + + + + org.jreleaser + jreleaser-maven-plugin + + true + + + + + diff --git a/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/HieroTestUtils.java b/hiero-enterprise-test/src/main/java/com/openelements/hiero/test/HieroTestUtils.java similarity index 96% rename from hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/HieroTestUtils.java rename to hiero-enterprise-test/src/main/java/com/openelements/hiero/test/HieroTestUtils.java index 0277b7c4..90e394a9 100644 --- a/hiero-enterprise-spring/src/test/java/com/openelements/hiero/spring/test/HieroTestUtils.java +++ b/hiero-enterprise-test/src/main/java/com/openelements/hiero/test/HieroTestUtils.java @@ -1,4 +1,4 @@ -package com.openelements.hiero.spring.test; +package com.openelements.hiero.test; import com.hedera.hashgraph.sdk.Status; import com.hedera.hashgraph.sdk.TransactionId; @@ -48,7 +48,7 @@ public void transactionHandled(TransactionType transactionType, TransactionId tr public void waitForMirrorNodeRecords() throws HieroException { final TransactionId transactionId = transactionIdRef.get(); if (transactionId != null) { - LocalDateTime start = LocalDateTime.now(); + final LocalDateTime start = LocalDateTime.now(); boolean done = false; while (!done) { String transactionIdString = diff --git a/hiero-enterprise-test/src/main/java/com/openelements/hiero/test/SoloActionNetworkSettings.java b/hiero-enterprise-test/src/main/java/com/openelements/hiero/test/SoloActionNetworkSettings.java new file mode 100644 index 00000000..262eea04 --- /dev/null +++ b/hiero-enterprise-test/src/main/java/com/openelements/hiero/test/SoloActionNetworkSettings.java @@ -0,0 +1,41 @@ +package com.openelements.hiero.test; + +import com.openelements.hiero.base.config.ConsensusNode; +import com.openelements.hiero.base.config.NetworkSettings; +import java.util.Optional; +import java.util.Set; +import org.jspecify.annotations.NonNull; + + +public class SoloActionNetworkSettings implements NetworkSettings { + + @Override + public @NonNull String getNetworkIdentifier() { + return "hiero-solo-action"; + } + + @Override + public @NonNull Optional getNetworkName() { + return Optional.of("Hiero Solo Action"); + } + + @Override + public @NonNull Set getMirrorNodeAddresses() { + return Set.of("http://localhost:8080"); + } + + @Override + public @NonNull Set getConsensusNodes() { + return Set.of(new ConsensusNode("127.0.0.1", "50211", "0.0.3")); + } + + @Override + public @NonNull Optional chainId() { + return Optional.empty(); + } + + @Override + public @NonNull Optional relayUrl() { + return Optional.empty(); + } +} diff --git a/hiero-enterprise-test/src/main/java/com/openelements/hiero/test/implementation/SoloActionNetworkSettingsProvider.java b/hiero-enterprise-test/src/main/java/com/openelements/hiero/test/implementation/SoloActionNetworkSettingsProvider.java new file mode 100644 index 00000000..5232c725 --- /dev/null +++ b/hiero-enterprise-test/src/main/java/com/openelements/hiero/test/implementation/SoloActionNetworkSettingsProvider.java @@ -0,0 +1,21 @@ +package com.openelements.hiero.test.implementation; + +import com.google.auto.service.AutoService; +import com.openelements.hiero.base.config.NetworkSettings; +import com.openelements.hiero.base.config.NetworkSettingsProvider; +import com.openelements.hiero.test.SoloActionNetworkSettings; +import java.util.Set; + +@AutoService(NetworkSettingsProvider.class) +public class SoloActionNetworkSettingsProvider implements NetworkSettingsProvider { + + @Override + public String getName() { + return "Provider for Hiero Solo Action"; + } + + @Override + public Set createNetworkSettings() { + return Set.of(new SoloActionNetworkSettings()); + } +} diff --git a/hiero-enterprise-test/src/main/java/module-info.java b/hiero-enterprise-test/src/main/java/module-info.java new file mode 100644 index 00000000..23c77c6c --- /dev/null +++ b/hiero-enterprise-test/src/main/java/module-info.java @@ -0,0 +1,9 @@ +open module com.openelements.hiero.test { + exports com.openelements.hiero.test; + + provides com.openelements.hiero.base.config.NetworkSettingsProvider with com.openelements.hiero.test.implementation.SoloActionNetworkSettingsProvider; + + requires transitive com.openelements.hiero.base; + requires org.jspecify; + requires com.google.auto.service; +} \ No newline at end of file diff --git a/pom.xml b/pom.xml index fda53089..9f2efa61 100644 --- a/pom.xml +++ b/pom.xml @@ -94,6 +94,11 @@ hiero-enterprise-base ${project.version} + + ${project.groupId} + hiero-enterprise-test + ${project.version} + ${project.groupId} hiero-enterprise-spring @@ -200,6 +205,7 @@ hiero-enterprise-base + hiero-enterprise-test hiero-enterprise-spring hiero-enterprise-microprofile hiero-enterprise-spring-sample