'IT'에 해당되는 글 12건

  1. 2013.02.18 JMeter - Java Request
  2. 2012.02.15 Database Development
IT/Tool2013. 2. 18. 14:35

Java Client 를 이용한 부하테스트를 위해서 JMeter 부하테스트 툴을 사용하기로 결정

  • 설치 프로그램

 프로그램

 설명

 Eclipse SDK

 소스 편집기 (텍스트 에디터도 무관) 

 Java Client 

 실제 부하 테스트 대상 클라이언트

 JMeter

 부하 테스트 툴 다운은 여기

 Maven

 실제 Exectuable Jar를 생성하기 위해Maven Assembly Plugin  사용

  • 셋팅
  1. JMeter 설치하고 나면 lib/ext 폴더에 D:\ide\apache-jmeter-2.9\lib\ext에 ApacheJMeter_core.jar, ApacheJMeter_java.jar 2개 파일들을 Client 단의 Class Path 설정 완료
  2. 실제로 테스트 코드가 들어갈 Class파일을 하나 만든다. 그 클래스는 org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient의 클래스를 상속받아야 한다. ( ApacheJMeter_core.jar, ApacheJMeter_java.jar 2개 사용됨)

  3. 상속을 아래하면 아래와 같이 소스를 개발하면 되는데 각 소스에 대한 설명이다. (출처)
    1) getDefaultParameters()

    This method is where you set parameters that you would like to get in JMeter Java Reqeust GUI. You do this by instantiating aorg.apache.jmeter.config.Arguments and calling its addArgument method for each parameter. For example:

    public Arguments getDefaultParameters() {
    Arguments args = new Arguments();
    args.addArgument("Service URL", "");
    args.addArgument("User Name", "");
    args.addArgument("Password", "");
    return args;
    }

    2) setupTest()

    Where you do any initialization (only once per thread) such as reading in the parameters, creating the Hessian proxy, etc. For example:

    public void setupTest(JavaSamplerContext context) {
    url = context.getParameter("Service URL");
    try {
    mySvc = (mySvcClassName)
    proxyFactory.create(mySvcClassName.class, url);
    } catch (Exception e) {
    e.printStackTrace();
    throw new RuntimeException("Error getting hessian proxy", e);
    }
    }

    3) runTest()

    JMeter will invoke it for each iteration of the test. This is where you would put code that invokes the service's methods and evaluate its result. The method returns a "org.apache.jmeter.samplers.SampleResult" object which is what you use to communicate the results to JMeter. For example:

    public SampleResult runTest(JavaSamplerContext context) {
    SampleResult result = new SampleResult();
    result.setSampleLabel("Call Hessian SVC");
    result.setDataType(SampleResult.TEXT);
    result.sampleStart();
    try {
    String custId = mySvc.authenticate(context.getParameter("User Name"), context.getParameter("Password"));
    if (custId == null) {
    result.setSuccessful(false);
    result.setResponseMessage("user authentication failed");
    result.setResponseData("Returned customer id is null".getBytes());
    }
    else {
    result.setSuccessful(true);
    result.setResponseCodeOK();
    result.setResponseMessage("Authentication successful");
    result.setResponseData(("customer id: " + custId).getBytes());
    }
    }
    catch (Throwable e) {
    StringWriter sw = new StringWriter();
    e.printStackTrace(new PrintWriter(sw));
    result.setSuccessful(false);
    result.setResponseMessage("Unexpected exception");
    result.setResponseData(sw.toString().getBytes());
    }

    result.sampleEnd();
    return result;
    }

    In the example above, the method setSuccessful indicates if the test passed or failed. The setting of the responseData is used for displaying whatever information you want in the response data tab of JMeter's "View Results Tree" listener.

    4) teardownTest()

    Where you do cleanup. Typically there is nothing you need to do here.

  4. 3번의 설명을 숙지하고 테스트 진행을 위한 테스트 코드를 삽입한다. 아래는 예제다.
    import org.apache.jmeter.config.Arguments;
    
    import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
    
    import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
    
    import org.apache.jmeter.samplers.SampleResult;
    
    import org.apache.jmeter.threads.JMeterContextService;
    
    import org.apache.jmeter.threads.JMeterVariables;
    
    
    
    
    
    public class JMeterTest extends AbstractJavaSamplerClient {
    
    
    
    
    
    	@Override
    
    	public SampleResult runTest(JavaSamplerContext arg0) {
    
    
    
    		JMeterVariables vars = JMeterContextService.getContext().getVariables();
    
    	    vars.put("demo", "demoVariableContent");
    
    	    
    
    	    System.out.println( " runTest() :: " +  arg0.getParameter("Service URL") );
    
    	    
    
    	    SampleResult sampleResult = new SampleResult();
    
    	    sampleResult.setSuccessful(true);
    
    	    sampleResult.setResponseCodeOK();
    
    	    sampleResult.setResponseMessageOK();
    
    	    return sampleResult;
    
    	}
    
    	
    
    	@Override
    
    	public Arguments getDefaultParameters() {
    
    
    
    		Arguments args = new Arguments();
    
    		
    
    		args.addArgument("Service URL", "127.0.0.1");
    
    		args.addArgument("Service IP", "8080");
    
    		args.addArgument("Service PORT", "8080");
    
    		args.addArgument("Call Count", "1000");
    
    		
    
    		//return super.getDefaultParameters();
    
    		return args;
    
    		
    
    	}
    
    	
    
    	@Override
    
    	public void setupTest(JavaSamplerContext context) {
    
    		// TODO Auto-generated method stub
    
    		//super.setupTest(context);
    
    		
    
    		String url = context.getParameter("Service URL");
    
    		System.out.println(url);
    
    		if(url.equals("127.0.0.1")) System.out.println("it's right!");
    
    		else System.out.println("It's wrong!");
    
    		
    
    	}
    
    	
    
    	@Override
    
    	public void teardownTest(JavaSamplerContext context) {
    
    		
    
    		System.out.println("It's all done~~ ");
    
    
    
    		super.teardownTest(context);
    
    	}
    
    	
    
    
    
    }
    

  5.  Exectuable Jar로 생성 (Maven Assembly Plugin 설명을 따라서 진행하면 간단히 생성 가능)
  6. 1)번 과정에서 생성된 jar를 jmeter의 lib하위 폴더에 넣고 bin\jmeter.bat를 실행시킨다.
  7. 아래 그림을 보면 Name하고 Comment는 원하는 테스트명을 넣고 ClassName이 중요하다 여기에서 내가 실행가능한 ClassName이 뜨면 된다.  

  8. 그러면 Thread Group 하위의 각종 보고 싶은 유형의 결과 리포트( Summary Report View Results in Tables등)의 유형을 선택하여 Run으로 돌리고 나서 결과 확인
  • 테스트 그럼 완ㄹ.


뱀다리) m2clipse와 cmd창에서 직접 실행시킨 maven하고 차이가 발생한다. 이유는 모르겠다. 

cmd창에서는 timeout이 계속 발생해서 dependency 라이브러리를 가져오지 못하고 

m2clipse는 문제가 없다. 이거 왜 이러지??!    다만.. 오류가 왕창 떨어질뿐..

아직도 메이븐 초보에서 벗어나긴 힘든가봐.










'IT > Tool' 카테고리의 다른 글

PowerShell 익숙해지기.  (0) 2015.03.03
Git  (0) 2013.04.01
캡쳐부터 자동 웹업로드되는 막강 툴! Cropper!  (0) 2013.03.25
JMeter  (0) 2013.02.26
Posted by 억사마
IT/Plugin2012. 2. 15. 18:06
이 플러그인만 있으면 DB의 큰 용량의 클라이언트 프로그램 없이 이클립스에서 직접  sql 실행가능하다

해당 플러그인의 경우 첨부파일 ojdbc14.jar 파일만 가지고 있으면 준비끝-


1. 이클립스 Data Tools Platform 설치 

  * 이클립스 메뉴: Help > Install New Software...
  * Work with 항목 선택 
    Galileo 인 경우, http://download.eclipse.org/releases/galileo 또는 
    Helios 인 경우,  http://download.eclipse.org/releases/helios 사이트를 선택합니다.
  * 목록에서 Database Development 를 체크하고 Next 를 누릅니다. 
    설치 후에 이클립스를 재시작합니다.

2. 이클립스 Data Tools Platform 기본 설정 및 사용법

  * Perspective 전환
    이클립스 우측 상단에 Open Perspective 아이콘 클릭 > Other... 로 들어가 Database Development 를 클릭하면
    데이터베이스 조작을 할 수 있는 Perspective 로 전환됩니다.
  * Database Connections 및 Drivder 추가
    좌측 Data Source Explorer 에서 Database Connections 를 우클릭 > New... 를 선택합니다.
    - Connection Profile Types 목록에서 선택: 예를 들어 "Oracle"
    - Name 입력: 예를 들어 "대구은행개발DB"
    - Next 버튼 클릭
    - Drivders 선택: 원하는 드라이버가 없거나 수정이 필요한 경우 New Driver Definition 아이콘 클릭.
      1) Name/Type 선택: 예를 들어 "Oracle Thin Driver / Oracle / 11)
      2) Jar List: Add JAR/Zip.. 으로 미리 준비한 드라이버 파일을 등록. 예를 들어 "C:\dev\tmp\ojdbc14.jar"
         (목록에 이미 뭔가 있더라도 "Unable to locate JAR/zip in file system ...." 이라고 뜨면 삭제 후 새로 등록할것)
      3) OK 버튼 클릭
    - General 항목 입력 (SID, Host, Port number, User name, Password)
    - Test Connection 버튼 클릭하여 설정이 맞는지 확인
    - Finish 버튼 클릭
  * 필요시 스키마 필터 추가 설정
    - 생성된 연결을 우클릭 > Default Schema Filter
      Disable filter 체크 해제 후 사용하는 스키마 이름만 입력
  * SQL Scrapbook 으로 쿼리 수행하기
    - 생성된 연결 우클릭 > Open SQL Scrapbook
      상단에 Type, Name, Database 선택.
    - 쿼리 입력 후 우클릭 > Execute Current Text 등의 메뉴를 선택하여 쿼리 수행. 
      선택한 문자열 수행 단축키 Alt+c / 커서가 위치한 문자열 수행 단축키 Alt+s
      (쿼리 수행 결과는 하단의 SQL Results View 에서 조회 가능)
  * SQL Scrapbook 쿼리 저장하기
    - 파일 확장자를 .sql 로 저장해야 추후에 SQL Scrapbook 타입으로 열 수 있음.
    

메인 주소는 아래로.
http://www.eclipse.org/projects/project.php?id=datatools  




Posted by 억사마