Web サイト (URL) が Drupal ベース (サイトからの HTTP 応答に完全に基づく) であるかどうかを提案する JMeter テスト計画をセットアップし、それを環境にある既存のデータと比較したいと考えています。(サイトのファイルシステムを調べるのではなく、HTTP アプローチを使用するのは「不確か」であることは認識していますが、このアプローチがどれほど役立つか興味があります)
JMeter コマンド ラインは次のようになります。
JMeter -t "DrupalAssertions.jmx" -Jurl=http://my.dot.com -Jdrupal=true
ここで、テストする URL と、サイトが Drupal ベースであるかどうかについての最良の推測を示す追加のプロパティ「drupal」を提供します。
私のテスト計画では、HTTP 要求を追加して、URL のページの HTML コンテンツを返します。その後、パターンをテストする応答アサーションを正常に追加できます (たとえば(?i)(drupal)
、悲しいことに不足しているパターンの場合)。それが応答に含まれているかどうかを確認します。
それはうまく、または期待どおりに機能しますが、私がやりたいのは、「drupal」プロパティの値を、同じ応答アサーションでのそのパターン テストの結果と比較することです。ここで簡単なものが欠けていることはわかっていますが、その方法がわかりません。
次のような表現を使用してみたいと思います。
(?i)(drupal) == ${__P(drupal)}
パターンで、しかしそれはうまくいきません。Compare アサーションの名前は有望に見えますが、プロパティを比較に組み込む方法がわかりません。
更新: PMD UBIK-INGENIERIE によって提案されたアプローチは機能します。次のような正規表現エクストラクタを使用しました。
<RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Extract Drupal in Response" enabled="true">
<stringProp name="RegexExtractor.useHeaders">false</stringProp>
<stringProp name="RegexExtractor.refname">drupalInResponse</stringProp>
<stringProp name="RegexExtractor.regex">(.*drupal.*)</stringProp>
<stringProp name="RegexExtractor.template">$0$</stringProp>
<stringProp name="RegexExtractor.default">__false__</stringProp>
<stringProp name="RegexExtractor.match_number">1</stringProp>
</RegexExtractor>
この BeanShell アサーションが続きます。
// Variable "drupalInResponse" is "__false__" by default
if ( !(vars.get("drupalInResponse").equals("__false__") ) ) {
vars.put("drupalInResponse","true");
}
else {
vars.put("drupalInResponse","false");
}
print("\n\nThe value of property 'drupal' is: " + props.get("drupal") + "\n");
print("\n\nThe value of variable 'drupalInResponse' is: " + vars.get("drupalInResponse") + "\n");
if (vars.get("drupalInResponse").equals( props.get("drupal") ) ) {
print("Site Drupalness is consistent with your beliefs");
}
else {
print("You're wrong about the site's Drupalness");
Failure = true;
FailureMessage = "Incorrect Drupal assumption";
}
正規表現エクストラクタで、関心のあるパターンに一致しないと思われるデフォルト値を設定し、BeanShell アサーションの「drupal」プロパティを使用して、醜い詳細な Java 比較を行いました。
アサーションが2つの部分を持つのではなく、単一のコンポーネントで作成できることを何とか望みますが、「機能する」ことについて議論することはできません:)