1

サーバーとのクライアントのソケット接続をシミュレートする約 100 の JUnit テストがあります。それらは次のようになります。

@Test
public void testProtocolInACertainWay() throws Exception {
    Socket socket = _socketFactory.createSocket(_host, _port);  // SSLSocketFactory

    // Send payload
    DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());
    outputStream.write(/* test-specific payload */);
    outputStream.flush();

    // Receive response
    DataInputStream inputStream = new DataInputStream(socket.getInputStream());        
    socket.setSoTimeout(5000);
    byte[] buffer = new byte[512];
    int numBytesRead = inputStream.read(buffer);
    buffer = ArrayUtils.subarray(buffer, 0, numBytesRead);

    // Assert test-specific stuff on response
    Assert.assertTrue(buffer[0] == (byte)1);  // for example

    /* At this point, depending on the test, we either repeat similar steps with different payloads or end the test */
}

ここで、サーバーからこれらのテスト (またはサブセット) を一度に 150 万回実行できるようにしたいと考えています。つまり、1.5M のソケット書き込みを同時に送信し、それらをすべて読み取り、それらの応答をアサートしたいということです。

100 個の JUnit テストすべてを書き直さなくても、これを行う方法はありますか? (はい、そう言ってください:))

ありがとう!

4

1 に答える 1

0

多くの調査の結果、私が本当にやりたかったことは Netty または vert.x を使用することであることがわかりました。I/O をブロックするのではなく、イベント キューを使用するようにすべてのテストを書き直す必要がありました。

于 2013-11-25T22:45:58.327 に答える