Files
multica/server/internal/analytics/events_test.go
Multica Eve 46eed3b298 Add task dispatched analytics event (#2310)
Co-authored-by: Devv <devv@Devvs-Mac-mini.local>
Co-authored-by: multica-agent <github@multica.ai>
2026-05-09 14:11:20 +08:00

68 lines
2.1 KiB
Go

package analytics
import "testing"
func TestRuntimeReadyOmitsUnmeasuredDuration(t *testing.T) {
ev := RuntimeReady("user-1", "workspace-1", "runtime-1", "daemon-1", "codex", 0)
if _, ok := ev.Properties["ready_duration_ms"]; ok {
t.Fatalf("ready_duration_ms should be omitted until it is measured")
}
ev = RuntimeReady("user-1", "workspace-1", "runtime-1", "daemon-1", "codex", 123)
if got := ev.Properties["ready_duration_ms"]; got != int64(123) {
t.Fatalf("ready_duration_ms = %v, want 123", got)
}
}
func TestFailedEventsUseWillRetry(t *testing.T) {
ctx := TaskContext{
UserID: "user-1",
WorkspaceID: "workspace-1",
AgentID: "agent-1",
TaskID: "task-1",
Source: SourceManual,
}
taskEv := AgentTaskFailed(ctx, 10, "runtime_offline", "runtime", true)
if got := taskEv.Properties["will_retry"]; got != true {
t.Fatalf("task will_retry = %v, want true", got)
}
if _, ok := taskEv.Properties["recoverable"]; ok {
t.Fatalf("task failure should not emit recoverable")
}
runEv := AutopilotRunFailed("user-1", "workspace-1", "autopilot-1", "run-1", "agent-1", "manual", "task failed", "task_error", false, 10)
if got := runEv.Properties["will_retry"]; got != false {
t.Fatalf("autopilot will_retry = %v, want false", got)
}
if _, ok := runEv.Properties["recoverable"]; ok {
t.Fatalf("autopilot failure should not emit recoverable")
}
}
func TestAgentTaskDispatchedUsesTaskCoreProperties(t *testing.T) {
ctx := TaskContext{
UserID: "user-1",
WorkspaceID: "workspace-1",
AgentID: "agent-1",
TaskID: "task-1",
IssueID: "issue-1",
Source: SourceManual,
RuntimeMode: "local",
Provider: "codex",
}
ev := AgentTaskDispatched(ctx)
if ev.Name != EventAgentTaskDispatched {
t.Fatalf("event name = %q, want %q", ev.Name, EventAgentTaskDispatched)
}
if got := ev.WorkspaceID; got != "workspace-1" {
t.Fatalf("workspace_id = %q, want workspace-1", got)
}
if got := ev.Properties["task_id"]; got != "task-1" {
t.Fatalf("task_id = %v, want task-1", got)
}
if got := ev.Properties["runtime_mode"]; got != "local" {
t.Fatalf("runtime_mode = %v, want local", got)
}
}