저번에는 부하테스트가 뭐고, 뭘 하고 싶은지를 보고 grinder 의 간단한 구조를 봤다.
공식 사이트의 docs 를 보고 어느 정도 구조를 파악하고 대충 소스를 까봐야겠다. 어려울까봐 시작할 용기가 안나는구만 ㅎㅎ 하지만 일단 시작하자.
콘솔
콘솔은 사용자가 테스트 시나리오를 올리고 어떤 에이전트한테 실행하기 할지 이런 인터페이스 역할이라고 이해했다.
웹 ui를 통해서 실행 상황도 보고 에이전트한테 테스트 케이스를 분배하고 실제로 일을 하는 워커를 시작하고 종료하는 등의 명령을 내릴 수 있다.
- default : 6373 포트 를 쓰는 http server에 올라가며 http://localhost:6373/version 이런식으로 콘솔 서비스 실행할 수 있다. 물론 포트 변경이나 GUI 사용없이 콘솔모드로만 사용도 가능하다. [공식사이트] (http://grinder.sourceforge.net/g3/console-service.html)
- 콘솔 서비스의 명령은 rest 방식으로 get, post, put 등을 사용하여 전달할 수 있도록 정의되어있다.
콘솔 시작하기
- 콘솔 서비스 시작하기
- 콘솔 서비스 properties 세팅하기-> 로컬에 넣어준 properties 파일 선택하도록 설정
- agent 연결하기
- 테스트 스크립트를 실행하라는 명령을 내려서 worker 실행하기
- worker 중지하고 기록 받기
Griner.console.service jar 파일을 조금 살펴보니 /~ 이런식으로 rest 쏘면 설정할 수 있도록 내부구조는 그냥 서비스에서 getmapping 이런게 되어있었다.
커스텀 하려면 이런 부분 커스텀 조금 하면 될 것 같다고 또 망상코딩하기 ㅎ.ㅎ
agent, worker
콘솔을 통해 명령을 받거나 그렇지 않으면 grinder.properties 를 통해 정해진대로 agent 는 worker 를 통해 테스트를 수행한다.
-default: 하나의 load injector machine 에 agent 하나 올려서 실행한다.
agent, worker 실행 순서
- agent 실행 되면 콘솔과 연결한다.
- 콘솔과 연결되면 콘솔의 실행 명령을 기다려서 실행하고, 그렇지 않으면 로컬에 저장되어있는 properties 를 찾아서 worker 프로세스들 띄운다.
- 콘솔과 연결이 끊어지거나 콘솔이 종료되면 에이전트도 종료된다. 정기적으로 다시 연결하고 수행하길 원한다면 명령어로 세팅해줘야한다.
일단 간단히 공식 문서 보고 파악한 흐름이다. 대충 흐름보면 그렇구나 ^^ 하게 되는데 물론 실제로 세팅해보면 제대로 되는거 하나 없겠지 <font size =+3 >🥺🥺🥺 </font>
Grinder 로컬에서 실행해보기
- 공식 사이트에서 다운 받고 압축을 푼다.
- 압축을 풀어보면 lib에 grinder.jar 있다.
- java -cp ./grinder-3.11/lib/grinder.jar net.grinder.Console 로 콘솔 실행한다. 클래스 패스를 따로 잡아주면 java -cp ~ grinder.jar 파일 있는 패스 안써도 되고 java net.grinder.Console 로 실행가능하다.
나는 삽질하다가 그냥 패스 안 잡고 저렇게 실행했다. - 실행하면 GUI 확인할 수 있다.
- agent 실행 java -cp ./grinder-3.11/lib/grinder.jar net.grinder.Grinder 하면 콘솔 명령 기다리는 에이전트 확인 가능하다
여기서 스크립트 실행하는거 까지 해보려고 했는데, 잘 안되서 일단 내일 더 해봐야겠다. 진짜 어이없는 삽질했더니 너무 힘들당ㅎㅎ