Skip to content

Commit

Permalink
Build ecChronos With Java 17 - Issue #607 (#617)
Browse files Browse the repository at this point in the history
* Build ecChronos With Java 17 - Issue #607

In order to provide support for Java 17 in EcChronos,
identify the minimal changes necessary for the project to
compile and run with Java 17. Additionally, implement these
changes and any necessary updates to Maven packages.

This change must be merged just after a release of ecChronos
with the Issue #616 done.

Closes #607

* Build ecChronos With Java 17 - Issue #607

In order to provide support for Java 17 in EcChronos,
identify the minimal changes necessary for the project to
compile and run with Java 17. Additionally, implement these
changes and any necessary updates to Maven packages.

This change must be merged just after a release of ecChronos
with the Issue #616 done.

Closes #607

* Build ecChronos With Java 17 - Issue #607

In order to provide support for Java 17 in EcChronos,
identify the minimal changes necessary for the project to
compile and run with Java 17. Additionally, implement these
changes and any necessary updates to Maven packages.

This change must be merged just after a release of ecChronos
with the Issue #616 done.

Closes #607

* Build ecChronos With Java 17 - Issue #607

In order to provide support for Java 17 in EcChronos,
identify the minimal changes necessary for the project to
compile and run with Java 17. Additionally, implement these
changes and any necessary updates to Maven packages.

This change must be merged just after a release of ecChronos
with the Issue #616 done.

Closes #607

* Update surefile plugin

* Rebase Branch with Master

* Add Actions to Check different Java versions

* Fix Java 21 failures
  • Loading branch information
VictorCavichioli authored Sep 2, 2024
1 parent a760817 commit ff52c85
Show file tree
Hide file tree
Showing 7 changed files with 139 additions and 42 deletions.
102 changes: 81 additions & 21 deletions .github/workflows/actions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,25 +23,85 @@ jobs:
fail-fast: false
matrix:
include:
- name: "Unit tests"
test_suite: 'test jacoco:report'
- name: "Style check"
test_suite: 'compile com.mycila:license-maven-plugin:check pmd:pmd pmd:cpd pmd:check pmd:cpd-check javadoc:jar'
- name: "OSGi integration"
test_suite: 'install -P docker-integration-test,osgi-integration-tests -DskipUTs'
artifacts_dir: "osgi-integration/target"
- name: "Standalone integration 4.0"
test_suite: 'verify -P docker-integration-test,standalone-integration-tests -DskipUTs'
artifacts_dir: "standalone-integration/target"
- name: "Standalone integration 4.1"
test_suite: 'verify -P docker-integration-test,standalone-integration-tests -Dit.cassandra.version=4.1 -DskipUTs'
artifacts_dir: "standalone-integration/target"
- name: "Standalone integration 5.0-alpha1"
test_suite: 'verify -P docker-integration-test,standalone-integration-tests -Dit.cassandra.version=5.0-alpha1 -DskipUTs'
artifacts_dir: "standalone-integration/target"
- name: "Python integration"
test_suite: 'verify -P docker-integration-test,python-integration-tests -DskipUTs'
artifacts_dir: "ecchronos-binary/target"
# Java 11 tests
- name: "Unit tests - Java 11"
java_version: 11
test_suite: 'test jacoco:report'
- name: "Style check - Java 11"
java_version: 11
test_suite: 'compile com.mycila:license-maven-plugin:check pmd:pmd pmd:cpd pmd:check pmd:cpd-check javadoc:jar'
- name: "OSGi integration - Java 11"
java_version: 11
test_suite: 'install -P docker-integration-test,osgi-integration-tests -DskipUTs'
artifacts_dir: "osgi-integration/target"
- name: "Standalone integration 4.0 - Java 11"
java_version: 11
test_suite: 'verify -P docker-integration-test,standalone-integration-tests -DskipUTs'
artifacts_dir: "standalone-integration/target"
- name: "Standalone integration 4.1 - Java 11"
java_version: 11
test_suite: 'verify -P docker-integration-test,standalone-integration-tests -Dit.cassandra.version=4.1 -DskipUTs'
artifacts_dir: "standalone-integration/target"
- name: "Standalone integration 5.0-alpha1 - Java 11"
java_version: 11
test_suite: 'verify -P docker-integration-test,standalone-integration-tests -Dit.cassandra.version=5.0-alpha1 -DskipUTs'
artifacts_dir: "standalone-integration/target"
- name: "Python integration - Java 11"
java_version: 11
test_suite: 'verify -P docker-integration-test,python-integration-tests -DskipUTs'
artifacts_dir: "ecchronos-binary/target"

# Java 17 tests
- name: "Unit tests - Java 17"
java_version: 17
test_suite: 'test -Djava.version=17 jacoco:report'
- name: "Style check - Java 17"
java_version: 17
test_suite: 'compile -Djava.version=17 com.mycila:license-maven-plugin:check pmd:pmd pmd:cpd pmd:check pmd:cpd-check javadoc:jar'
- name: "OSGi integration - Java 17"
java_version: 17
test_suite: 'install -P docker-integration-test,osgi-integration-tests -Djava.version=17 -DskipUTs'
artifacts_dir: "osgi-integration/target"
- name: "Standalone integration 4.0 - Java 17"
java_version: 17
test_suite: 'verify -P docker-integration-test,standalone-integration-tests -Djava.version=17 -DskipUTs'
artifacts_dir: "standalone-integration/target"
- name: "Standalone integration 4.1 - Java 17"
java_version: 17
test_suite: 'verify -P docker-integration-test,standalone-integration-tests -Dit.cassandra.version=4.1 -Djava.version=17 -DskipUTs'
artifacts_dir: "standalone-integration/target"
- name: "Standalone integration 5.0-alpha1 - Java 17"
java_version: 17
test_suite: 'verify -P docker-integration-test,standalone-integration-tests -Dit.cassandra.version=5.0-alpha1 -Djava.version=17 -DskipUTs'
artifacts_dir: "standalone-integration/target"
- name: "Python integration - Java 17"
java_version: 17
test_suite: 'verify -P docker-integration-test,python-integration-tests -DskipUTs -Djava.version=17'
artifacts_dir: "ecchronos-binary/target"

# Java 21 tests
- name: "Unit tests - Java 21"
java_version: 21
test_suite: 'test -Dnet.bytebuddy.experimental=true -Djava.version=21 jacoco:report'
- name: "Style check - Java 21"
java_version: 21
test_suite: 'compile -Djava.version=21 com.mycila:license-maven-plugin:check pmd:pmd pmd:cpd pmd:check pmd:cpd-check javadoc:jar'
- name: "Standalone integration 4.0 - Java 21"
java_version: 21
test_suite: 'verify -P docker-integration-test,standalone-integration-tests -DskipUTs -Djava.version=21'
artifacts_dir: "standalone-integration/target"
- name: "Standalone integration 4.1 - Java 21"
java_version: 21
test_suite: 'verify -P docker-integration-test,standalone-integration-tests -Dit.cassandra.version=4.1 -Djava.version=21 -DskipUTs'
artifacts_dir: "standalone-integration/target"
- name: "Standalone integration 5.0-alpha1 - Java 21"
java_version: 21
test_suite: 'verify -P docker-integration-test,standalone-integration-tests -Dit.cassandra.version=5.0-alpha1 -Djava.version=21 -DskipUTs'
artifacts_dir: "standalone-integration/target"
- name: "Python integration - Java 21"
java_version: 21
test_suite: 'verify -P docker-integration-test,python-integration-tests -Djava.version=21 -DskipUTs'
artifacts_dir: "ecchronos-binary/target"
steps:
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Cache local Maven repository
Expand All @@ -51,10 +111,10 @@ jobs:
key: build-${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
build-${{ runner.os }}-maven-
- name: Set up JDK
- name: Set up JDK ${{ matrix.java_version }}
uses: actions/setup-java@387ac29b308b003ca37ba93a6cab5eb57c8f5f93 # v4.0.0
with:
java-version: 11
java-version: ${{ matrix.java_version }}
distribution: 'temurin'
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1
- name: Set up Python 3.8
Expand Down
2 changes: 2 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Changes

## Version 5.0.5

* Investigate Java 17 - Issue #607
* RetryPolicy: After failing the last connection attempt, the retry time is still applied - Issue #702
* Define logging levels formally - Issue #666
* Deprecate cassandra-all to use testContainers instead - Issue #701
Expand Down
4 changes: 2 additions & 2 deletions connection/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -76,8 +76,8 @@
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>
</plugins>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@
import com.ericsson.bss.cassandra.ecchronos.core.utils.LongTokenRange;
import com.ericsson.bss.cassandra.ecchronos.core.utils.DriverNode;
import com.google.common.collect.Sets;

import org.junit.Before;
import org.junit.Test;
import org.mockito.MockitoAnnotations;

import java.net.InetAddress;
import java.net.UnknownHostException;
Expand All @@ -40,6 +43,11 @@ public class TestFullyRepairedRepairEntryPredicate
private static final String FAILED = "FAILED";
private static final String SUCCESS = "SUCCESS";

@Before
public void setUp() {
MockitoAnnotations.openMocks(this);
}

@Test
public void testAcceptUnknown() throws UnknownHostException
{
Expand Down Expand Up @@ -68,7 +76,7 @@ public void testAcceptSuccess() throws UnknownHostException
public void testAcceptSuccessMultipleRanges() throws UnknownHostException
{
List<LongTokenRange> expectedRepairedTokenRanges = new ArrayList<>();
Set<InetAddress> expectedRepairedNodeAddresses = Sets.newHashSet(InetAddress.getLocalHost());
Set<InetAddressWrapper> expectedRepairedNodeAddresses = Sets.newHashSet(new InetAddressWrapper(InetAddress.getLocalHost()));
Set<DriverNode> expectedRepairedNodes = expectedRepairedNodeAddresses.stream().map(this::mockNode).collect(Collectors.toSet());

Map<LongTokenRange, Collection<DriverNode>> tokenToNodeMap = new HashMap<>();
Expand All @@ -90,11 +98,12 @@ public void testAcceptSuccessMultipleRanges() throws UnknownHostException
public void testAcceptPartialSuccess() throws UnknownHostException
{
LongTokenRange expectedRepairedTokenRange = new LongTokenRange(0, 1);
DriverNode repairedNode = mockNode(InetAddress.getLocalHost());
InetAddressWrapper addressWrapper = new InetAddressWrapper(InetAddress.getLocalHost());
DriverNode repairedNode = mockNode(addressWrapper);
Set<DriverNode> repairedNodes = Sets.newHashSet(repairedNode);
Set<DriverNode> allNodes = new HashSet<>();
allNodes.add(repairedNode);
allNodes.add(mockNode(mock(InetAddress.class)));
allNodes.add(mockNode(mock(InetAddressWrapper.class)));

Map<LongTokenRange, Collection<DriverNode>> tokenToNodeMap = new HashMap<>();
tokenToNodeMap.put(expectedRepairedTokenRange, allNodes);
Expand All @@ -107,7 +116,7 @@ public void testAcceptNonExistingTokenRangeSuccess() throws UnknownHostException
{
LongTokenRange repairedTokenRange = new LongTokenRange(0, 1);
LongTokenRange actualTokenRange = new LongTokenRange(0, 2);
Set<InetAddress> expectedRepairedNodeAddresses = Sets.newHashSet(InetAddress.getLocalHost());
Set<InetAddressWrapper> expectedRepairedNodeAddresses = Sets.newHashSet(new InetAddressWrapper(InetAddress.getLocalHost()));
Set<DriverNode> expectedRepairedNodes = expectedRepairedNodeAddresses.stream().map(this::mockNode).collect(Collectors.toSet());

Map<LongTokenRange, Collection<DriverNode>> tokenToNodeMap = new HashMap<>();
Expand All @@ -119,7 +128,7 @@ public void testAcceptNonExistingTokenRangeSuccess() throws UnknownHostException
private boolean applyWith(String status) throws UnknownHostException
{
LongTokenRange expectedRepairedTokenRange = new LongTokenRange(0, 1);
Set<InetAddress> expectedRepairedNodeAddresses = Sets.newHashSet(InetAddress.getLocalHost());
Set<InetAddressWrapper> expectedRepairedNodeAddresses = Sets.newHashSet(new InetAddressWrapper(InetAddress.getLocalHost()));
Set<DriverNode> expectedRepairedNodes = expectedRepairedNodeAddresses.stream().map(this::mockNode).collect(Collectors.toSet());

Map<LongTokenRange, Collection<DriverNode>> tokenToNodeMap = new HashMap<>();
Expand All @@ -136,12 +145,30 @@ private boolean applyWith(LongTokenRange repairedTokenRange, Map<LongTokenRange,
return fullyRepairedRepairEntryPredicate.apply(repairEntry);
}

private DriverNode mockNode(InetAddress inetAddress)
private DriverNode mockNode(InetAddressWrapper inetAddressWrapper)
{
DriverNode node = mock(DriverNode.class);

InetAddress inetAddress = inetAddressWrapper.getInetAddress();

when(node.getPublicAddress()).thenReturn(inetAddress);

return node;
}

private class InetAddressWrapper
{
private final InetAddress inetAddress;

public InetAddressWrapper(InetAddress inetAddress)
{
this.inetAddress = inetAddress;
}

public InetAddress getInetAddress()
{
return inetAddress;
}
}

}
4 changes: 2 additions & 2 deletions osgi-integration/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -227,8 +227,8 @@
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
<source>${java.version}</source>
<target>${java.version}</target>
<generatedSourcesDirectory>${project.build.directory}/generated-sources/</generatedSourcesDirectory>
</configuration>
</plugin>
Expand Down
26 changes: 17 additions & 9 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
<properties>
<bundle.symbolicName>${project.groupId}.${project.artifactId}</bundle.symbolicName>
<bundle.namespace>${project.groupId}.${project.artifactId}</bundle.namespace>
<java.version>11</java.version>

<!-- Dependency versions -->
<io.netty.version>4.1.94.Final</io.netty.version>
Expand Down Expand Up @@ -89,7 +90,7 @@
<awaitility.version>3.0.0</awaitility.version>
<jcip.version>1.0</jcip.version>
<junitparams.version>1.1.1</junitparams.version>
<equalsverifier.version>3.5</equalsverifier.version>
<equalsverifier.version>3.16.1</equalsverifier.version>
<tomcat.version>9.0.90</tomcat.version>
<org.springframework.boot.version>2.7.18</org.springframework.boot.version>
<org.springdoc.openapi-ui.version>1.7.0</org.springdoc.openapi-ui.version>
Expand All @@ -100,24 +101,24 @@
<testcontainers.version>1.18.3</testcontainers.version>

<!-- Plugin versions -->
<org.apache.maven.plugins.maven-compiler-plugin.version>3.8.0</org.apache.maven.plugins.maven-compiler-plugin.version>
<org.apache.maven.plugins.maven-compiler-plugin.version>3.11.0</org.apache.maven.plugins.maven-compiler-plugin.version>
<org.apache.maven.plugins.maven-install-plugin.version>2.5.2</org.apache.maven.plugins.maven-install-plugin.version>
<org.apache.maven.plugins.maven-surefire-plugin.version>2.22.1</org.apache.maven.plugins.maven-surefire-plugin.version>
<org.apache.maven.plugins.maven-surefire-plugin.version>3.3.1</org.apache.maven.plugins.maven-surefire-plugin.version>
<org.apache.maven.plugins.maven-failsafe-plugin.version>2.22.1</org.apache.maven.plugins.maven-failsafe-plugin.version>
<org.apache.maven.plugins.maven-assembly-plugin.version>3.6.0</org.apache.maven.plugins.maven-assembly-plugin.version>
<org.apache.maven.plugins-maven-checkstyle-plugin.version>3.2.0</org.apache.maven.plugins-maven-checkstyle-plugin.version>
<org.apache.maven.plugins-maven-pmd-plugin.version>3.14.0</org.apache.maven.plugins-maven-pmd-plugin.version>
<org.apache.maven.plugin.maven-jxr-plugin.version>3.0.0</org.apache.maven.plugin.maven-jxr-plugin.version>
<org.apache.maven.plugins-maven-resources-plugin.version>3.1.0</org.apache.maven.plugins-maven-resources-plugin.version>
<org.apache.maven.plugins-maven-dependency-plugin.version>3.5.0</org.apache.maven.plugins-maven-dependency-plugin.version>
<org.apache.maven.plugins-maven-jar-plugin.version>2.6</org.apache.maven.plugins-maven-jar-plugin.version>
<org.apache.maven.plugins-maven-jar-plugin.version>3.3.0</org.apache.maven.plugins-maven-jar-plugin.version>
<org.apache.maven.plugins-maven-shade-plugin.version>3.4.1</org.apache.maven.plugins-maven-shade-plugin.version>
<org.apache.felix.maven-bundle-plugin.version>5.1.8</org.apache.felix.maven-bundle-plugin.version>
<com.mycila.license-maven-plugin.version>3.0</com.mycila.license-maven-plugin.version>
<io.fabric8.docker-maven-plugin.version>0.35.0</io.fabric8.docker-maven-plugin.version>
<io.fabric8.docker-maven-plugin.version>0.43.0</io.fabric8.docker-maven-plugin.version>
<org.apache.servicemix.tooling.depends-maven-plugin.version>1.2</org.apache.servicemix.tooling.depends-maven-plugin.version>
<org.apache.karaf.tooling.karaf-maven-plugin.version>4.2.1</org.apache.karaf.tooling.karaf-maven-plugin.version>
<org.jacoco.jacoco-maven-plugin.version>0.8.4</org.jacoco.jacoco-maven-plugin.version>
<org.apache.karaf.tooling.karaf-maven-plugin.version>4.4.0</org.apache.karaf.tooling.karaf-maven-plugin.version>
<org.jacoco.jacoco-maven-plugin.version>0.8.9</org.jacoco.jacoco-maven-plugin.version>
<org.codehaus.mojo.exec-maven-plugin.version>3.0.0</org.codehaus.mojo.exec-maven-plugin.version>
<org.codehaus.mojo.license-maven-plugin.version>1.19</org.codehaus.mojo.license-maven-plugin.version>

Expand Down Expand Up @@ -614,6 +615,12 @@
--add-opens java.base/jdk.internal.module=ALL-UNNAMED
--add-opens java.base/jdk.internal.util.jar=ALL-UNNAMED
--add-opens jdk.management/com.sun.management.internal=ALL-UNNAMED
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent=ALL-UNNAMED
--add-opens=java.base/java.util=ALL-UNNAMED
--add-opens=java.base/java.util.concurrent.atomic=ALL-UNNAMED
--add-opens=java.base/java.lang=ALL-UNNAMED
</argLine>
</configuration>
</plugin>
Expand All @@ -627,8 +634,8 @@
<artifactId>maven-compiler-plugin</artifactId>
<version>${org.apache.maven.plugins.maven-compiler-plugin.version}</version>
<configuration>
<source>11</source>
<target>11</target>
<source>${java.version}</source>
<target>${java.version}</target>
</configuration>
</plugin>

Expand All @@ -642,6 +649,7 @@
<version>${org.apache.maven.plugins.maven-assembly-plugin.version}</version>
<configuration>
<skipAssembly>true</skipAssembly>
<tarLongFileMode>posix</tarLongFileMode>
</configuration>
</plugin>

Expand Down
4 changes: 2 additions & 2 deletions standalone-integration/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -169,8 +169,8 @@
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
<source>${java.version}</source>
<target>${java.version}</target>
<generatedSourcesDirectory>${project.build.directory}/generated-sources/</generatedSourcesDirectory>
</configuration>
</plugin>
Expand Down

0 comments on commit ff52c85

Please sign in to comment.