Loading [MathJax]/jax/output/CommonHTML/config.js
社区首页 >问答首页 >在JMeter中如何在日期范围内产生随机的固定间隔?

在JMeter中如何在日期范围内产生随机的固定间隔?
EN

Stack Overflow用户
提问于 2012-12-19 07:08:52
回答 3查看 7.1K关注 0票数 2

我有StartDate (例如2011-01-01)和EndDate (例如2011-12-31).我所有的数据都在这个范围内。

在测试计划中,我需要产生固定持续时间的随机间隔(4种情况: 1、3、7天和1个月长),它们被置于这个日期范围( 2011-01-01;2011-12-31 )。这些情况中的每一种都必须有定义的权重。

如何获得随机开始日期和随机结束日期的固定间隔(并将这些随机日期放入两个变量)?

我找到了java-script的变体。

最初的脚本如下:

代码语言:javascript
代码运行次数:0
复制
var startDate = new Date();
startDate.setDate(1);
startDate.setMonth(0);
startDate.setYear(1991);
var startDateTime = startDate.getTime();

var endDate = new Date();
endDate.setDate(31);
endDate.setMonth(11);
endDate.setYear(2003);
var endDateTime = endDate.getTime();

var randomDate = new Date();
var randomDateTime = startDateTime+Math.random()*(endDateTime-startDateTime);
randomDate.setTime(randomDateTime);

var rndDate = randomDate.getDate();
var rndMonth = randomDate.getMonth() + 1;
var rndYear = randomDate.getFullYear();

if (rndDate.toString().length == 1)
rndDate = "0" + rndDate;
if (rndMonth.toString().length == 1)
rndMonth = "0" + rndMonth;

rndDate + "/" + rndMonth + "/" + rndYear;

但是,我需要生成固定间隔的随机开始日期(我称之为${RandomStartDate}),然后添加间隔的长度以获得它的结束日期(此日期我称为${RandomEndDate})。

然后,我更改脚本1天长间隔(1天是86400秒):

代码语言:javascript
代码运行次数:0
复制
var startDate = new Date();
startDate.setDate(01);
startDate.setMonth(01);
startDate.setYear(2011);
var startDateTime = startDate.getTime();

var endDate = new Date();
endDate.setDate(31);
endDate.setMonth(12);
endDate.setYear(2011);
var endDateTime = endDate.getTime();

var randomSDate = new Date();
var randomSDateTime = startDateTime+Math.random()*((endDateTime - 86400) -startDateTime );
randomSDate.setTime(randomSDateTime);

var randomEDate = new Date();
var randomEDateTime = (randomSDateTime +  86400);    //add 1 day long interval (86400 s)
randomEDate.setTime(randomEDateTime);   //convert number format to string format of date
var rndSDate = randomSDate.getDate();
var rndSMonth = randomSDate.getMonth()+1 ;
var rndSYear = randomSDate.getFullYear();

var rndEDate = randomEDate.getDate();      
var rndEMonth = randomEDate.getMonth()+1 ;
var rndEYear = randomEDate.getFullYear();

if (rndSDate.toString().length == 1)      
rndSDate = "0" + rndSDate;
if (rndSMonth.toString().length == 1)
rndSMonth = "0" + rndSMonth;

if (rndEDate.toString().length == 1)      
rndEDate = "0" + rndEDate;
if (rndEMonth.toString().length == 1)
rndEMonth = "0" + rndEMonth;

var RandomStartDate = rndSYear + "-" + rndSMonth + "-" + rndSDate;
vars.put ("RandomStartDate", RandomStartDate);

var RandomEndDate = rndEYear + "-" + rndEMonth + "-" + rndEDate;
vars.put ("RandomEndDate", RandomEndDate);

,但是这个脚本生成的RandomEndDate等于RandomStartDate.,如果我单独生成RandomStartDate (没有与RandomEndDate连接的代码部分),那么脚本工作得很好。

你能帮帮我吗?怎么啦?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-21 12:25:32

您可以在Beanshell中使用更少的代码来完成这个任务:

代码语言:javascript
代码运行次数:0
复制
import java.text.SimpleDateFormat;
import java.util.Calendar;

calendar = Calendar.getInstance();
calendar.set(2011, 0, 1);
startTime = calendar.getTimeInMillis();
calendar.set(2012, 11, 31);
endTime = calendar.getTimeInMillis();
randomTime1 = startTime + (long)(Math.random()*(endTime-startTime));
randomTime2 = randomTime1 + (long)(Math.random()*(endTime - randomTime1)+86400000);

formatter = new SimpleDateFormat("yyyy-MM-dd");
calendar.setTimeInMillis(randomTime1);
vars.put("start", formatter.format(calendar.getTime()));
calendar.setTimeInMillis(randomTime2);
vars.put("end", formatter.format(calendar.getTime()));
票数 7
EN

Stack Overflow用户

发布于 2012-12-20 08:47:12

对于这种情况,我将选择将复杂性放在jMeter之外,并创建一个perl脚本,根据您的需求生成100个日期,并使用CSV数据集Config将它们读入jMeter变量。

票数 1
EN

Stack Overflow用户

发布于 2012-12-21 07:16:11

我找到解决办法了!

这是正确的脚本,它允许对固定长度的随机区间(1天长间隔)进行建模,并获得启动和结束的两个变量- ${RandomStartDate}和${RandomEndDate}:

代码语言:javascript
代码运行次数:0
复制
var startDate = new Date();
startDate.setDate(01);
startDate.setMonth(01);
startDate.setYear(2011);
var startDateTime = startDate.getTime();

var endDate = new Date();
endDate.setDate(31);
endDate.setMonth(12);
endDate.setYear(2011);
var endDateTime = endDate.getTime();

var randomSDate = new Date();
var randomSDateTime = startDateTime+Math.random()*((endDateTime - 86400000) -startDateTime );
randomSDate.setTime(randomSDateTime);

var randomEDate = new Date();
var randomEDateTime = (randomSDateTime + 86400000);    //add 1 day long interval (86400000 ms)
randomEDate.setTime(randomEDateTime);   //convert number format to string format of date
var rndSDate = randomSDate.getDate();
var rndSMonth = randomSDate.getMonth()+1 ;
var rndSYear = randomSDate.getFullYear();

var rndEDate = randomEDate.getDate();      
var rndEMonth = randomEDate.getMonth()+1 ;
var rndEYear = randomEDate.getFullYear();

if (rndSDate.toString().length == 1)      
rndSDate = "0" + rndSDate;
if (rndSMonth.toString().length == 1)
rndSMonth = "0" + rndSMonth;

if (rndEDate.toString().length == 1)      
rndEDate = "0" + rndEDate;
if (rndEMonth.toString().length == 1)
rndEMonth = "0" + rndEMonth;

var RandomStartDate = rndSYear + "-" + rndSMonth + "-" + rndSDate;
vars.put ("RandomStartDate", RandomStartDate);

var RandomEndDate = rndEYear + "-" + rndEMonth + "-" + rndEDate;
vars.put ("RandomEndDate", RandomEndDate);

我的错误是,我认为时间是在,但它是以毫秒

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13955259

复制
相关文章
mybatis的逆向工程_mybatis逆向工程多表查询
逆向工程字面意思就是反向生成工程,和hibernate一样mybatis也有自己的逆向工程工具,hibernate的逆向生成我没有做过,不过我猜大概都已样,再说,hibernate的现在使用很少了,到了使用的时候再去用吧,使用逆向工程时,需要注意的是表之间的关系无法映射出来!也就是说mybatis的逆向工程生成的都是单表操作, 1:mybatis逆向工程开发文档:
全栈程序员站长
2022/09/24
6760
mybatis的逆向工程_mybatis逆向工程多表查询
mybatis逆向工程
就是我们可以根据数据库表,自动生成javabean,mapper接口和其对应的maaper.xml文件。
西西嘛呦
2020/08/26
5430
mybatis逆向工程
逆向工程——栈[三]
栈是计算机科学里最重要的且最基础的数据结构之一。 从技术上讲,栈就是CPU寄存器里面的某个指针所指向的一片内存区域。这里所说的某个指针通常位于x86/x64平台的ESP寄存器/RSP寄存器,以及ARM平台的SP寄存器。 操作栈最常见的指令是PUSH和POP,在 x86 和 ARM Thumb 模式的指令集里都有这两条指令。 PUSH指令会对ESP/RSP/SP寄存器的值进行减法运算,使之减去4(32位)或8(64位),然后将操作数写到上述寄存器里的指针所指向的内存中。 POP指令是PUSH的逆操作:他先从栈指针(Stack Pionter,上面三个寄存器之一)指向的内存中读取数据,用以备用(通常是写到其他寄存器里面),然后再将栈指针的数值加上4或8. 在分配栈的空间之后,栈指针,即Stack Pointer所指向的地址是栈的底部。PUSH将减少栈指针的数值,而POP会增加它的数值。栈的“底”实际上使用的是整个栈的最低地址,即是整个栈的启始内存地址。 ARM的栈分为递增栈和递减栈。递减栈(descending stack)的首地址是栈的最高地址,栈向低地址增长,栈指针的值随栈的增长而减少,如STMFA/LMDFA、STMFD/LDMFD、STMED、LDMEA等指令,都是递增栈的操作指令。
HACK学习
2019/08/05
8940
mybatis逆向工程
mysql-connector-java-5.1.28-bin.jarjava连接mysql包
用户10325771
2023/03/14
3980
mybatis逆向工程
mybatis逆向工程
mybatis逆向工程的作用是根据数据库里的表结构自动生成实体类,映射文件,和接口。 和hibernate的自动建表相反。
Mshu
2018/10/31
1.1K0
逆向工程----MBG
逆向工程 逆向工程概念 MBG概念 步骤1: 导入相关依赖 引入mybatis-generator.xml配置,建议从官网文档粘贴后,进行配置修改 使用代码运行,也可以用命令行 效果 小tips 使用插件方式启动mbg,需要在build标签中进行设置,以及引入最开始给的插件依赖 MBG的具体使用看这篇文章 逆向工程概念 ---- MBG概念 ---- 步骤1: 导入相关依赖 <!--mybatis的逆向工程--> <dependency> <
大忽悠爱学习
2021/11/15
3930
APK逆向工程
APK(android Application PacKage)文件是安卓app的安装文件,其实就是一个zip或rar压缩包,把apk后缀改为zip,即可解压得到一堆安卓相关文件。
李小白是一只喵
2020/11/24
1.2K0
APK逆向工程
漫谈逆向工程
逆向工程,原名Reverse Engineering,简称RE。关于其书面介绍我就不复制粘贴百度百科了,简而言之就是从发布的产品中反向分析其程序逻辑和算法——基于各种目的。
evilpan
2023/02/12
1.1K0
漫谈逆向工程
mybatis逆向工程
三、点击maven,在点击Plugins,找到mybatis-generator:generate 双击即可运行!
栖西
2023/10/17
2270
mybatis逆向工程
Android逆向工程
在Root前提下,我们可以使用Hooker方式绑定so库,通过逆向方式篡改数值,从而达到所谓破解目的。然而,目前无论是软件加固方式,或是数据处理能力后台化,还是客户端数据真实性验证,都有了一定积累和发展,让此“懒技术”不再是破解修改的万金油。再者,阅读汇编指令,函数指针替换,压栈出栈等技术需要一定技术沉淀,不利于开发同学上手。 两年前,也是因为懒,很懒,非常懒,堆积了足够的动力,写了一个基于人工模拟方式,对一个特定规则的游戏进行暴力破解。我们都知道,人工模拟方式,绕过了大量防破解技术,只要还是人机交互模式,
xiangzhihong
2018/02/05
1.2K0
Android逆向工程
mybatis逆向工程
pom文件引入插件 <plugin> <!--Mybatis-generator插件,用于自动生成Mapper和POJO--> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <!--配置文件的位置--> <co
Ssss
2020/03/26
4960
mybatis的逆向工程怎么实现_mybatis逆向工程原理
mybatis,一个相对于hibernate的轻量级DAO框架,它的逆向工程可以很方便的从数据库到生成对应的entity和mapper接口。
全栈程序员站长
2022/09/24
5990
mybatis的逆向工程怎么实现_mybatis逆向工程原理
mybatis逆向工程配置文件_mybatis逆向工程多表查询
mybatis逆向工程很早之前有用过,但是一直没有整理使用步骤,今天来回顾下在idea下springboot中整合mybatis逆向工程的实现步骤
全栈程序员站长
2022/09/27
3340
mybatis逆向工程配置文件_mybatis逆向工程多表查询
Mybatis--逆向工程
<generatorConfiguration> <!-- targetRuntime="MyBatis3Simple":生成简单版的CRUD MyBatis3:豪华版 --> <context id="DB2Tables" targetRuntime="MyBatis3"> <!-- jdbcConnection:指定如何连接到目标数据库 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver"
SuperHeroes
2018/05/30
5880
MyBatis逆向工程 Generator
正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程 的。 逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源: Java实体类 Mapper接口 Mapper映射文件 添加依赖和插件 pom <!-- 依赖MyBatis核心包 --> <dependencies> <dependency> <groupId>org.mybatis</groupId> <ar
鱼找水需要时间
2023/02/16
4580
MyBatis逆向工程 Generator
逆向工程——汇编基础[二]
除了显示地操作堆栈(使用push和pop指令)之外,很多指令也需要使用堆栈,如INT、CALL、LEAVE、RET、RETE、IRET等等。配对使用上述指令并不会造成什么问题,然而,如果你打算使用LEAVE、RET、RETE、IRET这样的指令实现跳转(比JMP更为麻烦,然而有时,例如在加密软件中,或者需要修改调用者状态时这是必要的)的话,那么要搞清楚他们做的到底是什么,并且精确而了解自己要做什么。
HACK学习
2019/08/05
1.2K0
逆向工程——汇编基础[一]
汇编语言是一种最接近计算机核心的编码语言。不同于任何高级语言,汇编语言几乎可以完全和机器语言一一对应。 汇编语言就是机器语言的一种可以被人读懂的形式,只不过它更容易记忆。
HACK学习
2019/08/05
1.5K0
MyBatis的逆向工程
MyBatis是目前很流行的持久层框架,很多企业都在采用。但是其复杂繁琐的配置,重复性的实体类创建等等,消耗了程序员大量的精力,同时有些地方如果一个细小的疏忽,可能导致最终功能运行失败。例如:在几十个字段的表中,某一列的列名配置疏忽。基于此,mybatis 推出了一套 jar 包,可以依据我们设计好的数据库表,自动生成 pojo、mapper 以及mapper.xml。有了逆向工程,便大大缩减了我们的开发时间。
宋先生
2019/07/18
4550
mybatis与其逆向工程
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。myBatis在目前在SSM框架中做为持久层在使用。
Tim在路上
2020/08/04
3690
Mybatis的逆向工程
我这里使用的的eclipse插件的方式,来逆向生成代码。给出配置文件 generatorConfig.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCT
用户5927264
2019/07/31
3480

相似问题

逆向工程

12

逆向工程?

31

对安装程序进行逆向工程

20

逆向工程: C#字典的表示?

30

逆向工程Flash

83
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文