Apache jmeterを使った性能テスト

Curl ORB for Javaの性能がどの程度のものであるか、 jmeterを使ってテストしてみましょう。
Curl ORB for Curl 0.6には、性能テストを行うためのライブラリが用意してあります。

Curl ORB for Curlの中のパッケージ、 com.curlap.orb.client を使ってテストを行います。

Curl ORB for Javaはこちらから最新版をダウンロードしてください。

テストケースを作成する為に必要なモジュール

1.下記のパッケージを含むjarファイル。これらのパッケージはダウンロードした中の、curl-orb_0.6_beta_bin\java\client\libの中に入っています。

このjarファイルの中には、
・com.curlap.orb.client
・com.curlap.orb.common
・com.curlap.orb.io
・com.curlap.orb.type   の4つのパッケージが含まれています。

2.curl-serializer.jar(curl-orb_0.6_beta_bin\java\web\WEB-INF\libの直下にあります。)
3.ApacheJMeter_core.jar(JMeter内のライブラリ)
4.ApacheJMeter_java.jar(JMeter内のライブラリ)
5.junit3.8.2.jar(JMeter内のライブラリ)

Apache JMeterは事前にダウンロードを行っておいてください。(Apache JMeterのダウンロードはこちら)

テストケースの作成

それでは、クライアント側から、サーバ側のサービスを呼び出すクラスを作成していきましょう。

まず、Eclipseを開き、[File]-[New]-[Java Project] を選択します。今回、プロジェクト名はjmeter-testという名前にします。(JREのバージョンは、1.5に設定します。)

次に、プロジェクト内にフォルダを作り(今回はlibという名前にしました)、そこに
・curl-orb-client.jar(先ほど作成したjar)
・ApacheJMeter_core.jar
・ApacheJMeter_java.jar
・junit3.8.2.jar

を追加します。

追加したら、プロジェクトを右クリックし、コンテキストメニューから[Properties]-[Java Build Path]から[Add JARs]を選択し、先ほどlibに追加した3つのjarファイルを追加します。

(結果のイメージ)

jm2.jpg

まずは、簡単なテストケースを作成してみましょう。

プロジェクトを右クリックし、コンテキストメニューから、[New]-[Package] を選択し、testという名前のパッケージを作成します。そのtestパッケージを右クリック、コンテキストメニューから、[New]-[Class] を選択します。名前をTestSamplerとし、superclassにはAbstractJavaSamplerClientを指定します。

jm3.jpg

作成されたクラスを選択してみますと、中には runTest というメソッドが一つ作成されています。

Apache JMeterでは、このrunTestの中身が実行されます。

それではこの中に、テストケースを書きます。

まずは、クイックスタートの最初に作成したHelloクラスのsayHelloメソッドを呼び出すテストを作成します。

ちなみに、呼び出すクラスは下記のようなクラスです。

package com.test;

import com.curlap.orb.security.RemoteService;

@RemoteService
public class Hello {

  // constructor
  public Hello() {
  }

  // methods
  public String sayHello(String str) {
    return “Hello ” + str;
  }
}

TestSampler.java

package test;

import junit.framework.Assert;

import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;

import com.curlap.orb.client.HttpSessionClient;
import com.curlap.orb.client.ORBClientException;

public class TestSampler extends AbstractJavaSamplerClient {

public SampleResult runTest(JavaSamplerContext arg0) {
try {
HttpSessionClient orb = new HttpSessionClient(“com.test.Hello”, new Object[]{});
// args = methodName, args
Assert.assertEquals(“Hello invokeMethod1”, orb.invokeMethod(“sayHello”, new Object[]{“invokeMethod1”}));
orb.destroy();

System.out.println(“test finish”);
}catch (ORBClientException e) {
e.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
return null;
}

}

Apache JMeterへのテストケース追加

TestSampler.javaを作成しましたら、このテストケースをApache JMeterへ追加します。

コンテキストメニューから[Export]-[JAR file]を選択します。テストケースのみExportしたいので、testパッケージのみ選択した状態でExportします。今回名前はorb-test.jarとしました。

jm4.jpg

次に、テストケースとテストに必要なモジュールを JMeterの lib\ext直下 にに追加していきます。

テストに(JMeterの lib\ext直下に)必要なモジュール
・curl-orb-client
・curl-serializer.jar

テストに必要なモジュールは、一度追加するだけでOKです。

では、実際にApache JMeterを立ち上げてテストを行いましょう。

Apache JMeterでのテスト

JMeterの bin フォルダの直下の jmeter.batをクリックしJMeterを立ち上げます。

テストケースを右クリック、コンテキストメニューから、[追加]-[スレッドグループ]

スレッドグループを右クリック、コンテキストメニューから、[追加]-[サンプラー]-[Javaリクエスト]を選択します。

jm5.jpg

あとは、このテストケースを保存し、実行します。

*サーバ側で、curl-orb-server.warという名前でorb-serverのwarファイルが展開されており、Tomcatが起動しているか確認して下さい。

無事に動いていれば、test finishの文字がJMeterのコンソールに表示されます。