Java 로 구현하는 JMeter 샘플러 구현방법이다.

우선 다음의 라이브러리를 의존 라이브러리로 추가한다.

pom.xml
<dependency>
    <groupId>org.apache.jmeter</groupId>
    <artifactId>ApacheJMeter_core</artifactId>
    <version>2.8</version>
</dependency>           
 
<dependency>
    <groupId>org.apache.jmeter</groupId>
    <artifactId>ApacheJMeter_java</artifactId>
    <version>2.8</version>
</dependency>

작성할 주요 부분은 다음 4가지 부분이다.

  • AbstractJavaSamplerClient 상속 받기
  • 기본 파라미터 생성 부분
  • 파라미터 가져오는 부분
  • 실행 하는 부분

AbstractJavaSamplerClient 상속받기

Jmeter 테스트 소스로 인식하고 잘 동작하기 위해서 AbstractJavaSamplerClient 를 상속받아 자신의 클래스를 만든다.

 

CreateFileTest.java
public class CreateFileTest extends AbstractJavaSamplerClient implements Serializable {
 
 
}

 

기본 파라미터 생성

기본 파라미터는 JMeter 화면에서 테스트 클래스를 선택했을 때 나타나는 다음과 같은 파라미터 화면이다.



이 기본 값들을 생성해줌으로써 좀 더 테스트가 원할해질 수 있겠다.

CreateFileTest.java
@Override
public Arguments getDefaultParameters() {
    Arguments params = new Arguments();
    params.addArgument("url", "http://localhost:8080/vine-rpc");
    params.addArgument("file", "input file path");
    params.addArgument("limitFileSize", "-1");
    params.addArgument("maxFileSizeForHessian", "-1");
    return params;
}

파라미터 가져오기

파라미터 가져오는 단계는 테스트 소스를 실행할 때, 사용자가 입력한 파마미터를 실행 클래스에 전달해 실행을 준비한다.

말을 어렵게 했지만, 여튼 사용자가 입력한 값을 테스트 클래스에서 가지고 간다는거다.

CreateFileTest.java
private long limitFileSize = -1L;
private long maxFileSizeForHessian = -1L;
private File file;
private EcmClient ecmClient;   
 
@Override
public void setupTest(JavaSamplerContext context) {
    getLogger().debug(whoAmI() + "\tsetupTest()");
    listParameters(context);
    limitFileSize = context.getLongParameter("limitFileSize", limitFileSize);
    maxFileSizeForHessian = context.getLongParameter("maxFileSizeForHessian", maxFileSizeForHessian);
    String url = context.getParameter("url");
    this.file = new File(context.getParameter("file"));
             
    DomainConfig config = new DomainConfig();
    config.setLimitFileSize(limitFileSize);
    config.setMaxFileSizeForHessian(maxFileSizeForHessian);
    config.getUrls().add(new EcmUrl(url));
     
    Configuration configuration = new Configuration(config);
    ecmClient = configuration.makeStub();
     
}

 

실행 부분

이부분은 아주 중요한 부분이다. 

SampleResult 를 생성하고, 던져줘야하며. 실제 시간을 체크하고 싶은 시점에 sampleStart 와 sampleEnd 를 찍어준다.

CreateFileTest.java
public SampleResult runTest(JavaSamplerContext context) {
    SampleResult results = new SampleResult();
    FileInputStream fis = null;
    try {
        // Record sample start time.
        results.sampleStart();
        fis = new FileInputStream(this.file.path);
        ecmClient.createFile(this.file.name, null,null, null, fis);
        results.setSuccessful(true);
    } catch (Exception e) {
        results.setSuccessful(false);
    } finally {
        IOUtils.closeQuietly(fis);
        results.sampleEnd();
    }
    return results;
}


배포하기

만들어진 소스는 jar 파일 형태로 패키징하여 ${JMETER_HOME}/lib/ext 에 넣는다.

그리고 재시작하면 된다. 

이제 다 죽었다..ㅋㅋㅋㅋ

참조 : http://www.javajigi.net/pages/viewpage.action?pageId=184

+ Recent posts