-
Notifications
You must be signed in to change notification settings - Fork 184
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Migrate servicetalk-transport-netty-internal tests to JUnit 5 (#1568) #1601
Migrate servicetalk-transport-netty-internal tests to JUnit 5 (#1568) #1601
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you @kashike!
Please, apply the following patch. I did some minor changes:
Index: servicetalk-transport-netty-internal/src/test/java/io/servicetalk/transport/netty/internal/RequestResponseCloseHandlerTest.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/servicetalk-transport-netty-internal/src/test/java/io/servicetalk/transport/netty/internal/RequestResponseCloseHandlerTest.java b/servicetalk-transport-netty-internal/src/test/java/io/servicetalk/transport/netty/internal/RequestResponseCloseHandlerTest.java
--- a/servicetalk-transport-netty-internal/src/test/java/io/servicetalk/transport/netty/internal/RequestResponseCloseHandlerTest.java (revision b9e6fd65aed3af06810928802aaafd2e11432e26)
+++ b/servicetalk-transport-netty-internal/src/test/java/io/servicetalk/transport/netty/internal/RequestResponseCloseHandlerTest.java (date 1622657110027)
@@ -177,7 +177,6 @@
private static Collection<Object[]> scenariosData() { // If inserting lines here, adjust the `offset` variable below
StackTraceElement se = Thread.currentThread().getStackTrace()[1];
List<Object[]> params = asList(new Object[][]{
- // {Mode, Events, ExpectedEvent, Desc} - IGNORE disables test-case, keep contiguous on single line
{C, e(OB, OE, IB, IE), NIL, "sequential, no close"},
{C, e(OB, OE, IB, OB, OE, IE, IB, IE), NIL, "pipelined, no close"},
{C, e(OB, OC, OE, IB, IE, FC), PCO, "sequential, closing outbound"},
@@ -265,7 +264,7 @@
{S, e(IB, IE, IS, OS, FC), CCI, "Input closed after read, outbound closed while writing"},
});
String fileName = se.getFileName();
- int offset = se.getLineNumber() + 3; // Lines between `se` and first parameter
+ int offset = se.getLineNumber() + 2; // Lines between `se` and first parameter
for (int i = 0; i < params.size(); i++) { // Appends param location as last entry
Object[] o = params.get(i);
params.set(i, new Object[]{o[0], o[1], o[2], o[3], fileName + ":" + (offset + i)});
@@ -297,11 +296,7 @@
/**
* Simulates netty channel behavior, behavior verified by {@link ChannelBehavior} below.
*/
- private void setup(final ScenarioMode mode, final List<ScenarioEvents> events, final ScenarioExpectEvent expectEvent,
- final String desc, final String location) {
-
- // A description prefixed with "IGNORE " will not fail the suite!
- assumeFalse(desc.startsWith("IGNORE "));
+ private void setUp(final ScenarioMode mode) {
ctx = mock(ChannelHandlerContext.class);
channel = mock(SocketChannel.class, "[id: 0xmocked, L:mocked - R:mocked]");
when(ctx.channel()).thenReturn(channel);
@@ -368,16 +363,14 @@
assertTrue(!closed.get() && !outputShutdown.get(), "Channel Closed (write) - testcase invalid or bug?");
}
- @ParameterizedTest(name = "{index}. {3} - {0} {1} = {2}")
+ @ParameterizedTest(name = "{index}. {3} - {0} {1} = {2}, {4}")
@MethodSource("io.servicetalk.transport.netty.internal.RequestResponseCloseHandlerTest#scenariosData")
- void simulate(final ScenarioMode mode,
- final List<ScenarioEvents> events,
- final ScenarioExpectEvent expectEvent,
- final String desc,
- final String location) {
- setup(mode, events, expectEvent, desc, location);
+ void simulate(final ScenarioMode mode, final List<ScenarioEvents> events, final ScenarioExpectEvent expectEvent,
+ final String desc, final String location) {
+ setUp(mode);
LOGGER.debug("Test.Params: ({})", location); // Intellij jump to parameter format, don't change!
- LOGGER.debug("[{}] {} - {} = {}", desc, mode, events, expectEvent);
+ LOGGER.debug("{} - {} {} = {}", desc, mode, events, expectEvent);
+
InOrder order = inOrder(h, channel, pipeline, scc);
verify(h).registerEventHandler(eq(channel), any());
for (ScenarioEvents event : events) {
Index: servicetalk-transport-netty-internal/src/test/java/io/servicetalk/transport/netty/internal/NonPipelinedCloseHandlerTest.java
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/servicetalk-transport-netty-internal/src/test/java/io/servicetalk/transport/netty/internal/NonPipelinedCloseHandlerTest.java b/servicetalk-transport-netty-internal/src/test/java/io/servicetalk/transport/netty/internal/NonPipelinedCloseHandlerTest.java
--- a/servicetalk-transport-netty-internal/src/test/java/io/servicetalk/transport/netty/internal/NonPipelinedCloseHandlerTest.java (revision b9e6fd65aed3af06810928802aaafd2e11432e26)
+++ b/servicetalk-transport-netty-internal/src/test/java/io/servicetalk/transport/netty/internal/NonPipelinedCloseHandlerTest.java (date 1622657110018)
@@ -28,6 +28,8 @@
import io.netty.util.concurrent.EventExecutor;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.MethodSource;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.util.Collection;
import java.util.List;
@@ -70,6 +72,8 @@
import static org.mockito.Mockito.when;
class NonPipelinedCloseHandlerTest {
+ private static final Logger LOGGER = LoggerFactory.getLogger(NonPipelinedCloseHandlerTest.class);
+
private ChannelHandlerContext ctx;
private Channel channel;
private CloseHandler h;
@@ -132,7 +136,7 @@
}
@SuppressWarnings("unused")
- private static Collection<Object[]> data() {
+ private static Collection<Object[]> data() { // If inserting lines here, adjust the `offset` variable below
StackTraceElement se = Thread.currentThread().getStackTrace()[1];
List<Object[]> params = asList(new Object[][] {
{true, e(OB, OE, IB, IE), NIL, "sequential, no close"},
@@ -193,7 +197,7 @@
{false, e(IB, IE, OB, OE, OC), PCO, "protocol outbound close while idle"},
});
String fileName = se.getFileName();
- int offset = se.getLineNumber() + 3; // Lines between `se` and first parameter
+ int offset = se.getLineNumber() + 2; // Lines between `se` and first parameter
for (int i = 0; i < params.size(); i++) { // Appends param location as last entry
Object[] o = params.get(i);
params.set(i, new Object[]{o[0], o[1], o[2], o[3], fileName + ":" + (offset + i)});
@@ -203,14 +207,13 @@
return params;
}
- @ParameterizedTest(name = "{index}. {3} - {0} {1} = {2}")
+ @ParameterizedTest(name = "{index}. {3}: client={0}, {1} = {2}, {4}")
@MethodSource("data")
- void simulate(final boolean client,
- final List<Events> events,
- final ExpectEvent expectEvent,
- final String desc,
- final String location) {
+ void simulate(final boolean client, final List<Events> events, final ExpectEvent expectEvent,
+ final String desc, final String location) {
setUp(client);
+ LOGGER.debug("Test.Params: ({})", location); // Intellij jump to parameter format, don't change!
+ LOGGER.debug("{}: client={}, {} = {}", desc, client, events, expectEvent);
for (Events event : events) {
switch (event) {
Also, you have some checkstyle violations:
https://github.com/apple/servicetalk/pull/1601/checks?check_run_id=2729369372
Error: eckstyle] [ERROR] /home/runner/work/servicetalk/servicetalk/servicetalk-transport-netty-internal/src/test/java/io/servicetalk/transport/netty/internal/FlushStrategyHolderTest.java:30:5: Redundant 'public' modifier. [RedundantModifier]
1521
1522
Error: eckstyle] [ERROR] /home/runner/work/servicetalk/servicetalk/servicetalk-transport-netty-internal/src/test/java/io/servicetalk/transport/netty/internal/SslCloseNotifyAlertClientHandlingTest.java:30:5: Redundant 'public' modifier. [RedundantModifier]
1523
> Task :servicetalk-transport-netty-internal:checkstyleTest FAILED
1524
Error: eckstyle] [ERROR] /home/runner/work/servicetalk/servicetalk/servicetalk-transport-netty-internal/src/test/java/io/servicetalk/transport/netty/internal/SslCloseNotifyAlertServerHandlingTest.java:35:5: Redundant 'public' modifier. [RedundantModifier]
1525
Error: eckstyle] [ERROR] /home/runner/work/servicetalk/servicetalk/servicetalk-transport-netty-internal/src/test/java/io/servicetalk/transport/netty/internal/WriteStreamSubscriberFutureListenersTest.java:57:5: Redundant 'public' modifier. [RedundantModifier]
...l/src/test/java/io/servicetalk/transport/netty/internal/RequestResponseCloseHandlerTest.java
Outdated
Show resolved
Hide resolved
...l/src/test/java/io/servicetalk/transport/netty/internal/RequestResponseCloseHandlerTest.java
Show resolved
Hide resolved
…1568) Motivation: - JUnit 5 leverages features from Java 8 or later, such as lambda functions, making tests more powerful and easier to maintain. - JUnit 5 has added some very useful new features for describing, organizing, and executing tests. For instance, tests get better display names and can be organized hierarchically. - JUnit 5 is organized into multiple libraries, so only the features you need are imported into your project. With build systems such as Maven and Gradle, including the right libraries is easy. - JUnit 5 can use more than one extension at a time, which JUnit 4 could not (only one runner could be used at a time). This means you can easily combine the Spring extension with other extensions (such as your own custom extension). Modifications: - Unit tests have been migrated from JUnit 4 to JUnit 5 Result: Module servicetalk-transport-netty-internal now runs tests using JUnit 5
b9e6fd6
to
af6dd73
Compare
@idelpivnitskiy Changes applied. |
Thank you, @kashike! Next time consider pushing additional PRs to the branch instead of squashing and force pushing. It makes it easier for reviewers to see the changes. Otherwise, we have to review the full PR again. |
Motivation:
Modifications:
Result:
Module servicetalk-transport-netty-internal now runs tests using JUnit 5