私はデータベースからプルするユーザーアカウントごとに異なるスレッドを必要とするスクリプトを実行しています。そのため、スクリプトは、JDBCプロセッサを実行してすべてのアカウントを取得し、「アカウント」に「変数名」フィールドを使用して格納します。それから私は、プロパティに「#accounts_」変数を変換するために、BeanShellのプリプロセッサを実行します。2回目の実行までプロパティが有効にならない
その後props.put("p_accounts_#",vars.get("accounts_#"));
、私はスレッドグループの開始を持っています。 「スレッド(ユーザー)の数」の下で、私は
${__P(p_accounts_#)}
私は(JMeterの起動後)このスクリプトを実行FIRST時間を持って、私は単一のスレッドのみを取得します。私はそれを実行するたびに、それはすべてのアカウントのために実行されます。
何らかの理由で、プロパティが最初の実行が終了するまで保存されていないようです。これは非常に大きな問題です.JMeterをUIなしで起動すると、たびに1つのスレッドしか実行されません。
プロパティを正しく設定していませんか?私はBeanshellアサーションでも同じ結果を試しました。
テストと同じように、私はこれを再現するために最低限のテストを作成しました。ここにスクリプト(画像)があります:http://imgur.com/a/WB5J2
"props.put(" accounts "、" 12 ");"を持つBeanshell PreProcessorです。 スレッド数として「$ {__ P(accounts)}」を使用するスレッドグループ そのスレッドグループ内には、JMeterプロパティを出力するDebug Samplerがあります。 最後に、結果ツリーの表示があります。
最初に実行すると、「スレッド1実行中」という出力が1つしかありません。 もう一度実行すると、 "Tread 1 Running"、 "Thread 2 running"などの12の出力があります。
両方のデバッグサンプラー(最初の実行と2番目の実行)プロパティは12に設定されていますが、スレッドグループは動作する前にTWICEを実行する必要がありました。
アイデア?
チャームのように働いた。私は新しいスレッドグループを追加し、テストプランで "スレッドグループを連続して実行する"オプションを設定し、Beanshellサンプラーを使用してプロパティを設定しました。 Beanshellプリプロセッサは何もしていないようですが、サンプラーは正常に動作しています。ありがとう! – Jer