Files
ttstd-infinite-canvas/backend/internal/app/cloud_agent_pi_contract_test.go

67 lines
2.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package app
import (
"os"
"path/filepath"
"strings"
"testing"
)
func TestCloudAgentProductionSchedulingDoesNotCallLegacyGoLoop(t *testing.T) {
root := filepath.Join("..", "..")
// 生产调度入口:Agent 创建、运行时(含拆分出的调度/工具/媒体文件)与任务 worker。
// 调度循环本身(cloud_agent_runtime_scheduler.go)定义了旧入口,只检查调用方。
files := []string{
filepath.Join(root, "internal", "app", "cloud_agent.go"),
filepath.Join(root, "internal", "app", "cloud_agent_runtime.go"),
filepath.Join(root, "internal", "app", "cloud_agent_runtime_media.go"),
filepath.Join(root, "internal", "app", "cloud_agent_runtime_tools.go"),
filepath.Join(root, "internal", "app", "task_worker.go"),
}
for _, file := range files {
body, err := os.ReadFile(file)
if err != nil {
t.Fatal(err)
}
text := string(body)
for _, forbidden := range []string{
"s.advanceCloudAgentByID(",
"s.advanceCloudAgents()",
} {
if strings.Contains(text, forbidden) {
t.Fatalf("production scheduling still calls legacy Go loop: %s in %s", forbidden, file)
}
}
}
}
func TestCloudAgentPiRuntimeContractUsesGovernedStepBridge(t *testing.T) {
root := filepath.Join("..", "..")
// 协调器拆分为协调、请求组装、模型桥与消息/工具桥四个文件,合同覆盖整组。
var coordinator strings.Builder
for _, name := range []string{"cloud_agent_pi_coordinator.go", "cloud_agent_pi_request.go", "cloud_agent_pi_model.go", "cloud_agent_pi_bridge.go"} {
body, err := os.ReadFile(filepath.Join(root, "internal", "app", name))
if err != nil {
t.Fatal(err)
}
coordinator.Write(body)
}
text := coordinator.String()
for _, required := range []string{
"Operation: cloudAgentStepOperation",
"s.enqueueCloudAgentTask(run, &state, req, nil)",
"s.waitCloudAgentTask(ctx, taskID)",
} {
if !strings.Contains(text, required) {
t.Fatalf("Pi governed model bridge contract missing %q", required)
}
}
runtime, err := os.ReadFile(filepath.Join(root, "internal", "agent", "runtime", "runtime.go"))
if err != nil {
t.Fatal(err)
}
if !strings.Contains(string(runtime), "mux.HandleFunc(\"POST /model\"") {
t.Fatal("Pi runtime does not expose the governed /model bridge")
}
}