BeanShell PreProcessor (JMeter) - Как я могу сгенерировать случайную будущую метку DateTime, которая охватывает текущее время до 7 дней? - PullRequest
0 голосов
/ 29 января 2020

Мне нужна помощь. Я получил этот код с другого сайта. Он случайным образом генерировал дату за предыдущие 7 дней и случайным образом генерировал час и минуту в течение 24-часового периода (любого). Мне нужна противоположность сортов. Мне нужно случайное время, которое охватывает текущее время "сейчас" и идет вперед на 7 дней, но также требует, чтобы время (часы и минуты) находились в пределах установленного диапазона часов.

Требования
  1. Случайная дата, охватывающая текущий день («сейчас») и вперед на одну неделю (7 дней).
  2. Произвольное время генерируется; однако время должно падать между часами с 1000 до 22:00 и форматироваться как ("гггг-мм-дд'т'чч: мм: сс").

Параметры моего препроцессора BS, которые я передавал для код ниже (1 5 5). Мои даты, кажется, генерируются просто отлично, но мое время генерирует только случайные часы как часы в течение следующих 5 часов. Как я могу установить диапазон времени 10 утра-10 вечера? * 10101

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);

1 Ответ

0 голосов
/ 30 января 2020

Java поддельная библиотека Might поможет вам.

import com.github.javafaker.Faker;

Date dob= faker.date().between(date1,date2);
...