source $HOME/.bash_profile
#参数化构建出来的tar包名,解压tar之后的路径名
ServerPackage=edsp-rpc-ServerPerf-$version-linux
Server=edsp-rpc-ServerPerf-$version
#打包
mvn clean install
#解压打出来的tar包
tar -xvf edsp-rpc-ServerPerf/target/$ServerPackage.tar.gz
#由于jenkins所在机器maven插件版本问题,无法自动创建logs目录,暂时手动创建
mkdir -p $Server/logs
#wrapper默认内存太大了,起不来,设置wrapper内存
for i in {5..22}
do
sed -i "s/wrapper.java.additional.$i/#wrapper.java.additional.$i/g" $Server/etc/wrapper.conf
done
#启动provider服务
sh $Server/bin/rpc start
#解压jmeter目录
rm -rf apache-jmeter-3.1/*
unzip -o apache-jmeter-3.1.zip
#拷贝项目jar包和依赖jar包到jmeter
cp edsp-rpc-ServerPerf/target/$Server.jar apache-jmeter-3.1/lib/junit
cp edsp-rpc-ServerPerf/target/lib/* apache-jmeter-3.1/lib
#删除原有的jtl文件
rm -rf result/*
#启动另外三个provider,用于测试负载均衡和路由的功能,判断是否已经创建过目录,如果已经创建,则直接启动几个服务即可
if [ ! -d $Server/logs1 ]
then
#创建几个服务的日志目录
mkdir $Server/logs1
mkdir $Server/logs2
mkdir $Server/logs3
#新增三个RPC启动脚本,替换里面的wrapper文件等
cd $Server/bin
cp rpc rpc1
cp rpc rpc2
cp rpc rpc3
sed -i '40c APP_NAME="rpc1"' rpc1
sed -i '41c APP_LONG_NAME="ServerPerf1"' rpc1
sed -i '63c WRAPPER_CONF="$BASEDIR/etc/wrapper.conf1"' rpc1
sed -i '70c PIDDIR="$BASEDIR/logs1"' rpc1
sed -i '40c APP_NAME="rpc2"' rpc2
sed -i '41c APP_LONG_NAME="ServerPerf2"' rpc2
sed -i '63c WRAPPER_CONF="$BASEDIR/etc/wrapper.conf2"' rpc2
sed -i '70c PIDDIR="$BASEDIR/logs2"' rpc2
sed -i '40c APP_NAME="rpc3"' rpc3
sed -i '41c APP_LONG_NAME="ServerPerf3"' rpc3
sed -i '63c WRAPPER_CONF="$BASEDIR/etc/wrapper.conf3"' rpc3
sed -i '70c PIDDIR="$BASEDIR/logs3"' rpc3
cd ../..
#新增三个wrapper文件,替换里面的启动类和title等
cd $Server/etc
cp wrapper.conf wrapper.conf1
cp wrapper.conf wrapper.conf2
cp wrapper.conf wrapper.conf3
sed -i '57c wrapper.app.parameter.1=demo.RPCServerPerf1' wrapper.conf1
sed -i '95c wrapper.console.title=ServerPerf1' wrapper.conf1
sed -i '109c wrapper.ntservice.displayname=ServerPerf1' wrapper.conf1
sed -i '57c wrapper.app.parameter.1=demo.RPCServerPerf2' wrapper.conf2
sed -i '95c wrapper.console.title=ServerPerf2' wrapper.conf2
sed -i '109c wrapper.ntservice.displayname=ServerPerf2' wrapper.conf2
sed -i '57c wrapper.app.parameter.1=demo.RPCServerPerf3' wrapper.conf3
sed -i '95c wrapper.console.title=ServerPerf3' wrapper.conf3
sed -i '109c wrapper.ntservice.displayname=ServerPerf3' wrapper.conf3
cd ../..
fi
#启动三个server
sh $Server/bin/rpc1 start
sh $Server/bin/rpc2 start
sh $Server/bin/rpc3 start
#执行Junit测试用例
source $HOME/.bash_profile
cd edsp-rpc-ServerPerf
mvn test -Dtest=clustertolerance/CenterRetryTimes.java
sleep 40
mvn test -Dtest=clustertolerance/ConRetryTimes.java
sleep 30
mvn test -Dtest=clustertolerance/DefFailStrategy.java
sleep 30
mvn test -Dtest=clustertolerance/DefRetryTimes.java
sleep 30
mvn test -Dtest=clustertolerance/FailFastStrategy.java
sleep 50
mvn test -Dtest=clustertolerance/RetryTimesPriority.java
sleep 60
mvn test -Dtest=outtime/DefOutTime.java
sleep 60
mvn test -Dtest=outtime/OutTimeExcep.java
sleep 30
mvn test -Dtest=CommunicationAndSerialization/EdspJson.java
sleep 30
mvn test -Dtest=CommunicationAndSerialization/EdspString.java
sleep 30
mvn test -Dtest=CommunicationAndSerialization/Http.java
sleep 60
mvn test -Dtest=CommunicationAndSerialization/HttpJson.java
sleep 30
mvn test -Dtest=CommunicationAndSerialization/HttpString.java
sleep 40
mvn test -Dtest=VersionControl/ConPro.java
sleep 30
mvn test -Dtest=VersionControl/DifConGrou.java
sleep 30
mvn test -Dtest=VersionControl/DifConServiceID.java
sleep 30
mvn test -Dtest=VersionControl/DifConVer.java
sleep 30
mvn test -Dtest=VersionControl/NoVerGrou.java
sleep 30
mvn test -Dtest=VersionControl/TranDifGrou.java
sleep 30
mvn test -Dtest=VersionControl/TranDifServiceID.java
sleep 30
mvn test -Dtest=VersionControl/TranDifVer.java
sleep 30
mvn test -Dtest=NullEmptyMessage/ReceiveEmpty.java
sleep 30
mvn test -Dtest=NullEmptyMessage/ReceiveNull.java
sleep 30
mvn test -Dtest=NullEmptyMessage/SendEmpty.java
sleep 30
mvn test -Dtest=NullEmptyMessage/SendNull.java
cd ..
#执行jmeter测试计划
#由于jmeter命令无法停止,导致jenkins构建无法结束,问题暂时未找到解决方法,使用如下方法暂时规避问题
Case1=Coverage
Case2=DownGradeAllowFail1
Case3=DownGradeAllowFail2
Case4=DownGradeShield
Case5=FailStrategy
Case6=Limit
Case7=Limit_con
Case8=OutTime
Case9=QPS
Case10=LoadBalancing
Case11=Router_liuxw
Case12=Router_liuxw1
Case13=Router_batchEnable_liuxw
Case14=Router_batchEnable_liuxw1
for i in {1..14};do
{
sleep $[$i*200-70]
echo "*****执行$i号测试计划******"
sh apache-jmeter-3.1/bin/jmeter -n -t JmxCase/`eval echo '$'Case${i}`.jmx -l result/`eval echo '$'Case${i}`.jtl
} &
done
sleep 2800
echo "*****构建完成******"
kill -term $$