Os testes de executor remoto exercitam a separação app-server/exec-server para garantir que os recursos do agente funcionem em ambientes de execução locais e remotos.
Atualmente, os testes de executor remoto exigem uma máquina host Linux x86_64. Existem duas variantes:
- Docker (exec-server Linux)
- Wine (exec-server Windows)
Fixtures de Teste
Casos de teste individuais devem optar por serem executados contra um executor remoto.
codex_core
Use TestCodexBuilder::build_with_auto_env() para optar pela execução remota em testes de integração do núcleo,
a menos que o teste precise de um controle mais preciso sobre seu executor.
app-server
Inicie o servidor com TestAppServer::new_with_auto_env() a menos que o teste defina seu próprio
$CODEX_HOME/environments.toml ou vá definir ambientes personalizados em tempo de execução.
Inicie threads com TestAppServer::send_thread_start_request_with_auto_env() se você criou o
servidor com a abordagem auto_env. Omita ThreadStartParams.environments (deixe como None) ao
fazer isso.
Pular Testes
Se um teste não passar em uma configuração específica de executor remoto, você pode pulá-lo apenas nessa configuração. Inclua uma string com o motivo para futuros leitores quando a macro de skip escolhida suportar uma.
Escolha a macro de skip pelo que causa a falha do teste:
skip_if_target_windows!: Comportamento do target Windows.skip_if_wine_exec!: Limitações do runner Wine-exec.skip_if_host_windows!: Limitações do host Windows.skip_if_remote!: Comportamento de teste apenas local.skip_if_no_remote_env!: Comportamento de teste apenas remoto.
Prefira definir testes que rodam em todas as configurações de host/target por padrão. Consulte a skill $path-types
para as alterações mais comuns necessárias para tornar os testes compatíveis.
Docker
O contêiner Docker é construído e inicializado via ./scripts/test-remote-env.sh. Fontear este script
no bash também fornece a função codex_remote_env_cleanup para usar após os testes.
Para executar testes de integração do núcleo contra um executor remoto 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
'
Para executar testes de integração do app-server contra um executor remoto 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
Esses testes constroem um exec-server para Windows e o executam sob Wine, com o app-server permanecendo no host Linux. A dependência de compilação multiplataforma significa que eles só rodam no Bazel.
Para testes de integração do núcleo:
bazel test //codex-rs/core:core-all-wine-exec-test
Para testes de integração do app-server:
bazel test //codex-rs/app-server:app-server-all-wine-exec-test
Devboxes
Você pode usar um devbox para executar esses testes se estiver em uma máquina macOS.
Você pode listar devboxes via applied_devbox ls e escolher aquele com codex no nome.
Conecte-se ao devbox via ssh <nome_do_devbox>.
Reutilize o mesmo checkout do codex em ~/code/codex. Redefina arquivos se necessário. Checkouts múltiplos demoram mais para construir e ocupam mais espaço.
Verifique se o SHA e os arquivos modificados estão sincronizados entre remoto e local.