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