testnet
GitHub EN

동적 노드 설정

mechanism developer

테스트넷 생성 중 노드 설정 파일을 즉석에서 수정합니다.

동적 노드 설정은 marood testnet 명령어의 기능으로, 개발자가 생성된 각 노드의 config.toml 파일에 있는 기본 설정을 재정의할 수 있게 해줍니다. 쉼표로 구분된 키-값 쌍 목록을 전달하여, 생성 후 파일을 수동으로 편집할 필요 없이 합의 타임아웃, 로깅 수준 또는 P2P 설정과 같은 매개변수를 사용자 지정할 수 있습니다.

사용법

이 기능은 marood testnet 실행 시 --config-changes 플래그를 통해 접근합니다. 값은 하나 이상의 재정의를 포함하는 문자열입니다. 여러 재정의는 쉼표로 구분됩니다.

구문: "path.to.key=value,another.key=value"

  • 중첩 키: 중첩된 필드에는 점 표기법을 사용합니다 (예: consensus.timeout_commit=1s).
  • 최상위 키: 최상위 필드에는 키를 직접 사용합니다 (예: log_level="debug").
  • 문자열 슬라이스: 문자열 목록을 받는 필드의 경우, 값 내에 쉼표로 구분된 목록을 제공합니다 (예: p2p.persistent_peers="id1@host1:port1,id2@host2:port2").

예시

커밋 타임아웃을 1초로 줄이고 로그 레벨을 디버그로 설정하는 테스트넷을 생성하려면 다음 플래그를 사용합니다:

marood testnet -v 2 --config-changes "consensus.timeout_commit=1s,log_level=debug"

이 변경 사항은 명령어로 생성된 모든 노드의 config.toml 파일에 적용됩니다.

구현 세부 정보

testnet_utils.go 파일에 이 기능의 로직이 포함되어 있습니다. 플래그에 제공된 문자열을 파싱하여 쉼표로 개별 재정의로 분리합니다. 각 재정의에 대해 = 기호를 기준으로 키와 값을 분리합니다. 그런 다음 리플렉션을 사용하여 CometBFT Config 구조체를 탐색하고, mapstructure 태그 또는 이름을 기반으로 대상 필드를 찾아 값을 설정합니다. 이 유틸리티는 문자열, 불리언, 정수, time.Duration 등 다양한 데이터 유형을 지원하며, 값 문자열을 올바른 유형으로 자동 파싱합니다.

사용 사례

이 기능은 특히 다음과 같은 경우에 유용합니다:
  • 스트레스 테스트: 높은 부하에서 네트워크 성능을 테스트하기 위해 블록 시간을 대폭 단축 (consensus.timeout_commit).
  • 디버깅: 문제 해결 시 더 자세한 출력을 얻기 위해 로그 상세 수준을 높임 (log_level).
  • 네트워크 조건 시뮬레이션: 다양한 네트워크 토폴로지나 제약 조건을 시뮬레이션하기 위해 max_num_inbound_peers 또는 send_rate와 같은 P2P 설정을 사용자 지정.
소스: maroo
ESC
검색어를 입력하세요