Skip to content

Commit d494b04

Browse files
Feature/ab2d 4120 Java 17 (#832)
* Add java 11 * Update docker-compose.yml Add java 17 * Update Jenkinsfile Increase Jenkins version * Fix Nano tests * Update BFDSearchImpl.java Remove method for testing in new relic * Change some docs to support Java 17 Co-authored-by: sb-wnyffenegger <[email protected]>
1 parent f61b3ff commit d494b04

File tree

10 files changed

+41
-27
lines changed

10 files changed

+41
-27
lines changed

.github/workflows/codeql-analysis.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@ jobs:
4040
- run: git checkout HEAD^2
4141
if: ${{ github.event_name == 'pull_request' }}
4242

43-
- name: AB2d needs Java 13 to run..
43+
- name: AB2d needs Java 17 to run..
4444
uses: actions/setup-java@v1
4545
with:
46-
java-version: '13' # The JDK version to make available on the path.
46+
java-version: '17' # The JDK version to make available on the path.
4747

4848
# Initializes the CodeQL tools for scanning.
4949
- name: Initialize CodeQL

JENKINS.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ volume to give it at least that much space.
1212

1313
## Tools Configuration
1414

15-
Install Java 13 and Maven 3.6.3 on the jenkins agent.
15+
Install Java 17 and Maven 3.6.3 on the jenkins agent.
1616

1717
Go to the `<jenkins_ip>:8080/configureTools` url. Add a JDK and Maven installation
1818
but do not allow Jenkins to install it automatically. For each installation set it to the home of the

Jenkinsfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ pipeline {
2727

2828
tools {
2929
maven 'maven-3.6.3'
30-
jdk 'adoptjdk13'
30+
jdk 'openjdk17'
3131
}
3232

3333
stages {

api/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM openjdk:13
1+
FROM openjdk:17
22
WORKDIR /usr/src/ab2d-api
33
ADD target/api-*-SNAPSHOT.jar /usr/src/ab2d-api/api.jar
44
ADD target/newrelic/newrelic.jar /usr/src/ab2d-api/newrelic/newrelic.jar

bfd/src/main/java/gov/cms/ab2d/bfd/client/BFDSearchImpl.java

+11-2
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,16 @@ public IBaseBundle searchEOB(long patientId, OffsetDateTime since, int pageSize,
7272
request.addHeader(BFDClient.BFD_HDR_BULK_CLIENTID, BFDClient.BFD_CLIENT_ID);
7373
request.addHeader(BFDClient.BFD_HDR_BULK_JOBID, bulkJobId);
7474

75+
byte[] responseBytes = getEOBSFromBFD(patientId, request);
76+
77+
return parseBundle(version, responseBytes);
78+
}
79+
80+
/**
81+
Method exists to track connection to BFD for New Relic
82+
*/
83+
@Trace
84+
private byte[] getEOBSFromBFD(long patientId, HttpGet request) throws IOException {
7585
byte[] responseBytes;
7686
try (CloseableHttpResponse response = (CloseableHttpResponse) httpClient.execute(request)) {
7787
int status = response.getStatusLine().getStatusCode();
@@ -87,8 +97,7 @@ public IBaseBundle searchEOB(long patientId, OffsetDateTime since, int pageSize,
8797
throw new RuntimeException("Server error occurred");
8898
}
8999
}
90-
91-
return parseBundle(version, responseBytes);
100+
return responseBytes;
92101
}
93102

94103
@Trace

docker-compose.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ services:
1919
timeout: 5s
2020
retries: 5
2121
build:
22-
image: maven:3-jdk-13
22+
image: maven:3-openjdk-17
2323
working_dir: /usr/src/mymaven
2424
# Not necessary to run mvn package since we anticipate that project
2525
# has already built so we don't need to run this command

eventlogger/src/test/java/gov/cms/ab2d/eventlogger/eventloggers/sql/AllMapperEventTest.java

+8-6
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
@SpringBootTest(classes = SpringBootApp.class)
4141
@Testcontainers
4242
public class AllMapperEventTest {
43+
public static final int ONE_MillSEC_IN_NANO = 1000000;
44+
4345
@Container
4446
private static final PostgreSQLContainer postgreSQLContainer = new AB2DPostgresqlContainer();
4547

@@ -112,7 +114,7 @@ void logApiRequest() {
112114
assertEquals(event.getId(), jsce.getId());
113115
assertEquals("laila", event.getOrganization());
114116
assertEquals("job123", event.getJobId());
115-
assertEquals(val.getNano(), event.getTimeOfEvent().getNano());
117+
assertTrue(Math.abs(val.getNano() - event.getTimeOfEvent().getNano()) < ONE_MillSEC_IN_NANO);
116118
assertEquals("http://localhost", event.getUrl());
117119
assertEquals("127.0.0.1", event.getIpAddress());
118120
assertEquals(hashIt("token"), event.getTokenHash());
@@ -197,7 +199,7 @@ void logContractSearch() {
197199
assertEquals(1, event.getEobFiles());
198200

199201

200-
assertEquals(val.getNano(), event.getTimeOfEvent().getNano());
202+
assertTrue(Math.abs(val.getNano() - event.getTimeOfEvent().getNano()) < ONE_MillSEC_IN_NANO);
201203
loggerEventRepository.delete(ContractSearchEvent.class);
202204
events = loggerEventRepository.load(ContractSearchEvent.class);
203205
assertEquals(0, events.size());
@@ -249,7 +251,7 @@ void logErrorEvent() {
249251
assertEquals(event.getId(), jsce.getId());
250252
assertEquals("laila", event.getOrganization());
251253
assertEquals("job123", event.getJobId());
252-
assertEquals(val.getNano(), event.getTimeOfEvent().getNano());
254+
assertTrue(Math.abs(val.getNano() - event.getTimeOfEvent().getNano()) < ONE_MillSEC_IN_NANO);
253255
assertEquals(ErrorEvent.ErrorType.CONTRACT_NOT_FOUND, event.getErrorType());
254256
assertEquals("Description", event.getDescription());
255257
loggerEventRepository.delete(ErrorEvent.class);
@@ -286,7 +288,7 @@ void logFileEvent() throws IOException {
286288
assertEquals(event.getId(), jsce.getId());
287289
assertEquals("laila", event.getOrganization());
288290
assertEquals("job123", event.getJobId());
289-
assertEquals(val.getNano(), event.getTimeOfEvent().getNano());
291+
assertTrue(Math.abs(val.getNano() - event.getTimeOfEvent().getNano()) < ONE_MillSEC_IN_NANO);
290292
assertEquals(hash, event.getFileHash());
291293
assertFalse(hash.isEmpty());
292294
assertEquals(tmpDir.toString() + "/testFile", event.getFileName());
@@ -323,7 +325,7 @@ void logJobStatus() {
323325
assertEquals(event.getId(), jsce.getId());
324326
assertEquals("laila", event.getOrganization());
325327
assertEquals("job123", event.getJobId());
326-
assertEquals(val.getNano(), event.getTimeOfEvent().getNano());
328+
assertTrue(Math.abs(val.getNano() - event.getTimeOfEvent().getNano()) < ONE_MillSEC_IN_NANO);
327329
assertEquals("FAILED", event.getNewStatus());
328330
assertEquals("IN_PROGRESS", event.getOldStatus());
329331
assertEquals("Description", event.getDescription());
@@ -360,7 +362,7 @@ void logReload() {
360362
assertEquals("filename", event.getFileName());
361363
assertEquals(10, event.getNumberLoaded());
362364
assertEquals(ReloadEvent.FileType.CONTRACT_MAPPING, event.getFileType());
363-
assertEquals(val.getNano(), event.getTimeOfEvent().getNano());
365+
assertTrue(Math.abs(val.getNano() - event.getTimeOfEvent().getNano()) < ONE_MillSEC_IN_NANO);
364366
loggerEventRepository.delete(ReloadEvent.class);
365367
events = loggerEventRepository.load(ReloadEvent.class);
366368
assertEquals(0, events.size());

eventlogger/src/test/java/gov/cms/ab2d/eventlogger/reports/sql/LoggerEventSummaryTest.java

+14-11
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
import gov.cms.ab2d.eventlogger.SpringBootApp;
66
import gov.cms.ab2d.eventlogger.eventloggers.sql.SqlEventLogger;
77
import gov.cms.ab2d.eventlogger.events.*;
8+
import java.io.File;
9+
import java.time.OffsetDateTime;
10+
import java.util.ArrayList;
11+
import java.util.List;
812
import org.junit.jupiter.api.Test;
913
import org.springframework.beans.factory.annotation.Autowired;
1014
import org.springframework.boot.test.context.SpringBootTest;
@@ -13,16 +17,14 @@
1317
import org.testcontainers.junit.jupiter.Container;
1418
import org.testcontainers.junit.jupiter.Testcontainers;
1519

16-
import java.io.File;
17-
import java.time.OffsetDateTime;
18-
import java.util.ArrayList;
19-
import java.util.List;
2020

2121
import static org.junit.jupiter.api.Assertions.*;
2222

2323
@SpringBootTest(classes = SpringBootApp.class)
2424
@Testcontainers
2525
class LoggerEventSummaryTest {
26+
public static final int ONE_MillSEC_IN_NANO = 1000000;
27+
2628
@Autowired
2729
private LoggerEventSummary loggerEventSummary;
2830

@@ -73,9 +75,10 @@ void getSummaryBasic() {
7375
JobSummaryEvent summary = loggerEventSummary.getSummary(jobId);
7476
assertEquals(jobId, summary.getJobId());
7577
assertEquals(usr, summary.getOrganization());
76-
assertEquals(firstTime.getNano(), summary.getSubmittedTime().getNano());
77-
assertEquals(firstTime.plusDays(1).getNano(), summary.getInProgressTime().getNano());
78-
assertEquals(firstTime.plusDays(7).getNano(), summary.getSuccessfulTime().getNano());
78+
79+
assertTrue(Math.abs(firstTime.getNano() - summary.getSubmittedTime().getNano()) < ONE_MillSEC_IN_NANO);
80+
assertTrue(Math.abs(firstTime.plusDays(1).getNano() - summary.getInProgressTime().getNano()) < ONE_MillSEC_IN_NANO);
81+
assertTrue(Math.abs(firstTime.plusDays(7).getNano() - summary.getSuccessfulTime().getNano()) < ONE_MillSEC_IN_NANO);
7982
assertNull(summary.getCancelledTime());
8083
assertNull(summary.getFailedTime());
8184
assertEquals(1, summary.getNumFilesCreated());
@@ -90,15 +93,15 @@ void getSummaryBasic() {
9093
void getSummaryFailed() {
9194
OffsetDateTime firstTime = OffsetDateTime.now().minusDays(11);
9295
JobSummaryEvent summary = getSummaryError("JOBFAIL", "FAILED", firstTime);
93-
assertEquals(firstTime.plusDays(7).getNano(), summary.getFailedTime().getNano());
96+
assertTrue(Math.abs(firstTime.plusDays(7).getNano() - summary.getFailedTime().getNano()) < ONE_MillSEC_IN_NANO);
9497
assertNull(summary.getCancelledTime());
9598
}
9699

97100
@Test
98101
void getSummaryCancelled() {
99102
OffsetDateTime firstTime = OffsetDateTime.now().minusDays(11);
100103
JobSummaryEvent summary = getSummaryError("JOBCANCEL", "CANCELLED", firstTime);
101-
assertEquals(firstTime.plusDays(7).getNano(), summary.getCancelledTime().getNano());
104+
assertTrue(Math.abs(firstTime.plusDays(7).getNano() - summary.getCancelledTime().getNano()) < ONE_MillSEC_IN_NANO);
102105
assertNull(summary.getFailedTime());
103106
}
104107

@@ -131,8 +134,8 @@ JobSummaryEvent getSummaryError(String jobId, String state, OffsetDateTime first
131134
JobSummaryEvent summary = loggerEventSummary.getSummary(jobId);
132135
assertEquals(jobId, summary.getJobId());
133136
assertEquals(usr, summary.getOrganization());
134-
assertEquals(firstTime.getNano(), summary.getSubmittedTime().getNano());
135-
assertEquals(firstTime.plusDays(1).getNano(), summary.getInProgressTime().getNano());
137+
assertTrue(Math.abs(firstTime.getNano() - summary.getSubmittedTime().getNano()) < ONE_MillSEC_IN_NANO);
138+
assertTrue(Math.abs(firstTime.plusDays(1).getNano() - summary.getInProgressTime().getNano()) < ONE_MillSEC_IN_NANO);
136139
assertNull(summary.getSuccessfulTime());
137140
assertEquals(1, summary.getNumFilesCreated());
138141
assertEquals(1, summary.getNumFilesDeleted());

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232

3333
<properties>
3434
<project.root>${basedir}</project.root>
35-
<java.version>11</java.version>
35+
<java.version>17</java.version>
3636
<hapi.version>5.6.0</hapi.version>
3737
<!-- eventlogger is imported first by all other modules, if that changes then
3838
okhttp3 must be imported first anywhere the slack client is used-->

worker/Dockerfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM openjdk:13
1+
FROM openjdk:17
22
WORKDIR /usr/src/ab2d-worker
33
ADD target/worker-*-SNAPSHOT-exe.jar /usr/src/ab2d-worker/worker.jar
44
ADD target/newrelic/newrelic.jar /usr/src/ab2d-worker/newrelic/newrelic.jar

0 commit comments

Comments
 (0)