package com.example.rabbitmq.rabbitmq; import java.text.ParseException; import java.text.SimpleDateFormat; public class Baowen { // 出发城市的经度 private static double Depart_City_longitude = 110.330685; // 出发城市的纬度 private static double Depart_City_latitude = 20.035221; // 抵达城市的经度 private static double Arrival_City_longitude = 110.720005; // 抵达城市的纬度 private static double Arrival_City_latitude = 19.610221; // 两个城市之间单程的位置点数 private static int count = 5000; private static String dateFormate = "yyMMddHHmmss"; private static String baseTime = "200609153143"; // 报文前缀 private static String beginMsg = "02004022018986042206198026706200010000000000000003"; private static String midMsg = "000B00020111"; // 报文后缀 private static String endMsg = "010400000000EE7E"; // 经度上移动的步频 private static Double getLongitudeStep() { return (Depart_City_longitude - Arrival_City_longitude) /count; } // 纬度上移动的步频 private static Double getlatitudeStep() { return (Depart_City_latitude - Arrival_City_latitude) /count; } // 把整数转换为长度8位的16进制字符串 private static String integer2HexString(Integer number) { String result = Integer.toHexString(number); int len = result.length(); StringBuilder sb = new StringBuilder(""); // 不足8位时,前面补0 if(len < 8) { for(int i = len; i < 8; i++) { sb = sb.append("0"); } sb.append(result); } return sb.toString(); } public static String getLocationMsg(int num) { double longitude, latitude; // 如果位置点已经到达目的城市,则需返回,上传返程的位置点 if((Depart_City_longitude - num*getLongitudeStep()) >= Arrival_City_longitude) { longitude = Arrival_City_longitude + (num%count) * getLongitudeStep(); latitude = Arrival_City_latitude + (num%count) * getlatitudeStep(); } else { longitude = Depart_City_longitude - (num%count) * getLongitudeStep(); latitude = Depart_City_latitude - (num%count) * getlatitudeStep(); } System.out.println("longitude: " + longitude); System.out.println("latitude: " + latitude); String strLongitude = integer2HexString(new Double(longitude*1000000).intValue()); String strLatitude = integer2HexString(new Double(latitude*1000000).intValue()); System.out.println("strLongitude: " + strLongitude); System.out.println("strLatitude: " + strLatitude); SimpleDateFormat sdf = new SimpleDateFormat(dateFormate); long time = System.currentTimeMillis(); try { time = sdf.parse(baseTime).getTime(); } catch (ParseException e) { e.printStackTrace(); } // 每次上报报文的时间,随着线程号每次递减1000毫秒,保证间隔1秒的频率发送报文 String strTime = sdf.format(time - num*1000); System.out.println( strTime); String msg = beginMsg + strLatitude + strLongitude + midMsg + strTime + endMsg; return msg; } } // 通过上下文获取JMeter正在运行的线程号 int threadNum = ctx.getThreadNum(); log.info("当前线程号: " + threadNum); String msg = Baowen.getLocationMsg(threadNum); log.info("报文: " + msg); // 通过内置的vars对象,把报文放入变量容器中,变量的key为msg,供后面的脚本使用 vars.put("msg", msg); |
// 引入外部Java文件 source("D:/script/MyJavaFile.java") // 调用Java文件中的方法 String result = new Baowen().getLocation(); // 保存变量 vars.put("msg", result); |
// 引入外部class文件 addClassPath("D:\\") // 导入包和类 Import MyPackeage.Baowen; // 调用Java文件中的方法 String result = new Baowen().getLocation(); // 保存变量 vars.put("msg", result); |
// 导入包和类 Import MyPackeage.Baowen; // 调用Java文件中的方法 String result = new Baowen().getLocation(); // 保存变量 vars.put("msg", result); |
欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) | Powered by Discuz! X3.2 |