AI 與訊息
10 export-cli — AI tool schema 匯出
Section titled “10 export-cli — AI tool schema 匯出”gortexa export 對所有 gortexa.ai.v1 標注的方法,輸出三種 provider 格式的有效 JSON schema,不需要跑起 server。
for fmt in mcp openai gemini; do gortexa export --format "$fmt" # 皆輸出有效 JSON,且含 resource 相關 tooldonegortexa export --format nope # 未知格式:非零退出、乾淨失敗三種輸出都有 golden test 鎖定,proto 一改、schema 跟著變,漂移會被抓到。
11 nats-integration — 對真實 NATS broker
Section titled “11 nats-integration — 對真實 NATS broker”從情境自帶的 docker-compose.yaml 起一個真 NATS broker,跑 mq 的 core NATS 整合測試。NATS_URL 一旦設了,測試連的是容器裡的 broker 而非行程內嵌 server,連線失敗就是失敗——skip 也視為失敗。
docker compose -f docker-compose.yaml up -d natsNATS_URL=nats://127.0.0.1:4222 go test -tags integration -race -count=1 \ -run 'TestNATS' ./mq/斷言 TestNATSPubSub、TestNATSQueueGroupLoadBalance 等 PASS——後者驗證非空 group_id 的 load-balance 語意(見設定)。
12 jetstream-integration — 對真實 JetStream broker
Section titled “12 jetstream-integration — 對真實 JetStream broker”同 11 的結構,改用 JetStream driver:broker 以 -js 啟動、JETSTREAM_URL 環境變數。除了 fanout 與 load-balance 語意與 core NATS 對齊之外,多驗證 JetStream 專屬的 at-least-once——handler 回錯誤後訊息會被延遲重投遞。
docker compose -f docker-compose.yaml up -d nats # nats:2 加 command: ["-js"]JETSTREAM_URL=nats://127.0.0.1:4222 go test -tags integration -race -count=1 \ -run 'TestJetStream' ./mq/斷言 TestJetStreamPubSub、TestJetStreamQueueGroupLoadBalance、TestJetStreamRedeliveryOnHandlerError 等 PASS——最後者釘住 at-least-once 重投遞(handler 因此必須冪等,見設定)。