ノート

[SUB-TASK] 8381862: Refactor remaining TestNG tests under jdk/net/ExtendedSocketOption to use JUnit

jdk/net/ExtendedSocketOption 配下に残っていた TestNG ベースの NAPI テストを JUnit へ移行しました。

概要#

 jdk/net/ExtendedSocketOption 配下には,SO_INCOMING_NAPI_ID の​挙動を​確認する​ TestNG ベースの​テストが​残っていました。​ 今回の​修正では,​以下の​ 5 ファイルを​ JUnit へ​移行しました1

  • AsynchronousSocketChannelNAPITest.java
  • DatagramChannelNAPITest.java
  • DatagramSocketNAPITest.java
  • SocketChannelNAPITest.java
  • SocketNAPITest.java

 基本的な​置き換えは,@run testng を​ @run junit へ,​ @BeforeTest を​ @BeforeAll へ,SkipException を​ Assumptions.abort(...) へ移す形です。​ 初期化処理は​各テスト・クラス全体に​対して​一度だけ​行えば​よいため,​ JUnit 側では​ static @BeforeAll と​して​表現しました。

- * @run testng SocketChannelNAPITest
- * @run testng/othervm -Djava.net.preferIPv4Stack=true SocketChannelNAPITest
+ * @run junit ${test.main.class}
+ * @run junit/othervm -Djava.net.preferIPv4Stack=true ${test.main.class}

 また,assertEquals の​引数順も​ JUnit の​慣例に​合わせて,​ 期待値を​先,​実際の​値を​後に​する​形へ​整理しました。

-assertEquals(socketID, 0, "AsynchronousSocketChannel: Sender");
+assertEquals(0, socketID, "AsynchronousSocketChannel: Sender");

 単なる​フレームワーク移行だけでなく,​NAPI ID の​一貫性確認で​使っていた​ initialRun と​一時変数の​扱いも​見直しました。​ 最初の​受信時の​値を​ originalID と​して​保存し,​2 回目以降は​その値と​比較するように​しています。​ これは​単純に​バグですね。​ついでに​治して​おきましょう。

2026/04/28 PR 作成#

 PR では,​残っていた​ TestNG テストを​ JUnit へ​移行し,​ @BeforeTest は​意図している​スコープに​合わせて​ static @BeforeAll へ​置き換えた​ことを​説明しました2

 あわせて,SocketNAPITest では​ initialRun が​最初から​ false に​なっており,​ 他の​一部​テストでは​ tempID が​毎回​更新されていた​ため,​ ​「最初に​観測した​ ID と​以後の​ ID が​一致する​こと」を​確認する​意図が​弱くなっていました。​ その​ため,originalID に​初回値を​保存してから​比較する​形へ​直しました。

2026/04/28-29 レビュー対応#

 Alan Bateman 氏3から,assertEquals の​引数順を​入れ替えた​箇所が​まだ​残っている​可能性を​指摘いただきました。​ Daniel Fuchs 氏4からは,@run junit の​対象クラス名を​直接書くのではなく,​ ${test.main.class} を​使う​提案を​いただきました。​ Marcono1234 氏5から,​既存コードに​あった​ if(initialRun) の​スペース不足を​指摘いただきました。

 ぞれぞれの​レビューに​対応しました。

2026/04/29-30 追加修正#

 ​その​後,​Fuchs 氏4から​ Approve を​いただき,/integrate を​行いました。

2026/05/05 統合#

 同氏に​ /sponsor を​していただき,91933ed6 と​して​ JDK へ​統合されました。


Footnotes#

  1. 2