前些天,在进行分布式参数化测试的时候,出现了如题所示的错误报错信息。此文,针对此做一个简略的重现及分析说明。

JMX脚本线程组参数配置如下所示:

参数文件路径配置如下所示:

执行JMX脚本后,服务器对应日志错误信息(部分)输出如下所示:

2016/06/17 23:06:59 INFO  - jmeter.services.FileServer: Stored: E:\026\distributed.csv
2016/06/17 11:06:59 ERROR - jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable
at org.apache.jmeter.services.FileServer.createBufferedReader(FileServer.java:422)
at org.apache.jmeter.services.FileServer.readLine(FileServer.java:347)
at org.apache.jmeter.config.CSVDataSet.iterationStart(CSVDataSet.java:198)
at org.apache.jmeter.control.GenericController.fireIterationStart(GenericController.java:405)
at org.apache.jmeter.control.GenericController.fireIterEvents(GenericController.java:397)
at org.apache.jmeter.control.GenericController.next(GenericController.java:158)
at org.apache.jmeter.control.LoopController.next(LoopController.java:123)
at org.apache.jmeter.threads.AbstractThreadGroup.next(AbstractThreadGroup.java:87)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:239)
at java.lang.Thread.run(Unknown Source) 或者 2016/06/17 23:13:05 INFO - jmeter.threads.JMeterThread: Thread started: 文章详情 1-1
2016/06/17 23:13:05 INFO - jmeter.services.FileServer: Stored: ./distributed.csv
2016/06/17 11:13:05 ERROR - jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable
at org.apache.jmeter.services.FileServer.createBufferedReader(FileServer.java:422)
at org.apache.jmeter.services.FileServer.readLine(FileServer.java:347)
at org.apache.jmeter.config.CSVDataSet.iterationStart(CSVDataSet.java:198)
at org.apache.jmeter.control.GenericController.fireIterationStart(GenericController.java:405)
at org.apache.jmeter.control.GenericController.fireIterEvents(GenericController.java:397)
at org.apache.jmeter.control.GenericController.next(GenericController.java:158)
at org.apache.jmeter.control.LoopController.next(LoopController.java:123)
at org.apache.jmeter.threads.AbstractThreadGroup.next(AbstractThreadGroup.java:87)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:239)
at java.lang.Thread.run(Unknown Source)

综上,如下两种情况下,测试脚本参数化均无法按照预期正确执行:

  1. 参数文件路径为绝对路径,但对应路径下不存在
  2. 参数文件路径为相对路径,但对应执行机(Slave)服务分发路径下不存在

那么,调度机(Controller)分发脚本到执行机(Slave)的路径是什么呢?查看脚本分发路径有如下两种方式:

一、通过执行机服务日志,user.dir 目录即为分发路径(推荐)

2016/06/20 15:01:47 INFO  - jmeter.util.JMeterUtils: Setting Locale to zh_CN
2016/06/20 15:01:47 INFO - jmeter.JMeter: Loading user properties from: D:\DevTool\apache-jmeter-3.0\bin\user.properties
2016/06/20 15:01:47 INFO - jmeter.JMeter: Loading system properties from: D:\DevTool\apache-jmeter-3.0\bin\system.properties
2016/06/20 15:01:47 INFO - jmeter.JMeter: Copyright (c) 1998-2016 The Apache Software Foundation
2016/06/20 15:01:47 INFO - jmeter.JMeter: Version 3.0 r1743807
2016/06/20 15:01:47 INFO - jmeter.JMeter: java.version=1.8.0_66
2016/06/20 15:01:47 INFO - jmeter.JMeter: java.vm.name=Java HotSpot(TM) 64-Bit Server VM
2016/06/20 15:01:47 INFO - jmeter.JMeter: os.name=Windows 7
2016/06/20 15:01:47 INFO - jmeter.JMeter: os.arch=amd64
2016/06/20 15:01:47 INFO - jmeter.JMeter: os.version=6.1
2016/06/20 15:01:47 INFO - jmeter.JMeter: file.encoding=GBK
2016/06/20 15:01:47 INFO - jmeter.JMeter: Max memory =523763712
2016/06/20 15:01:47 INFO - jmeter.JMeter: Available Processors =4
2016/06/20 15:01:47 INFO - jmeter.JMeter: Default Locale=中文 (中国)
2016/06/20 15:01:47 INFO - jmeter.JMeter: JMeter Locale=中文 (中国)
2016/06/20 15:01:47 INFO - jmeter.JMeter: JMeterHome=D:\DevTool\apache-jmeter-3.0
2016/06/20 15:01:47 INFO - jmeter.JMeter: user.dir =D:\DevTool\apache-jmeter-3.0\bin
2016/06/20 15:01:47 INFO - jmeter.JMeter: PWD =D:\DevTool\apache-jmeter-3.0\bin

二、分发jmx脚本目录即为执行机服务启动目录,例如执行机服务启动命令行如下所示:

那么,此执行机对应的jmx脚本分发目录为:D:\DevTool\apache-jmeter-3.0\bin

执行JMX测试脚本

    • 第一次,对应分发路径无对应参数文件
    • 第二次,对应分发路径有对应参数文件

执行机(Slave)端控制台输出如下所示:

JMX脚本两次执行结果如下所示:

由执行结果可见,将 JMX 脚本对应参数文件放到正确的目录后,脚本成功执行。

附录:执行机(Slave)日志输出如下所示:

 2016/06/20 15:01:47 INFO  - jmeter.util.JMeterUtils: Setting Locale to zh_CN
2016/06/20 15:01:47 INFO - jmeter.JMeter: Loading user properties from: D:\DevTool\apache-jmeter-3.0\bin\user.properties
2016/06/20 15:01:47 INFO - jmeter.JMeter: Loading system properties from: D:\DevTool\apache-jmeter-3.0\bin\system.properties
2016/06/20 15:01:47 INFO - jmeter.JMeter: Copyright (c) 1998-2016 The Apache Software Foundation
2016/06/20 15:01:47 INFO - jmeter.JMeter: Version 3.0 r1743807
2016/06/20 15:01:47 INFO - jmeter.JMeter: java.version=1.8.0_66
2016/06/20 15:01:47 INFO - jmeter.JMeter: java.vm.name=Java HotSpot(TM) 64-Bit Server VM
2016/06/20 15:01:47 INFO - jmeter.JMeter: os.name=Windows 7
2016/06/20 15:01:47 INFO - jmeter.JMeter: os.arch=amd64
2016/06/20 15:01:47 INFO - jmeter.JMeter: os.version=6.1
2016/06/20 15:01:47 INFO - jmeter.JMeter: file.encoding=GBK
2016/06/20 15:01:47 INFO - jmeter.JMeter: Max memory =523763712
2016/06/20 15:01:47 INFO - jmeter.JMeter: Available Processors =4
2016/06/20 15:01:47 INFO - jmeter.JMeter: Default Locale=中文 (中国)
2016/06/20 15:01:47 INFO - jmeter.JMeter: JMeter Locale=中文 (中国)
2016/06/20 15:01:47 INFO - jmeter.JMeter: JMeterHome=D:\DevTool\apache-jmeter-3.0
2016/06/20 15:01:47 INFO - jmeter.JMeter: user.dir =D:\DevTool\apache-jmeter-3.0\bin
2016/06/20 15:01:47 INFO - jmeter.JMeter: PWD =D:\DevTool\apache-jmeter-3.0\bin
2016/06/20 15:01:47 INFO - jmeter.JMeter: IP: 10.9.215.47 Name: TEST FullName: TEST.ffp.corp
2016/06/20 15:01:47 INFO - jmeter.engine.RemoteJMeterEngineImpl: Starting backing engine on 1029
2016/06/20 15:01:47 INFO - jmeter.engine.RemoteJMeterEngineImpl: System property 'java.rmi.server.hostname' is not defined, using localHost address
2016/06/20 15:01:47 INFO - jmeter.engine.RemoteJMeterEngineImpl: Local IP address=10.9.215.47
2016/06/20 15:01:47 INFO - jmeter.engine.RemoteJMeterEngineImpl: IP address is a site-local address; this may cause problems with remote access.
Can be overridden by defining the system property 'java.rmi.server.hostname' - see jmeter-server script file
2016/06/20 15:01:47 INFO - jmeter.engine.RemoteJMeterEngineImpl: Creating RMI registry (server.rmi.create=true)
2016/06/20 15:01:47 INFO - jmeter.engine.RemoteJMeterEngineImpl: Bound to registry on port 1029
2016/06/20 15:05:55 INFO - jmeter.samplers.SampleEvent: List of sample_variables: []
2016/06/20 15:05:55 INFO - jmeter.samplers.BatchSampleSender: Using batching for this run. Thresholds: num=100, time=60000
2016/06/20 15:05:55 INFO - jmeter.samplers.DataStrippingSampleSender: Using DataStrippingSampleSender for this run
2016/06/20 15:05:55 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2016/06/20 15:05:55 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2016/06/20 15:05:55 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2016/06/20 15:05:55 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2016/06/20 15:05:55 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
2016/06/20 15:05:55 INFO - jmeter.protocol.http.sampler.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser
2016/06/20 15:05:56 INFO - jmeter.engine.RemoteJMeterEngineImpl: Creating JMeter engine on host 10.9.215.47:1029 base '.'
2016/06/20 15:05:56 INFO - jmeter.engine.RemoteJMeterEngineImpl: Remote client host: 10.9.215.49
2016/06/20 15:05:56 INFO - jmeter.services.FileServer: Default base='D:\DevTool\apache-jmeter-3.0\bin'
2016/06/20 15:05:56 INFO - jmeter.services.FileServer: Set new base='.'
2016/06/20 15:05:56 INFO - jmeter.engine.StandardJMeterEngine: Applying properties {}
2016/06/20 15:05:56 INFO - jmeter.engine.RemoteJMeterEngineImpl: Running test
2016/06/20 15:05:56 INFO - jmeter.engine.StandardJMeterEngine: Running the test!
2016/06/20 15:05:56 INFO - jmeter.samplers.SampleEvent: List of sample_variables: []
2016/06/20 15:05:56 INFO - jmeter.engine.util.CompoundVariable: Note: Function class names must contain the string: '.functions.'
2016/06/20 15:05:56 INFO - jmeter.engine.util.CompoundVariable: Note: Function class names must not contain the string: '.gui.'
2016/06/20 15:05:56 INFO - jmeter.engine.StandardJMeterEngine: Starting ThreadGroup: 1 : 文章详情
2016/06/20 15:05:56 INFO - jmeter.engine.StandardJMeterEngine: Starting 2 threads for group 文章详情.
2016/06/20 15:05:56 INFO - jmeter.engine.StandardJMeterEngine: Thread will continue on error
2016/06/20 15:05:56 INFO - jmeter.threads.ThreadGroup: Starting thread group number 1 threads 2 ramp-up 2 perThread 1000.0 delayedStart=false
2016/06/20 15:05:56 INFO - jmeter.threads.ThreadGroup: Started thread group number 1
2016/06/20 15:05:56 INFO - jmeter.engine.StandardJMeterEngine: All thread groups have been started
2016/06/20 15:05:56 INFO - jmeter.threads.JMeterThread: Thread started: 文章详情 1-1
2016/06/20 15:05:56 INFO - jmeter.services.FileServer: Stored: ./distributed.csv
2016/06/20 15:05:56 ERROR - jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable
at org.apache.jmeter.services.FileServer.createBufferedReader(FileServer.java:422)
at org.apache.jmeter.services.FileServer.readLine(FileServer.java:347)
at org.apache.jmeter.config.CSVDataSet.iterationStart(CSVDataSet.java:198)
at org.apache.jmeter.control.GenericController.fireIterationStart(GenericController.java:405)
at org.apache.jmeter.control.GenericController.fireIterEvents(GenericController.java:397)
at org.apache.jmeter.control.GenericController.next(GenericController.java:158)
at org.apache.jmeter.control.LoopController.next(LoopController.java:123)
at org.apache.jmeter.threads.AbstractThreadGroup.next(AbstractThreadGroup.java:87)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:239)
at java.lang.Thread.run(Unknown Source) 2016/06/20 15:05:56 INFO - jmeter.threads.JMeterThread: Thread finished: 文章详情 1-1
2016/06/20 15:05:57 INFO - jmeter.threads.JMeterThread: Thread started: 文章详情 1-2
2016/06/20 15:05:57 ERROR - jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable
at org.apache.jmeter.services.FileServer.createBufferedReader(FileServer.java:422)
at org.apache.jmeter.services.FileServer.readLine(FileServer.java:347)
at org.apache.jmeter.config.CSVDataSet.iterationStart(CSVDataSet.java:198)
at org.apache.jmeter.control.GenericController.fireIterationStart(GenericController.java:405)
at org.apache.jmeter.control.GenericController.fireIterEvents(GenericController.java:397)
at org.apache.jmeter.control.GenericController.next(GenericController.java:158)
at org.apache.jmeter.control.LoopController.next(LoopController.java:123)
at org.apache.jmeter.threads.AbstractThreadGroup.next(AbstractThreadGroup.java:87)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:239)
at java.lang.Thread.run(Unknown Source) 2016/06/20 15:05:57 INFO - jmeter.threads.JMeterThread: Thread finished: 文章详情 1-2
2016/06/20 15:05:57 INFO - jmeter.engine.StandardJMeterEngine: Notifying test listeners of end of test
2016/06/20 15:05:57 INFO - jmeter.samplers.DataStrippingSampleSender: Test Ended on 10.9.215.47:1029
2016/06/20 15:05:57 INFO - jmeter.samplers.BatchSampleSender: Test Ended on 10.9.215.47:1029
2016/06/20 15:05:57 INFO - jmeter.engine.StandardJMeterEngine: Test has ended on host 10.9.215.47:1029
2016/06/20 15:07:51 INFO - jmeter.samplers.BatchSampleSender: Using batching for this run. Thresholds: num=100, time=60000
2016/06/20 15:07:51 INFO - jmeter.samplers.DataStrippingSampleSender: Using DataStrippingSampleSender for this run
2016/06/20 15:07:51 INFO - jmeter.engine.RemoteJMeterEngineImpl: Creating JMeter engine on host 10.9.215.47:1029 base '.'
2016/06/20 15:07:51 INFO - jmeter.engine.RemoteJMeterEngineImpl: Remote client host: 10.9.215.49
2016/06/20 15:07:51 INFO - jmeter.services.FileServer: Set new base='.'
2016/06/20 15:07:51 INFO - jmeter.engine.RemoteJMeterEngineImpl: Cleaning previously set properties {}
2016/06/20 15:07:51 INFO - jmeter.engine.StandardJMeterEngine: Applying properties {}
2016/06/20 15:07:51 INFO - jmeter.engine.RemoteJMeterEngineImpl: Running test
2016/06/20 15:07:51 INFO - jmeter.engine.StandardJMeterEngine: Running the test!
2016/06/20 15:07:51 INFO - jmeter.samplers.SampleEvent: List of sample_variables: []
2016/06/20 15:07:51 INFO - jmeter.engine.StandardJMeterEngine: Starting ThreadGroup: 1 : 文章详情
2016/06/20 15:07:51 INFO - jmeter.engine.StandardJMeterEngine: Starting 2 threads for group 文章详情.
2016/06/20 15:07:51 INFO - jmeter.engine.StandardJMeterEngine: Thread will continue on error
2016/06/20 15:07:51 INFO - jmeter.threads.ThreadGroup: Starting thread group number 1 threads 2 ramp-up 2 perThread 1000.0 delayedStart=false
2016/06/20 15:07:51 INFO - jmeter.threads.JMeterThread: Thread started: 文章详情 1-1
2016/06/20 15:07:51 INFO - jmeter.threads.ThreadGroup: Started thread group number 1
2016/06/20 15:07:51 INFO - jmeter.engine.StandardJMeterEngine: All thread groups have been started
2016/06/20 15:07:51 INFO - jmeter.services.FileServer: Stored: ./distributed.csv
2016/06/20 15:07:52 INFO - jmeter.threads.JMeterThread: Thread started: 文章详情 1-2
2016/06/20 15:07:54 WARN - jmeter.timers.SyncTimer: SyncTimer 集合点 timeouted waiting for users after:3000ms
2016/06/20 15:07:54 INFO - jmeter.protocol.http.sampler.HTTPHCAbstractImpl: Local host = TEST
2016/06/20 15:07:54 INFO - jmeter.protocol.http.sampler.HTTPHC4Impl: HTTP request retry count = 0
2016/06/20 15:07:54 INFO - jmeter.samplers.SampleResult: Note: Sample TimeStamps are START times
2016/06/20 15:07:54 INFO - jmeter.samplers.SampleResult: sampleresult.default.encoding is set to ISO-8859-1
2016/06/20 15:07:54 INFO - jmeter.samplers.SampleResult: sampleresult.useNanoTime=true
2016/06/20 15:07:54 INFO - jmeter.samplers.SampleResult: sampleresult.nanoThreadSleep=5000
2016/06/20 15:07:55 INFO - jmeter.threads.JMeterThread: Thread is done: 文章详情 1-1
2016/06/20 15:07:55 INFO - jmeter.threads.JMeterThread: Thread finished: 文章详情 1-1
2016/06/20 15:07:55 INFO - jmeter.threads.JMeterThread: Thread is done: 文章详情 1-2
2016/06/20 15:07:55 INFO - jmeter.threads.JMeterThread: Thread finished: 文章详情 1-2
2016/06/20 15:07:55 INFO - jmeter.engine.StandardJMeterEngine: Notifying test listeners of end of test
2016/06/20 15:07:55 INFO - jmeter.services.FileServer: Close: ./distributed.csv
2016/06/20 15:07:55 INFO - jmeter.samplers.DataStrippingSampleSender: Test Ended on 10.9.215.47:1029
2016/06/20 15:07:55 INFO - jmeter.samplers.BatchSampleSender: Test Ended on 10.9.215.47:1029
2016/06/20 15:07:55 INFO - jmeter.engine.StandardJMeterEngine: Test has ended on host 10.9.215.47:1029

执行机(Slave)服务日志信息

至此,此文顺利完结,希望此文能够给初学 JMeter 的您一份参考。

最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^

JMeter学习-027-JMeter参数文件(脚本分发)路径问题:jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable解决方法的更多相关文章

  1. 云笔记项目- 上传文件报错"java.lang.IllegalStateException: File has been moved - cannot be read again"

    在做文件上传时,当写入上传的文件到文件时,会报错“java.lang.IllegalStateException: File has been moved - cannot be read again ...

  2. java.lang.IllegalArgumentException 不合法的参数异常

    报错内容: IllegalArgumentException 不合法的参数异常 十二月 06, 2016 10:06:56 上午 org.apache.catalina.core.StandardWr ...

  3. 登录首页时报错:java.lang.IllegalArgumentException (不合法的参数异常)

    处理一个老项目,DOWN下项目并配好之后,启动没问题,但是登陆之后首页显示如下: 控制台报错如下: 严重: Servlet.service() for servlet jsp threw except ...

  4. Jmeter学习—004—使用代理录制脚本—HTTP代理服务器(APP、web皆可)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/mmmmmmm_2niu/article/details/78136253记得我最开始使用jmeter ...

  5. JMeter参数文件的相对路径

    很多教程里都说“尽可能将参数文件配置为相对路径,以更好的去适配Slave环境”或者“把XX放到相对路径” 这里相对路径是指的 C:\Program Files (x86)\apache-jmeter- ...

  6. mysql 直接从date 文件夹备份表,还原数据库之后提示 table doesn`t exist的原因和解决方法

    补充:正常情况下,建议数据库备份最好用工具进行备份,通过拷贝数据库表进行数据迁移,不同的环境会出现各种不同的意外问题. 背景:今天在整理一个网站的时候,操作系统由于系统自动更新导致一直出现系统蓝屏死机 ...

  7. JMeter学习(二)录制脚本

    ---------------------------------------------------------------------------------------------------- ...

  8. JMeter学习(二)录制脚本(转载)

    转载自 http://www.cnblogs.com/yangxia-test 环境 Badboy  version 2.1.1 JDK: 1.7.0_67 Apache  JMeter-2.11 - ...

  9. jmeter CSV Data数据中带有逗号解决方法

    今天用jmeter做性能测试,由于参数的数据中含有逗号,一直失败,尝试了几次终于成功,先写下经验 首先看设置 E:\apache-jmeter-2.12\bin\litaojunzb.csv文件格式如 ...

随机推荐

  1. Received an invalid response. Origin 'null' is therefore not allowed access

    Received an invalid response. Origin 'null' is therefore not allowed access. 今天在做二级联动,使用ajax请求xml数据, ...

  2. 终端下vim无法输入问题解决

    最近回归vim时发现会偶尔出现vim无法输入,但光标在动的情况,一度怀疑是spf13的问题,后来经搜索,才发现是因为vim下,快捷键 Ctrl+s 的功能是停止输入,在IDE下编程时间长了,都有潜意识 ...

  3. UWP crop image control

    最近做项目,需求做一个剪切图片的东东.如下图 主要是在一个canvas上面.根据crop的大小画出半透明的效果 <Canvas x:Name="imageCanvas" Vi ...

  4. Daily Scrum Meeting ——ZeroDay(Beta)12.08

    算是BETA冲刺的前奏,不算正式冲刺

  5. MSMQ

    1.安装MSMQ 2.添加私有的队列 3.MSMQ可以发送的类型可以是任意类型,包括类 static string strServer = @"FormatName:Direct=TCP:1 ...

  6. Android 应用测试总结

    前提所有的功能分支已完成 启动:1. 启动入口:桌面正常启动,最近运行启动,所有程序列表中启动,锁屏快捷启动2. 其他入口:从其他程序开启应用,从外部以文件形式打开应用(如果有)3. 退回:从其他程序 ...

  7. HDU5322 Hope(DP + CDQ分治 + NTT)

    题目 Source http://acm.hdu.edu.cn/showproblem.php?pid=5322 Description Hope is a good thing, which can ...

  8. log4php的配置

    网上关于log4php配置的文章很多,下面是我的配置,跟网上部分略有不同 (1)添加日志     1.下载log4php,到官网就可以下载到,下载后解压     我的版本是log4php_2.3.0 ...

  9. Intersection of Two Linked Lists

    Write a program to find the node at which the intersection of two singly linked lists begins. For ex ...

  10. JQUERY attr prop 的区别 一个已经被淘汰

    在做jquery 全选 全不选的项目中, 1..prop( propertyName ) 获取匹配集合中第一个元素的Property的值 2. .prop( propertyName, value ) ...