java test log4j main_jmeter测试udp广播(jmeter接收udp)

packagecom.test;importorg.apache.jmeter.config.Arguments;importorg.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;importorg.apache.jmeter.protocol.java.sampler.JavaSamplerContext;importorg.apache.jmeter.samplers.SampleResult;importjava.io.IOException;importjava.net.DatagramPacket;importjava.net.DatagramSocket;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;//很多问题在于少加载了依赖包,可以把jmeterhome/lib下所有jar加载到External Libraries

public class JavaTest_getL_udp extendsAbstractJavaSamplerClient {private static final Logger logger = LoggerFactory.getLogger(JavaTest_getL_udp.class);privateString port;//private String seconds;//这个方法是用来自定义java方法入参的//* params.addArgument("port","");表示入参名字叫port,默认值为空。

@OverridepublicArguments getDefaultParameters() {

Arguments params= newArguments();

params.addArgument("port", "");//params.addArgument("seconds", "");

returnparams;

}//每个线程测试前执行一次,做一些初始化工作//获取输入的参数,赋值给变量,参数也可以在下面的runTest方法中获取,这里是为了展示该方法的作用

@Overridepublic voidsetupTest(JavaSamplerContext arg0) {

port= arg0.getParameter("port");//seconds = arg0.getParameter("seconds");

}//真正执行逻辑的方法

@OverridepublicSampleResult runTest(JavaSamplerContext arg0) {

SampleResult sr= newSampleResult();//sr.setSamplerData("端口号port:"+port+"\n循环运行时间seconds:"+seconds);//logger.info("端口号port:" + port +" 循环运行时间seconds:"+seconds);

sr.setSamplerData("端口号port:"+port);

logger.info("IP是:127.0.0.1 "+"端口号port:" +port);try{//jmeter 开始统计响应时间标记

sr.sampleStart();//创建接收端的Socket服务对象,并且指定端口号

DatagramSocket ds = newDatagramSocket(Integer.parseInt(port));//long start = System.currentTimeMillis();//long end = start + (Integer.parseInt(seconds))*1000;//seconds * 1000 ms/sec//for (int i = 0;i<100000000;){//创建一个数据包,用于接收数据

byte[] bys = new byte[1024];

DatagramPacket dp= newDatagramPacket(bys, bys.length);//接收数据

ds.receive(dp);//获取ip地址,解析数据

String ip=dp.getAddress().getHostAddress();//String ip = "192.168.10.222";//获取数据

String data = new String(dp.getData(),0,dp.getLength());

logger.info("from " + ip + " data is " +data);//通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。

sr.setResponseData("接收到udp :"+ data, "utf-8");

sr.setDataType(SampleResult.TEXT);//设置响应执行成功

sr.setSuccessful(true);//i++;//if(System.currentTimeMillis() >= end) break;//}

}catch(Throwable e) {//有异常,执行失败

sr.setSuccessful(false);

e.printStackTrace();

}finally{//jmeter 结束统计响应时间标记

sr.sampleEnd();

}returnsr;

}

@Overridepublic voidteardownTest(JavaSamplerContext arg0) { }//main方法测试程序是否可用,打包时 注释掉

public static voidmain(String[] args) {

Arguments params= newArguments();//设置参数,并赋予默认值1

params.addArgument("port", "10000");//params.addArgument("seconds", "1");

JavaSamplerContext arg0 = newJavaSamplerContext(params);

JavaTest_getL_udp test= newJavaTest_getL_udp();

test.setupTest(arg0);

test.runTest(arg0);

test.teardownTest(arg0);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值