我正在使用JMeter来测试API和Docker。我想在一个容器中运行JMX文件。目前,我可以在一个容器中运行一个JMX文件。
我用来运行测试的脚本是:
function pdf_download(){
$this->load->helper('file');
$curl = $this->api_call->callapi('GET',APIURL."carts/96171/tickets");
$content = $curl;
$my_file = FCPATH . '/document/text.txt';
if (write_file($my_file, $content) == FALSE)
{
echo 'Unable to write the file';
}
else
{
echo 'File written!';
}
$pdf_base64 = $my_file;
//Get File content from txt file
$pdf_base64_handler = fopen($pdf_base64,'r');
$pdf_content = fread ($pdf_base64_handler,filesize($pdf_base64));
fclose ($pdf_base64_handler);
//Decode pdf content
$pdf_decoded = base64_decode ($pdf_content);
//Write data back to pdf file
$pdf_file=FCPATH . '/document/ticket.pdf';
$pdf = fopen ($pdf_file,'w');
fwrite ($pdf,$pdf_decoded);//Creating a pdf from the encoded content in txt file
fclose ($pdf);
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=tickets.pdf");
ob_clean(); flush();
readfile($pdf_file);//downloading the pdf file
exit();
}
如何在一个容器中运行多个JMX文件?你能帮我吗?
答案 0 :(得分:0)
使用bash脚本替换对单个jmx文件的调用,然后再调用多个jmeter脚本
答案 1 :(得分:0)
您可以考虑使用GNU Parallel命令,例如:
docker-compose exec master parallel jmeter -p /jmeter/sample/stage.properties -n -t /jmeter/sample/mob{}.jmx -l /jmeter/sample/mob{}.jtl ::: 1 2
这样mob1.jmx
和mob2.jmx
将同时执行,结果将分别写入mob1.jtl
和mob2.jtl
文件中。
另一种选择是使用Taurus工具作为JMeter测试的包装器,您可以在简单的YAML文件中声明测试,例如:
---
execution:
- scenario:
script: /jmeter/sample/mob1.jmx
- scenario:
script: /jmeter/sample/mob2.jmx
和Taurus will start them in parallel。
您可能需要先将GNU parallel或Taurus安装到您的容器,默认情况下很可能没有安装。