BeanShell PreProcessor(JMeter)-如何生成一个随机的将来的DateTime时间戳,该时间戳覆盖当前超时到7天?

问题描述 投票:0回答:1

我需要帮助。我从另一个站点获得了一些此代码。它随机生成前7天的日期,并在24小时内(任意)随机生成一个小时和一分钟。我需要相反的东西。我需要一个随机时间来覆盖当前的“现在”时间,并向前移动7天,但还要求时间(小时和分钟)在设定的小时范围内。

要求
  1. 随机日期,涵盖当前日期(“现在”)以及未来一周(7天)。
  2. 生成随机时间;但是时间必须介于1000小时到2200小时之间,并设置为(“ yyyy-MM-dd'T'HH:mm:ss”)。

我为下面的代码传递的BS PreProcessor参数是(1 5 5)。我的约会似乎会很好,但是我的时间只会在接下来的5个小时内产生随机的小时数。如何设置10 am-10pm的时间范围?

import java.text.SimpleDateFormat; 
import java.text.NumberFormat;
import java.util.Date;
import java.util.Random; 

int minDay = Integer.parseInt(bsh.args[0]); // get first parameter minimal X Days ahead
int maxDay = Integer.parseInt(bsh.args[1]); // get second parameter maximal X Days ahead
int maxMinutesActivity = Integer.parseInt(bsh.args[2]); // get maximal duration of activity
int myThreadNum = 0;
int randomDay = 0; // RandomDays ahead
int minHour = 0;
int maxHour = 5;
int randomHour = 0;
int minMinute = 0;
int maxMinute = 60;
int randomMinute = 0;
int randomMinuteDuration = 0;
String formattedDate = "";

Random randomvar = new Random();
Date datevar = new Date();
Date datevarThisWeek = new Date();

SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
NumberFormat myFormat = NumberFormat.getInstance();
myFormat.setMinimumIntegerDigits(2); // required to have minimal two digits for Day, Hour, Minute

myThreadNum = ${__threadNum}; // just to show the thread number in debug
vars.put("myThreadNum",myFormat.format(myThreadNum));

randomDay = minDay+randomvar.nextInt(maxDay-minDay+1); // randomDays ahead between minDay and maxDay
datevar.setDate(datevar.getDate() - randomDay );
vars.put("randomDay",myFormat.format(randomDay));

randomHour = 1+randomvar.nextInt(maxHour-minHour+1); // randomHour ahead between minHour and maxHour
vars.put("randomHour",myFormat.format(randomHour));

randomMinute = minMinute+randomvar.nextInt(maxMinute-minMinute+1); // randomHour ahead between minMinute and maxMinute
vars.put("randomMinute",myFormat.format(randomMinute));

randomMinuteDuration = maxMinutesActivity; // randomduration between 1 and maxMinutesActivity
vars.put("randomMinuteDuration",myFormat.format(randomMinuteDuration));

// Calculate a Start and End time for this Week
randomDay = 1+randomvar.nextInt(5-1+1); // randomDays ahead this Week
datevarThisWeek.setDate(datevarThisWeek.getDate() + randomDay );

datevarThisWeek.setTime(datevarThisWeek.getTime() + ((randomMinute + (randomHour * 60 )) * 60 * 1000 ));
//datevarThisWeek.setTime(datevarThisWeek.getTime() + ((randomMinute + (randomHour * 60 )) * 60 * 1000 ) + myThreadNum );
formattedDate = df.format(datevarThisWeek);
vars.put("randomFireTime_FUTURE",formattedDate);

datevarThisWeek.setTime(datevarThisWeek.getTime() + (randomMinuteDuration * 60 * 1000 ));
//datevarThisWeek.setTime(datevarThisWeek.getTime() + (randomMinuteDuration * 60 * 1000 ) + myThreadNum );
formattedDate = df.format(datevarThisWeek);
vars.put("randomOrderTime_FUTURE",formattedDate);
jmeter beanshell
1个回答
0
投票

Java伪造的库可能会帮助您。

import com.github.javafaker.Faker;

Date dob= faker.date().between(date1,date2);
© www.soinside.com 2019 - 2024. All rights reserved.