perf: 拆分规划策略
This commit is contained in:
@@ -1,7 +1,9 @@
|
||||
package state
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"sync"
|
||||
"testing"
|
||||
|
||||
"github.com/voocel/ainovel-cli/domain"
|
||||
@@ -77,6 +79,52 @@ func TestAppendSteerEntry(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestAppendSteerEntryConcurrent(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
store := NewStore(dir)
|
||||
|
||||
const workers = 32
|
||||
var wg sync.WaitGroup
|
||||
start := make(chan struct{})
|
||||
|
||||
for i := 0; i < workers; i++ {
|
||||
wg.Add(1)
|
||||
go func(i int) {
|
||||
defer wg.Done()
|
||||
<-start
|
||||
entry := domain.SteerEntry{
|
||||
Input: fmt.Sprintf("steer-%02d", i),
|
||||
Timestamp: fmt.Sprintf("ts-%02d", i),
|
||||
}
|
||||
if err := store.AppendSteerEntry(entry); err != nil {
|
||||
t.Errorf("AppendSteerEntry(%d): %v", i, err)
|
||||
}
|
||||
}(i)
|
||||
}
|
||||
|
||||
close(start)
|
||||
wg.Wait()
|
||||
|
||||
meta, err := store.LoadRunMeta()
|
||||
if err != nil {
|
||||
t.Fatalf("LoadRunMeta: %v", err)
|
||||
}
|
||||
if meta == nil {
|
||||
t.Fatal("expected run meta to exist")
|
||||
}
|
||||
if len(meta.SteerHistory) != workers {
|
||||
t.Fatalf("expected %d steer entries, got %d", workers, len(meta.SteerHistory))
|
||||
}
|
||||
|
||||
seen := make(map[string]struct{}, workers)
|
||||
for _, entry := range meta.SteerHistory {
|
||||
seen[entry.Input] = struct{}{}
|
||||
}
|
||||
if len(seen) != workers {
|
||||
t.Fatalf("expected %d unique steer entries, got %d", workers, len(seen))
|
||||
}
|
||||
}
|
||||
|
||||
func TestAppendSteerEntry_PreservesExistingMeta(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
store := NewStore(dir)
|
||||
@@ -165,6 +213,26 @@ func TestSetAndClearPendingSteer(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetPlanningTier(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
store := NewStore(dir)
|
||||
|
||||
if err := store.SetPlanningTier(domain.PlanningTierLong); err != nil {
|
||||
t.Fatalf("SetPlanningTier: %v", err)
|
||||
}
|
||||
|
||||
meta, err := store.LoadRunMeta()
|
||||
if err != nil {
|
||||
t.Fatalf("LoadRunMeta: %v", err)
|
||||
}
|
||||
if meta == nil {
|
||||
t.Fatal("expected run meta to exist")
|
||||
}
|
||||
if meta.PlanningTier != domain.PlanningTierLong {
|
||||
t.Fatalf("expected planning tier %q, got %q", domain.PlanningTierLong, meta.PlanningTier)
|
||||
}
|
||||
}
|
||||
|
||||
func TestClearPendingSteer_Noop(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
store := NewStore(dir)
|
||||
|
||||
Reference in New Issue
Block a user