簡體   English   中英

如何在Gatling中將響應中的值寫入文件?

[英]How to write a value from the response to a file in Gatling?

我有一個腳本,每次執行時都會創建一個新的referenceId。 我用了

.check(regex("orders.(.*?)\"").saveAs("referenceId")))

提取referenceId。 現在,即使將其作為負載測試運行,如何在不影響腳本的情況下將其寫入/追加到文件中?

我在.exec中使用會話將我的值寫入文件。 這里是:

.exec( session => {
                scala.tools.nsc.io.File("../user-files/data/refenceId.csv").appendAll(session("refenceId").as[String]+"\n")
                session}
      )

您的解決方案有效,但是...

首先,不要使用scala.tools.nsc.io包中的任何內容(如果不需要的話)。 它是僅用於Scala編譯器的內部軟件包。 它不是Scala運行時庫(官方Scaladoc)中包含的公共API。 更多的話題在這里 Scala沒有自己的抽象文件寫入方法,因此需要使用常規的java.io.File &co。

其次,在每次執行中打開文件都會(可能不會)減慢您的負載測試速度。 在很大程度上取決於您提出請求的速率。 以更高的速率,當更多的並發執行嘗試寫入同一文件時,您可能會遇到爭用。 最簡單的解決方案是寫入不同的文件,但是您仍然可能用盡已打開文件的最大數量。 另一個解決方案是使用共享的java.io.FileOutputStream響應。 java.io.FileWriter正確同步到所需的目標文件(將從各個線程訪問),這仍然會阻止IO。 另一個解決方案是使用Java NIO API通過Channel (非阻塞)或OutputStream (不確定是否非阻塞)寫入共享文件。

當然,解決方案的實現難度有所不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM