원격 실행기 테스트는 앱-서버/실행-서버 분할을 테스트하여 에이전트 기능이 로컬 및 원격 실행 환경 모두에서 작동하는지 확인합니다.
원격 실행기 테스트는 현재 x86_64 Linux 호스트 시스템이 필요합니다. 두 가지 종류가 있습니다:
- Docker (Linux exec-server)
- Wine (Windows exec-server)
테스트 픽스처
개별 테스트 케이스는 원격 실행기로 실행되기 위해 opt-in해야 합니다.
codex_core
TestCodexBuilder::build_with_auto_env()를 사용하여 코어 통합 테스트에서 원격 실행을 opt-in하세요. 단, 테스트가 실행기를 더 세밀하게 제어해야 하는 경우는 예외입니다.
app-server
TestAppServer::new_with_auto_env()로 서버를 시작하세요. 단, 테스트가 자체 $CODEX_HOME/environments.toml을 정의하거나 런타임에 사용자 정의 환경을 정의할 경우는 예외입니다.
auto_env 접근 방식으로 서버를 생성한 경우, TestAppServer::send_thread_start_request_with_auto_env()로 스레드를 시작하세요. 이 경우 ThreadStartParams.environments는 생략하고 None으로 두세요.
테스트 건너뛰기
특정 원격 실행기 구성에서 테스트가 통과하지 않는 경우, 해당 구성에서만 건너뛸 수 있습니다. 선택한 건너뛰기 매크로가 문자열 이유를 지원하는 경우, 향후 독자를 위해 이유 문자열을 포함하세요.
테스트 실패 원인에 따라 건너뛰기 매크로를 선택하세요:
skip_if_target_windows!: Windows 대상 동작.skip_if_wine_exec!: Wine 실행기 제약 조건.skip_if_host_windows!: Windows 호스트 제약 조건.skip_if_remote!: 로컬 전용 테스트 동작.skip_if_no_remote_env!: 원격 전용 테스트 동작.
기본적으로 모든 호스트/대상 구성에서 실행되는 테스트를 정의하는 것이 좋습니다. 테스트 호환성을 위해 가장 일반적으로 필요한 변경 사항은 $path-types 스킬을 참조하세요.
Docker
Docker 컨테이너는 ./scripts/test-remote-env.sh를 통해 빌드 및 초기화됩니다. bash에서 이 스크립트를 소싱하면 테스트 후 사용할 codex_remote_env_cleanup 함수도 제공됩니다.
Docker 원격 실행기에 대해 코어 통합 테스트를 실행하려면:
bash -c '
set -euo pipefail
unset CODEX_TEST_REMOTE_EXEC_SERVER_URL
source scripts/test-remote-env.sh
trap codex_remote_env_cleanup EXIT
cd codex-rs
just test -p codex-core --test all
'
Docker 원격 실행기에 대해 앱-서버 통합 테스트를 실행하려면:
bash -c '
set -euo pipefail
unset CODEX_TEST_REMOTE_EXEC_SERVER_URL
source scripts/test-remote-env.sh
trap codex_remote_env_cleanup EXIT
cd codex-rs
just test -p codex-app-server --test all
'
Wine
이 테스트는 Windows용 exec-server를 빌드하여 Wine에서 실행하며, 앱-서버는 Linux 호스트에 유지됩니다. 크로스 플랫폼 빌드 의존성으로 인해 Bazel에서만 실행됩니다.
코어 통합 테스트의 경우:
bazel test //codex-rs/core:core-all-wine-exec-test
앱-서버 통합 테스트의 경우:
bazel test //codex-rs/app-server:app-server-all-wine-exec-test
Devbox
macOS 시스템에서 실행하는 경우 devbox를 사용하여 이러한 테스트를 실행할 수 있습니다.
applied_devbox ls를 통해 devbox를 나열하고, 이름에 codex가 포함된 것을 선택하세요.
ssh <devbox_name>으로 devbox에 연결하세요.
~/code/codex에서 동일한 codex 체크아웃을 재사용하세요. 필요한 경우 파일을 초기화하세요. 여러 체크아웃은 빌드 시간이 더 오래 걸리고 더 많은 공간을 차지합니다.
SHA와 수정된 파일이 원격과 로컬 간에 동기화되어 있는지 확인하세요.