(t *testing.T)
| 86 | } |
| 87 | |
| 88 | func TestDrain_Train_MultipleClusters(t *testing.T) { |
| 89 | t.Parallel() |
| 90 | |
| 91 | drain := New("test-tenant", DefaultConfig()) |
| 92 | |
| 93 | // Train with different patterns |
| 94 | spanNames := []string{ |
| 95 | "GET /api/users/123", |
| 96 | "GET /api/users/456", |
| 97 | "POST /api/posts/789", |
| 98 | "POST /api/posts/101", |
| 99 | "PUT /api/comments/202", |
| 100 | "DELETE /api/comments/303", |
| 101 | } |
| 102 | |
| 103 | for _, spanName := range spanNames { |
| 104 | cluster := drain.Train(spanName) |
| 105 | require.NotNil(t, cluster) |
| 106 | } |
| 107 | |
| 108 | allClusters := drain.Clusters() |
| 109 | // Should have multiple distinct clusters (at least 2-3 different patterns) |
| 110 | require.GreaterOrEqual(t, len(allClusters), 2, "should have multiple clusters") |
| 111 | |
| 112 | // Verify clusters have different patterns |
| 113 | patterns := make(map[string]bool) |
| 114 | for _, cluster := range allClusters { |
| 115 | pattern := cluster.String() |
| 116 | patterns[pattern] = true |
| 117 | } |
| 118 | require.GreaterOrEqual(t, len(patterns), 2, "should have multiple distinct patterns") |
| 119 | } |
| 120 | |
| 121 | func TestDrain_Train_MinTokensEnforcement(t *testing.T) { |
| 122 | t.Parallel() |
nothing calls this directly
no test coverage detected