【发布时间】:2023-03-20 12:20:01
【问题描述】:
我正在学习使用 jmeter(第一次)对我们的地理空间 postgres (postgis) 数据库进行一些性能测试。我想使用 JDBC 请求采样器 sql 查询来不断地访问数据库,但是我需要更改查询中的时间戳,问题是它们不是普通参数,它们在函数调用的字符串中。
SELECT int_temp_f,
observed_utc,
encode(ST_AsBinary(ST_Force_2D("geometry_4326"),'NDR'),'hex') AS geom,
"ogc_featureid"
FROM fn_surfaceobs_temperature(ST_GeomFromText('POLYGON((-180 -90,-180 90,180 90,180 -90,-180 -90))',4326),
NULL,
0,
'latest',
'observed >= ''2015-06-08 14:00:00Z'' AND observed < ''2015-06-09 15:00:00Z'' ',
TRUE)
WHERE (geometry_4326 && ST_GeomFromText('POLYGON((-180 -90,-180 90,180 90,180 -90,-180 -90))',4326))
ORDER BY COALESCE(priority,0) DESC, observed DESC;
如何使用 jmeter 变量替换字符串中的用户定义?
'observed >= ''2015-06-08 14:00:00Z'' AND observed < ''2015-06-09 15:00:00Z'' ',
我想做这样的事情:
'observed >= ''${start_timestamp}'' AND observed < ''${end_timestamp}'' ',
这可能吗?
最终我想将时间戳更新为“今天”。但是在研究了如何在正常的 SQL 替换情况下执行时间戳变量之后,我认为我可以接受现在只需将时间戳替换为用户定义的变量。
【问题讨论】:
-
你用的是什么采样器?
-
JDBC 请求采样器。
-
这样的事情可能会起作用:
${__BeanShell(new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()))} -
嗯,beanshell 括号内的内容只是 java 代码,用于以指定格式返回当前日期。 jmeter 中的
${__BeanShell()}指令评估包含的代码,并在运行时用该值替换整个字符串——有点像动态变量替换。 See here for more information。我发表评论是因为我不确定这是否会在 JDBC 采样器的查询框中起作用。 -
貌似正确的使用方式,是这样的:4.bp.blogspot.com/-rFr8QXtqoyI/T5prpJ09yzI/AAAAAAAAANQ/…查询中的问号和
Parameter Values框中的beanshell片