若您需要测试应用在特殊环境下是否能正常运行,可以通过 PelicanDT 来模拟停止应用、CPU 占用率过高、CPU 内存过高、网络中断、网络流量延时等异常环境以进行测试。本文以向服务器注入查询当前路径的命令为例,介绍 PelicanDT 的使用方法。

安装 PelicanDT SDK

将 PelicanDT SDK 添加到项目中有两种方式:

阿里云2000元代金券免费领,最新优惠1折抢购,2核4G云服务器仅799元/3年,新老用户同享,立即抢购>>>

  • 下载 SDK 源码包,并添加到您的工作目录中。
  • 在 Maven 项目的 pom.xml 文件中添加以下代码,引入 PelicanDT SDK 依赖。
<dependency>     <groupId&gt;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