-
Notifications
You must be signed in to change notification settings - Fork 2
Configuration (Korean)
김지성/HTS팀/NE edited this page Mar 16, 2018
·
1 revision
EAT 프로그램 동작에 필요한 여러가지 매개변수들을 설정합니다.
Key | Value | Description | Note |
---|---|---|---|
common |
rootDirectory |
리소스들의 최상위 폴더 | 하위폴더로 다음과 같은 폴더가 포함되어야 한다. - extraLibrary - proto - src - scenario |
ignoreUnnecessaryPacket |
받은 패킷 중, 시나리오에 작성하지 않은 패킷들을 무시 | ||
countOfRealThread |
리얼 쓰레드의 갯수를 설정 | EAT에서는 parallel universe에서 제공하는 Light-weight thread(Fiber) 를 주로 사용하고 있으며, 성능적 이유로 필요에 따라서 리얼 쓰레드의 갯수를 조정할 수 있다. | |
loggingOnSameFile |
|||
receiveTimeoutSec |
수신할 패킷의 Timeout 시간을 초 단위로 설정 | Timeout이 발생하면, exception이 발생하나, 이후 시나리오는 계속 진행된다. | |
display |
displayTransferredPacket |
보내고 받는 패킷의 이름 출력 여부 | 아래 그림1 - (1) 참고 |
displayTransferredPacketJson |
보내고 받는 패킷의 내용을 Json 형식으로 출력할지 여부 | 아래 그림1 - (2) 참고 | |
displayUnitTestResult |
각 Tester 액터가 수행한 테스트의 real response와 expected response의 비교 결과 출력 여부 | 아래 그림1 - (3) 참고 | |
displayFinalTestResult |
각 Tester 액터가 테스트를 끝난 뒤 다음과 같은 테스트 결과를 출력할지 여부 - 총 테스트 케이스의 갯수 - 성공 갯수 - 실패 갯수 |
아래 그림1 - (4) 참고 | |
displayStatisticResult |
각 Tester 액터가 테스트를 끝낸 뒤, 테스트에 대한 통계 결과 출력 여부 | 아래 그림1 - (5) 참고 | |
displayFinalStatisticResult |
모든 Tester 액터가 테스트를 끝낸 뒤, 수행한 전체 시나리오에 따라 송수신한 패킷의 시간에 대한 통계 결과 출력 여부 | 아래 그림1 - (6) 참고 | |
server |
ip |
접속할 서버의 IP 주소 | ex) 10.77.95.231 |
port |
접속할 서버의 Port 번호 | ex) 8600 | |
countOfPort |
접속할 서버의 포트의 갯수 | ex) port 가 8600이고, countOfPort 가 2이면, EAT의 Tester Actor들은 8600 Port와 8601 Port를 사용하여 순차적으로 서버에 접속한다. |
|
socketType |
서버에 접속할 Socket의 Type | 다음의 값중 하나만 선택할 수 있다. - " STREAM" " - " WEBSOCKET " |
|
subUriOfWS |
(socketType 이 WEBSOCKET 인 경우만 사용함)웹소켓 접속 시 서비스 uri 명칭 |
ex) subUriOfWS 의 값으로 "sub"를 입력한 경우 아래와 같은 WebSocket 접속 uri가 사용된다.ws://10.77.95.231:8600/sub |
|
packet |
pluginPackage |
EAT에서 참조 할 플러그인 클래스가 구현되어 있는 jar 파일 ( IStreamPacket 인터페이스가 구현되어 있는 클래스 ) | 예제에서는 IStreamPacket을 구현한 플러그인 클래스가 protobuf_plugin-0.1.1.jar 파일로 패키징 되어있다. |
classPackage |
사용할 패킷구조를 정의한 serialize 클래스가 구현되어 있는 jar 파일. | 예제에서는 protocol buffer 플러그인에서 사용할 프로토콜 클래스들을 protocols.jar 로 패키징 한다. |
|
pluginClass |
플러그인이 구현된 클래스의 이름 (패키지 전체 경로를 포함해야 함) | ||
bytePacketTypes |
Byte 형식 데이터의 키 값을 입력함. 주로 byte 형식의 데이터를 별도로 deserialize 하기 위한 용도로 사용함. | EAT이 시나리오를 파싱 할 때, bytePacketTypes에 명시된 키값을 가진 json 객체들을 byte 데이터로 인식하게 한다. (Config) "bytePacketTypes": ["packetBytes", "data"] (Scenario) "data": { [ExamplePackage]JoinRoomInfo: { "channel": "example-1" } } 위와 같은 경우 data 내의 값은 byte packet으로 변환되어 data 에 저장된다. |
|
packetPackages |
key와 packageName 의 쌍으로 이루어져 있으며, 시나리오에서 쓰이는 key 값이 packageName으로 변환됨 |
(Config) { "key": "TUTORIAL", "packageName": "tutorial" } (Scenario) #Request:TUTORIAL:[TUTORIAL]Basic.RequestLogin -> 이 경우 Scenario의 [TUTORIAL]은 [tutorial]로 대체된다. |
|
scenarioPath |
사용 할 시나리오 파일들이 있는 폴더의 경로 |
rootDirectory 하단의 폴더명을 입력 |
|
playerCount |
테스트를 진행 할 Tester 액터들의 갯수 | ||
testActorStartGap |
각 Tester 액터들간의 테스트 시작 시간(ms) | ||
userId |
테스트를 진행 할 액터들의 ID |
userId 가 "100" 으로 설정되어 있고, playerCount가 "3" 이라면 100부터 순차적으로 "100" , "101" , "102" 3명의 액터가 테스트를 진행하게 된다. |
|
scenarioFile |
테스트에 사용되는 시나리오 파일들 | scenarioFile에 명시된 순으로 각 Tester 액터당 한 개의 시나리오를 실행하게 된다. 명시된 시나리오의 갯수보다 액터의 수가 더 많으면, 마지막 시나리오 실행 뒤 다음 액터는 다시 처음 시나리오를 실행함으로써 명시된 전체 시나리오를 반복적으로 실행한다. |
<그림 1 - 테스트 결과 예제>
기본 제공되는 protocol buffer library는 다음과 같은 구조를 갖고 있다.
만약, 이와 다른 protocol buffer를 사용하는 경우, IStreamPacket
을 상속받아 재정의 할 수 있다 .
<그림 2 - 예제에서 쓰이는 protocol buffer 플러그인 패킷 구성>
Key | Value | Description | Note |
---|---|---|---|
protobuf |
protobufLibraryJarPath |
protocol이 정의된 Java 파일을 컴파일 하기위한 protocol buffer 라이브러리의 경로 | EAT이 구동되면 최초에 proto 파일을 자바 class 파일로 컴파일 하는 과정을 거치게 되는데, 이 때 protocol buffer가 생성한 java 파일을 컴파일 하기 위한 protocol buffer의 라이브러리 Jar 의 경로를 지정한다. (예제에서는 3.0.0 버전의 protocol buffer를 사용) |
serviceId |
해당 패킷을 보내려는 곳의 서비스ID | 예제에서는 서버 내에서 여러가지 서비스를 구분하여 구동중인 상황을 가정하고 구현하였다. serviceId 값으로 원하는 서비스를 구분하여 패킷을 보낼 수 있도록 하였다. |
|
headerPackageClassName |
헤더 클래스(protocol buffer 특성 상 Inner class로 구현됨)가 포함되어있는 클래스의 전체 패키지 경로와 클래스 이름. | 예제에서는 header 클래스가 다른 protocol들에 대한 의존성을 가지지 않도록 하기 위하여 configuration을 통해 header inner 클래스가 포함되어있는 클래스를 따로 지정해주도록 하고 있다. | |
protoBufInfos |
사용할 proto 파일들을 앞서 정해준 package key값과 함께 명시해준다. | 명시된 .proto 파일들은 protocol buffer 를 통하여 .java 파일로 컴파일 된다. |
Key | Value | Description | Note |
---|---|---|---|
customScenarioAPI |
use |
custom 시나리오를 사용 할 것인지에 대한 여부 | |
jarFile |
사용할 custom 함수들이 정의된 클래스가 들어있는 Jar 파일 | ||
apiClassName |
사용할 custom 함수들이 정의된 클래스의 이름 | custom 함수들은 하나의 클래스 안의 inner 클래스로 작성 |
© NHN Entertainment Corp. All Rights Reserved.