若您需要測試應用在特殊環境下是否能正常運行,可以通過 PelicanDT 來模擬停止應用、CPU 占用率過高、CPU 內存過高、網絡中斷、網絡流量延時等異常環境以進行測試。本文以向服務器注入查詢當前路徑的命令為例,介紹 PelicanDT 的使用方法。

安裝 PelicanDT SDK

將 PelicanDT SDK 添加到項目中有兩種方式:

  • 下載 SDK 源碼包,并添加到您的工作目錄中。
  • 在 Maven 項目的 pom.xml 文件中添加以下代碼,引入 PelicanDT SDK 依賴。
<dependency>
    <groupId>com.alibaba.pelican</groupId>
    <artifactId>PelicanDT</artifactId>
    <version>1.0.9</version>
</dependency>
			

注入命令

在您的工程中執行以下代碼,向遠程服務器注入查詢當前路徑的命令。

說明 您需要在代碼中填入您的 ECS 公網 IP、ECS 用戶名和登錄密碼等信息。
import com.alibaba.pelican.chaos.client.impl.RemoteCmdClient;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;

/**
 * @author moyun@middleware
 */
@Slf4j
public class TestRemoteCmdClient {

    @Test
    public void testRemoteCmdClient() {
        //ECS 公網 IP
        String ip = "";
        //ECS 用戶名,一般為 root
        String userName = "";
        //ECS 登錄密碼
        String password = "";

        //創建并初始化 RemoteCmdClient 實例
        RemoteCmdClientConfig remoteCmdClientConfig = new RemoteCmdClientConfig();
        remoteCmdClientConfig.setIp(ip);
        remoteCmdClientConfig.setUserName(userName);
        remoteCmdClientConfig.setPassword(password);
        RemoteCmdClient client = new RemoteCmdClient(remoteCmdClientConfig);

        //執行pwd命令
        RemoteCmdResult resultInfo = client.execCmdWithPTY(new RemoteCmd("pwd"));
        log.info(resultInfo.getStdInfo());
    }
}
			

結果驗證

執行程序后,日志輸出內容如下:

[root@iz2ze0kv2rqck9wpheu5vxz ~]$pwd
/root
[root@iz2ze0kv2rqck9wpheu5vxz ~]$export HISTFILE=/dev/null
[root@iz2ze0kv2rqck9wpheu5vxz ~]$exit
logout
			

通過第 2 行內容可以看出,命令執行后,屏幕打印出當前目錄為 /root