2017-12-20 21 views
0

pythonスクリプトを使ってターゲットホスト上でJMeter-serverを起動する必要があります。 Jmeterには/tmp/jmeter-3sc0ppq5/のような一時ディレクトリがあります。Pythonスクリプト、ベースディレクトリでJmeterサーバを起動

File file = new File('errors' + File.separator + fileName); 
file.getParentFile().mkdirs(); 

しかし、最終的には、(表示されてそれ `s:スクリプト内では、私はビン/ディレクトリに自分のベースディレクトリに登場してきたのに必要なファイルとそれ` sを作成しているいくつかのBeanShellを持っています私のPythonスクリプトは、(簡略化されて 内だけでなく、JMeterの-のserver.logファイル/ルート/)):

stdin, stdout, stderr = ssh.exec_command('cd /tmp/jmeter-3sc0ppq5/bin/') 
run_jmeter_server_cmd = 'nohup java -jar "/tmp/jmeter-3sc0ppq5/bin/ApacheJMeter.jar" -Duser.dir=/tmp/jmeter-3sc0ppq5/bin/ApacheJMeter.jar -Dserver_port=11111 -s -j jmeter-server.log > /dev/null 2>&1' 
command = 'echo $$; exec ' + run_jmeter_server_cmd 
stdin, stdout, stderr = ssh.exec_command(command) 
pid = int(stdout.readline()) 

見ての通り

さえはuser.dir dを送信しようとしましたディレクトリを明示的に指定します。 のJMeter-server.logには、中/ルート表示されている/いますが、このJMeterのプロセスが正しいディレクトリからすべてのconfigsを取ることを言う:

2017-12-20 09:26:49,551 INFO o.a.j.u.JMeterUtils: Setting Locale to en_DK 
2017-12-20 09:26:49,566 INFO o.a.j.JMeter: Loading user properties from: /tmp/jmeter-3sc0ppq5/bin/user.properties 
2017-12-20 09:26:49,567 INFO o.a.j.JMeter: Loading system properties from: /tmp/jmeter-3sc0ppq5/bin/system.properties 
2017-12-20 09:26:49,567 INFO o.a.j.JMeter: Setting System property: java.rmi.server.hostname=loadtest08-qa 
2017-12-20 09:26:49,567 INFO o.a.j.JMeter: Setting System property: user.dir=/tmp/jmeter-3sc0ppq5/bin/ 
2017-12-20 09:26:49,567 INFO o.a.j.JMeter: Setting System property: server_port=10001 
.............. 
2017-12-20 09:26:49,580 INFO o.a.j.JMeter: JMeterHome=/tmp/jmeter-3sc0ppq5 
2017-12-20 09:26:49,580 INFO o.a.j.JMeter: user.dir =/tmp/jmeter-3sc0ppq5/bin/ 
2017-12-20 09:26:49,580 INFO o.a.j.JMeter: PWD  =/tmp/jmeter-3sc0ppq5/bin 

しかし、スクリプトによって作成されたすべてのファイルは/ルート/ディレクトリに行くだけでなく、言及されていますJMeterの-のserver.log

私が見つけた唯一の解決策は、1に実行し、cdコマンドを組み合わせることが、その後、私はJavaプロセスのための適切なPIDを取得することはできませんです。

run_jmeter_server_cmd = 'cd /tmp/jmeter-3sc0ppq5/bin/ApacheJMeter.jar && nohup java -jar "/tmp/jmeter-3sc0ppq5/bin/ApacheJMeter.jar" -Duser.dir=/tmp/jmeter-3sc0ppq5/bin/ApacheJMeter.jar -Dserver_port=11111 -s -j jmeter-server.log > /dev/null 2>&1 

はJMeterのを強制する方法はありますcをせずに自分のディレクトリを使用するそこに?

+1

プロパティを-JbaseDir =/tmp/jmeter-3sc0ppq5 /とし、スクリプトのbaseDirプロパティを使用するのはなぜですか? – user7294900

+0

ええ、何が起こっているのか理解したいと思ったが、私は最終的にこの解決策と一緒に行くと思う。 – v0devil

答えて

0

基本ディレクトリをプロパティとして送信し、必要に応じて使用することをお勧めします。

あなたは-Gオプションを使用する必要があります

server mode
-JbaseDir=/tmp/jmeter-3sc0ppq5/ 

として使用してJMeter command lineに送信することができます。

-G

を設定するのJMeterプロパティを定義するために使用されますサーバー内で

0

私の元

run_jmeter_server_cmd = 'nohup java -Duser.dir=/tmp/jmeter-3sc0ppq5/bin -Dserver_port=11111 -jar "/tmp/jmeter-3sc0ppq5/bin/ApacheJMeter.jar" -s -j jmeter-server.log > /dev/null 2>&1' 

そして予想通り、それは作業を開始する必要があります。pectationは、あなたがそうのようなあなたのコマンドを改正するJMeterを呼び出す前にこの-Duser.dir=/tmp/jmeter-3sc0ppq5/binパラメータを渡す必要があるということです。問題が発生した場合は、jmeter.logファイルをチェックしてください。特に、o.a.j.s.FileServer:に関連する行を探してください。

また、jmeter.save.saveservice.base_prefixプロパティ値で再生し、前述のFileServerクラスを使用して、現在のJMeterホームディレクトリを動的に検出することもできます。


もので、次の機会にJSR223 Test Elementsへの移行を検討JMeter version 3.1it is recommended to use Groovy for any form of scriptingから見つめ意識始まりです。

+0

これらの-D変数の場所のように見えるのは重要ではない – v0devil

関連する問題