簡體   English   中英

模擬 sftp 連接中斷

[英]Mimic sftp connection disruption

我試圖在不使用 sftp.disconnect() 方法的情況下突然斷開 Java 中的 SFTP 連接。 使用它來構建一個集成測試,檢查是否每次都進行了清理。 請參閱下面的測試:

public void checkDisruptedConnections() throws JSchException, InterruptedException {
    ChannelSftp sftp = setupSftp(null);
    sftp.connect();

    try {
        //disrupt connection OVER HERE
    } catch (Exception e) {
        assertEquals("1", jedis.get(SESSION_KEY));
    }

    waitForConnectionClose();
    assertEquals("0", jedis.get(SESSION_KEY));
}

最終使用一個單獨的線程連接並被中斷。

@Test
public void testSftpInterupt() throws InterruptedException, JSchException, SftpException {
    Connect thread = new Connect();
    thread.start();

    while (thread.isAlive()) {
        waitForConnectionClose();
    }

    waitForConnectionClose();
    assertEquals("0", jedis.get(SESSION_KEY));
}

連接看起來如下:

private class Connect extends Thread {
    @Override
    public void run() {
        ChannelSftp sftp = null;
        Thread thread = this;

        SftpProgressMonitor monitor = new SftpProgressMonitor() {
            @Override
            public void init(int op, String src, String dest, long max) {
            }

            @Override
            public boolean count(long count) {
                currentThread().interrupt();
                return false;
            }

            @Override
            public void end() {
            }
        };

        try {
            sftp.connect();
            sftp.put(LOCAL_FILE_LARGE, remoteFile, monitor);
        } catch (JSchException | SftpException e) {
            assertEquals("java.io.InterruptedIOException", e.getMessage());
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM