Files
CyberStrikeAI/internal/multiagent/mcp_execution_binder_test.go
T
2026-07-06 14:17:49 +08:00

44 lines
984 B
Go

package multiagent
import (
"fmt"
"sync"
"testing"
)
func TestMCPExecutionBinder(t *testing.T) {
b := NewMCPExecutionBinder()
b.Bind("call-1", "exec-1")
if got := b.ExecutionID("call-1"); got != "exec-1" {
t.Fatalf("expected exec-1, got %q", got)
}
if got := b.ExecutionID("missing"); got != "" {
t.Fatalf("expected empty, got %q", got)
}
}
// TestMCPExecutionBinder_ConcurrentBind 回归并行 tool 回调不得 concurrent map panic。
func TestMCPExecutionBinder_ConcurrentBind(t *testing.T) {
b := NewMCPExecutionBinder()
const workers = 64
var wg sync.WaitGroup
wg.Add(workers * 2)
for i := 0; i < workers; i++ {
i := i
toolCallID := fmt.Sprintf("call-%d", i)
execID := fmt.Sprintf("exec-%d", i)
go func() {
defer wg.Done()
b.Bind(toolCallID, execID)
}()
go func() {
defer wg.Done()
_ = b.ExecutionID(toolCallID)
}()
}
wg.Wait()
if got := b.ExecutionID("call-0"); got != "exec-0" {
t.Fatalf("expected exec-0, got %q", got)
}
}