在加特林场景之间共享数据

2023-11-26

我有一个场景,在包含用户名和密码的 CSV 文件的帮助下,获取会话 ID 并使用 saveAs 保存它们。

我希望能够在以下场景中使用这些会话 ID,该场景执行一些需要会话 ID 的操作。此外,我还想将会话 ID 与其用户名相关联。

所以本质上,我试图将登录操作(获取会话 ID)从其余操作中排序。加特林有可能吗?如果是这样,我如何在场景之间传递数据?


我意识到这个问题很老了,但是我在为了自己研究类似的问题时遇到了它,并且认为我会分享我达到的解决方案,以防其他人遇到类似的问题。我的情况并不完全相似,但我的问题的核心本质是在并行运行的两个场景之间传递数据,所以我希望答案将来对其他人有一些价值,尽管它在技术上只回答了原始问题的一半问题。

以下设置显示了两个场景如何一起运行的总体思路,其中第二个场景以延迟开始,以确保场景 1 中已生成数据:

setUp(
  scenario1.inject(constantUsersPerSecond(0.5) during (10 minutes)),
  scenario2.inject(nothingFor(3 minutes), constantUsersPerSecond(0.1) during (7 minutes))
).protocols(httpProtocol)

简单地合并这两个场景是可能的,但我将这两个场景定义在两个单独的类中,因为它们的大小,因为这两个场景都由一长串执行步骤组成,并且由于它们需要与不同的注射曲线并行运行。场景 2 中所需的数据在场景 1 中生成并存储在其会话中。

为了将数据从一个场景传递到另一个场景,我创建了一个对象,除了保存单个场景之外,该对象绝对不执行任何操作链接阻塞双端队列物品。我选择了这种集合类型,希望能够在运行高负载测试时避免任何并发问题。

import java.util.concurrent.LinkedBlockingDeque

object DequeHolder {
  val DataDeque = new LinkedBlockingDeque[String]()
}

在场景一中,我在该场景的每个成功循环结束时将值保存到此双端队列:

val saveData = exec{ session =>
  DataDequeHolder.DataDeque.offerLast(session("data").as[String])
  session
}

val scenario1 = scenario("Scenario 1")
.exec(
  step1,
  step2,
  .....
  stepX,
  saveData
)

最后,在场景二中,我创建了一个自定义馈送器,用于从 LinkBlockingDeque 检索数据,并像使用任何其他馈送器一样使用此馈送器:

class DataFeeder extends Feeder[String] {
  override def hasNext: Boolean = DataDequeHolder.DataDeque.size() > 0
  override def next(): Map[String, String] = Map("data" -> DataDequeHolder.DataDeque.takeFirst())
}

val scenario2 = scenario("Scenario 2")
.feed(new DataFeeder())
.exec(
  step1,
  step2,
  .....
  stepX,
)

到目前为止,这已被证明是在两个场景之间传递数据且不会遇到并发问题的可靠方法。然而值得注意的是,我没有在高负载下运行它,因为我的后端系统运行一些非常繁重的操作,并且不打算与数千个并发用户一起运行。我不知道这对于高负载下的系统将如何发挥作用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在加特林场景之间共享数据 的相关文章

  • 加特林不在会话中存储值

    我在加特林中使用会话来存储值 如下所示 exec session gt val id Instant now toEpochMilli toString scala util Random nextInt 1000 toString ses
  • RampUsersPerSec 函数的真正作用是什么?

    我发现加特林文档对特定功能有点不清楚 rampUsersPerSec 在给定持续时间内每秒注入随机数量的用户 rate1 至 rate2 期间 dur 单位 从起始速率1注入用户 目标速率2 在给定持续时间内以每秒用户数定义 例如 在 10
  • 如何在加特林的Json Body中添加随机值?

    我需要每次创建一个随机正整数并将其发送到加特林中的 Json 主体 我使用下面的代码创建一个随机正整数 val r new scala util Random val OrderRef r nextInt Integer MAX VALUE
  • 加特林(性能测试):如何每x分钟在后台执行一次任务

    我想知道如何使用加特林每 x 分钟在后台执行一项任务 背景 我想在我们的后端写几个场景 在这种情况下 我们的后端将被另一个后端调用 一个常见的场景 客户端 后端 到服务器身份验证 可选 客户请求 X 客户请求 Y 客户请求Z 我想要一个执行
  • Ga特林 - 在simulation.log或控制台中记录请求正文

    我想看看我在脚本中发送的帖子正文中有什么内容 事实上 我想查看请求 请求正文和响应 通过查看文档和论坛 我发现我可以取消注释 logback test xml 中的一行 如下所示
  • Spring Boot中增加Tomcat的连接超时

    如何增加超时 以便在处理响应之前 请求不会超时 Spring Boot 中的 Tomcat 设置 server tomcat max connections 2000 server tomcat max threads 200 server
  • 加特林使一个场景在一系列场景中运行一次

    我有一个场景 我必须执行某些步骤 但我不希望用户多次登录 所以我链接了这些场景 但登录仍然发生多次 有没有办法限制部分链只运行一次 class CreateUserSimulation extends Simulation val logi
  • Ga特林 j.n.ConnectException:地址已在使用中

    当使用 Ga特林运行模拟时 我遇到以下异常 j n ConnectException 地址已在使用中 没有更多信息 当测试的服务器无法响应或超时时是否会发生这种情况 我想确保这是服务器抛出的异常 而不是客户端抛出的异常 我在 Windows
  • 如何使用加特林将 scala 类导入到另一个类中?

    注意 我是加特林新手 对 Scala 几乎一无所知 我正在开始将负载测试从 Jmeter 转换为加特林 我被困在如何组织代码库上 我找到的所有示例都是单个文件示例 如何将代码从一个模拟类导入到另一个模拟类中 我现在有这个类和测试场景 pac
  • 加特林 websocket 场景中的状态检查

    我有一个加特林场景 我订阅了一个 websocket 并想要检查传入消息的内部一致性 例如 通过 websocket 发送的消息是
  • 使用 feeder 确保 Gadling 中的 CSV 记录

    我用 CSV 在加特林创建了一个简单的馈线 该脚本运行良好 没有出现任何错误 我知道在负载测试期间从 CSV 中获取值 但我怎样才能确保每个用户获得哪个价值 我必须确保第一个用户应使用用户名 user1 和密码 password1 登录 由
  • 如何使用加特林检查 If 方法?

    记录在案here https gatling io docs current cheat sheet 加特林checkIf方法用于条件检查 它不可用于ScenarioBuilder的流畅 API 但我可以在CheckSupport班级 我在
  • 如何在 Gattle 中注入恒定数量的用户?

    我不清楚如何控制加特林中的封闭工作负载模型 如果我使用constantConcurrentUsers 像这样 myScenario inject constantConcurrentUsers 40 during 2 minutes 我认为
  • 使用 Gattle 向 ActiveMQ 发布消息

    我一直在使用Gatling将消息发布到 ActiveMq 服务器 我明白了 java lang SecurityException 无效的用户名 null 或空 不过我使用有效的用户名和密码 这是我的测试代码 抛出了异常 任何有关如何解决此
  • 调试会话

    作为性能测试的一部分 我需要调试会话等 如果我删除 则会运行相同的代码session gt 当我添加它时 它说模拟期间没有发送任何请求 因为它没有发送任何请求 val scn1 scenario LaunchAction exec sess
  • 加特林 - 顺序执行场景

    当我运行如下代码时 setUp scenario1 inject constantUsersPerSec 1 during 1 second scenario2 inject constantUsersPerSec 1 during 1 s
  • 没有 pom.xml 的 Jenkins 的加特林插件

    有没有人尝试过使用加特林插件 https wiki jenkins ci org display JENKINS Gatling Plugin对于詹金斯 但没有maven 我没有 Maven 项目 但我使用终端 bash 脚本 中的 Gad
  • 解析返回给 Gattle 的 Json 响应

    我正在尝试解析服务器返回给加特林的 json 响应 我的服务器响应是 SessionAttribute Session GetServices 3491823964710285818 0 Map gatling http cache eta
  • 加特林负载测试期间编译错误

    我正在尝试编写一个模拟 并且希望能够运行该模拟 我在尝试 mvn gatling execute 时遇到错误 我的 pom 有以下依赖项
  • 在加特林控制台上打印相关值

    我们如何打印使用捕获的值saveAs myValue 在控制台上gatling 就像我们一样System out println 在Java中 使用 saveAs 保存的值将保存到 session 中 文件 http galing io d

随机推荐

  • 在 NextJS 项目中使用 Tailwind 和 MUI 时出现意外行为(白色按钮错误)

    我目前正在使用 NextJS TailwindCSS 和 MUI React UI 库构建一个项目 每当我尝试向我的项目添加 MUI 按钮时 它工作正常 但按钮的颜色保持白色 悬停时颜色恢复正常 单击按钮时仍然具有波纹效果 但当不悬停时 它
  • 应用程序内更新不适用于应用程序包 apk

    我在我的 Android 应用程序中实现了最近推出的应用内更新 API 当我构建 apk 并测试此功能时 它工作正常 我已经上传了带有测试版的更高版本的apk 但是 当我构建应用程序包并将应用程序包上传到内部内部应用程序共享时 永远不会提示
  • 为什么 MSVC 2010 32 位项目链接到 64 位 kernel32.dll?

    我有一个 Win32 32 位 DLL 项目 它的构建和链接没有错误 DLL 无法加载到 32 位进程中 使用 DependencyWalker 我看到 DLL 是 32 位的 但已与 kernel32 msvcr100d ws2 32 和
  • C中的无符号整数[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 当我运行下面的程序时 它输出类似 109876543210 1 2 3 4 5 6 78
  • 无法在 selenium webdriver 中启动 IE 浏览器

    我已经编写了示例代码来启动IE browser并加载谷歌页面 public class Sample public static void main String args TODO Auto generated method stub S
  • IOS 中获取错误的运营商名称

    我正在开发一个 IOS 应用程序 我的要求是获取移动运营商名称 我使用了以下代码 In h import
  • 正则表达式跳过模式

    Problem 我需要用百分号 替换所有星号 方括号中的星号应被忽略 Example Test public void Replace all asterisks outside the square brackets var input
  • 使用 PDFBox 进行图像旋转

    我对使用 PDFBox 很陌生 我需要的是将带有旋转的图像添加到现有的 PDF 中 我知道如何添加图像 但我的问题是如何旋转图像 我见过一些关于 AffineTransform 和 Matrix 的东西 但我不知道那是什么以及它是如何工作的
  • jQuery 更改(使用淡入淡出动画)悬停时 div 的背景图像

    我正在尝试使用 jQuery 更改悬停时 div 的背景图像 这是我到目前为止所想到的 但是它不起作用 html div class logo div css logo width 300px height 100px background
  • Scipy插值如何将3x3矩阵调整大小/重新采样为5x5?

    EDIT 保罗在下面解决了这个问题 谢谢 我正在尝试将 3x3 矩阵重新采样 升级 为 5x5 用 interpolate interp2d 或 interpolate RectBivariateSpline 或其他有效的方法 填充中间点
  • 在 Android 上录制视频时拍照

    我编写了如下所示的 Android 服务 用于在后台录制前置摄像头 这非常有效 但现在我想在录制时每 5 秒拍一张照片 这有可能吗 当我尝试打开第二个摄像头 在另一个服务中 时 出现错误 public class RecorderServi
  • 关于 volatile 关键字的问题

    我知道通过volatile关键词 volatile int k 7 我们寻找编译器该变量可以随时更改 但是一个简单的呢 int k 7 因为它不是恒定的 我们可以随时更改它吗 有什么不同吗 volatile防止编译器优化并告诉编译器声明为
  • 如何在 Windows 7 上安装 Imagick/imagemagick PHP 扩展

    如何在 Windows 7 中安装 imagemagick 我按照这些说明进行操作 在 Windows XP php 5 2 x 上安装 IMagick 下载并安装 ImageMagick 6 5 8 7 Q16 windows dll e
  • 如何在 C++ 中将字节数组发送到另一个进程

    我一直在网站上检查一种在 C 中将数据从一个进程传输到另一个进程的方法 我找到了 SendMessage 方法 但它似乎无法获取字节数组 为了解释一下这里的上下文 我有一个将数据发送到另一个应用程序的应用程序 我们有几个具有不同 ID 的对
  • Numpy 字符串上的“where”

    我想在字符串数组上使用 numpy where 函数 然而 我这样做并不成功 有人可以帮我解决这个问题吗 例如 当我使用numpy where在下面的示例中我收到错误 import numpy as np A apple orange ap
  • 在 tvOS 模拟器上卸载应用程序

    如何从 tvOS 模拟器卸载应用程序 我已经尝试长按该图标 但没有出现 关闭按钮 我知道 这是一个 Beta 版本 也许将来他们会实现类似 iOS 的功能 谢谢 Method 1 从主屏幕 Settings gt General gt Ma
  • 有条件地向 ui-select 添加“multiple”属性

    我正在尝试添加multiple归因于ui select指令基于某个属性的值 使用ng attr 指示 不幸的是 这对我不起作用 我设置了一个 plunker 示例来展示正在发生的事情 笨蛋的例子 Edit 读完上述内容后我终于明白了GitH
  • 我们可以在 Firebase Cloud Messaging 中创建多少个主题?

    我正在构建一个使用 Firebase Cloud Messaging 的应用程序 但我有一些疑问 我想知道我们可以在一个应用程序实例中制作多少个主题 In 官方文档它写道 当单个应用实例订阅过多主题时 它检索错误TOO MANY 主题 我想
  • 如何在我的 PHP/SQL/HTML/CSS 代码上实现 MVC 风格? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我一直在开发一个程序来可视化一些数据 我的程序从 MySQL 数据库获取特定输入并绘制一些图表 libchart 库 创建一些表格等 我的问题是 现在那里是一个代码地狱 我有大约
  • 在加特林场景之间共享数据

    我有一个场景 在包含用户名和密码的 CSV 文件的帮助下 获取会话 ID 并使用 saveAs 保存它们 我希望能够在以下场景中使用这些会话 ID 该场景执行一些需要会话 ID 的操作 此外 我还想将会话 ID 与其用户名相关联 所以本质上