若您需要测试应用在特殊环境下是否能正常运行,可以通过 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