Skip to content

Commit c9b7742

Browse files
authored
Merge pull request #205 from newrelic/develop
Release CSEC Java Agent Version 1.1.2
2 parents 4e71ee3 + cb5c691 commit c9b7742

File tree

43 files changed

+836
-111
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+836
-111
lines changed

.github/actions/setup-environment-inst-verifier/action.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ runs:
1717
with:
1818
distribution: 'temurin'
1919
java-version: |
20+
21
2021
20
2122
17
2223
11
@@ -29,7 +30,8 @@ runs:
2930
sed -i -e "s|jdk8=8|jdk8=${JAVA_HOME_8_X64}|
3031
s|jdk11=11|jdk11=${JAVA_HOME_11_X64}|
3132
s|jdk17=17|jdk17=${JAVA_HOME_17_X64}|
32-
s|jdk20=20|jdk20=${JAVA_HOME_20_X64}|" gradle.properties.gha
33+
s|jdk20=20|jdk20=${JAVA_HOME_20_X64}|
34+
s|jdk21=21|jdk20=${JAVA_HOME_21_X64}|" gradle.properties.gha
3335
cat gradle.properties.gha >> gradle.properties
3436
3537
- name: Setup Gradle

.github/actions/setup-environment/action.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ runs:
3636
with:
3737
distribution: 'temurin'
3838
java-version: |
39+
21
3940
20
4041
17
4142
11
@@ -48,7 +49,8 @@ runs:
4849
sed -i -e "s|jdk8=8|jdk8=${JAVA_HOME_8_X64}|
4950
s|jdk11=11|jdk11=${JAVA_HOME_11_X64}|
5051
s|jdk17=17|jdk17=${JAVA_HOME_17_X64}|
51-
s|jdk20=20|jdk20=${JAVA_HOME_20_X64}|" gradle.properties.gha
52+
s|jdk20=20|jdk20=${JAVA_HOME_20_X64}|
53+
s|jdk21=21|jdk21=${JAVA_HOME_21_X64}|" gradle.properties.gha
5254
cat gradle.properties.gha >> gradle.properties
5355
5456
- name: Setup Gradle

.github/actions/unit-test/action.yml

+37-2
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,45 @@
11
name: Instrumentation unit tests
22
description: Run all the instrumentation unit test.
3+
inputs:
4+
java-version:
5+
description: 'The JVM Version to use'
6+
required: true
7+
default: '8'
38

49
runs:
510
using: composite
611

712
steps:
8-
- name: Run instrumentation unit tests
13+
- name: Run instrumentation unit tests on Java ${{ inputs.java-version }} attempt 1
14+
id: run_tests_1
915
shell: bash
10-
run: ./gradlew ${GRADLE_OPTIONS} --info test
16+
continue-on-error: true
17+
run: |
18+
echo "Running attempt 1"
19+
./gradlew ${GRADLE_OPTIONS} --info test -Ptest${{ inputs.java-version }} --continue
20+
21+
- name: Run instrumentation unit tests on Java ${{ inputs.java-version }} attempt 2
22+
id: run_tests_2
23+
shell: bash
24+
continue-on-error: true
25+
if: steps.run_tests_1.outcome == 'failure'
26+
run: |
27+
echo "Running attempt 2"
28+
./gradlew ${GRADLE_OPTIONS} --info test -Ptest${{ inputs.java-version }} --continue
29+
30+
- name: Run instrumentation unit tests on Java ${{ inputs.java-version }} attempt 3
31+
id: run_tests_3
32+
shell: bash
33+
continue-on-error: true
34+
if: steps.run_tests_2.outcome == 'failure'
35+
run: |
36+
echo "Running attempt 3"
37+
./gradlew ${GRADLE_OPTIONS} --info test -Ptest${{ inputs.java-version }} --continue
38+
39+
- name: Run instrumentation unit tests on Java ${{ inputs.java-version }} attempt 4
40+
id: run_tests_4
41+
shell: bash
42+
if: steps.run_tests_3.outcome == 'failure'
43+
run: |
44+
echo "Running attempt 4"
45+
./gradlew ${GRADLE_OPTIONS} --info test -Ptest${{ inputs.java-version }} --continue

.github/workflows/X-Reusable-Build-Security-Agent.yml

+7-1
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,10 @@ jobs:
5959
# this list is paginated and will be used in the verify-module job.
6060
build-agent:
6161
runs-on: ubuntu-20.04
62+
strategy:
63+
matrix:
64+
java-version: [ 8, 11, 17 ]
65+
6266
steps:
6367
- name: Checkout CSEC Repo
6468
uses: actions/checkout@v3
@@ -79,4 +83,6 @@ jobs:
7983

8084
- name: Run CSEC unit tests
8185
if: ${{ inputs.run-unit-test == 'true' }}
82-
uses: ./.github/actions/unit-test
86+
uses: ./.github/actions/unit-test
87+
with:
88+
java-version: ${{ matrix.java-version }}

Changelog.md

+12
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,18 @@ Noteworthy changes to the agent are documented in this file.
33

44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6+
## [1.1.2] - 2024-3-11
7+
### Changes
8+
- [NR-174177](https://new-relic.atlassian.net/browse/NR-174177) Ning Async HTTP client Support: The security agent now also supports com.ning:async-http-client 1.0.0 and above [PR-152](https://github.com/newrelic/csec-java-agent/pull/152), [PR-118](https://github.com/newrelic/csec-java-agent/pull/118), [PR-116](https://github.com/newrelic/csec-java-agent/pull/116)
9+
- [NR-181375](https://new-relic.atlassian.net/browse/NR-181375) Jersey Support: The security agent now also supports Jersey 2.0 and above [PR-150](https://github.com/newrelic/csec-java-agent/pull/150), [PR-149](https://github.com/newrelic/csec-java-agent/pull/149)
10+
- [NR-187224](https://new-relic.atlassian.net/browse/NR-187224) Mule Support: The security agent now also supports Mule server version 3.6 to 3.9.x [PR-144](https://github.com/newrelic/csec-java-agent/pull/144), [PR-143](https://github.com/newrelic/csec-java-agent/pull/143)
11+
- Jetty v12 Support: The security agent now also support Jetty version 12 and above [PR-106](https://github.com/newrelic/csec-java-agent/pull/106)
12+
- [NR-174175](https://new-relic.atlassian.net/browse/NR-174175) Lettuce Support: The security agent now also supports Lettuce 4.4.0.Final and above [PR-125](https://github.com/newrelic/csec-java-agent/pull/125)
13+
- [NR-234869](https://new-relic.atlassian.net/browse/NR-234869) GHA Update Unit Test Action for Testing Unit tests with different java-version with re-tries on failure [PR-204](https://github.com/newrelic/csec-java-agent/pull/204)
14+
15+
### Fixes
16+
- [NR-223811](https://new-relic.atlassian.net/browse/NR-223811) Extract Server Configuration to resolve IAST localhost connection with application for wildfly server [PR-192](https://github.com/newrelic/csec-java-agent/pull/192)
17+
- [NR-234903](https://new-relic.atlassian.net/browse/NR-234903) Trustboundary events now will have list of string as parameter schema
618

719
## [1.1.1] - 2024-2-16
820
### Changes

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ The agent automatically instruments the following frameworks.
3434
- Jetty 9.3.0.M1 to latest
3535
- Mule ESB 3.6 to 3.9.x
3636
- gRPC 1.4.0 to latest**
37+
- Jersey 2.0 to latest
3738

3839
** IAST for **gRPC** requires the dependency [protobuf-java-util](https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util) for IAST request replay.
3940

@@ -64,6 +65,7 @@ The agent automatically instruments the following HTTP clients and messaging ser
6465
- Saxpath 1.0
6566
- Xalan XPATH 2.1.0 to latest
6667
- Async Http Client from 2.0 to latest
68+
- Ning Async HTTP Client 1.0.0 to latest
6769

6870
### Datastores
6971

gradle.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# The agent version.
2-
agentVersion=1.1.1
2+
agentVersion=1.1.2
33
jsonVersion=1.1.1
44
# Updated exposed NR APM API version.
55
nrAPIVersion=8.4.0

instrumentation-security-test/src/main/java/com/newrelic/agent/security/introspec/internal/SecurityIntrospectorImpl.java

+4-16
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import java.io.IOException;
2020
import java.net.ServerSocket;
2121
import java.sql.Statement;
22+
import java.util.ArrayList;
2223
import java.util.Collections;
2324
import java.util.List;
2425
import java.util.Set;
@@ -134,22 +135,9 @@ public void setRequestInputStreamHash(int hashCode) {
134135

135136
@Override
136137
public void clear() {
137-
NewRelicSecurity.getAgent().getSecurityMetaData().addCustomAttribute(JDBCVendor.META_CONST_JDBC_VENDOR, null);
138-
NewRelicSecurity.getAgent().getSecurityMetaData().addCustomAttribute(R2DBCVendor.META_CONST_R2DBC_VENDOR, null);
139-
NewRelicSecurity.getAgent().getSecurityMetaData().getCustomAttribute(Agent.OPERATIONS, List.class).clear();
140-
NewRelicSecurity.getAgent().getSecurityMetaData().getCustomAttribute(Agent.EXIT_OPERATIONS, List.class).clear();
141-
NewRelicSecurity.getAgent().getSecurityMetaData().addCustomAttribute(REQUEST_READER_HASH, null);
142-
NewRelicSecurity.getAgent().getSecurityMetaData().addCustomAttribute(REQUEST_INPUTSTREAM_HASH, null);
143-
NewRelicSecurity.getAgent().getSecurityMetaData().addCustomAttribute(RESPONSE_WRITER_HASH, null);
144-
NewRelicSecurity.getAgent().getSecurityMetaData().addCustomAttribute(RESPONSE_OUTPUTSTREAM_HASH, null);
145-
NewRelicSecurity.getAgent().getSecurityMetaData().addCustomAttribute(UserDataTranslationHelper.getAttributeName(Log4JStrSubstitutor.class.getName()), null);
146-
147-
// used internally by some methods before saving hash code hence cleanup required
148-
NewRelicSecurity.getAgent().getSecurityMetaData().addCustomAttribute(REQUEST_STREAM_OR_READER_CALLED, null);
149-
NewRelicSecurity.getAgent().getSecurityMetaData().addCustomAttribute(RESPONSE_STREAM_OR_WRITER_CALLED, null);
150-
151-
NewRelicSecurity.getAgent().getSecurityMetaData().addCustomAttribute(GrpcHelper.NR_SEC_GRPC_REQUEST_DATA, null);
152-
NewRelicSecurity.getAgent().getSecurityMetaData().addCustomAttribute(GrpcHelper.NR_SEC_GRPC_RESPONSE_DATA, null);
138+
NewRelicSecurity.getAgent().getSecurityMetaData().clearCustomAttr();
139+
NewRelicSecurity.getAgent().getSecurityMetaData().addCustomAttribute(Agent.OPERATIONS, new ArrayList<>());
140+
NewRelicSecurity.getAgent().getSecurityMetaData().addCustomAttribute(Agent.EXIT_OPERATIONS, new ArrayList<>());
153141

154142
SecurityMetaData meta = NewRelicSecurity.getAgent().getSecurityMetaData();
155143
meta.setRequest(new HttpRequest());

instrumentation-security/apache-log4j-3.0.0/build.gradle

+7
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,10 @@ java {
2323
languageVersion.set(JavaLanguageVersion.of(11))
2424
}
2525
}
26+
27+
test {
28+
// These instrumentation tests only run on Java 11+ regardless of the -PtestN gradle property that is set.
29+
onlyIf {
30+
!project.hasProperty('test8')
31+
}
32+
}

instrumentation-security/dynamodb-2.1.2/src/test/java/com/nr/agent/security/instrumentation/dynamodb_212/DynamodbTest.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ public void testTransactGetItems() {
193193
else if (i==1) {
194194
Assert.assertEquals("Invalid payload value.", "Red",query.get("artist").s());
195195
}
196-
Assert.assertEquals("Invalid payload value.", "artist",request.getQuery().getProjectionExpression());
196+
Assert.assertEquals("Invalid payload value.", "artist,Genre",request.getQuery().getProjectionExpression());
197197
Assert.assertEquals("Invalid query-type.", "read", request.getQueryType());
198198
i++;
199199
}
@@ -855,8 +855,8 @@ public void transactGetItems() {
855855
key2.put("artist", AttributeValue.builder().s("Red").build());
856856

857857
TransactGetItemsRequest queryRequest = TransactGetItemsRequest.builder().transactItems(
858-
TransactGetItem.builder().get(Get.builder().tableName(DynamoUtil.TABLE).key(key).projectionExpression("artist").build()).build(),
859-
TransactGetItem.builder().get(Get.builder().tableName(DynamoUtil.TABLE).key(key2).projectionExpression("artist").build()).build()).build();
858+
TransactGetItem.builder().get(Get.builder().tableName(DynamoUtil.TABLE).key(key).projectionExpression("artist,Genre").build()).build(),
859+
TransactGetItem.builder().get(Get.builder().tableName(DynamoUtil.TABLE).key(key2).projectionExpression("artist,Genre").build()).build()).build();
860860

861861
client.transactGetItems(queryRequest);
862862
}

instrumentation-security/httpclient-jdk11/build.gradle

+3-1
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,13 @@ java {
2121
}
2222

2323
test {
24+
// These instrumentation tests only run on Java 11+ regardless of the -PtestN gradle property that is set.
2425
onlyIf {
25-
inputs.getProperties()["test.jdk"]!="jdk8"
26+
!project.hasProperty('test8')
2627
}
2728
}
2829

30+
2931
compileJava {
3032
options.fork = true
3133
options.bootstrapClasspath = null

instrumentation-security/java-io-inputstream-jdk8/src/test/java/com/nr/agent/security/instrumentation/javaio/InputStreamJdk8Test.java

+3
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55
import com.newrelic.agent.security.introspec.SecurityInstrumentationTestRunner;
66
import com.newrelic.agent.security.introspec.SecurityIntrospector;
77
import com.newrelic.api.agent.security.schema.SecurityMetaData;
8+
import com.newrelic.security.test.marker.Java17IncompatibleTest;
89
import org.junit.AfterClass;
910
import org.junit.Assert;
1011
import org.junit.Before;
1112
import org.junit.BeforeClass;
1213
import org.junit.FixMethodOrder;
1314
import org.junit.Ignore;
1415
import org.junit.Test;
16+
import org.junit.experimental.categories.Category;
1517
import org.junit.runner.RunWith;
1618
import org.junit.runners.MethodSorters;
1719

@@ -31,6 +33,7 @@
3133
@RunWith(SecurityInstrumentationTestRunner.class)
3234
@InstrumentationTestConfig(includePrefixes = {"java.io","com.newrelic.agent.security.instrumentation.javaio"})
3335
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
36+
@Category({Java17IncompatibleTest.class})
3437
public class InputStreamJdk8Test {
3538
private static String FILE;
3639
private static String FILE_TEMP;

instrumentation-security/java-io-inputstream-jdk9/build.gradle

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ java {
2121
}
2222

2323
test {
24-
// These instrumentation tests only run on Java 9+ regardless of the -PtestN gradle property that is set.
24+
// These instrumentation tests only run on Java 11+ regardless of the -PtestN gradle property that is set.
2525
onlyIf {
26-
java.toolchain.getLanguageVersion().get().asInt() > 10
26+
!project.hasProperty('test8')
2727
}
28-
}
28+
}

instrumentation-security/java-io-inputstream-jdk9/src/test/java/com/nr/instrumentation/security/inputstream/jdk9/InputStreamJdk9Test.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.newrelic.agent.security.introspec.SecurityIntrospector;
66
import com.newrelic.api.agent.security.schema.SecurityMetaData;
77
import com.newrelic.security.test.marker.Java11IncompatibleTest;
8+
import com.newrelic.security.test.marker.Java17IncompatibleTest;
89
import com.newrelic.security.test.marker.Java8IncompatibleTest;
910
import org.junit.AfterClass;
1011
import org.junit.Assert;
@@ -30,7 +31,7 @@
3031
import java.util.List;
3132
import java.util.UUID;
3233

33-
@Category({ Java8IncompatibleTest.class, Java11IncompatibleTest.class })
34+
@Category({ Java8IncompatibleTest.class, Java11IncompatibleTest.class, Java17IncompatibleTest.class })
3435
@RunWith(SecurityInstrumentationTestRunner.class)
3536
@InstrumentationTestConfig(includePrefixes = {"com.newrelic.agent.security.instrumentation.javaio.io","com.newrelic.agent.security.instrumentation.javaio"})
3637
@FixMethodOrder(MethodSorters.NAME_ASCENDING)

instrumentation-security/javax-xpath/src/test/java/com/nr/agent/security/instrumentation/xpath/javax/XPathTest.java

+3
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,12 @@
77
import com.newrelic.api.agent.security.schema.VulnerabilityCaseType;
88
import com.newrelic.api.agent.security.schema.operation.XPathOperation;
99
import com.newrelic.agent.security.instrumentation.xpath.javax.XPATHUtils;
10+
import com.newrelic.security.test.marker.Java17IncompatibleTest;
1011
import org.junit.Assert;
1112
import org.junit.FixMethodOrder;
1213
import org.junit.Ignore;
1314
import org.junit.Test;
15+
import org.junit.experimental.categories.Category;
1416
import org.junit.runner.RunWith;
1517
import org.junit.runners.MethodSorters;
1618
import org.w3c.dom.Document;
@@ -25,6 +27,7 @@
2527
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
2628
@RunWith(SecurityInstrumentationTestRunner.class)
2729
@InstrumentationTestConfig(includePrefixes = { "javax.xml.xpath", "com.sun.org.apache.xpath.internal" })
30+
@Category({ Java17IncompatibleTest.class})
2831
public class XPathTest {
2932

3033
private final String XML_DOC = "src/test/resources/Customer.xml";

instrumentation-security/javax-xpath/src/test/java/com/nr/agent/security/instrumentation/xpath/javax/internal/XPathInternalTest.java

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import com.newrelic.api.agent.security.schema.AbstractOperation;
77
import com.newrelic.api.agent.security.schema.VulnerabilityCaseType;
88
import com.newrelic.api.agent.security.schema.operation.XPathOperation;
9+
import com.newrelic.security.test.marker.Java17IncompatibleTest;
910
import com.sun.org.apache.xml.internal.utils.DefaultErrorHandler;
1011
import com.sun.org.apache.xml.internal.utils.PrefixResolver;
1112
import com.sun.org.apache.xml.internal.utils.PrefixResolverDefault;
@@ -16,6 +17,7 @@
1617
import org.junit.Assert;
1718
import org.junit.FixMethodOrder;
1819
import org.junit.Test;
20+
import org.junit.experimental.categories.Category;
1921
import org.junit.runner.RunWith;
2022
import org.junit.runners.MethodSorters;
2123
import org.w3c.dom.Document;
@@ -32,6 +34,7 @@
3234
@RunWith(SecurityInstrumentationTestRunner.class)
3335
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
3436
@InstrumentationTestConfig(includePrefixes = { "javax.xml.xpath", "com.sun.org.apache.xpath.internal" })
37+
@Category({ Java17IncompatibleTest.class})
3538
public class XPathInternalTest {
3639
private final String XML_DOC = "src/test/resources/Customer.xml";
3740
private final String EXPRESSION = "/Customers/Customer";

instrumentation-security/jersey-2.16/build.gradle

+3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ dependencies {
44
implementation("com.newrelic.agent.java:newrelic-api:${nrAPIVersion}")
55
implementation("org.glassfish.jersey.core:jersey-server:2.16")
66

7+
testImplementation("org.glassfish.jersey.containers:jersey-container-grizzly2-http:2.28")
8+
testImplementation("org.glassfish.jersey.containers:jersey-container-servlet:2.28")
9+
testImplementation('org.glassfish.jersey.inject:jersey-hk2:2.28')
710
}
811

912
jar {

instrumentation-security/jersey-2.16/src/test/java/com/nr/agent/security/instrumentation/jersey2/JerseyTests.java

+5
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
import com.newrelic.api.agent.security.schema.HttpResponse;
1919
import com.newrelic.api.agent.security.schema.VulnerabilityCaseType;
2020
import com.newrelic.api.agent.security.schema.operation.RXSSOperation;
21+
import com.newrelic.security.test.marker.Java11IncompatibleTest;
22+
import com.newrelic.security.test.marker.Java17IncompatibleTest;
23+
import com.newrelic.security.test.marker.Java9IncompatibleTest;
2124
import org.glassfish.grizzly.http.server.HttpServer;
2225
import org.glassfish.grizzly.http.util.Header;
2326
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
@@ -26,6 +29,7 @@
2629
import org.junit.AfterClass;
2730
import org.junit.BeforeClass;
2831
import org.junit.Test;
32+
import org.junit.experimental.categories.Category;
2933
import org.junit.runner.RunWith;
3034

3135
import javax.ws.rs.client.Client;
@@ -53,6 +57,7 @@
5357

5458
@RunWith(SecurityInstrumentationTestRunner.class)
5559
@InstrumentationTestConfig(includePrefixes = {"com.newrelic.agent.security.instrumentation.jersey2", "org.glassfish.jersey"})
60+
@Category({ Java9IncompatibleTest.class, Java11IncompatibleTest.class, Java17IncompatibleTest.class })
5661
public class JerseyTests {
5762

5863
private static HttpServer server;

instrumentation-security/jersey-2/build.gradle

+3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ dependencies {
44
implementation("com.newrelic.agent.java:newrelic-api:${nrAPIVersion}")
55
implementation("org.glassfish.jersey.core:jersey-server:2.0")
66

7+
testImplementation("org.glassfish.jersey.containers:jersey-container-grizzly2-http:2.0")
8+
testImplementation("org.glassfish.jersey.containers:jersey-container-servlet:2.0")
9+
testImplementation('org.glassfish.hk2:hk2-api:2.1.88')
710
}
811

912
jar {

instrumentation-security/jersey-2/src/test/java/com/nr/agent/security/instrumentation/jersey2/JerseyTests.java

+5
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
import com.newrelic.api.agent.security.schema.HttpResponse;
1919
import com.newrelic.api.agent.security.schema.VulnerabilityCaseType;
2020
import com.newrelic.api.agent.security.schema.operation.RXSSOperation;
21+
import com.newrelic.security.test.marker.Java11IncompatibleTest;
22+
import com.newrelic.security.test.marker.Java17IncompatibleTest;
23+
import com.newrelic.security.test.marker.Java9IncompatibleTest;
2124
import org.glassfish.grizzly.http.server.HttpServer;
2225
import org.glassfish.grizzly.http.util.Header;
2326
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
@@ -26,6 +29,7 @@
2629
import org.junit.AfterClass;
2730
import org.junit.BeforeClass;
2831
import org.junit.Test;
32+
import org.junit.experimental.categories.Category;
2933
import org.junit.runner.RunWith;
3034

3135
import javax.ws.rs.client.Client;
@@ -53,6 +57,7 @@
5357

5458
@RunWith(SecurityInstrumentationTestRunner.class)
5559
@InstrumentationTestConfig(includePrefixes = {"com.newrelic.agent.security.instrumentation.jersey2", "org.glassfish.jersey"})
60+
@Category({ Java9IncompatibleTest.class, Java11IncompatibleTest.class, Java17IncompatibleTest.class })
5661
public class JerseyTests {
5762

5863
private static HttpServer server;

0 commit comments

Comments
 (0)