私の徹底的なJUnitの1つは、繰り返しの途中で書き込みがブロックされています。
このフローは、FTP での受動的な取得とほとんど同じです。
JUnit ----------- MOVE_REQ (dst port 4104) --------------------> Server
loop {
JUnit <------ SEND_REQ with the object (dst port 1104) ---------- Server
JUnit --------------- SEND_RSP (same connection) --------------> Server
}
JUnit <-------- MOVE_RSP (same connection as first one) ----------- Server
そのチェーンはすべて、JUnit によって複数のスレッドで同時に実行されます。JUnit 側のサーバー (SEND_REQ に参加するサーバー) は、反対側のサーバーとまったく同じ 5 つのスレッドのプールです。
デバッグでは、サーバーが 16384 バイトの OutputStream.write で SEND_REQ でハングしていることがわかります。一方、jUnit のサーバーは、わずか 6 バイトの InputStream.read でストリームの読み取りにスタックしています。
私が最初に考えたのは、すべての接続を閉じていないため、バッファーで何らかのリークが発生していることです。しかし、私は TcpView でそれを確認しましたが、問題ありません。その時点で接続は 1 つしかありません。
なぜこれが起こっているのでしょうか?